同一个 35B 模型,同一套 360 道题,同样的温度,同样的提示词结构。只改了一个字,准确率从 59.2% 涨到 72.1%。
这个字是我自己起的。前面花了一整天、跑了三局实战,比较「开思考」「不开思考」「随机乱选」哪个玩得好,比出来三者分不开。我一度以为是模型不行,最后发现是我把游戏里一项数值的名字叫错了,模型从第一轮起就在按错的含义推理。
想直接拿方法的看第 5 章,那是一个能自己算的样本量公式;想知道错字具体错在哪、怎么被抓出来的,看第 3 章。
1. 游戏和三局实战
《王权:三国》是《王权》系列的三国版,玩法就一句话:屏幕中间一张事件卡,左滑右滑二选一。顶上四项数值,任何一项掉到 0 或者涨到 100,你这任统治者就死了,换下一任接着玩。计分看一任活了多少天。
我让一个 35B 的本地模型在掌机上玩。它看牌面、看两个选项,再看我用像素量出来的四项数值,决定左还是右。脚本负责截图、拖卡、处理决斗小游戏这些杂事。
最初按图标给四项起了名:麦穗是「粮」,人头是「民」,刀是「兵」,第四个是座塔,我看着像库房,叫它「财」。
然后跑了三局,只算完整打完的统治者:
| 设置 | 完整任数 | 平均天数 | 危险局面 往安全:往危险 |
|---|---|---|---|
| 不开思考 | 5 | 294 | 17:17 |
| 随机乱选 | 4 | 315 | 11:11 |
| 开思考 | 3 | 397 | 9:11 |
「危险局面」是我定的:选之前某项 ≤20 或 ≥80。这时候选对方向就是续命,选反了就是送命。
不开思考 17:17,跟抛硬币一模一样。它能说出「民 9,极度危险」,可只要两个选项都不直接碰「民」,它就随手选。随机乱选平均活 315 天,比模型还多 21 天。
开思考那局看着最好,397 天。但只有 3 任,而且 225 轮里有 135 轮思考超出长度上限、退回了不思考模式。这局本身就不干净,不能拿来下结论。
2. 实战太慢,换一个快的评估器
实战局是个很吵的尺子。每任 30 来轮,大部分轮次无关生死,一局 220 轮跑 50 分钟,真正能看出方向判断好坏的轮次只有三十几个。
所以我把已有对局翻出来做成离线题库。每一轮我都有选之前和选之后的数值,减一下就知道这个选项让哪几项涨、哪几项跌。题目长这样:给牌面文字和两个选项,告诉模型「选这个之后会动的是民和财」,让它判断各自是涨是跌。
出题规则卡得比较死:至少一项变动 ≥4(更小的变化分不清是真变化还是像素读数抖动),任何一项跳变 ≥45 的扔掉(多半是换任或读错)。同一张牌同一个选项出现多次就合并,前后结果矛盾的直接丢。最后得到 360 题、569 个「涨还是跌」的判断点。
先放两个基线,不然任何分数都没法读:抛硬币 50%;每项都猜它最常见的方向,53.8%。
不开思考、用原来那套名字:59.2%。比基线高,但高得有限。
拆到每一项看,就露馅了:
| 数值 | 原名称下答对 | 改名后答对 |
|---|---|---|
| 第 1 项(麦穗) | 59/85 | 64/85 |
| 第 2 项(民) | 139/206 | 149/206 |
| 第 3 项(兵) | 51/84 | 56/84 |
| 第 4 项(塔) | 88/194 | 141/194 |
第 4 项只对了 45.4%,比抛硬币还低。194 个点上统计跟抛硬币分不开(p≈0.22),但一个 35B 读中文事件卡,在这一项上表现得像盲猜,这本身就很可疑。
3. 那座塔不是库房
翻攻略、再拿游戏里的死亡文案对一遍,答案很清楚。四项从左到右是富、民、兵、德:
- 富:物质财富,粮食木石钱都算。太少饿死,太多被人盯上
- 德:礼法品德,仁慈、忍让、守礼。太高过于温良,被人打死;太低众叛亲离
第 4 项冲到 100 时的死亡文案是「你的追随者过于遵循礼法,无一还手」。这句话说的显然是德,跟钱没关系。
再看模型在原名称下到底怎么错的。194 个第 4 项判断点里,它有 160 次猜「跌」。真实标签里「涨」有 104 个,其中 88 个被它猜成了「跌」。
这个错误模式不难猜:施舍、赦免、守礼,这些行为让「德」涨,可模型被告知这项叫「财」,它多半是在想「做好事要花钱,所以财跌」。这么推其实没毛病,只是推的那个量我给错了。
第 1 项我叫「粮」,真名是「富」,含义差不多,所以那一项几乎没受伤。错名伤人的地方,是名字把含义整个翻过来的那一项。
改对名字之后,同一套题、同一个模型:72.1%。第 4 项从 88/194 到 141/194。
前面三局实战,全是在这个错名字下跑的。等于我一直在给模型递一张写错的说明书,然后比较它戴不戴眼镜读得更准。
4. 一个错字值多少分:把总分拆到每一项
总分是一个加权平均,所以涨幅可以精确拆开:
总准确率的变化 = Σ(每一项答对数的变化)÷ 总判断点数
就是一个减法加一个除法。代进去:
四项答对数:59+139+51+88 = 337 → 64+149+56+141 = 410
总涨幅:(410 − 337) ÷ 569 = 73 ÷ 569 ≈ 12.8 个点
其中第 4 项:(141 − 88) ÷ 569 = 53 ÷ 569 ≈ 9.3 个点
13 个点里,有 9 个多来自那一个字。
只看拆分还不够,还得做配对检验。两个设置跑的是同一批判断点,所以只看两边答案不一样的那些点:第 4 项上,原名对、新名错的有 26 个,反过来的有 79 个,p≈2×10⁻⁷。其余三项的分歧分别是 5:10、11:21、2:7,没有一项显著。所以说改名的收益几乎全落在第 4 项,有数撑着。
顺手做个参照。同一套题上,一个有效参数约 2B 的小模型拿了 57.3%,跟错名版的 35B(59.2%)配对比是 167:156,p=0.58,属于同一档。一个错字把 35B 拉回了小模型的水平。
再对比开思考:改名之后,开思考从 72.1% 到 77.2%,配对 77:48,p=0.012,是真提升。但每题的中位耗时从 0.3 秒涨到 12.8 秒,四十多倍。改名不花一分钱,涨 13 个点;开思考花四十倍时间,涨 5 个点。
完整排名放在这里,看个量级:
| 模型 / 设置 | 准确率 | 每题中位耗时 |
|---|---|---|
| gpt-6-astra | 83.7% | 2.6 s |
| gpt-6-luna | 77.7% | 1.9 s |
| 本地 35B,开思考 | 77.2% | 12.8 s |
| 本地 35B,不开思考 | 72.1% | 0.3 s |
| 本地 35B,不开思考,错名 | 59.2% | 0.3 s |
| 约 2B 小模型 | 57.3% | 0.1 s |
5. 实战要跑多少局才分得出来
回头看,三局实战分不开,有一半是因为错名,另一半是样本量本来就不够。这个可以提前算。
比两个东西谁的方向判断更好,最省的检验是符号检验:只数「A 对 B 错」和「B 对 A 错」的次数。如果一方真实的胜率是 q,要让 p 小于 0.05,大约需要这么多个分歧点:
n ≈ (1.96 ÷ (2q − 1))²
这是正态近似,精确二项检验算出来会多几个:
q = 0.65 → 近似 43,精确 44
q = 0.60 → 近似 96,精确 101
q = 0.55 → 近似 384,精确 390
改名后的实战局里,危险局面的往安全:往危险是 13:7。看着不错,可分歧点一共 20 个,p≈0.26。就算 65:35 是真的,也得攒到 44 个才说得上话。
实战的产出速度是:220 轮跑 50 分钟,真正分了方向的危险局面 34 个,一小时大约 40 个。真实效果如果是 60:40,光证明「比抛硬币强」就要 100 个左右,两个半小时,还只是一个设置。拿平均天数去比两个设置更慢,我估过一次,每种设置要 30 任左右,8 小时起步。
题库这边,一次跑完 569 个判断点,不开思考几分钟就出分。同样是测方向判断,快几十倍,还能做配对检验。所以正确的顺序是:先在快的评估器上定方向,实战只做最后确认。
6. 「AI 玩游戏活了 300 天」该怎么读
网上常见的游戏 agent 战报,长这样:「让模型玩了几局,平均活了 X 天 / 打到 Y 分」。看完我这张表,你应该先问三句:
- 随机乱选能打多少? 在这个游戏里,随机乱选平均活 315 天,35B 不开思考 294 天。没有随机基线的「300 天」,什么都说明不了。
- 几局? 我那局「开思考 397 天」只有 3 任,样本量连符号检验的零头都不够。
- 报的数字跟它想证明的能力挂不挂钩? 平均天数被大量无关生死的轮次稀释。真想测判断力,就去数关键局面里的方向对错。
还有一句更狠的:分数低的时候,先别怪模型,去查你喂给它的东西对不对。我这一轮差点就写出「35B 在关键时刻的判断跟抛硬币一样」的结论,其实是说明书写错了。
7. 这套题库的毛病
诚实起见,列一下:
- 标签有噪声。 两个最强的模型意见一致、却都跟标签相反的点,占 10% 左右(62/569)。抽查下来多半是游戏设计反直觉,比如「停止食物配给」反而让富掉了 22。所以这套题的天花板大约在 90%,不是 100%。估法也简单:上限 ≈ 1 −(两个最强模型一致且都错的比例)。合并重复题时,366 组里有 6 组前后结果矛盾,被丢了,这是另一个噪声信号。
- 题比实战简单。 题库直接告诉模型哪几项会动,只让它判方向;实战里它得自己看图、自己读预览。题库 72% 不代表实战就能做对 72% 的关键选择。
- 题是从我自己的对局里抽的。 只覆盖模型当时碰到的牌,牌库里没出现过的事件不在里面。
- 错名的对照只做了一个设置。 原名称只测了 35B 不开思考,其他模型都是直接用改对的名字跑的。错名对更强的模型伤害多大,我没测。
- 实战的改名效果没成立。 改名后那局最长一任活了 950 天,之前最长 600,看着很诱人,但统计上不显著,我不会把它当结论。
8. 下次让模型玩任何有数值的游戏,按这个顺序做
- 先查每一项数值的官方名称和含义,攻略加游戏内文案交叉核对。别看图标猜。
- 跑分之前先放两个基线:随机,以及「每项都猜最常见方向」。
- 把已有对局变成离线题,按项拆准确率。某一项低于基线,先怀疑你给的定义,再怀疑模型。
- 两个设置之间只做配对检验,只数分歧点。
- 实战开跑前,用 n ≈ (1.96 ÷ (2q − 1))² 估一下要攒多少个分歧点,再按每小时能产出多少个,换算成要跑几个小时。
- 找两个强模型「一致地错」的题,去估天花板。