囚徒困境:为什么理性的个体,会一起走向糟糕的结局
囚徒困境 / Prisoner’s Dilemma
中文:每个人都选对自己最好的那一步,最后所有人一起输。
EN: Everyone picks the move that’s best for themselves, and together they all lose.
我们来聊一个让人很不甘心的结构:一屋子聪明、理性、各自都想把事做好的人(或 Agent),可以精准地、一步不错地,一起滑向一个谁都不想要的坏结局——而且每一步,他们都做对了。
为什么要问这个问题
先说两个你大概率碰过的场景。
第一个:你们几个团队共用一份限流的 API 配额,或者共用一个 GPU 集群。道理上大家都清楚,只要各自克制一点、错峰用,谁都有稳定的份额。可现实是,每个团队心里都在打同一个算盘:”别人要是也克制,那我多抢一点也没事;别人要是不克制,那我更得赶紧抢,不然吃亏的就是我。”于是每个团队都在拼命抢,配额几分钟被打满,429 糊一脸,集群抖成筛子——所有人都比”大家都克制”的时候过得更差。
第二个:你搭了个多 Agent 系统,指望它们协作。结果一个买方 Agent 和一个卖方 Agent 谈判,两边都寸步不让,谈崩收场;或者你搞了个多 Agent 辩论想逼出真相,结果每个 Agent 都死守自己一开始的立场,谁也不肯让步——因为”让步”在局部看就是”我输了”。你想要的是合力,拿到的是互相拆台。
这两件事,其实是同一件事:每个参与者都做了对自己最划算的选择,可这些选择叠在一起,结果对所有人都更糟。 没有人犯蠢,没有人使坏,但集体的结局烂得一塌糊涂。
这个结构不新鲜,也根本不是 AI 独有的。两个数学家在 1950 年就把它拆得明明白白,讲的还不是芯片,是核弹。
它从哪来
1950 年,兰德公司(RAND)。那是冷战最紧张的年头,一群数学家拿着军方的钱,研究一件要命的事:美苏两个超级大国,各自理性地算计,为什么会一起冲进核军备竞赛?
梅里尔·弗勒德和梅尔文·德雷舍两个人,用博弈论搭了个小模型,把这件事的骨架露了出来。后来数学家阿尔伯特·塔克为了给一群心理学家讲清楚,套了个好记的故事上去,”囚徒困境”这个名字就这么定了。
故事是这样的:两个同伙被抓,分开审,彼此不能通气。检察官给每个人开同一个价:
- 两人都不招(合作):证据不足,各判 1 年。
- 你招了、他没招(你背叛他):你当场释放,他判 10 年。
- 两人都招(互相背叛):各判 5 年。
关键的是接下来这步推理。站在你的角度想:
- 如果他不招,你不招判 1 年,你招直接走人(0 年)——招更好。
- 如果他招了,你不招判 10 年,你招判 5 年——还是招更好。
看出来了吗?不管他怎么选,你招都更划算。 这种”无论对方怎么做,你都有一个更好的选择”的招法,博弈论里叫占优策略(dominant strategy)。招(背叛),就是你的占优策略。
问题在于,他和你一模一样地聪明,也会算出”招”是他的占优策略。于是两个理性的人都招了,各判 5 年。可要是他俩都咬牙闭嘴,本来只用各判 1 年。两个各自正确的选择,叠出了一个对两人都更糟的结局。 这就是囚徒困境。
核心直觉
把它讲透,只需要盯住两件事:
- 在单局里,背叛是占优策略。 不管对方合作还是背叛,你背叛都不吃亏、还占便宜。所以纯讲理性,每个人都该背叛。
- 可当两人都背叛,结果比两人都合作更差。 各判 5 年 vs 各判 1 年。个体的理性,加起来变成了集体的愚蠢。
这里藏着一个特别反直觉、又特别要命的裂缝:对个体最优的选择,和对集体最优的选择,不是同一个。 双方都背叛,是这局的纳什均衡 / Nash Equilibrium——所谓均衡,意思是没人能靠单方面改变选择让自己变好(你单方面改成合作,只会从 5 年变 10 年,更惨)。可这个稳稳当当的均衡,偏偏不是最优。最优是双方合作,但那个点不稳:只要有一方能靠背叛占便宜,它就守不住。
graph TD
A[你只能选一次 合作还是背叛] --> B[对方合作时 你背叛能白拿好处]
A --> C[对方背叛时 你背叛能少亏一点]
B --> D[所以不管对方怎么选 背叛都更划算]
C --> D
D --> E[双方各自都这么算 于是都背叛]
E --> F[两人一起掉进比互相合作更差的结局]
F -.这是稳定的均衡 却不是最优.-> E
注意最后那条虚线:坏结局是自锁的。两个人都被卡在”都背叛”上,谁也不敢先松手,因为先合作的那个会被对方白吃一口。这就是为什么囚徒困境这么难缠——它不是因为谁不懂事,而是因为每个人都太懂事了。
记住这把钥匙,后面反复要用:在单局博弈里,合作是劝不出来的——因为背叛对每个人都是理性的。想改结局,别改人,改游戏。
现实中的例子
街角对着开的两家加油站,就是一场每天上演的囚徒困境。
两家都定高价,各自都赚钱(这是”都合作”)。可 A 家会想:”我要是偷偷降两毛,对面的客人全被我抢过来。”于是 A 降价。B 一看客人跑光,只能跟着降。两家一路降到几乎不赚钱为止,谁也没多抢到客人,利润却一起被削平了。降价对每一家单独看都是理性的(不降就等着被抢),可两家都降,结果两败俱伤。顾客乐了,老板哭了。
(还有个更扎心的版本:职业体育里的兴奋剂。如果没人用药,大家公平竞争,都健康。可每个运动员都会算:”别人不用我用,我就赢;别人用我不用,我就输。”于是不管别人用不用,自己用都”更划算”。结果全都用药,名次排下来跟没人用药时几乎一样,白白把身体搞垮——所有人一起冲进了那个谁都不想要的结局。)
这些故事听着离机房很远,但你把”两家加油站”换成”两个 AI 实验室”、把”运动员”换成”Agent”,剧本一个字都不用改。
映射到 AI:多个 Agent 天生会互相背叛
单个模型的世界里,囚徒困境还睡着。可一旦你开始搭多智能体系统、或者让多个团队和任务抢同一份资源,它立刻醒过来——因为这时候,每个 Agent 都在为自己的局部目标做理性选择。
多 Agent 系统会互相拆台。 你让两个 Agent 谈判、协作、辩论,期望它们合力。但只要每个 Agent 优化的是自己那一份局部收益,背叛就会冒出来:谈判里双方都硬扛到谈崩,辩论里各自死守立场不肯更新,协作里每个子 Agent 都想把最脏最难的活推给别人。没有哪个 Agent 有”使坏”的意图,它只是在优化你给它的那个局部目标——而这,恰恰是最麻烦的地方。
抢共享资源,是最直接的一版。 一堆 job 共用一个集群、一群 Agent 共用一份 token 预算或工具调用额度,每个都拼命多抢,因为克制的那个只会把吞吐白让给别人。结果就是踩踏:一起打满、一起 429、一起变慢。这其实是囚徒困境的多人版,它有个更响的名字,叫公地悲剧 / Tragedy of the Commons——n 个人共用一块草地,每个人都理性地多放一头羊,草地很快被啃秃。
那有救吗?有。救命的关键,是把”一锤子买卖”变成”反复打交道”。
单局会背叛,重复博弈能长出合作。 上面所有的推理,都建立在”只玩一次”上。可现实里的大多数互动是重复的——今天你背叛我,明天我就记着。政治学家罗伯特·阿克塞尔罗德在 1980 年做过一个著名实验:他办了个比赛,让各路策略在反复进行的囚徒困境里捉对厮杀。赢家不是什么精巧的算计,而是最简单的一个,叫”针锋相对(Tit-for-Tat)”:第一步先合作,之后对方上一步怎么对我,我这一步就怎么对他。它的性格特别好使——上来先释放善意,你一背叛我立刻回敬,可你一回头合作我马上既往不咎。 善良、强硬、又不记仇。
这条给多 Agent 设计的启示是硬核的:想让一群 Agent 合作,就别让它们做”匿名的一次性交易”。 给它们身份、记忆、声誉——让今天的背叛在明天有代价。一个能记住”谁上次坑过我”的 Agent 市场,能撑起匿名 Agent 撑不起的合作。
但最彻底的解法,是改收益矩阵本身。 重复博弈治标,真正治本的是机制设计 / Mechanism Design:你没法靠给 Agent 写一句”请友好合作、公平共享”的 prompt 就让它合作——只要背叛还划算,那句 prompt 就是张遮羞布,压力一大它照样背叛。你得动手把游戏本身改了:给共享资源上硬配额,让抢占不再占便宜;派一个有权威的协调者来分预算、惩罚囤积;把奖励对齐,让某个子 Agent 的局部最优,正好等于系统的全局最优。合作合不合得成,从来不取决于你劝得多真诚,而取决于你把收益矩阵设成了什么样。
所以开头那两个场景,答案到这里就一句话:你的 Agent 和你的团队都没坏,它们只是在各自理性地背叛——因为在你设的那个游戏里,背叛就是划算。
工程师视角:默认背叛,然后动手改游戏
道理讲完,落到几个能直接上手的动作。
默认你系统里的每个 Agent、每个团队、每个 job,都会在背叛划算的那一刻背叛。 不是因为它坏,是因为它理性。设计多 Agent 或共享资源系统时,别假设参与者”会讲道理、会互相体谅”。对着每个参与者问一句:在我这套规则下,合作对它个人是不是理性的? 如果不是,那背叛迟早发生,你的系统得扛得住,而不是指望它别发生。(这和古德哈特那条”默认每个指标都会被钻空子”是同一个姿势。)
把一次性变成重复的。 匿名 + 只交易一次 = 必然背叛。给 Agent 稳定的身份、给交互留记忆、给行为记声誉——让”上次坑过人”这件事在这次留下影子。重复,是合作能自己长出来的土壤。
改收益,别改 prompt。 你可以在 prompt 里写满”请公平、请合作”,但只要背叛还划算,那都是空话,赌注一抬它就露馅。真正管用的是把约束焊进结构里:硬配额、预算上限、把背叛的惩罚直接写进奖励函数。一句 prompt 挡不住一个理性的优化器,一个改好的收益矩阵可以。
加一个裁判。 很多囚徒困境,只要有一个能执行惩罚的第三方就当场瓦解。多 Agent 系统里放一个有权威的协调者(orchestrator)来分配共享预算、对囤积开罚单,”人人抢”就变成了”人人拿到公平的一份”。代价是你用一部分自治,换来了协调——这笔账值不值,得自己算。
这一节的姿势一句话:别对着你的 Agent 讲道德,去改它们所处的那个游戏。
投资视角:那场谁都想停、又谁也停不下来的竞赛
把镜头拉到整个行业,囚徒困境换身衣服又出现了——而且是今天 AI 圈最要命的那一版。
几乎每个 AI 实验室都心知肚明:这么疯狂地抢着发布能力越来越强的模型、把安全测试一压再压,对整个行业、甚至对人类,都不是好事。可每一家都在算同一笔账:”我要是为了安全踩刹车,对手不踩,市场、人才、融资全被他抢走;对手要是踩了我不踩,我就赢。所以不管对手踩不踩,我都得往前冲。”于是每一家都在往前冲,整个行业一起冲进了一个连业内人自己都觉得太快的节奏里。没有哪家是坏人,每一家都只是在做局部理性的选择——这是一场教科书级的、行业规模的囚徒困境。
这也解释了为什么那些”我们一起慢下来吧”的自愿承诺,结构上如此脆弱:它等于请所有人去打那个被占优的策略(合作),而只要有一家偷偷背叛(继续狂奔)就能占大便宜,这个约定就守不住。真正能改变竞赛节奏的,从来不是道德呼吁,而是从外部改掉收益矩阵——比如监管,比如市场开始为”可靠”而不是”最快”买单。这又绕回了机制设计。
绕回到我们做 AI 这件事,这条给工程师的启示其实很直接:别把”我们会负责任”当成一家公司的护城河,也别当成一个系统的安全保证。 竞赛的压力会碾过善意。你评估一家 AI 公司、或者设计自己团队的激励和产品的护栏时,该假设的是那个囚徒困境的结构,而不是谁的好心。问自己一句:在真实的竞争压力下,做正确的事对每个参与者是不是也理性的?如果不是,光靠自觉,撑不住。
生活视角:你早就玩过这局了
这套结构,根本不待在机房里。
小组作业里总有人摸鱼——因为”别人干我不干,我照样拿分”,于是大家都想搭便车,项目烂尾。堵车时匝道汇入,每个人都想加塞插一脚,结果谁也快不了,整条路更堵。合租的公共厨房没人愿意多擦一次,因为”凭什么是我”。这些都是同一个骨架:个体最优,叠成集体最差。
把它想透,对你设计 AI 产品其实很要命:只要你把多个 Agent(或多个用户)放进一个”背叛更划算”的局里,再怎么在 prompt 或用户协议里写”请友善合作”,都拦不住他们背叛。 你能做的,不是感化他们,而是把那个局本身改掉——让合作变成他们自己也愿意选的那一步。想明白这一点,往往就决定了你那个多 Agent 功能,是真能协作,还是只在表演协作。
常见误解
第一个,也是最常见的:以为囚徒困境说的是”人自私、人性坏”。 不是。两个囚徒可以都非常理性、甚至都真心想合作,但只要收益矩阵长成那样,结构就逼着他们背叛。就像梯度下降没有道德也照样 reward hacking——一屋子诚实善良的人(或 Agent),照样会一起走进那个坏结局。 这是结构问题,不是人品问题。想反了,你会去抓”坏人”,而真正该改的是那个游戏。
第二个,更危险:以为”既然背叛是理性的,那合作就是天真、就是不可能”。 恰恰相反。单局的悲观结论,是”只玩一次”这个假设的产物。一旦博弈重复、参与者有记忆,合作不但可能,还常常就是理性的均衡(阿克塞尔罗德那场比赛证过了)。别把一次性博弈的绝望,错当成关于合作的普遍真理。
第三个:以为大家沟通一下、承诺一下就能解决。 只要背叛还划算,一句没有约束力的承诺就是空话(博弈论里管这叫 cheap talk,廉价信号)。真正解决问题的,不是那场对话,而是改掉背后的收益——可执行的合约、重复的博弈、留下声誉。嘴上说好,挡不住手上背叛。
什么时候不成立
知道一个模型什么时候失效,比记住它本身更值钱。囚徒困境要成立,得同时满足两条:”背叛是占优策略”+”这基本是一锤子买卖、没人能事后惩罚背叛”。把这两条反过来,就是它不成立的地方:
它其实压根不是囚徒困境。 很多我们以为是困境的场景,收益矩阵根本不长那样——如果合作对你个人就是最优的(不存在”背叛能占便宜”的诱惑),那它只是个普通的协调博弈、甚至干脆是双赢,不是困境。惊慌之前,先老老实实把收益顺序摆出来看看。
博弈明显是重复的、而且没有明确的终点。 只要参与者会反复打交道、还记得彼此,”未来的阴影”就会把合作变成理性选择。别把重复博弈当成单局来悲观。
存在能执行的合约或外部权威。 一个能惩罚背叛的裁判,会直接把收益矩阵改得不再是囚徒困境。我们建协调者、上配额、做机制,本质都是在干这件事——把困境从结构上拆掉。
判断方法还是那把钥匙,反过来用:**”对每个参与者,不管别人怎么做,背叛是不是都更划算?而且这是不是一锤子买卖、没人能在事后惩罚背叛?”** 两个都”是”→ 你面对的是真困境,别指望说教,去改矩阵;有一个”不是”→ 它可能根本不是囚徒困境,或者你有的是办法救。
相关模型
囚徒困境不是孤岛,它挂在一张网里。下面这些是同一张网上的邻居(这些文章我会陆续补上):
- 纳什均衡 / Nash Equilibrium:双方都背叛,就是囚徒困境的纳什均衡。囚徒困境是”均衡不等于最优”这件事最出名的一个例子。
- 公地悲剧 / Tragedy of the Commons:把两个囚徒换成 n 个人抢一块公共资源,就是它。共享集群、限流 API,都是这一版。
- 机制设计 / Mechanism Design:囚徒困境的正经解药。既然改不了人,那就改游戏的规则和收益,让合作变成理性选择。
- 古德哈特定律 / Goodhart’s Law:给每个子 Agent 定错了局部指标,你就亲手在系统里造出一个囚徒困境——每个都去优化自己那个数,系统整体反而输。
一句话记住
中文:合作不是靠人品,是靠结构。单局里背叛永远划算,所以要么把游戏变成重复的、让背叛在未来挨罚,要么直接改掉收益矩阵——否则一群理性的人,会分毫不差地走进一个谁都不想要的结局。
EN: Cooperation isn’t a matter of character; it’s a matter of structure. In a one-shot game defection always pays, so either make the game repeated so betrayal gets punished later, or change the payoff matrix outright—otherwise a room full of rational agents will march, precisely, into an outcome none of them wanted.