阿猫的博客

阿猫的博客

博弈论和内卷、防御性编程

258
2024-07-28

TL;DR

内卷和防御性编程在个人短期利益上是最优选择,但从整体上看却导致了双输局面。通过调整各方的收益,可以实现集体最优。

概述

博弈论(Game Theory)是研究决策者(称为博弈者)在特定规则和条件下相互作用时所采取策略的理论。它广泛应用于经济学、政治学、社会学、心理学和生物学等多个领域。

在博弈论中,有以下几个概念:

  • 博弈(Game):博弈是指一个包含多个决策者(玩家)相互作用的情境,每个决策者的收益取决于所有决策者的策略组合。
  • 玩家(Players):玩家是参与博弈的个体或实体,每个玩家都有一套可供选择的策略集(Strategies)。
  • 策略(Strategy):策略是指玩家在博弈中可采取的行动方案。每个玩家可以根据自己的策略做出决策。
  • 支付(Payoff):支付是指玩家在特定策略组合下所获得的收益或损失。支付通常用数字来表示,反映玩家的满意程度。

内卷、「防御性编程」等等社会现象,可以通过博弈论中的囚徒困境、纳什均衡等概念去解释。因此本文尝试从博弈论的角度,分析这些现象的成因,并通过调整收益矩阵,尝试发现一个集体最优的策略组合。

囚徒困境与纳什均衡

试想一个情景:警方逮捕 A、B 两名嫌疑犯,但没有足够证据指控二人有罪。于是警方分开囚禁嫌疑犯,分别和二人见面,并向双方提供以下相同的选择:

  • 若一人认罪并作证检控对方(相关术语称“背叛”对方),而对方保持沉默,此人将即时获释,沉默者将判监 5 年。
  • 若二人都保持沉默(相关术语称互相“合作”),则二人同样判监 1 年。
  • 若二人都互相检举(互相“背叛”),则二人同样判监 3 年。

支付矩阵(Payoff Matrix)是博弈论中的一个重要工具,它的主要作用是展示在不同策略组合下每个玩家的收益情况。在这个情景下,被判监被视为负收益,判 3 年是-3,判 5 年是-5。则其支付矩阵如下:

B 合作 B 背叛
A 合作 (-1, -1) (-5, 0)
A 背叛 (0, -5) (-3, -3)

我们考虑 A、B 各自的选择:

  • 囚徒 A 假设囚徒 B 选择背叛,如果 A 选择合作,其收益为-3(3 年徒刑);但如果选择背叛,其收益为-1(1 年徒刑),故选择背叛。
  • 囚徒 B 假设囚徒 A 选择背叛,情况同上,B 也会选择背叛。

