博弈论基础

文档概述

博弈论是研究决策主体行为相互作用及策略选择的数学理论。本指南系统介绍标准形式博弈与扩展形式博弈、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):

  1. 第一步:删除所有被严格占优的策略
  2. 第二步:在剩余策略中,继续删除被严格占优的策略
  3. 重复,直到无法再删除

这个过程不会改变博弈的纳什均衡——因为纳什均衡不可能包含被占优策略。


六、纳什均衡:每个玩家都不能单方面改进的僵局

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)**是能让你收益最高的策略。

步骤:

  1. 固定对手的每个策略
  2. 找出在这个策略下你的最佳反应
  3. 找出所有互相是最佳反应的策略组合——这些就是纳什均衡

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)

  1. 找出被严格占优的策略并删除
  2. 在简化后的博弈中继续删除
  3. 直到没有策略可删

囚徒困境

  • 抵赖被坦白严格占优 → 删除抵赖
  • 结果:只剩坦白 → 纳什均衡是(坦白,坦白)

性别之战

  • 没有策略被严格占优
  • 无法删除任何策略
  • 结果:需要用混合策略求解

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):混合策略中概率为正的纯策略集合。

关键性质:在混合均衡中,任何在支持内的纯策略,其期望效用必须相等;任何在支持外的纯策略,其期望效用不能高于支持内的。

这个性质可以用来求解混合均衡

  1. 假设某些策略在支持内
  2. 写出无差异条件
  3. 解出概率
  4. 验证这些概率确实构成最佳反应

十、进化稳定策略 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. 第一期选择合作(抵赖)
  2. 一旦对方背叛,此后永远背叛

如果两个玩家都用冷酷策略,合作能否维持?

假设对方用冷酷策略,我:

  • 选择合作:每期得 -1,贴现和为
  • 背叛一次:当期得 0,之后得 -5,贴现和为

合作优于背叛的条件:

只要 ,即未来权重超过20%,合作就能维持!

11.4 触发策略家族

冷酷策略过于严厉——一旦背叛就永不原谅。更温和的策略可能效果更好:

1. 扳机策略:合作直到被背叛,然后转而只选Nash均衡

2. 针锋相对(Tit-for-Tat, TFT)

  • 第一期合作
  • 之后复制对手上期的选择

TFT在实验中被证明非常成功——它”友善”(不先背叛)、“宽容”(背叛后仍给机会)、“清晰”(对手容易理解)。

3. 慷慨的针锋相对(Generous TFT):偶尔对背叛者手下留情(比如5%概率不报复)

11.5 无名氏定理(Folk Theorem)

无名氏定理说了一件很有意思的事:

在无限次重复博弈中,任何”合理”的收益向量都可以是均衡结果,只要玩家足够耐心。

“合理”意味着:

  1. 每个玩家至少得到他在单期博弈中的”保底”收益
  2. 总收益不超过”帕累托最优”

这意味着长期关系可以支持各种合作安排——耐心创造了一切可能

但无名氏定理也带来问题:它预测的结果太多,无法告诉我们”哪个均衡会真的实现”。

11.6 重复博弈的现实启示

1. 长期关系促进合作

为什么老字号更讲信用?因为欺骗的代价是失去长期客户。

2. 声誉有价值

在社区里传谣言要小心——声誉受损的代价可能远超短期收益。

3. 退出成本很重要

员工为什么愿意加班?因为跳槽有成本,忍一忍比离开划算。

4. 模糊的终止点有利于合作

如果囚徒困境不知道要重复多少次,人们更愿意合作——因为不知道什么时候会”算账”。


十二、博弈论与机制设计:如何设计不会被钻空子的规则?

12.1 什么是机制设计

博弈论是给定规则,分析结果。机制设计是反向工程——从想要的结果出发,设计规则。

核心问题:如何设计游戏规则,让”追求私利”的玩家自发实现”社会最优”?

12.2 激励相容

激励相容(Incentive Compatibility, IC):说实话对每个人都是最优选择。

传统规则设计:我定规则,你遵守。 激励相容:我设计的规则让你愿意说实话。

12.3 经典案例:Vickrey拍卖

**Vickrey拍卖(二次价格拍卖)**的规则:

  1. 密封投标
  2. 最高价者获胜
  3. 支付第二高出价

神奇结论:说实话是占优策略

证明:

  • 如果你的真实估值 高于第二高出价 :说实话赢得物品,支付 ,净得 。如果你谎报低于 ,可能输掉;谎报高于 不影响支付。所以说实话不差。
  • 如果你的真实估值 :输赢无差异,说谎无意义。

所以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 博弈论的局限

最后要提醒:博弈论是工具,不是万能药。

局限性

  1. 完美理性假设:现实中人经常不理性。

  2. 共同知识假设:要求无限递归的理性共识,现实中难以满足。

  3. 计算复杂度:找纳什均衡可能是NP难问题。

  4. 多均衡问题:很多博弈有多个均衡,博弈论无法预测哪个会实现。

  5. 静态分析:博弈论擅长分析均衡,但对如何达到均衡关注不够。

理解这些局限,才能更好地应用博弈论。


参考文献

  1. Nash, J. (1950). Equilibrium Points in N-Person Games. Proceedings of the National Academy of Sciences, 36(1), 48-49.
  2. Nash, J. (1951). Non-Cooperative Games. Annals of Mathematics, 54(2), 286-295.
  3. von Neumann, J., & Morgenstern, O. (1944). Theory of Games and Economic Behavior. Princeton University Press.
  4. Osborne, M. J., & Rubinstein, A. (1994). A Course in Game Theory. MIT Press.
  5. Myerson, R. B. (1991). Game Theory: Analysis of Conflict. Harvard University Press.
  6. Fudenberg, D., & Tirole, J. (1991). Game Theory. MIT Press.
  7. Shapley, L. S. (1953). A Value for n-Person Games. Contributions to the Theory of Games, 2(28), 307-317.
  8. Vickrey, W. (1961). Counterspeculation, Auctions, and Competitive Sealed Tenders. Journal of Finance, 16(1), 8-37.
  9. Maynard Smith, J., & Price, G. R. (1973). The Logic of Animal Conflict. Nature, 246, 15-18.
  10. Kreps, D. M., & Wilson, R. (1982). Sequential Equilibria. Econometrica, 50(4), 863-894.
  11. Myerson, R. B. (1979). Incentive Compatibility and the Bargaining Problem. Econometrica, 47(1), 61-73.
  12. Gale, D., & Shapley, L. S. (1962). College Admissions and the Stability of Marriage. American Mathematical Monthly, 69(1), 9-15.
  13. Rubinstein, A. (1982). Perfect Equilibrium in a Bargaining Model. Econometrica, 50(1), 97-109.

相关文档