和你一起打游戏的人都蠢得要命

聪明的对手

Introduction

假设有一种游戏, 共 88 人参加, 每个人都可以在两种操作中选择一种执行:

  1. 直接获得 1313
  2. 和同样做出这种选择的人均分 3535

直觉上, 由于只要选择行动 22 的人数超过 22, 那么行动 22 的收益就会小于行动 11, 所以笔者选择了行动 11. 但是这一局, 有 44 个人选择了行动 22, 并且在相当多局游戏中, 选择行动 22 的人的均值逼近了 4.54.5.

随机匹配大厅中所有玩家, 随机取样 88 人进入一局. 因为大厅中的人数相当多, 所以可以认为是独立同分布的. 笔者这时候突然来了兴趣, 开始计算, 当所有赌徒都绝顶聪明的时候, 最优的策略应当是什么.

建模一

我们先忽略人群中可能存在的激进派和保守派的区别, 因为我们这一阶段思考的就是, 当所有玩家都绝顶聪明, 那么令期望收获最高的, 绝顶聪明的策略.

由于决策没有任何参考信息, 所以策略也只有概率 pp 选择行动 11, 概率 1p1 - p 选择行动 22.

错误计算一

计算选择行动 11 的人数期望 8p8p, 选择行动 22 的人数期望 8(1p)8(1 - p). 则两种收益分别为: 1313, 358(1p)\frac {35}{8(1 - p)}, 计算期望:

13p+35813p + \frac {35}8

这个式子非常诡异. 发现当 p1p \to 1 的时候, 也就是绝大概率选择行动 11 的时候, 这时候期望应当接近于 1313, 但是发现结果明显大于 1313. 分析发现这里把人数当成了实数, 也就是说当 0.010.01 人选择行动 22 的时候, 它会获得 35003500 元.

错误计算二

人数应当是离散的. 由于每个人都是一次独立的伯努利试验, 所以人数的分布应当是一个二项分布. 重新计算期望:

18i=08pi(1p)8i(8i)(13i+35)=13p+358\frac 18 \sum_{i = 0}^8 p^i(1 - p)^{8 - i} \binom 8i (13i + 35) = 13p + \frac {35}8

计算发现结果和错误计算一一样.

正确计算

因为当 i=8i = 8 的时候, 所有人都选择了行动 11, 所以行动 22 的总收益是 00, 而不是 3535, 所以式子应该是:

18(i=08pi(1p)8i(8i)(13i+35)p8(1p)88(88)35)=13p+358p8(1p)88(88)358=13p+35835p88\frac 18 \left( \sum_{i = 0}^8 p^i(1 - p)^{8 - i} \binom 8i (13i + 35) - p^8(1 - p)^{8 - 8} \binom 88 35\right)\\ = 13p + \frac {35}8 - \frac {p^8(1 - p)^{8 - 8} \binom 88 35}8\\ = 13p + \frac {35}8 - \frac {35p^8}8\\

这时候, p=1p = 1 时, 期望值 1313 就是正确的了.

接下来求期望值的极大值, 求导得: 1335p713 - 35p^7, 解得 p=133570.868p^* = \sqrt[7]{\frac {13}{35}} \approx 0.868, 期望约为: 14.2514.25.

建模二

如果我们根据观测到的分布来估计人群的策略, 然后做出对应的选择, 那么最好的策略是什么.

假设人群选择行动 11 的概率是 pp, 而在所有玩家中, 只有我们绝顶聪明. 我们会选择两种行动中期望收益更高的一个. 显然行动 11 的收益期望是 1313. 对于行动 22, 我们的期望收益应当是这样的式子:

i=07p7i(1p)i(7i)35i+1\sum_{i = 0}^7 p^{7 - i}(1 - p)^i \binom 7i \frac {35}{i + 1}

笔者一开始没有想到这个式子的计算方式, 在 DeepSeek 的帮助下, 了解到积分求和法:

1i+1=01tidti=07p7i(1p)i(7i)35i+1=i=07p7i(1p)i(7i)3501tidt\begin{aligned} \frac 1{i + 1} &= &\int_0^1 t^i dt\\ \sum_{i = 0}^7 p^{7 - i}(1 - p)^i \binom 7i \frac {35}{i + 1} &= \sum_{i = 0}^7 p^{7 - i}(1 - p)^i \binom 7i 35 &\int_0^1 t^i dt \end{aligned}

对下面的式子求和:

i=07p7i(1p)i(7i)3501tidt=3501i=07p7i(tpt)i(7i)dt=3501(p+tpt)7dt\sum_{i = 0}^7 p^{7 - i}(1 - p)^i \binom 7i 35 \int_0^1 t^i dt\\ = 35 \int_0^1 \sum_{i = 0}^7 p^{7 - i}(t - pt)^i \binom 7i dt\\ = 35 \int_0^1 (p + t - pt)^7 dt\\

u=p+tpt(p,1)u = p + t - pt \in (p, 1), 则 du=(1p)dtdu = (1 - p)dt.

3501(p+tpt)7dt=35p1u71pdu=351pp1u7du=358(1p)(1p8)35 \int_0^1 (p + t - pt)^7 dt\\ = 35 \int_{p}^1 \frac {u^7}{1 - p} du\\ = \frac {35}{1 - p} \int_{p}^1 u^7 du\\ = \frac {35}{8(1 - p)} (1 - p^8)\\

这个值就是当人群选择行动 22 的概率为 pp 时, 我选择行动 22 的收益期望. 这个数等于 1313 时, p0.6786p \approx 0.6786, 也就是说, 当人群选择行动 11 的概率小于 0.67860.6786 时, 我们选择行动 22 的期望收益就不如行动 11 了.

根据前面的观测, 如果选择行动 22 的人数期望是 4.5=71p4.5 = \frac 7{1 - p}, 那么 pp 的估计值大约是 0.3570.357, 远低于决策临界, 所以我们无脑选择行动 11.

建模三

这种游戏一次匹配到的 88 人, 可能会进行多局, 观测到, 当前一局选择的行动 22 的人较少, 他们获得了更多的收益后, 下一局选择行动 22 的人就会增多.

所以我们可以根据前一局的情况, 动态调整对于 pp 的估计, 来动态裁定本局策略.