博弈论基础
文档概述
博弈论是研究决策主体行为相互作用及策略选择的数学理论。本指南系统介绍标准形式博弈与扩展形式博弈、Nash均衡的存在性证明、演化博弈论、合作博弈论(Shapley值)以及机制设计(Vickrey拍卖)等核心内容。为后续学习对抗算法奠定坚实的理论基础。
零、写在前面:博弈论是什么?
你有没有遇到过这种情况:考试前夜,你纠结要不要熬夜复习。熬夜复习可能考得更好,但第二天精神差;早睡休息充足,但总觉得还有知识点没看完。这个决定看起来是你自己的事,但实际上你要考虑的不是单纯的”复习 vs 不复习”,而是要猜测室友会不会熬夜——如果室友熬夜复习第二天精神差,老师的提问可能减少,你或许不需要那么拼命。
你看,这就是一个最简单的博弈场景。
博弈论(Game Theory)就是研究这种**“我的选择会影响你,你的选择也会影响我”** 情境的数学工具。它不是教你”赢”的技巧,而是帮你理解在互相依存的决策中,什么样的结果是”稳定”的——也就是说,当大家都足够聪明、足够理性的时候,最终会达成什么样的局面。
为什么AI学习者要懂博弈论?因为对抗算法、搜索引擎排序、广告拍卖、推荐系统、自动驾驶的决策……本质上都是多方博弈。理解博弈论,你才能理解为什么AI系统会”作弊”、为什么平台会”大数据杀熟”、为什么智能体会”内卷”。
一、博弈论入门:用日常生活的例子讲清博弈论
1.1 从买菜讲起
想象你早上去菜市场买菜。摊主开价10块一斤的大白菜,你觉得太贵了,扭头就走。这时候摊主喊了一嗓子:“8块!”
你心里想:咦,降了两块,划算!
但等等,你真的划算了吗?还是说,摊主一开始就打算卖8块,只是先开10块给你砍价的快感?
这就是博弈。你的行为影响了摊主的行为,摊主的行为也影响了你的决策。
再举一个例子。你在公司群里发了一条消息,老板秒回了。你高兴坏了,觉得老板重视你。但你可能没意识到,老板可能只是在刷手机,刚好看到就回了——跟你没半毛钱关系。
博弈论要解决的就是这类问题:在互相影响的世界里,如何做出最优决策?
1.2 博弈无处不在
博弈的场景比你想象的多得多:
情侣之间的”谁洗碗”博弈:一方想让另一方洗碗,但直接要求显得不体贴。于是开始互相暗示、撒娇、装可怜。这就是一场博弈,双方在试探对方的底线。
堵车时的”加塞”博弈:高峰期大家都想加塞,你是让还是不让?让了可能迟到,不让可能剐蹭。每次堵车都是一场小型博弈。
点外卖时的”凑满减”博弈:满30减10,你是凑到30.01刚好用掉优惠券,还是凑到50用掉两张券?商家设计满减规则,就是在跟你博弈。
年终奖分配:老板手上有100万要分给10个下属,怎么分?分平均了,干活多的不满;分差距大了,排名靠后的撂挑子。老板和员工之间,也是博弈。
博弈论给你提供了一套语言和框架,来系统性地分析这些场景。
二、博弈的组成要素:玩家、策略、收益
2.1 三个要素缺一不可
任何一个博弈都由三个核心要素组成,缺一不可:
1. 玩家(Players):谁在参与这个博弈?可以是两个人、两家公司、两个国家,也可以是多个玩家。博弈论假设每个玩家都是”理性人”——也就是说,他们追求自身利益最大化,而且知道其他玩家也是理性的。
2. 策略(Strategies):每个玩家可以选择什么行动?这些可选的方案就是策略。注意,策略是”计划”而不是”行动”——它描述的是在各种情况下你会怎么做。
3. 收益(Payoffs):每种选择组合下,每个玩家能得到什么?收益可以是金钱、效用、满足感,甚至是负数(损失)。收益决定了玩家的偏好——他们总是选择能让自己收益更高的策略。
2.2 用”剪刀石头布”理解三要素
剪刀石头布是我们最熟悉的博弈:
玩家:两个人,假设叫小明和小红。
策略:三个纯策略——剪刀、石头、布。(混合策略我们后面讲)
收益:赢的得1分,输的得-1分,平局各得0分。
用表格表示:
| 小红出剪刀 | 小红出石头 | 小红出布 | |
|---|---|---|---|
| 小明出剪刀 | (0, 0) | (-1, 1) | (1, -1) |
| 小明出石头 | (1, -1) | (0, 0) | (-1, 1) |
| 小明出布 | (-1, 1) | (1, -1) | (0, 0) |
表里每个格子里有两个数字,第一个是小明的收益,第二个是小红的收益。
2.3 策略空间与行动空间
这里要区分两个概念:
行动(Action):在某个时刻做出的具体选择。比如在剪刀石头布里,“出剪刀”是一个行动。
策略(Strategy):一套完整的行动计划。在简单的同时行动博弈里,策略就是选择一个行动;但在复杂博弈里,策略可能包含”如果对方做了什么,我就做什么”这样的条件句。
策略空间就是所有可选策略的集合。有限博弈的策略空间是有限的,无限博弈的策略空间是连续的(比如选择价格可以是0到100之间的任何数)。
三、博弈的分类:合作还是对抗?
3.1 合作博弈 vs 非合作博弈
这是最基本的一种分类:
非合作博弈(Non-cooperative Game):玩家之间不能形成有约束力的协议。也就是说,就算你们口头上说好了一起干,也没有机制强制对方兑现承诺。囚徒困境就是最经典的例子。
合作博弈(Cooperative Game):玩家之间可以形成有约束力的协议。比如两家公司合并、三个人合伙做生意。合作博弈关注的是:联盟如何形成、收益如何分配。
为什么这种区分重要?因为能不能签合同会根本性地改变博弈的走向。
举个例子:你和装修队签了合同,规定装修质量不达标要返工。这是合作博弈——有合同约束。但如果只是口头约定,出现问题就扯皮,那就是非合作博弈。
3.2 完全信息 vs 不完全信息
另一个重要分类取决于玩家知道什么:
完全信息(Complete Information):所有玩家都知道博弈的规则——包括有哪些玩家、有哪些策略、各种策略组合下的收益是多少。囚徒困境、剪刀石头布都是完全信息博弈。
不完全信息(Incomplete Information):至少有一个玩家不知道某些关键信息。比如拍卖时,你不知道别人愿意出多少钱;谈判时,你不知道对方的底线在哪。这种博弈需要用到贝叶斯博弈(Bayesian Game)的工具。
3.3 同时行动 vs 序贯行动
同时行动博弈(Simultaneous Move Game):所有玩家同时做决定,谁也不知道别人的选择。剪刀石头布、投标都是同时行动。
序贯行动博弈(Sequential Game):玩家按顺序行动,后行动的人能看到先行动的人的选择。比如下棋、商业谈判、进入市场决策。
序贯博弈有个特别有意思的地方:先手可能是一种优势(先发制人),也可能是劣势(被对手看穿意图)。
3.4 零和博弈 vs 非零和博弈
零和博弈(Zero-sum Game):一方的收益恰好是另一方的损失。你的所得就是我的所失,我们是对立关系。象棋、扑克、决斗都是零和博弈。
非零和博弈(Non-zero-sum Game):蛋糕可以一起做大,也可以一起做小。囚徒困境里,两个人都坦白是(-5,-5),两个人都抵赖是(-1,-1)——两种结果都是负数,但不一定相等。
很多人以为博弈就是你死我活,其实不然。很多现实博弈是”正和”的——合作可以让大家都获益。
四、支付矩阵:收益如何表示?
4.1 什么是支付矩阵
支付矩阵(Payoff Matrix)是用表格形式展示博弈收益的工具。对于双人博弈,行代表玩家1的策略,列代表玩家2的策略,每个格子里的数字对表示两个玩家的收益。
拿一个简单的”约会博弈”举例:
小明和小红约好周末一起玩,但忘了具体干啥。现在面临选择:去看电影还是去逛街?
| 小红选电影 | 小红选逛街 | |
|---|---|---|
| 小明选电影 | (3, 2) | (0, 0) |
| 小明选逛街 | (0, 0) | (2, 3) |
解释一下:
- 小明选电影、小红也选电影:两人都开心,小明得3分,小红得2分(毕竟是小明提议的嘛)
- 小明选逛街、小红也选逛街:两人都还行,小明得2分,小红得3分
- 选的不一样:各玩各的,都不开心,得0分
4.2 解读支付矩阵的技巧
拿到一个支付矩阵,先问自己几个问题:
1. 谁是行玩家,谁是列玩家? 一般第一个数字是行玩家的收益,第二个是列玩家的。
2. 收益是 ordinal 还是 cardinal?
- Ordinal 只关心顺序:A比B好,B比C好
- Cardinal 关心具体数值:A得5分比B得3分好多少
博弈论通常假设收益是基数效用(cardinal),因为很多计算需要加减。
3. 收益是纯物质收益还是包含了心理收益? 比如”丢脸”可能记为-1,“有面子”记为+1。理解这一点很重要,因为同一个数学结构可能对应完全不同的现实情境。
4.3 一个生活中的支付矩阵例子
“相亲该不该AA”是一个很有趣的博弈:
| 女方付一半 | 女方让男方请 | |
|---|---|---|
| 男方付一半 | (2, 2) | (-1, 3) |
| 男方请客 | (3, -1) | (0, 0) |
解读:
- 双方都付一半:公平,各得2分
- 男方请客、女方让他请:男方有面子得3分,女方省钱但可能觉得欠人情,得-1分
- 男方付一半、女方让他请:男方吃亏得-1分,女方占便宜得3分
- 都不付:尴尬,得0分
这个博弈的纳什均衡是”双方都付一半”——虽然理想情况下男方请客、女方接受会让男方效用更高(3分),但这不是均衡,因为女方有动机让男方请客,男方也有动机坚持AA。
五、严格优势策略:为什么理性玩家从不选择被支配的策略?
5.1 什么是优势策略
优势策略(Dominant Strategy):无论对手怎么选,这个策略都比其他所有策略好。
举例来说明。假设有个简单的”选座位博弈”:
你和朋友去咖啡店,只剩两个座位——一个靠窗,一个靠墙。你们都想坐窗边,但如果都抢窗边反而都坐不上(或者被赶走)。收益矩阵如下:
| 朋友选窗边 | 朋友选墙边 | |
|---|---|---|
| 你选窗边 | (-10, -10) | (3, 1) |
| 你选墙边 | (1, 3) | (2, 2) |
等等,这个例子不太对。让我重新设计一个真正有优势策略的博弈:
广告投放博弈:可口可乐和百事可乐都要决定要不要打广告。
| 百事不打广告 | 百事打广告 | |
|---|---|---|
| 可口不打广告 | (10, 10) | (2, 12) |
| 可口打广告 | (12, 2) | (5, 5) |
分析:
- 如果百事不打广告:可口打广告得12 > 不打得10,所以打广告更好
- 如果百事打广告:可口打广告得5 > 不打得2,所以打广告更好
无论百事怎么选,可口打广告都更好! 这就是可口可乐的严格优势策略(Strictly Dominant Strategy)。
5.2 严格占优 vs 弱占优
严格占优(Strict Dominance):策略A在所有情况下都比策略B好。
弱占优(Weak Dominance):策略A至少和策略B一样好,而且至少在一种情况下严格更好。
弱占优的情况更复杂,因为被弱占优的策略在某些情况下可能是无差异的。
5.3 理性人不会选被支配的策略
这是博弈论最核心的假设之一:理性人永远不会选择被严格占优的策略。
为什么?因为被占优意味着”无论对方怎么选,这个策略都更差”。选它就像主动给自己挖坑。
回到广告博弈。可口可乐有没有可能选”不打广告”?如果可口的管理层是理性的——即,追求利润最大化——那绝不可能选被占优的策略。
5.4 共同知识假设
“理性人不会选被占优策略”这个论断有个隐藏前提:所有人都知道所有人都知道…… 这个链条要一直延续下去。
这就是**共同知识(Common Knowledge)**的概念。
- 你知道可口可乐是理性的
- 你知道可口可乐知道你是理性的
- 你知道可口可乐知道你知道可口可乐是理性的
- ……
这个链条要无限延续,而且所有人都同意这些前提。
现实中,这个假设很难满足。比如:
- 对方可能没那么理性
- 对方可能不确定你是不是理性的
- 对方可能不知道你知道什么
所以博弈论的预测在完全满足共同知识假设时最准确,在现实中的应用需要考虑这些摩擦。
5.5 迭代删除劣势策略
既然理性人不会选被占优策略,那我们可以在分析中删除这些策略。
IESDS算法(Iterated Elimination of Strictly Dominated Strategies):
- 第一步:删除所有被严格占优的策略
- 第二步:在剩余策略中,继续删除被严格占优的策略
- 重复,直到无法再删除
这个过程不会改变博弈的纳什均衡——因为纳什均衡不可能包含被占优策略。
六、纳什均衡:每个玩家都不能单方面改进的僵局
6.1 纳什均衡的直观理解
纳什均衡(Nash Equilibrium):在某种策略组合下,没有任何人能通过单方面改变策略来提高自己的收益。
“单方面”这个词很关键。纳什均衡不要求每个人都”满意”——可能所有人都希望换个策略,但问题是,如果我换了你不换,我就亏了。所以没人愿意先动。
僵局——这是理解纳什均衡最直观的方式。
想象两个小孩抢玩具,谁也不让谁,最后就这么僵持着。不是因为这个局面好,而是因为谁先松手谁就吃亏。
再举一个例子:堵车时大家都挤成一团,明明有序排队大家都快,但没人愿意先让。挤成一团就是纳什均衡——虽然不好,但没人愿意先改变。
6.2 用日常生活理解纳什均衡
例子:KTV唱歌博弈
你和小李去唱KTV。你们都想唱自己想唱的歌,但如果两个人同时唱就很吵。假设:
| 小李唱 | 小李不唱 | |
|---|---|---|
| 你唱 | (1, 1) | (3, 2) |
| 你不唱 | (2, 3) | (0, 0) |
分析:
- 如果小李唱:你唱得1分,不唱得2分,你选择不唱
- 如果小李不唱:你唱得3分,不唱得0分,你选择唱
纳什均衡是(唱,不唱)和(不唱,唱)——一个人唱,另一个人听。虽然一起唱能得(1,1),但这不是均衡,因为唱的人会发现对方不唱时自己能唱得更多。
6.3 纳什均衡的正式定义
策略组合 是纳什均衡,当且仅当对每个玩家 :
用人话说就是:给定别人的策略,你选的这个策略已经是你能选的最优策略了。
6.4 纳什均衡的几种类型
| 类型 | 描述 | 例子 |
|---|---|---|
| 纯策略纳什均衡 | 所有玩家都确定地选择一个策略 | 囚徒困境中的(坦白,坦白) |
| 混合策略纳什均衡 | 至少一个玩家随机选择策略 | 剪刀石头布的(1/3,1/3,1/3) |
| 对称纳什均衡 | 所有玩家策略相同 | 剪刀石头布的对称均衡 |
| 不对称纳什均衡 | 玩家策略不同 | 约会博弈中的(电影,电影)和(逛街,逛街) |
重要定理:每个有限博弈至少存在一个纳什均衡(可能是混合策略)。
这意味着只要你愿意玩”随机”,就没有”无解”的博弈。
七、囚徒困境:个人理性导致集体非理性的经典案例
7.1 经典故事
两个嫌疑人被分别关押,无法互通消息。检察官分别告诉他们:
- 如果两人都坦白,各判5年
- 如果两人都抵赖,各判1年
- 如果一人坦白、一人抵赖,坦白者释放,抵赖者判8年
用支付矩阵表示(用负数表示被判刑的”痛苦”,数值越大越痛苦):
| 囚徒B抵赖 | 囚徒B坦白 | |
|---|---|---|
| 囚徒A抵赖 | (-1, -1) | (-8, 0) |
| 囚徒A坦白 | (0, -8) | (-5, -5) |
7.2 严格优势策略分析
对囚徒A来说:
- 如果B抵赖:A坦白得0 < A抵赖得-1?不对,0比-1大,所以坦白更好
- 如果B坦白:A坦白得-5 > A抵赖得-8,所以坦白更好
无论B怎么选,坦白都更好! 坦白是A的严格优势策略。
同理,坦白也是B的严格优势策略。
所以两个理性人都会选择坦白,结果是(-5,-5)——各判5年。
7.3 集体非理性的讽刺
但如果两个人都抵赖,只会各判1年——(-1,-1)比(-5,-5)好得多。
这就是囚徒困境的核心矛盾:从个人理性出发,最后得到了对集体而言很糟糕的结果。
你可能会说:这不是很明显是个人利益和集体利益的冲突吗?但博弈论的价值在于,它用严格的数学语言把这个矛盾表达清楚了,而且告诉我们:在非合作博弈中,这种结果是”稳定”的——谁都不敢先改变。
7.4 囚徒困境的现实映射
囚徒困境几乎可以解释一半的社会困境:
1. 公地悲剧
村里有块公共草地,谁都可以放牛。但牛吃太多草会退化。如果大家都有节制,草能持续生长;如果都拼命放牛,草最终会枯竭。
每个村民都面临”我少放一头牛,但别人可能多放”的困境。理性选择是多放牛。结果:草地退化,所有人遭殃。
2. 军备竞赛
两个国家可以选”裁军”或”扩军”:
- 都裁军:和平,各得5
- 都扩军:紧张对峙,各得2
- 一方扩军一方裁军:扩军方得6(军事优势),裁军方得-2(被威胁)
扩军是双方的优势策略。结果:双方都花大量资源扩军,集体福利下降。
3. 价格战
两家超市可以选”维持高价”或”降价促销”:
- 都维持高价:各赚100万
- 都降价:各赚50万
- 一方降价一方维持:降价方得150万,维持方亏50万
降价是双方的优势策略。结果:都降价,利润下降。
4. 碳排放问题
各国面临”减排”或”维持现状”的选择。减排需要成本,但全球变暖的影响由所有人承担。如果其他国家减排,自己减排的边际收益降低;如果其他国家不减排,自己减排更”吃亏”。
结果是:各国都倾向于搭便车,减排承诺难以兑现。
7.5 跳出囚徒困境的可能
囚徒困境之所以难以破解,是因为缺乏有约束力的协议和重复互动。但现实中确实存在一些破解方法:
1. 重复博弈
如果两个囚徒会再次被抓,合作(抵赖)可能成为均衡。冷酷策略(“你坦白我就永远坦白”)可以维持合作,只要未来足够重要(贴现因子足够大)。
2. 外部制裁
如果有第三方能惩罚背叛者(如行业协会、监管机构),囚徒困境可能被打破。
3. 声誉机制
在长期关系中,声誉本身就是一种资产。人们愿意牺牲短期利益来维护声誉,因为长远来看声誉能带来更多好处。
4. 改变收益结构
如果能改变博弈的收益(比如提高合作的收益、降低背叛的诱惑),囚徒困境可能被转化。
八、纳什均衡的计算:逐步剔除劣势策略
8.1 方法一:最佳反应对应法
对于简单博弈,可以直接分析每个玩家的最佳反应。
定义:给定对手的策略,你的**最佳反应(Best Response)**是能让你收益最高的策略。
步骤:
- 固定对手的每个策略
- 找出在这个策略下你的最佳反应
- 找出所有互相是最佳反应的策略组合——这些就是纳什均衡
8.2 囚徒困境的求解
支付矩阵:
| B抵赖 | B坦白 | |
|---|---|---|
| A抵赖 | (-1, -1) | (-8, 0) |
| A坦白 | (0, -8) | (-5, -5) |
找A的最佳反应:
- 给定B抵赖:A抵赖得-1,A坦白得0 → 坦白更好
- 给定B坦白:A抵赖得-8,A坦白得-5 → 坦白更好
A的最佳反应:总是坦白
找B的最佳反应:
- 给定A抵赖:B抵赖得-1,B坦白得0 → 坦白更好
- 给定A坦白:B抵赖得-8,B坦白得-5 → 坦白更好
B的最佳反应:总是坦白
纳什均衡:只有(坦白,坦白)是互相最佳反应。
8.3 性别之战(Battle of the Sexes)
一对情侣在选择活动:
| 女方选足球 | 女方选芭蕾 | |
|---|---|---|
| 男方选足球 | (2, 1) | (0, 0) |
| 男方选芭蕾 | (0, 0) | (1, 2) |
分析:
- 给定女方选足球:男方选足球得2 > 选芭蕾得0 → 最佳反应是足球
- 给定女方选芭蕾:男方选芭蕾得2 > 选足球得0 → 最佳反应是芭蕾
- 给定男方选足球:女方选足球得1 > 选芭蕾得0 → 最佳反应是足球
- 给定男方选芭蕾:女方选芭蕾得2 > 选足球得0 → 最佳反应是芭蕾
两个纯策略纳什均衡:(足球,足球)和(芭蕾,芭蕾)
还有一个混合策略纳什均衡(见下一节)。
8.4 IESDS求解法
迭代删除劣势策略(IESDS):
- 找出被严格占优的策略并删除
- 在简化后的博弈中继续删除
- 直到没有策略可删
囚徒困境:
- 抵赖被坦白严格占优 → 删除抵赖
- 结果:只剩坦白 → 纳什均衡是(坦白,坦白)
性别之战:
- 没有策略被严格占优
- 无法删除任何策略
- 结果:需要用混合策略求解
8.5 斗鸡博弈的求解
两辆车对向而行:
| 对方前进 | 对方让步 | |
|---|---|---|
| 我前进 | (-10, -10) | (1, -1) |
| 我让步 | (-1, 1) | (-5, -5) |
分析:
- 给定对方前进:我前进得-10,让步得-1 → 让步更好
- 给定对方让步:我前进得1,让步得-5 → 前进更好
所以最佳反应:
- 对方前进时 → 让步
- 对方让步时 → 前进
两个纯策略纳什均衡:(前进,让步)和(让步,前进)
还有一个混合策略均衡(见下一节)。
九、混合策略:为什么石头剪刀布要用随机策略?
9.1 纯策略的困境
有些博弈没有纯策略纳什均衡。比如石头剪刀布,任何确定性的选择都会被人针对。
如果你总是出石头,对手发现后会一直出布,你就会一直输。
所以你需要混合——随机出招,让对手无法预测。
9.2 混合策略的定义
混合策略(Mixed Strategy):玩家以一定概率分布随机选择纯策略。
形式上,如果玩家有 个纯策略,他可以以概率 选择每个策略,其中 。
期望效用:使用混合策略后,收益变成期望值:
9.3 混合策略均衡的计算
剪刀石头布的均衡:
设 为出石头的概率, 为出布的概率,则出剪刀的概率为 。
对称均衡要求:对方不管出什么,我出任何手势的期望收益都相等。
设对方出石头、剪刀、布的概率相等(),我出三种手势的期望:
- 出石头:
- 出剪刀:
- 出布:
三种手势期望效用都是0,所以等概率混合()是无差异的——这是混合策略均衡。
9.4 斗鸡博弈的混合均衡
斗鸡博弈有两个纯策略均衡和一个混合均衡。计算混合均衡:
设我以概率 前进、 让步;对方以概率 前进。
我前进的期望: 我让步的期望:
混合均衡要求两者无差异:
对称均衡下 。
所以混合均衡是:双方都以40%概率前进、60%概率让步。
9.5 为什么要混合?
很多人觉得混合策略很反直觉:为什么我要”随机”?真的抛硬币决定?
其实混合策略有几种可能的解释:
1. 不确定性:我真的不知道对手会怎么选,所以混合;
2. 不可预测性:我必须随机,让对手无法针对;
3. 最佳响应:理性计算告诉我应该在多个策略间随机。
在博弈论里,第三种解释最重要——混合策略不是”我不知道怎么办所以随便选”,而是”在对方策略下,这些选择的期望效用相等,所以我选哪个都一样”。
9.6 支持与激励相容
支持(Support):混合策略中概率为正的纯策略集合。
关键性质:在混合均衡中,任何在支持内的纯策略,其期望效用必须相等;任何在支持外的纯策略,其期望效用不能高于支持内的。
这个性质可以用来求解混合均衡:
- 假设某些策略在支持内
- 写出无差异条件
- 解出概率
- 验证这些概率确实构成最佳反应
十、进化稳定策略 ESS:生物进化中的博弈均衡
10.1 从理性到进化
标准博弈论假设完美理性。但生物学家发现,即使没有完美理性,博弈的结果也可能”稳定”——通过自然选择。
进化博弈论(Evolutionary Game Theory) 就是研究这个的:不是假设玩家”计算”最优策略,而是假设”更好的策略会传播”。
10.2 什么是ESS
进化稳定策略(Evolutionarily Stable Strategy, ESS):如果整个种群都采用策略 ,那么小比例的突变者采用其他策略无法获得更高适应度。
形式化:策略 是ESS,如果对任意替代策略 ,存在阈值 使得:
用人话说:如果大家都用 ,少数”异类”用其他策略也活不下去。
10.3 鹰鸽博弈
生物学中最经典的例子是鹰鸽博弈(Hawk-Dove Game)——本质就是斗鸡博弈。
两种动物争抢资源(价值为 ),可以选”战斗”或”让步”:
- 战斗:赢则获得 ,输则损失 (战斗成本)
- 让步:总是获得
支付矩阵:
| 对方战斗 | 对方让步 | |
|---|---|---|
| 我战斗 | ||
| 我让步 |
ESS取决于 和 的相对大小:
- 如果 (资源很值钱):鹰是ESS——种群会演化到全部鹰
- 如果 (战斗太贵):存在混合ESS——种群中鹰的比例为
10.4 ESS与纳什均衡的关系
ESS和纳什均衡有联系但不相同:
- ESS一定是纳什均衡(但反过来不一定)
- 纳什均衡是”没人愿意单方面改变”
- ESS是”无法被小比例突变者入侵”
简单说:ESS是更强的稳定性要求。
10.5 复制者动态
复制者动态(Replicator Dynamics):适应度高的策略比例增加,适应度低的策略比例减少。
其中 是平均适应度。
如果ESS存在,复制者动态会收敛到ESS——但不是所有纳什均衡都能通过复制者动态达到。
10.6 ESS的现实意义
ESS解释了自然界很多有趣现象:
1. 性比率为什么接近1:1?
因为生儿子还是生女儿是ESS。父母投资儿子的期望收益等于投资女儿的期望收益(在基因层面),所以自然选择维持1:1的性别比。
2. 动物为什么有”仪式化”争斗?
很多动物争斗到一定程度就停了,而不是拼个你死我活。因为全力战斗是”鹰策略”,点到为止是”鸽策略”,两者的ESS混合让种群稳定。
3. 合作如何在进化中出现?
“一报还一报”(Tit-for-Tat)策略在重复囚徒困境中是ESS。这意味着,即使在自私的基因竞争中,合作也能演化出来。
十一、重复博弈:合作如何在长期博弈中出现?
11.1 一次博弈 vs 重复博弈
囚徒困境之所以”困境”,是因为只玩一次。如果同样的对手会反复遇到,情况可能不同。
有限次重复博弈:囚徒困境玩T次
用逆向归纳:第T次,两个理性人都会坦白;第T-1次,考虑到第T次会坦白,所以也坦白……一直倒推到第1次。
结论:在标准假设下,有限次重复囚徒困境的唯一子博弈完美均衡是每次都坦白。
但等等——现实中人们确实会合作啊?这是因为现实博弈的”终止”不是确定的,或者玩家不够理性,或者有其他摩擦。
11.2 无限次重复博弈
如果囚徒困境无限次重复,情况就不同了。
玩家不是最大化当期收益,而是最大化贴现收益和:
其中 是贴现因子,衡量耐心程度。 越大,越重视未来。
11.3 冷酷策略(Grim Trigger)
冷酷策略:
- 第一期选择合作(抵赖)
- 一旦对方背叛,此后永远背叛
如果两个玩家都用冷酷策略,合作能否维持?
假设对方用冷酷策略,我:
- 选择合作:每期得 -1,贴现和为
- 背叛一次:当期得 0,之后得 -5,贴现和为
合作优于背叛的条件:
只要 ,即未来权重超过20%,合作就能维持!
11.4 触发策略家族
冷酷策略过于严厉——一旦背叛就永不原谅。更温和的策略可能效果更好:
1. 扳机策略:合作直到被背叛,然后转而只选Nash均衡
2. 针锋相对(Tit-for-Tat, TFT):
- 第一期合作
- 之后复制对手上期的选择
TFT在实验中被证明非常成功——它”友善”(不先背叛)、“宽容”(背叛后仍给机会)、“清晰”(对手容易理解)。
3. 慷慨的针锋相对(Generous TFT):偶尔对背叛者手下留情(比如5%概率不报复)
11.5 无名氏定理(Folk Theorem)
无名氏定理说了一件很有意思的事:
在无限次重复博弈中,任何”合理”的收益向量都可以是均衡结果,只要玩家足够耐心。
“合理”意味着:
- 每个玩家至少得到他在单期博弈中的”保底”收益
- 总收益不超过”帕累托最优”
这意味着长期关系可以支持各种合作安排——耐心创造了一切可能。
但无名氏定理也带来问题:它预测的结果太多,无法告诉我们”哪个均衡会真的实现”。
11.6 重复博弈的现实启示
1. 长期关系促进合作
为什么老字号更讲信用?因为欺骗的代价是失去长期客户。
2. 声誉有价值
在社区里传谣言要小心——声誉受损的代价可能远超短期收益。
3. 退出成本很重要
员工为什么愿意加班?因为跳槽有成本,忍一忍比离开划算。
4. 模糊的终止点有利于合作
如果囚徒困境不知道要重复多少次,人们更愿意合作——因为不知道什么时候会”算账”。
十二、博弈论与机制设计:如何设计不会被钻空子的规则?
12.1 什么是机制设计
博弈论是给定规则,分析结果。机制设计是反向工程——从想要的结果出发,设计规则。
核心问题:如何设计游戏规则,让”追求私利”的玩家自发实现”社会最优”?
12.2 激励相容
激励相容(Incentive Compatibility, IC):说实话对每个人都是最优选择。
传统规则设计:我定规则,你遵守。 激励相容:我设计的规则让你愿意说实话。
12.3 经典案例:Vickrey拍卖
**Vickrey拍卖(二次价格拍卖)**的规则:
- 密封投标
- 最高价者获胜
- 支付第二高出价
神奇结论:说实话是占优策略!
证明:
- 如果你的真实估值 高于第二高出价 :说实话赢得物品,支付 ,净得 。如果你谎报低于 ,可能输掉;谎报高于 不影响支付。所以说实话不差。
- 如果你的真实估值 :输赢无差异,说谎无意义。
所以Vickrey拍卖让买家自然地报出真实价格——不需要道德说教,不需要监管,机制本身让人不想撒谎。
12.4 显示原理
显示原理(Revelation Principle) 是机制设计最重要的工具:
如果某个机制能让理性人说真话达到某个结果,那么一定存在一个”直接说真话”的机制也能达到同样结果。
这意味着:在研究激励相容时,我们可以把”说真话”设为均衡,然后只研究这个机制的属性。搜索空间大大缩小。
12.5 VCG机制
VCG机制(Vickrey-Clarke-Groves Mechanism) 是更一般的激励相容机制:
对于资源分配问题,VCG支付 = 没有你时其他人的福利 - 有你时其他人的福利
这恰好等于你对社会的”边际贡献”。
VCG的性质:
- 强激励相容:说实话是占优策略
- 帕累托有效:给定说实话的配置是社会最优
- 个体理性:至少不亏
12.6 机制设计的常见陷阱
1. 奖励黑客(Reward Hacking)
设计了激励,但玩家找到了”作弊”方式获得奖励但不完成任务。
例子:设计”按代码行数”付费,结果程序员写废话代码。
2. 古德哈特定律(Goodhart’s Law)
当一个指标成为目标时,它就不再是好指标。
例子:按”学生考试分数”评价老师,结果老师只教应试技巧。
3. 边际效应忽视
只考虑直接激励,忽视间接效应。
例子:给举报贪污的人发奖金,结果产生诬告。
12.7 机制设计与AI
现代AI系统本质上是机制设计问题:
1. 推荐算法
平台设计推荐规则,用户贡献数据。问题是:如何让用户提供真实偏好?如何防止刷单、薅羊毛?
2. 广告拍卖
Google、Facebook的广告位如何定价?Vickrey拍卖的变体是主流。
3. 自动驾驶决策
紧急情况时AI如何决策?涉及多方利益的权衡。
4. AI对齐(AI Alignment)
如何设计训练机制让AI”愿意”对齐人类价值观?这可能是最重要的机制设计问题。
十三、动手实验:用Python模拟博弈
13.1 囚徒困境模拟
import numpy as np
import matplotlib.pyplot as plt
from collections import defaultdict
# 囚徒困境支付矩阵 (T, R, P, S) = (0, -1, -5, -8)
T, R, P, S = 0, -1, -5, -8
def prisoner_dilemma_payoff(action1, action2):
"""返回 (player1_payoff, player2_payoff)"""
if action1 == 'cooperate' and action2 == 'cooperate':
return R, R
elif action1 == 'cooperate' and action2 == 'defect':
return S, T
elif action1 == 'defect' and action2 == 'cooperate':
return T, S
else:
return P, P
# 策略定义
def always_cooperate(history):
return 'cooperate'
def always_defect(history):
return 'defect'
def tit_for_tat(history):
if len(history) == 0:
return 'cooperate'
return history[-1][1] # 复制对手上一步
def suspicious_tft(history):
"""第一次背叛,之后复制对手"""
if len(history) == 0:
return 'defect'
return history[-1][1]
def grim_trigger(history):
"""一旦对方背叛,永远背叛"""
for _, opponent_action in history:
if opponent_action == 'defect':
return 'defect'
return 'cooperate'
def grudger(history):
"""一旦对方背叛两次,永不合作"""
defects = sum(1 for _, a in history if a == 'defect')
return 'cooperate' if defects < 2 else 'defect'
def pavlov(history):
"""赢则保持,输则改变"""
if len(history) == 0:
return 'cooperate'
my_last, opp_last = history[-1]
if my_last == 'cooperate' and opp_last == 'cooperate':
return 'cooperate'
elif my_last == 'defect' and opp_last == 'defect':
return 'cooperate'
else:
return 'defect'
# 模拟单次博弈
def play_once(strategy1, strategy2, history1, history2):
a1 = strategy1(history1)
a2 = strategy2(history2)
p1, p2 = prisoner_dilemma_payoff(a1, a2)
return a1, a2, p1, p2
# 模拟重复博弈
def simulate_repeated_game(strategy1, strategy2, rounds=100):
history1, history2 = [], []
total_p1, total_p2 = 0, 0
for _ in range(rounds):
a1, a2, p1, p2 = play_once(strategy1, strategy2, history1, history2)
history1.append((a1, a2))
history2.append((a2, a1))
total_p1 += p1
total_p2 += p2
return total_p1 / rounds, total_p2 / rounds
# 比赛:所有策略两两对决
strategies = {
'Always Cooperate': always_cooperate,
'Always Defect': always_defect,
'Tit-for-Tat': tit_for_tat,
'Suspicious TFT': suspicious_tft,
'Grim Trigger': grim_trigger,
'Grudger': grudger,
'Pavlov': pavlov,
}
print("囚徒困境策略比赛(100轮平均收益)\n")
print(f"{'策略':<20} vs {'对手':<20} {'我方收益':<10} {'对手收益':<10}")
print("-" * 60)
results = defaultdict(lambda: {'score': 0, 'opponents': []})
for name1, strat1 in strategies.items():
for name2, strat2 in strategies.items():
if name1 >= name2: # 避免重复
continue
avg1, avg2 = simulate_repeated_game(strat1, strat2, rounds=100)
print(f"{name1:<20} vs {name2:<20} {avg1:<10.2f} {avg2:<10.2f}")
results[name1]['score'] += avg1
results[name1]['opponents'].append((name2, avg1, avg2))
results[name2]['score'] += avg2
results[name2]['opponents'].append((name1, avg2, avg1))
print("\n" + "=" * 60)
print("总排名(按平均得分):")
print("=" * 60)
rankings = sorted(results.items(), key=lambda x: x[1]['score'], reverse=True)
for i, (name, data) in enumerate(rankings, 1):
avg = data['score'] / (len(strategies) - 1)
print(f"{i}. {name}: 平均 {avg:.2f} 分")13.2 协调博弈模拟
import numpy as np
import matplotlib.pyplot as plt
# 协调博弈支付矩阵
# 两个人需要协调,都选A或都选B都好,选不同则差
PAYOFF_COORDINATION = {
('A', 'A'): (3, 3),
('B', 'B'): (2, 2),
('A', 'B'): (0, 0),
('B', 'A'): (0, 0),
}
def coordination_payoff(a1, a2):
return PAYOFF_COORDINATION[(a1, a2)]
# 混合策略求解
def find_mixed_equilibrium():
"""
协调博弈有混合均衡:
假设玩家以p选A,1-p选B
对方选A的期望:3p + 0(1-p) = 3p
对方选B的期望:0p + 2(1-p) = 2(1-p)
无差异:3p = 2(1-p) => 5p = 2 => p = 0.4
"""
p = 2/5
return p
p_equilibrium = find_mixed_equilibrium()
print(f"协调博弈的混合均衡:双方以 {p_equilibrium:.2f} 概率选A")
# 模拟学习过程:虚幻学习 (Fictitious Play)
def fictitious_play(n_rounds=1000):
"""
虚幻学习:假设对手策略是历史频率的均值
"""
history1 = [] # 玩家1的选择
history2 = [] # 玩家2的选择
# 初始信念:随机
freq1_A = 0.5 # 玩家1认为玩家2选A的频率
freq2_A = 0.5 # 玩家2认为玩家1选A的频率
results = []
for t in range(n_rounds):
# 玩家1的最佳反应
expected_A1 = 3 * freq2_A + 0 * (1 - freq2_A)
expected_B1 = 0 * freq2_A + 2 * (1 - freq2_A)
a1 = 'A' if expected_A1 >= expected_B1 else 'B'
# 玩家2的最佳反应
expected_A2 = 3 * freq1_A + 0 * (1 - freq1_A)
expected_B2 = 0 * freq1_A + 2 * (1 - freq1_A)
a2 = 'A' if expected_A2 >= expected_B2 else 'B'
history1.append(a1)
history2.append(a2)
# 更新信念(贝叶斯更新 = 频率更新)
freq1_A = history1.count('A') / len(history1)
freq2_A = history2.count('A') / len(history2)
# 记录结果
if t % 100 == 0:
results.append((t, freq1_A, freq2_A))
return results
# 运行模拟
np.random.seed(42)
results = fictitious_play(1000)
print("\n虚幻学习过程(前10个采样点):")
print(f"{'轮次':<10} {'P(玩家1选A)':<15} {'P(玩家2选A)':<15}")
print("-" * 40)
for t, p1, p2 in results[:10]:
print(f"{t:<10} {p1:<15.3f} {p2:<15.3f}")
# 可视化
plt.figure(figsize=(10, 6))
t_values = [r[0] for r in results]
p1_values = [r[1] for r in results]
p2_values = [r[2] for r in results]
plt.plot(t_values, p1_values, label='P(玩家1 选A)', alpha=0.8)
plt.plot(t_values, p2_values, label='P(玩家2 选A)', alpha=0.8)
plt.axhline(y=0.4, color='r', linestyle='--', label='理论均衡 p=0.4')
plt.xlabel('博弈轮次')
plt.ylabel('选择A的概率')
plt.title('协调博弈的虚幻学习')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('coordination_game_learning.png', dpi=150)
print("\n图片已保存到 coordination_game_learning.png")13.3 纳什均衡求解器
import numpy as np
from itertools import product
def find_pure_nash_equilibrium(payoff_matrix):
"""
找双人博弈的纯策略纳什均衡
payoff_matrix: 形状为 (m, n, 2) 的数组
payoff_matrix[i, j, 0] = 玩家1在(i,j)的收益
payoff_matrix[i, j, 1] = 玩家2在(i,j)的收益
"""
m, n = payoff_matrix.shape[:2]
nash_equilibria = []
# 找出玩家1的每个策略在每列下的最佳反应
player1_best = []
for j in range(n):
best_val = max(payoff_matrix[i, j, 0] for i in range(m))
best_strategies = [i for i in range(m) if payoff_matrix[i, j, 0] == best_val]
player1_best.append(best_strategies)
# 找出玩家2的每个策略在每行下的最佳反应
player2_best = []
for i in range(m):
best_val = max(payoff_matrix[i, j, 1] for j in range(n))
best_strategies = [j for j in range(n) if payoff_matrix[i, j, 1] == best_val]
player2_best.append(best_strategies)
# 找交点
for i in range(m):
for j in range(n):
if i in player1_best[j] and j in player2_best[i]:
nash_equilibria.append((i, j))
return nash_equilibria
def find_mixed_nash_equilibrium(payoff_matrix, n_samples=100):
"""
网格搜索找混合纳什均衡(简化版,适用于2x2博弈)
"""
m, n = payoff_matrix.shape[:2]
equilibria = []
# 网格搜索
for i in range(n_samples + 1):
p = i / n_samples # 玩家1选第一个策略的概率
for j in range(n_samples + 1):
q = j / n_samples # 玩家2选第一个策略的概率
# 计算期望效用
if m == 2 and n == 2:
# 玩家1的EU
eu1_a = payoff_matrix[0, 0, 0] * (1-q) + payoff_matrix[0, 1, 0] * q
eu1_b = payoff_matrix[1, 0, 0] * (1-q) + payoff_matrix[1, 1, 0] * q
# 玩家2的EU
eu2_a = payoff_matrix[0, 0, 1] * (1-p) + payoff_matrix[1, 0, 1] * p
eu2_b = payoff_matrix[0, 1, 1] * (1-p) + payoff_matrix[1, 1, 1] * p
# 检查是否在支持内(无差异)
eps = 1e-3
if abs(eu1_a - eu1_b) < eps and abs(eu2_a - eu2_b) < eps:
if 0 < p < 1 and 0 < q < 1:
equilibria.append((p, q))
return equilibria
# 测试:囚徒困境
print("=" * 50)
print("测试1: 囚徒困境")
print("=" * 50)
pd_matrix = np.array([
[[-1, -1], [0, -8]], # 玩家1抵赖: (vs抵赖, vs坦白)
[[-8, 0], [-5, -5]] # 玩家1坦白
])
pure_eq = find_pure_nash_equilibrium(pd_matrix)
print(f"纯策略均衡: {pure_eq}")
print(f"解释: 行索引0=抵赖, 1=坦白; 列索引0=抵赖, 1=坦白")
# 测试:协调博弈
print("\n" + "=" * 50)
print("测试2: 协调博弈")
print("=" * 50)
coord_matrix = np.array([
[[3, 3], [0, 0]], # 选A
[[0, 0], [2, 2]] # 选B
])
pure_eq = find_pure_nash_equilibrium(coord_matrix)
mixed_eq = find_mixed_nash_equilibrium(coord_matrix)
print(f"纯策略均衡: {pure_eq}")
print(f"混合均衡候选: {[(f'p={p:.2f}, q={q:.2f}') for p, q in mixed_eq]}")
print(f"解释: 行索引0=A, 1=B; 列索引0=A, 1=B")
# 测试:斗鸡博弈
print("\n" + "=" * 50)
print("测试3: 斗鸡博弈")
print("=" * 50)
hawk_dove = np.array([
[[-10, -10], [1, -1]], # 前进
[[-1, 1], [-5, -5]] # 让步
])
pure_eq = find_pure_nash_equilibrium(hawk_dove)
mixed_eq = find_mixed_nash_equilibrium(hawk_dove)
print(f"纯策略均衡: {pure_eq}")
print(f"混合均衡候选: {[(f'前进={p:.2f}, q(让步)={1-q:.2f}') for p, q in mixed_eq]}")
# 计算理论值
# 设p为行玩家前进概率
# 行玩家前进的EU: -10*q + 1*(1-q) = 1 - 11q
# 行玩家让步的EU: -1*q + -5*(1-q) = -5 + 4q
# 无差异: 1 - 11q = -5 + 4q => 15q = 6 => q = 0.4
print(f"理论混合均衡: p(前进)=0.40, q(让步)=0.40")十四、总结与展望
14.1 核心概念回顾
经过这么长的旅程,让我们回顾一下博弈论的核心概念:
1. 博弈三要素:玩家、策略、收益。理解任何博弈都要从这三要素入手。
2. 严格优势策略:无论对手怎么选都更好的策略。理性人永远不会选被支配的策略。
3. 纳什均衡:没人能单方面改进的僵局。是博弈论最核心的概念。
4. 混合策略:当纯策略均衡不存在时,用概率随机化。石头剪刀布的均衡就是混合的。
5. 囚徒困境:个人理性导致集体非理性的经典。理解这个困境,就理解了一半的社会问题。
6. ESS:进化稳定策略。不需要完美理性,自然选择也能产生稳定结果。
7. 重复博弈:长期关系可以维持合作。耐心是关键。
8. 机制设计:设计激励让自私的人自然做对的事。Vickrey拍卖是杰作。
14.2 下一步学习建议
如果你想继续深入:
1. 贝叶斯博弈:当信息不对称时如何博弈?信号博弈、筛选模型。
2. 动态博弈与承诺:先手优势、可信承诺、边缘政策。
3. 合作博弈:联盟如何形成、收益如何分配?Shapley值、核。
4. 演化博弈:复制者动态、ESS、合作的演化。
5. 机制设计进阶:VCG机制、市场设计、拍卖理论。
6. 博弈论与AI:多智能体强化学习、算法博弈论、对抗鲁棒性。
14.3 博弈论的局限
最后要提醒:博弈论是工具,不是万能药。
局限性:
-
完美理性假设:现实中人经常不理性。
-
共同知识假设:要求无限递归的理性共识,现实中难以满足。
-
计算复杂度:找纳什均衡可能是NP难问题。
-
多均衡问题:很多博弈有多个均衡,博弈论无法预测哪个会实现。
-
静态分析:博弈论擅长分析均衡,但对如何达到均衡关注不够。
理解这些局限,才能更好地应用博弈论。
参考文献
- Nash, J. (1950). Equilibrium Points in N-Person Games. Proceedings of the National Academy of Sciences, 36(1), 48-49.
- Nash, J. (1951). Non-Cooperative Games. Annals of Mathematics, 54(2), 286-295.
- von Neumann, J., & Morgenstern, O. (1944). Theory of Games and Economic Behavior. Princeton University Press.
- Osborne, M. J., & Rubinstein, A. (1994). A Course in Game Theory. MIT Press.
- Myerson, R. B. (1991). Game Theory: Analysis of Conflict. Harvard University Press.
- Fudenberg, D., & Tirole, J. (1991). Game Theory. MIT Press.
- Shapley, L. S. (1953). A Value for n-Person Games. Contributions to the Theory of Games, 2(28), 307-317.
- Vickrey, W. (1961). Counterspeculation, Auctions, and Competitive Sealed Tenders. Journal of Finance, 16(1), 8-37.
- Maynard Smith, J., & Price, G. R. (1973). The Logic of Animal Conflict. Nature, 246, 15-18.
- Kreps, D. M., & Wilson, R. (1982). Sequential Equilibria. Econometrica, 50(4), 863-894.
- Myerson, R. B. (1979). Incentive Compatibility and the Bargaining Problem. Econometrica, 47(1), 61-73.
- Gale, D., & Shapley, L. S. (1962). College Admissions and the Stability of Marriage. American Mathematical Monthly, 69(1), 9-15.
- Rubinstein, A. (1982). Perfect Equilibrium in a Bargaining Model. Econometrica, 50(1), 97-109.