因此在多数情况下,A、B 都会选择相互背叛,这就是囚徒困境(Prisoner's dilemma)。在囚徒困境中,背叛-背叛就是一个纳什均衡。纳什均衡(Nash Equilibrium)是指在博弈中,所有玩家的策略组合使得任何单个玩家都无法通过单方面改变自己的策略来获得更好的支付。在纳什均衡状态下,每个玩家的策略都是对其他玩家策略的最佳反应。

同时可以观察到,纳什均衡并不一定导致集体最优的结果。

内卷和「防御性编程」的博弈论分析

下面分别把内卷和防御性编程的现象代入博弈论分析。

内卷

假设在一个公司里,两个员工 A 和 B 都有晋升的机会,他们的选择(策略)是:

  1. 正常工作(合作)
  2. 超时工作(内卷)

我们用业绩来衡量收益。假设:

  • 正常工作时,员工 A 和 B 都能获得相对平衡的工作生活状态,且彼此间没有激烈竞争,所以收益较高但不极端。
  • 若 A 选择正常工作而 B 选择超时工作,B 会显著拉开竞争优势,获得更多晋升机会(高收益为 4),而 A 的收益会大幅减少(低收益为 1),反之亦然。
  • 若双方都选择超时工作,竞争压力大幅增加,虽然各自付出更多精力,但收益相对平均(次优收益为 2)。

他们的支付矩阵可以如下表示:

B 正常工作 B 超时工作
A 正常工作 (3, 3) (1, 4)
A 超时工作 (4, 1) (2, 2)

在这个情境中,超时工作-超时工作(2, 2)是一个纳什均衡:

  • 假设 A 已经选择了超时工作,B 如果选择正常工作,收益为 1;选择超时工作,收益为 2。因此,B 选择超时工作。
  • 假设 B 已经选择了超时工作,A 如果选择正常工作,收益为 1;选择超时工作,收益为 2。因此,A 选择超时工作。

最终的结果就是大家都超时工作,形成内卷。

防御性编程

在这个博弈中,雇员(程序员)有两种策略:

  1. 编写清晰易维护的代码
  2. 编写复杂难维护的代码(防御性编程)

雇主(公司)也有两种策略:

  1. 替换防御性编程的程序员
  2. 保留防御性编程的程序员

假设:

  • 雇员编写清晰代码且雇主选择替换防御性编程的程序员,双方都获得高收益(5, 5),反映出公司对清晰代码的奖励和对维护的重视。
  • 如果雇员编写清晰代码而雇主选择保留防御性编程的程序员,雇员仍有高收益(5),但雇主的收益略低(4),因为清晰代码减少了维护成本。
  • 如果雇员采取防御性编程而雇主选择替换,雇员的收益很低(1),而雇主的替换成本高,收益为负(-1)。
  • 如果雇员采取防御性编程且雇主选择保留,雇员的收益较高(4),因为实现了防御性目标,而雇主的收益处于次优状态(4)。

则雇员和雇主的收益矩阵如下:

雇主替换 雇主保留
雇员清晰代码 (5, 5) (5, 4)
雇员防御性编程 (1, -1) (4, 4)

对其进行纳什均衡分析:

  • 如果雇主选择替换防御性编程的程序员,雇员选择编写清晰代码的收益是 5,雇员选择防御性编程的收益是 1,因此,如果雇主选择替换,雇员会选择编写清晰代码。
  • 如果雇主选择保留防御性编程的程序员,雇员选择编写清晰代码的收益是 4,雇员选择防御性编程的收益是 4,因此,如果雇主选择保留,雇员可以选择防御性编程或清晰代码,但由于防御性编程的策略能让雇员保有对工作的控制权(避免被替换),雇员倾向于选择防御性编程。
  • 如果雇员选择编写清晰代码,雇主选择替换防御性编程的程序员的收益是 5,雇主选择保留防御性编程的程序员的收益是 4,因此,如果雇员选择编写清晰代码,雇主会选择替换防御性编程的程序员。
  • 如果雇员选择防御性编程,雇主选择替换防御性编程的程序员的收益是-1,雇主选择保留防御性编程的程序员的收益是 4,因此,如果雇员选择防御性编程,雇主会选择保留防御性编程的程序员。

所以,雇员在雇主选择保留的情况下,单方面从防御性编程切换到清晰代码并不会提高收益(仍然是 4);雇主在雇员选择防御性编程的情况下,单方面从保留切换到替换会导致收益下降(从 4 到-1)。

任何一方单方面改变策略都不能获得更高的收益,因此防御性编程-雇主保留(4, 4)是防御性编程在雇员和雇主博弈中的纳什均衡点。

小结

在内卷和防御性编程的两个例子中,纳什均衡点都是一个双输的局面。但是内卷和防御性编程对个人来说都是最优解。

如何实现「集体最优」

从上面我们可以知道,纳什均衡受到策略收益影响,因此如果我们改变一下不同策略的收益,改变支付矩阵,就有可能达到纳什均衡同时也是集体最优的情况。

在内卷的情况中,如果:

  • 将正常工作-正常工作的收益提高到(5, 5),反映公司通过绩效奖金、工作生活平衡计划等方式激励正常工作。
  • 将正常工作-超时工作的收益调整为(3, 4)和超时工作-正常工作的收益调整为(4, 3)。虽然超时工作仍然有竞争优势,但差距缩小,正常工作仍然具有吸引力。
  • 保持(2, 2)的次优收益,反映过度竞争下的真实情况。

则可以列出支付矩阵:

B 正常工作 B 超时工作
A 正常工作 (3, 3) -> (5, 5) (1, 4) -> (3, 4)
A 超时工作 (4, 1) -> (4, 3) (2, 2) -> (2, 2)

这时候,正常工作-正常工作(5, 5)就会成为纳什均衡。

在防御性编程的例子中,如果:

  • 将清晰代码-替换的收益提高到(6, 5),进一步激励雇员编写清晰代码。
  • 将防御性编程-保留的收益调整为(2, 1),降低防御性编程的吸引力。
  • 将防御性编程-替换的雇主收益调整为(2),反映出优化后的替换成本。

则其支付矩阵如下:

雇主替换 雇主保留
雇员清晰代码 (5, 5) -> (6, 5) (5, 4) -> (4, 3)
雇员防御性编程 (1, -1) -> (1, 2) (4, 4) -> (2, 1)

在新的支付矩阵中,编写清晰代码-雇主替换防御性编程的程序员(6, 5)成为纳什均衡。

可以看到,内卷和防御性编程其实都可以通过调整支付矩阵(收益)来达到集体最优。在内卷的例子中,需要大家都意识到内卷的危害;而在防御性编程的例子中,则需要公司意识到该行为的危害,同时调整对编写清晰代码的人的奖励。

最后

本文通过简单的拟合和纯策略纳什均衡以及囚徒困境来解释内卷和防御性编程的成因,以及尝试通过调整支付矩阵的方式来解决这两个问题。过程中对现实情况有大量的简化,收益数值仅为说明本文观点,并非能完全拟合现实中各种意义上的「收益」。

如果你对博弈论感兴趣,有一个浅显易懂的视频值得一看。

(本文部分内容由生成式人工智能辅助编写)

References

囚徒困境 - 维基百科,自由的百科全书
李永乐老师:生活中的博弈论 【中科院科学公开课 S02EP29】_哔哩哔哩_bilibili