摘要

我们想知道对战 AI 在一次具体的选择上是否选对,而不只看整局胜负。为此做了一个“精确战术题库”:局面足够小,可以用规则引擎把本回合所有走法穷举完,得到一个不依赖任何 AI 的参考答案。90 个随机候选里收录 36 道题。规则型的公平 AI(v59)答对 24/36,与一步贪心相同;搜索 AI 的 quick 档答对 31/36,是成绩最好的一档。公平 AI 的错误高度集中:最优动作是等待、移动或跳过的 10 道题它全部选错,几乎都选择了直接攻击。

要回答的问题

整局胜负受很多因素影响,看不出 AI 到底错在哪一步。这里的问题更窄:给一个小局面,AI 的第一步是否属于精确最优集合?如果错了,是“根本没想到这个动作”(候选缺失),还是“想到了但打分排低了”(估值问题)?

方法

  • 局面:4×4 共 16 格的小区域,其余格子当障碍;每方 1–2 支没有被动、技能和免疫的“素”兵种。幸运和士气固定为 0,伤害固定取下限,所以结果不依赖随机数;每道题都实测过换随机种子后所有第一步的结果不变。
  • 参考答案:用权威引擎的合法动作做完整的极大极小搜索(行动方取最大、对方取最小),一直算到本回合结束。不使用任何被测 AI 的估值或候选。
  • 三种叶子估值:血量差、剩余输出差(存活生物数 × 平均伤害)、先比存活部队数再比血量。只有三种估值给出完全相同的最优第一步集合、血量差至少 5、输出差大于 0、且不是所有动作都一样好的局面才收录。筛选只看结构,不看任何 AI 的表现。
  • 打分:每个 AI 在每道题上选一次;选在最优集合里算对。“损失”= (最优值 − 所选值) / (最优值 − 最差值),0 表示最优,1 表示最差。

设置

种子 9100–9189 共 90 个候选,随机生成 2 对 1、1 对 2(各约 2/5)与 2 对 2(约 1/5),双方先攻不同;搜索超过 4000 个局面的候选放弃。这是一次诊断,没有预设通过门槛。

结果

90 个候选收录 36 道;放弃原因:三种估值不一致 32、搜索太大 13、差距太小 8、全部动作同值 1。最优动作类型:攻击 24、等待 4、移动 3、移动/跳过/等待皆可 3、攻击或等待 2。

AI 答对 正确率(Wilson 95% 区间) 最优是“不打”的 10 题 平均损失(血量口径) 每步最长
公平 AI(v59) 24/36 66.7%(50.3–79.8) 0/10 0.195 0.005 秒
搜索 quick 31/36 86.1%(71.3–93.9) 7/10 0.090 0.035 秒
搜索 strong 27/36 75.0%(58.9–86.3) 4/10 0.148 0.37 秒
搜索 deep 28/36 77.8%(61.9–88.3) 3/10 0.103 1.8 秒
一步贪心 24/36 66.7% 0/10 0.212 —
随机 4/36 11.1% 3/10 0.862 —

Wilson 区间是小样本比例常用的 95% 置信区间。公平 AI 的 12 道错题全部选了攻击:10 道本该不打,2 道打错目标。典型例子 p0003:毒刺对巨蛙,应当先不打以免吃 2×18 的反击,它直接打了。

候选是否缺失?在公平 AI 自己的逐动作打分里,正确答案排第 1 的占 67%,前 3 的占 89%;错题中 8 道正确答案排第 2–3,4 道排第 7–9。也就是说候选不缺,问题主要在估值把等待和移动排得太低。

同日另做了镜像排位(种子 41000 起 40 对、80 局、30 回合上限):公平 AI 对 quick 只得 16.3%(9.7–25.8%)。

失败与负结果

搜索更深并不更好:quick 反而优于 strong 和 deep,后两者的剪枝与延伸设置在这些题上漏掉了等待。样本小,各区间大量重叠,不能据此排序搜索档位。

局限

  • 只看一回合,下回合的后果(例如本回合躲开、下回合先手)不在视野里;“正确”只在这个视野和这三种估值下成立。
  • 只有普通单位动作,没有英雄法术、专注、技能和隐藏信息;伤害区间跨越击杀线的随机情形没有覆盖。
  • 题目类别不均衡;36 题样本很小。
  • 题库里没有隐藏信息,搜索档读权威局面是公平的;真实对局里搜索档会读到对手隐藏构筑,并不是公平对手。

结论与下一步

题库给出了一个可复现、与 AI 无关的单步检查工具,并指出公平 AI 的主要弱点是“只会进攻”的估值。后续计划:用 12 道错题定位等待/移动估值的分项(反击代价、下一个行动者的威胁);在只由公开信息生成的假想世界里跑 quick(公平搜索);扩展题库 v2,加入法术、随机击杀和两回合视野。题库后来的复核与候选/视野诊断见实验 0045。