一句话定义:自博弈是让同一个模型(或它的不同快照)同时扮演对局的双方,互相出招、互相出题,再用胜负结果反过来更新自己。
它怎么运作
想象两个实力完全相同的孪生兄弟每天打一局羽毛球,输的人回去改动作。他们不需要教练喂球,因为对手的水平永远卡在“刚好让自己难受”的位置上——太弱的对手学不到东西,太强的对手只会被碾压。这就是自博弈最大的红利:出题人和解题人是同一个,题目难度自动跟着能力走。
更关键的是,对局结果本身就是天然的标签。下棋有输赢、代码有测试通过与否、攻防有是否攻破,这些信号不需要人工标注,可以无限生成。所以自博弈常被说成“凭空造数据”——它造的不是普通数据,是带答案的、难度自动递增的数据。
为什么它也会一起跑偏
问题恰恰出在“自己跟自己”这四个字上:
- 同源盲区:双方共享同一套偏见,会一致认为某个错误答案是对的,然后在这个死胡同里越走越远,还以为自己收敛了。
- 策略退化:只盯着镜像对手打,会演化出极其畸形的招式——专门克制“另一个我”,遇到外部队手立刻崩盘。
- 循环震荡:A 克 B、B 克 C、C 又克 A,分数来回摆,谁也没真正变强。
- 偷懒合谋:双方发现“都别使劲”比“拼个你死我活”更划算,于是停在低水平的舒适区。
- 薅评测漏洞:模型学会的是钻评分规则的孔子,而不是真的变强。
和相邻概念的区别
| 维度 | 自博弈 | 监督学习 | 一般强化学习 | 对抗训练(如 GAN) |
|---|---|---|---|---|
| 对手是谁 | 自己 | 无对手,拟合标注 | 环境 | 判别器网络 |
| 数据来源 | 对局自动产生 | 人工标注 | 与环境交互 | 真假样本 |
| 难度变化 | 随水平自动上升 | 固定 | 由环境决定 | 由判别器决定 |
| 主要风险 | 同质化跑偏 | 标注贵、覆盖窄 | 奖励设计难 | 训练不稳、模式坍塌 |
可以看出,对抗训练其实是自博弈的一个特例:一方出题,另一方判分,只是判分者也是学出来的。
对从业者和普通人的意义
对从业者:自博弈适合规则清晰、胜负可自动判定的任务,比如棋类、代码生成、定理证明、谈判模拟、攻防演练。工程上的关键不是“让它自己玩”,而是别让它只跟自己玩——维护多样化的对手池、混入历史快照、定期用外部真实任务体检,都是防止集体跑偏的锚点。
对普通人:当某个模型用自己生成的数据反复训练、结果越练越差,本质就是同一回事。自己给自己打分,时间久了,就会把自己的偏见当成真理。这也是为什么真实的人类反馈和真实世界的结果,始终不能被完全替代。
