摘要
实验 0214 的分层模仿模型开始会移动,但动作匹配和整局表现都不够。一种常见解释是状态分布偏移:模型只在教师自己走出的局面上学习,一旦自己走偏,就进入了从未见过的局面。经典对策是 DAgger(Dataset Aggregation,数据聚合):让当前模型自己下棋,在它真正到达的局面上请教师标注“这里你会怎么走”,把这些标签加进训练集重训。
本实验只做一次有限的 DAgger。数据准入通过:446 个新标签,其中 101 个移动。但重训后,在同一批 8 个开发布局上,新模型 1 胜 15 负(含 5 局双输),冻结的旧模型 5 胜 11 负,按来源平均新−旧 −.25;开发动作匹配 157/246(63.82%)也未过 75%。双门槛失败,关闭,并停止当前“精确模仿 Fair”路线。
要回答的问题
在 2v2 小课程(每方侍从和弩手各 20、无英雄,20 回合未分胜负双方判负)里,补上“模型自己走到的局面”上的教师标签,能否让模仿模型更接近教师基线 F(Fair,只用玩家可见信息的搜索 AI),并在整局中更强?
方法
- 行为策略:冻结 0214 的分层 BC 模型,让它在 16 个新采集布局上执蓝、执红各打一局完整比赛(32 局)。
- 标注:每局每方只在前 24 次 BC 决策处,用当时的公开观察、公开历史和完整菜单询问 F“你会选什么”,保存标签;但实际仍执行 BC 的选择,查询不推进局面。
- 准入:至少 400 个合法新标签且其中至少 80 个教师移动,才允许训练;不足直接关闭,不补局、不挑样本。
- 重训:新初始化、同架构、同损失、同词表、同优化器;最多 8 epoch 或 400 次更新。数据变多使 8 epoch 内的批数增加(224 次 vs 0214 的 168 次),但没有提高 400 步上限。
- 本地补充对照:在同 8 个开发布局上,让冻结的旧模型也执蓝/执红各打一局(16 局),这样新旧比较才是同布局、同随机数、同对手的直接对照。
设置(冻结的条件)
- 来源(固定初始布局与随机种子):沿用 0214 的扩大布局池,排除所有旧用组后取 16 个采集源 + 8 个开发源;原 12 个保留来源不构造。
- 开发门槛:完整教师动作 Top-1 ≥ 75%;来源均分新 BC−F ≥ −.10;已知终局 ≥ 95%;零正确性故障。
- 预算:初始化与更新 20 分钟,完整轮 45 分钟;每局 120 秒、单次决策 4 秒。
结果
单次运行 155.7145 秒;初始化与训练 53.3895 秒。
数据: 新标签 446 个(移动 101、攻击 278、单位技能 53、等待 9、跳过 5),其中 145 个与 BC 实际动作不同;加上原 1328 个,共 1774 个。采集 32 局为 31 局自然分胜负 + 1 局回合双输。准入通过。
同布局对战:
| 8 个新开发来源的完整局 | 冻结 0214 旧模型 | 新 DAgger BC |
|---|---|---|
| 受控方胜 / 负(双输含在负内) | 5 / 11 | 1 / 15 |
| 其中 20 回合双输 | 2 | 5 |
| 受控方平均分 | .3125 | .0625 |
| 相对 F/F 基线差(F = .5) | −.1875 | −.4375 |
新−旧按来源平均 −.25:1 个来源改善、5 个退化、2 个持平。相对 F/F,新模型 0 改善、7 退化。
动作匹配:
| 指标 | 合并训练 1774 条 | 新开发 246 条 |
|---|---|---|
| 完整动作命中 | 1113/1774 | 157/246 |
| 类别命中 | 1476/1774 | 177/246 |
| 移动类别 | 549/579 | 30/40 |
| 移动内部 Top-1 / Top-3 | 209/579 / 337/579 | 18/40 / 26/40 |
| 完整移动 | 203/579 | 16/40 |
| 完整攻击 | 861/1008 | 140/179 |
| 技能 / 等待 / 跳过 | 49/109 / 0/29 / 0/49 | 1/21 / 0/2 / 0/4 |
开发中有 32 个教师选攻击的局面被类别头改选了移动,另 1 个改选技能。一局回放里新模型最后几个回合持续移动,对手一直防御,最终 20 回合双输。
正确性:72 局新对局(32 采集 + 16 旧模型对照 + 24 门槛局)为 64 局自然胜负 + 8 局回合双输,0 未知/故障;2364 个新转移、1046 个网络回执、72 次随机数扰动和双方奖励全部核验通过。446 个教师查询都与真实历史和完整菜单逐一重建一致。72 局回放已导入并通过交互检查。
失败与负结果
- 动作匹配 63.82% < 75%,来源差 −.4375 < −.10,两项门槛失败;40 局开发 100% 已知终局也不能挽救。
- 这是本候选的直接负证据:数据确实变多、移动覆盖确实增加,不能用“没采到新数据”来解释。
- 检查阶段曾有两处脚本失败(回放 UI 脚本把双输当普通负局、冻结辅助脚本导入路径缺项目根),均只修脚本,正式运行没有重试。
局限
- 尚未通过因果实验区分拟合不足、类别竞争和状态分布偏移各自的作用。
- 合并训练集分布改变了,62.74% 不能直接与 0214 的 61.75% 当成同样本比较。
- 更新次数不同(224 vs 168),这不是同更新数消融。
- 回放中“持续移动导致双输”是一个可见例子,不证明它能解释所有负局。
结论与下一步
更多“模型自己走到的局面”上的教师标签,让模型移动得更多,却打得更差:它把不少本该攻击的时机换成了移动。按预登记,关闭 0215,停止对 Fair 落点的精确模仿和同类 BC 微调。下一步换学习目标而不是继续加数据:实验 0216 改为直接学习“这一步改选会让终局得分好多少”。
Comments