用Minimax数据训练神经网络下井字棋:数据质量实验

一个看似简单却有启发性的实验
井字棋(Tic-Tac-Toe)作为一款只有 9 个格子的游戏,长期以来是算法教学的经典入门案例。它的状态空间足够小,可以被完全求解,因此天然适合用来验证各种 AI 技术的效果。近日,一位开发者在 Reddit 上分享了他的实验项目:不用传统的搜索算法直接对弈,而是让一个简单的神经网络从零学会最优下法。
这个项目的核心思路并不复杂,但它触及了机器学习中一个非常本质的问题——训练数据的质量究竟对小模型有多大影响。作者用 Minimax 求解器生成"标准答案",再用监督学习的方式训练神经网络去模仿这些最优决策。整个程序可以在终端里直接运行,用户能与训练好的网络对弈。

用 Minimax 算法生成高质量训练数据
项目的第一步,是构建高质量的训练数据。作者采用了经典的 Minimax 算法作为"教师"。
为什么选择 Minimax 作为数据生成器
Minimax 是一种在零和博弈中寻找最优策略的搜索算法。它通过递归地假设对手总是采取对自己最有利(对己方最不利)的走法,从而计算出当前局面下的最佳落子位置。该算法最早可追溯到约翰·冯·诺伊曼1928年发表的博弈论奠基性论文,是博弈论与人工智能交叉领域的基石性成果。算法构建一棵完整的博弈树,其中MAX层代表己方试图最大化收益,MIN层代表对手试图最小化己方收益,从叶子节点(终局状态)开始逐层向上回溯计算每个节点的值。
在实际应用中,原始Minimax算法存在一个重要优化——Alpha-Beta剪枝。这一技术由Allen Newell和Herbert A. Simon等人在1950年代末开发,其核心思想是:当搜索过程中发现某个分支不可能影响最终决策时,立即停止对该分支的探索。Alpha-Beta剪枝在最优排序情况下可以将搜索的有效分支因子从 b 降低到 √b,相当于在相同时间内将搜索深度翻倍。对于井字棋而言,由于博弈树本身很小(最大深度仅为9),剪枝带来的加速并非必需;但对于国际象棋(平均分支因子约35)或围棋(平均分支因子约250)等复杂游戏,Alpha-Beta剪枝以及后续的迭代加深、置换表等优化技术是传统博弈AI能够达到实用水平的关键所在。
对于井字棋这种状态空间极小的游戏,Minimax 能够在毫秒级别内穷举所有可能,给出理论上无懈可击的最优解。井字棋的完整博弈树约有255,168个终局路径,但去除对称性和不可达状态后,实际需要评估的独立局面约为5,478个,这使得完全求解在现代硬件上几乎是瞬时的。
作者对每一个可达的棋盘状态(reachable board state)都调用 Minimax 求解器,计算出该状态下的最佳落子。这样就形成了一组 棋盘状态 → 最佳落子 的映射对,作为神经网络的监督学习标签。这种"用一个已知正确的算法生成标注数据,再让模型去学习"的做法,本质上是一种知识蒸馏思路——把符号化的搜索智慧转移到一个连续的神经网络中。
知识蒸馏(Knowledge Distillation)的概念由Geoffrey Hinton等人在2015年正式提出,其核心思想是将大型、复杂的"教师模型"的知识压缩到小型、高效的"学生模型"中。传统知识蒸馏通常使用教师模型输出的软标签(soft labels)来传递类别间相似性等"暗知识"(dark knowledge)。所谓软标签,是指教师模型输出的完整概率分布(例如某局面下各位置被选为最优的概率),而非仅仅是最终选择的硬标签。软标签携带了更丰富的信息——比如教师认为次优选择有多"接近"最优,这种信息有助于学生模型学习到更平滑的决策边界。本项目中的做法是一种广义的知识蒸馏——教师不是神经网络而是符号化的搜索算法,但本质逻辑一致:将计算密集型的推理能力转化为轻量级模型的单次前向传播能力,从而在推理时获得数量级的加速。
训练数据的确定性与完备性
有意思的是,这种方式生成的数据具有确定性和完备性:由于井字棋状态空间有限,理论上可以覆盖所有合法局面。这意味着模型面对的是一个近乎"完整"的训练集,几乎不存在分布外(out-of-distribution)的问题。
分布外(OOD)问题是机器学习中的核心挑战之一。在大多数实际应用中(如自动驾驶、医疗诊断),当模型遇到与训练数据分布显著不同的输入时,往往会给出不可靠的预测。完全覆盖所有可能输入在实际场景中几乎不可能实现,但井字棋的有限状态空间使得"零OOD"成为可能——这在实际机器学习问题中极为罕见。正因如此,我们可以在没有泛化误差干扰的情况下,单独研究模型容量和数据质量对学习效果的纯粹影响,这也是这个教学案例特别有价值的原因之一。
值得一提的是,这里涉及到机器学习理论中一个重要的概念区分:记忆(memorization)与泛化(generalization)。当训练集完全覆盖所有可能输入时,学习任务在某种意义上退化为纯粹的记忆任务——模型只需要"记住"每个输入对应的正确输出即可,无需推断未见样本的答案。但即便如此,这个任务仍然不是平凡的:5,478个状态到动作的映射关系中蕴含着丰富的结构性规律(如对称性、胜负模式),一个好的神经网络应该能够发现并利用这些结构,用远少于5,478个参数来紧凑地表示这些知识。这就是压缩与理解之间的深层联系——如果模型能用更少的参数准确完成映射,说明它在某种程度上"理解"了游戏的底层逻辑。
将博弈问题转化为神经网络分类任务
拿到数据之后,作者将其视为一个标准的监督分类问题。
神经网络的输入是编码后的棋盘状态(通常用 9 维向量表示每个格子的占用情况),输出则是 9 个格子中最佳落子位置的概率分布。模型通过分类损失(如交叉熵)来学习模仿 Minimax 给出的最优决策。
**交叉熵损失(Cross-Entropy Loss)**是分类任务中最常用的损失函数,其根源在信息论。从直觉上理解,交叉熵衡量的是模型预测的概率分布与真实分布之间的"距离"——当模型对正确类别赋予的概率越高,损失越小。具体而言,对于一个9分类问题,如果真实标签指示位置3是最优落子,那么模型在位置3上输出的概率越接近1,交叉熵值越趋近于0。相比均方误差(MSE)等替代损失,交叉熵的梯度特性更适合分类问题:当模型严重偏离正确答案时梯度更大(学习更快),接近正确答案时梯度变小(精细调整),这种自适应的学习速率特性使训练更加稳定高效。
关于棋盘状态的编码方式,有多种可选方案。最简单的是用9维向量,每个位置用-1(对手棋子)、0(空)、1(己方棋子)表示。更精细的方案是使用独热编码(one-hot encoding),将每个格子用3维向量表示三种状态,形成27维输入向量。还有研究者使用双通道二值矩阵表示,与卷积神经网络的输入格式更为契合。编码方式的选择直接影响网络学习的难易程度,因为它决定了输入空间的几何结构和决策边界的复杂度。
这种建模方式的巧妙之处在于,它绕开了强化学习中复杂的奖励设计和探索问题。既然已经有了每个状态的最优动作标签,就没有必要让模型通过反复试错去自己摸索——直接把它当作一个"看图选格子"的分类器来训练即可。对于状态空间小、最优解可完全求解的问题,这往往是最直接高效的路径。
从更精确的术语来看,这种方法属于**模仿学习(Imitation Learning)**的范畴,具体而言是其中最简单的形式——行为克隆(Behavioral Cloning)。行为克隆直接将专家演示视为有标签的训练数据进行监督学习,其优势是实现简单、训练稳定。但行为克隆有一个著名的缺陷:**复合误差(compounding error)**问题。在序贯决策问题中,模型在某一步的微小偏差会导致后续遇到训练数据中未覆盖的状态,从而引发更大的偏差,形成雪球效应。为解决这一问题,Stéphane Ross等人提出了DAgger(Dataset Aggregation)算法,通过在训练过程中持续让学生模型产生新轨迹并请求教师标注来缓解分布偏移。不过在井字棋场景中,由于训练数据覆盖了所有可能状态,复合误差问题自然消解——这再次体现了完全求解问题作为研究沙盒的独特优势。
在博弈AI领域,监督学习(模仿学习)和强化学习代表了两种截然不同的训练范式。监督学习需要预先存在的专家数据,训练过程稳定且收敛快,但模型能力受限于数据质量的天花板。强化学习通过试错和奖励信号自主发现策略,理论上可以超越任何已知专家水平,但面临探索-利用困境(exploration-exploitation dilemma)、奖励稀疏、训练不稳定等挑战。在井字棋这样最优解已知且可穷举的问题上,监督学习无疑是更经济的选择。
当然,这也意味着模型的能力上限被 Minimax 数据牢牢锁定:它最多只能逼近教师算法的水平,而无法超越。这与 AlphaGo 早期通过监督学习模仿人类棋谱、再用自我博弈突破人类水平的路径形成了有趣的对照。AlphaGo的发展历程完美诠释了这一权衡:AlphaGo Lee先用人类棋谱做监督预训练提供良好初始化,再通过强化学习自我对弈提升;而后续的AlphaGo Zero则完全抛弃人类数据,纯粹从自我对弈中学习,最终达到了更高水平——这证明了当问题足够复杂时,人类数据反而可能成为能力瓶颈。不过对于井字棋这样最优解就是理论天花板的问题,超越教师本身就没有意义。
神经网络作为通用函数逼近器
值得从理论角度理解的是,为什么一个简单的神经网络就有可能学会这个映射。根据通用逼近定理(Universal Approximation Theorem),一个具有至少一个隐藏层且隐藏层神经元数量足够多的前馈神经网络,可以以任意精度逼近任何连续函数。这一定理最早由George Cybenko(1989年)针对sigmoid激活函数证明,后由Kurt Hornik等人推广到更一般的激活函数。
当然,通用逼近定理告诉我们的是"存在性"而非"可达性"——它保证了理论上存在一组权重能完美拟合目标函数,但并不保证梯度下降能找到这组权重,也不保证需要的网络规模在实际中可接受。对于井字棋的5,478个状态到9个动作的映射,这本质上是一个离散函数而非连续函数,但在实践中,只要网络有足够的参数来编码这些映射关系,通过足够的训练就能达到很高的准确率。一个有趣的问题是:完美记住这个映射至少需要多少参数?信息论给出了下界——5,478个状态各有一个正确动作(最多9种),需要至少 5,478 × log₂(9) ≈ 17,380 比特的信息,而一个32位浮点参数携带约23比特有效信息,因此理论上约需750个参数即可存储所有映射。实际网络通常需要更多参数,因为梯度下降并非最优压缩算法。
数据质量对照实验:随机数据 vs 最优数据
项目最有价值的部分,其实是作者提出的后续计划。
他打算训练第二个版本的模型,但这次使用随机自我对弈(random self-play)产生的数据,而非 Minimax 最优数据,然后对比两者的表现差异。这个实验设计直指一个核心命题:
对于这样一个小模型,训练数据的质量到底有多重要?
这个对照实验为什么有意义
随机自我对弈生成的数据中,会包含大量非最优甚至错误的走法。如果用这些"低质量"数据训练,模型会学到什么?它是会被噪声带偏,还是能从大量数据中隐约提炼出一些统计规律?
从信息论的角度来分析,随机自我对弈数据的**信噪比(Signal-to-Noise Ratio, SNR)**极低。在完全随机对弈中,每个空位被选择的概率相等,因此数据中几乎不包含关于"什么是好棋"的信息。但"几乎不包含"并非"完全不包含"——即使走法是随机的,游戏结果(胜/负/平)本身仍携带信号。如果我们将获胜局的走法视为正样本、失败局的走法视为负样本,那么在大量样本的统计平均下,某些位置(如中心格)被获胜方选择的频率可能略高于被失败方选择的频率。但这种信号非常微弱——在两个随机玩家对弈中,先手胜率约58%、后手胜率约29%、平局约13%,这种不对称性能提供一定的学习信号,但远不足以学到精确的最优策略。
更值得关注的是标签噪声对模型学习的影响。在噪声标签学习(Learning with Noisy Labels)的研究中,已有大量工作表明:当标签噪声率超过一定阈值时,普通神经网络会先学习到数据中的简单模式,然后逐渐"记住"噪声——这一现象被称为"先学后记"(learn then memorize)效应。对于随机自我对弈数据,如果将数据框架为"当前状态下应该走哪步",则其标签噪声率接近(8/9)≈89%(9个位置中只有少数是最优的,而随机选择几乎总是选到非最优位置),这意味着模型面对的是一个极度嘈杂的学习信号。
这个问题在当今大模型时代同样具有现实意义。业界普遍强调"数据质量胜过数据数量",而这个井字棋实验恰好提供了一个可控、可解释、可完全验证的微型沙盒。
数据质量问题在大语言模型时代被推到了前所未有的高度。Meta的Llama系列、Google的Gemma以及其他主流模型的技术报告都一致强调,精心策划的高质量数据集对模型性能的提升效果往往超过单纯增加数据量或模型参数。典型案例包括:微软的Phi系列模型用"教科书级"合成数据训练出了远超其参数量预期的小模型表现;Anthropic和OpenAI在RLHF(基于人类反馈的强化学习)阶段对人类反馈数据的质量控制投入了大量资源。这些现象都指向同一个结论:在模型架构趋同的今天,数据质量和数据工程正成为差异化竞争的关键战场。
此外,数据质量的概念本身也在进化。传统观念中的"高质量数据"通常指正确标注、无噪声的数据;但现代研究表明,数据的**多样性、覆盖度、课程结构(curriculum)**同样重要。例如,DeepMind的研究表明,训练数据的呈现顺序(从简单到复杂的课程学习)可以显著加速收敛;而Anthropic的Constitutional AI方法则表明,即使标注来自AI自身的反馈循环,只要设计得当,也能产生高质量的训练信号。
因为井字棋的最优解是已知的,我们可以精确衡量两个模型分别偏离最优策略多远,从而量化数据质量的影响。这比在动辄数十亿参数的大模型上做类似消融实验要清晰得多——在大模型实验中,数据质量的影响往往与模型规模、训练时长、学习率调度等因素纠缠在一起,难以隔离分析。而井字棋实验的极简性恰好消除了这些混淆变量。
预期结果与理论预测
基于现有的机器学习理论,我们可以对这个对照实验的结果做出一些合理预测。用最优数据训练的模型应该能达到接近100%的决策正确率(受限于网络容量和训练充分度)。而用随机数据训练的模型,其表现将取决于如何构造学习目标:如果仅仅模仿随机走法,模型本质上学到的是均匀分布,对弈表现应接近随机水平;如果结合了胜负结果作为加权信号,则可能学到一些粗糙的启发式规则(如优先占据中心),但距离最优仍有显著差距。这种差异——从接近完美到接近随机——将以极其直观的方式展示数据质量的决定性作用。
小项目背后的机器学习启示
这个项目本身的技术含量并不高——它没有用到复杂的网络结构或前沿算法,但它的价值恰恰在于"以小见大"。
首先,它清晰地展示了如何将一个博弈问题转化为可训练的监督学习任务,是理解知识蒸馏和模仿学习的绝佳教学案例。其次,作者提出的数据质量对照实验,把一个抽象的 ML 原则落到了可实证的具体场景中。
对于初学者而言,这类完整、简洁、可运行的开源项目(代码已发布在 GitHub 上)比阅读长篇论文更容易建立直觉。而作者主动征求关于"数据生成结构"改进意见的开放态度,也体现了良好的工程实践——在开始编码之前,先想清楚数据从哪里来、质量如何保证,往往比调模型本身更关键。
从更宏观的视角来看,这个项目也映射了AI工程中一个日益被重视的理念:数据中心化AI(Data-Centric AI)。由Andrew Ng在2021年大力倡导的这一范式转变,主张在模型架构和训练技巧已相对成熟的今天,系统性地改进数据质量才是提升AI系统性能最有效的杠杆。Data-Centric AI的核心方法论包括:系统性的数据错误检测与修正、数据增强策略的设计、主动学习(Active Learning)选择最有信息量的样本进行标注、以及数据版本管理和血缘追踪。像Cleanlab、Snorkel等工具和框架的兴起,正是这一理念在产业界落地的体现。井字棋项目虽然微小,但它所体现的"先把数据搞对,再训练模型"的思路,与这一产业级的方法论完全一脉相承。
这个项目还暗示了一个更深层的哲学问题:神经网络学到的"知识"与符号算法包含的"知识"有何本质区别? Minimax算法以显式的递归搜索实现最优决策,其逻辑对人类完全透明可解释;而训练后的神经网络虽然能产生相同的输出,但其内部表征是分布式的、连续的权重矩阵,对人类而言是不透明的。这触及了可解释AI(Explainable AI, XAI)的核心议题——当我们把一个可解释的算法"蒸馏"成一个黑箱模型时,我们在获得推理效率的同时失去了什么?对于井字棋这样的简单问题,这种损失或许微不足道;但随着任务复杂度的增加(如医疗决策、司法判断),可解释性与效率之间的权衡就变得至关重要。
如果你也对机器学习的底层机制感兴趣,不妨从这样一个能亲手对弈、能看懂每一行代码的小项目开始。有时候,最简单的实验反而能揭示最深刻的规律。
核心要点
相关推荐

CS229还值得学吗?8年前的课程与现代ML学习路径规划
深入分析吴恩达斯坦福CS229课程是否仍适合机器学习入门,解读课程核心内容、局限性及最佳学习路径规划,帮助你做出明智的学习选择。

程序员转AI Agent开发:三阶段学习路径全解析
程序员转型AI Agent开发为何频频失败?本文拆解Agent开发三阶段学习路径:从ReAct、Tool Calling等核心机制,到LangChain框架工程化,再到生产级项目实战交付,帮你避开工具陷阱,真正跑通Agent项目。

Agent Skills入门:从提示词到智能技能的完整指南
深入解析AI Agent Skills的四大组成结构(skill.md、references、scripts、assets),从原理到实践讲清楚Skills与提示词的区别,帮助你构建可复用的智能技能体系。