Summary
Eric Jang用约1万美元重建AlphaGo,深度解析MCTS搜索蒸馏、自我博弈与RL效率的本质差异,以及自动化AI研究的现状与挑战。
Key Insights
- **AlphaGo 最深刻的突破不是赢了围棋,而是一个约 10 层、不到 300 万参数的神经网络能将近乎不可解的搜索问题(树规模约 361³⁰⁰)压缩进一次前向传播**——这一现象同样出现在 AlphaFold 和 AlphaTensor 中,暗示我们对 NP 难问题的理解可能是不完整的。
- **MCTS(蒙特卡洛树搜索)之所以优雅,核心在于它永远不需要从零成功率起步**:它在每一步都为策略网络提供一个严格更优的软标签,将搜索结果蒸馏回网络——本质上是一个持续改进的监督学习循环,而非高方差的策略梯度优化。这与当前 LLM 的 RL 训练形成鲜明对比。
- **Jang 用约 1 万美元(Prime Intellect 赞助)重现了当年耗资数百万美元的 AlphaGo 训练**:KataGo 的大量工程技巧在现代 GPU(Blackwell 级)上已不再必要,架构选择(ResNet vs Transformer)影响甚微,真正关键的是快速获得一个可用的 value function 初始化。
- **LLM RL 的根本低效在于"通过吸管获取监督信号"**(Karpathy 语):策略梯度需要展开完整轨迹才能获得学习信号,且梯度方差随步数 T 二次增长;而 MCTS 在每一步局部搜索即可改进,不依赖全局轨迹回报——这解释了为什么 Go 中的自我博弈远比 LLM RL 高效。
- **自动化科学研究已在"执行实验"和"超参数优化"上表现出色,但在"横向思维"——识别当前实验方向是否正确、何时切换赛道——上仍严重不足**。Jang 建议 Go 可以作为自动化 AI 研究的外层验证环路,因为它快速可验证、涵盖分布式系统等核心研究工程问题。
- 贯穿全场的核心线索是**搜索与前向传播的对偶性**:从 MCTS 将搜索蒸馏进网络,到 value function 将深度博弈树压缩为一次评估,到 LLM 隐式学习类似搜索的推理过程,Jang 始终在追问同一个问题——"需要多少显式搜索才能被一个足够好的网络前向传播替代?"
---
围棋规则的设计使其成为 AI 研究的完美试验田
**核心要点:围棋规则极简(黑白落子占地),但组合复杂度远超任何棋类游戏;Tromp-Taylor 规则使计算机评分完全无歧义,这是 AI 能自我博弈到底的前提。**
- 围棋基本规则:黑先行,用己方棋子包围对手棋子的四个邻接点即可"断氧"吃子;目标是占据尽可能多的领地
- 中国规则、日本规则和 Tromp-Taylor 规则在计分上有显著差异。Tromp-Taylor 完全无歧义,因此所有 Go AI 均使用此规则训练和裁判
- 人类对局中,终局靠双方共识("我觉得游戏结束了""我同意"),本质上是两个人的 value function 达成一致。而 Tromp-Taylor 可由算法确定性判定,无需人类共识
- 19x19 棋盘每步约有 361 个合法走法,对局持续 250-300 步,原始博弈树规模约 361³⁰⁰——"远超宇宙中的原子数"。尽管存在对称性和路径合并,计算机科学家多年认为围棋"本世纪不可解"
> "Go is a game where you can lose the battle but win the war. As the board size increases, the complexity of these micro versus macro dynamics gets more interesting." —— Eric Jang
MCTS 的四步迭代:选择、扩展、评估、回溯
**核心要点:MCTS 不是预先构建完整博弈树然后搜索,而是边搜索边构建——通过 PUCT 准则平衡利用与探索,用 value function 截断深度,用 policy function 修剪宽度。**
- 每个节点存储三个量:访问计数 Nₐ、平均动作价值 Qₐ、以及从父节点到该节点的先验概率 Pₐ。Claude 4.6 为 Jang 生成的 MCTS 数据结构"非常合理"
- **PUCT(Predicted Upper Confidence with Trees)**:动作选择公式为 argmax Q(s,a) + C_PUCT × Pₐ × (√N / (1+Nₐ))。相比 UCB1 的 ln(n)/n 探索项,PUCT 引入 Pₐ 作为先验引导,适应围棋的大动作空间
- **Q 值的含义**:从某节点出发到终局的期望胜率。若能搜索完整博弈树,Q 就是确定值;在实践中 Q 是随机搜索树下的期望值
- **四步循环**:(1) Selection——沿 PUCT 准则选最优路径向下走;(2) Expansion——遇到未展开节点时,用 policy 网络生成子节点;(3) Evaluation——用 value 网络估算新节点胜率;(4) Backup——将评估值沿路径回传更新所有祖先节点的 Q 值
- AlphaGo Lee 在评估时还额外做了一次真实 playout:α × Vθ(node) + (1-α) × 实际对弈结果。后续所有论文(AlphaZero、MuZero、KataGo)均移除了这一步,因为纯 value 网络已足够,且省去了每次模拟的完整对弈开销
- MCTS 在**每一步棋重新启动**:上一步的搜索树丢弃,从新的根节点重新搜索。但会保留一样东西——用于后续训练的 visit count 分布(即搜索策略 π)
- AlphaGo 对 Lee Sedol 时使用了数万次 MCTS 模拟/步(跑在 TPU pod 上),但现代 Go bot 不需要那么多——200 到 2048 次模拟即可
> "It's sort of a chef's choice. You can rewrite the tree structure however you like. This is what Claude 4.6 wrote for me when I asked it, and it was a very reasonable choice." —— Eric Jang
双头网络:10 层 ResNet 如何同时预测胜率和好棋
**核心要点:Value head 预测当前局面胜率(截断搜索深度),Policy head 预测好走法的分布(修剪搜索宽度)——两者共享 trunk,本质上是同一表征的两种投影。**
- 输入编码:3 通道(黑/白/空),类似 RGB 图像,送入 ResNet。两个分支头:value head 输出单个 logit(R¹,胜率),policy head 输出 R³⁶¹(每个交叉点的落子概率)
- **ResNet vs Transformer**:Jang 尝试过多种架构,发现在低预算实验中 ResNet 仍优于 Transformer。原因:卷积提供局部归纳偏置,小数据时更高效。Transformer 在需要全局注意力时理论上更好,但 Jang "费了很大劲也没能让 Transformer 在围棋上超过 ResNet"
- KataGo 论文的一个重要发现:在卷积网络中加入全局特征池化(pooling),让网络能连接棋盘两端的战斗——这正是 Transformer 全局注意力天然做到的事
- AlphaGo Lee 最初用两个独立网络;后续论文将它们合并为双头共享 trunk——大概率节省了计算,因为 policy 和 value 确实共享大量表征:"如果 policy 推荐一个 value 认为低价值的动作,说明两个 head 之间存在根本矛盾"
- **"为什么不直接只用 value?"**——Jang 提出的反问:可以对所有 361 个子节点做 value 评估,归一化后得到 policy。理论上可行,但需要 361 次前向传播(可批处理),且更重要的原因是:MCTS 的自我改进循环需要 policy 作为显式建模对象
- 纯 policy 网络(不搜索、直接取 argmax)已经能击败大多数人类棋手——"一个不到 300 万参数的 10 层网络能做到这一点,本身就相当不可思议"
MCTS 作为策略改进算子:搜索即蒸馏
**核心要点:MCTS 的本质不是"找最优动作"而是"为 policy 网络生成更优的训练标签"——每次搜索产生的 visit count 分布就是下一轮训练的 soft target,网络不断逼近搜索结果,搜索起点随之抬高,形成螺旋上升。**
- 搜索前,policy 网络对当前局面有一个初始猜测分布。经过 N 次 MCTS 模拟后,visit count 分布变得更尖锐、更集中于真正好的动作——这就是搜索策略 π
- **test-time scaling 直觉**:零模拟时的胜率是 policy 网络裸跑的水平;随着模拟次数增加,胜率单调上升。如果把 1000 次搜索的结果蒸馏回 policy,下一轮零模拟的起点就提升了——再搜索 1000 次能达到更高胜率
- **AlphaZero 的损失函数有两项**:(1) policy head 预测 MCTS 分布(KL 散度);(2) value head 预测实际对局结果(谁赢了)。训练初期主要在训练 value head,因为 policy 还没用;一旦 value 准确了,policy 也开始改进
- **关键训练技巧**(Jang 自己的经验,非同行评审):先确保 value function 准确再投入 MCTS 搜索。"在垃圾 value 预测上做搜索没有意义"。最快的方法是用人类专家数据或 KataGo 对局初始化 value head
- **冷启动替代方案**:在 4x4 或 9x9 小棋盘上玩 5 万局随机对弈,就能学到不错的 value function。KataGo 的架构支持 9x9 到 19x19 的迁移学习
- **MCTS 保证改进吗?不保证。** 如果 value function 在终局阶段失准(例如 bot 总是提前投降导致缺少终局训练数据),搜索结果可能反而比 policy 网络差。实践中,10% 的对局强制打到底(不允许投降)可以解决这一问题
> "This is a breakthrough that I think most people don't even fully comprehend today, how profound that accomplishment is... 10 steps of neural network parallelized distributed-representation thinking is able to amortize and approximate to very high fidelity a nearly intractable search problem." —— Eric Jang
与 LLM RL 的根本差异:MCTS 的"每步改进"vs 策略梯度的"轨迹级信号"
**核心要点:MCTS 在每一步局部改进 policy,学习信号方差极低;而 LLM 式策略梯度(REINFORCE)只能在整条轨迹结束后获得一个二元奖励,方差随步数 T 二次增长,信号淹没在噪声中。**
- **Jang 的简化模型**:两个实力相当的策略对弈 100 局(每局 300 步)。a 赢 51 局、b 赢 49 局。实际只有 1 局中的 1 步是真正的改进——但 naive RL 会把 51 × 300 = 15300 个动作全部作为正样本训练。"你的真实监督信号是 1 个,噪声标签是 29999 个"
- **梯度方差分析**:REINFORCE 梯度中有 Σ log π(aₜ|sₜ) × R 这一项。当 T=1 时方差尚可;当 T=300 时,log π 的乘积项产生二次耦合效应,方差爆炸
- **LLM 为什么只做"单步 RL"**:当前 LLM RL(如 RLVR)将整个 response 视为单个动作 aₜ(T=1),reward 也只有一个。虽然 log P(response) = Σ log P(tokenᵢ),但不做 per-token reward 分配——就是为了避免上述方差爆炸
- Karpathy 的比喻:"sucking supervision through a straw"——在 100K 词汇表中,一个完全未训练的模型需要随机尝试约 10 万次才能碰到正确 token "blue"。而监督学习一次就能通过 cross-entropy loss 学到距离 "blue" 有多远
- **bits per FLOP 框架**:bits per FLOP = samples per FLOP × bits per sample。RL 在两个维度都比监督学习差——随着轨迹变长 samples per FLOP 下降,而在低 pass rate 时 bits per sample 几乎为零(RL 学习速率 ≈ 二元随机变量的熵 ≈ 0,而监督学习 ≈ -log(p),在 p 很小时信号量巨大)
- **MCTS 为什么优雅**:(1) 不需要从零成功率起步——永远在改进当前 policy,哪怕当前 policy 只赢 50%,搜索也能给出一个更好的分布;(2) 训练标签是 soft target(MCTS 的 visit count 分布),信息量远大于 one-hot 标签;(3) 实现上就是普通的监督学习——cross-entropy loss + value 分类——基础设施极简,训练极稳定
> "The major reason is that you never have to initialize at a zero percent success rate and solve the exploration problem of how to get to a non-zero success rate." —— Eric Jang
Advantage 估计与信用分配:如何从噪声中提取真实改进信号
**核心要点:策略梯度的核心挑战是信用分配——哪些动作真正导致了胜利?Advantage 估计(A = Q - V)试图将学习信号限制在"优于平均表现"的动作上,但这要求一个准确的 value function。**
- **naive 做法的问题**:赢了的 51 局全部正向强化,但其中 50 局是常规水平,只有 1 局有真正改进。理想情况下应该丢弃 50 局的梯度,只保留那 1 步
- **Advantage = Q - baseline**:当 advantage 为零时动作不贡献梯度,为正时强化,为负时抑制。核心难题是如何准确估计 baseline——John Schulman 的 GAE(Generalized Advantage Estimation)论文是经典参考
- **TD learning 的角色**:Q(s,a) = r + γ × max_a' Q(s', a')——动态规划的递推关系。无法做前向搜索(如机器人/StarCraft)时,可以通过 TD 学习从已有轨迹反向传播 Q 值
- **Q-learning vs MCTS 的结构对比**:MCTS 通过前向搜索在未访问的轨迹上规划;Q-learning 在已访问轨迹上反向规划。MCTS 用 value function 从叶节点回溯;Q-learning 用 Bellman 方程从下一步回溯——"结构上有明显对应关系"
神经虚拟自我博弈:当你没有博弈树时怎么办
**核心要点:对于 StarCraft 这类无法轻松构建博弈树的游戏,Neural Fictitious Self-Play 用"固定对手 + model-free RL"替代 MCTS 搜索,训练 best-response policy 然后蒸馏回主策略——与 MCTS 的"搜索即蒸馏"异曲同工。**
- **流程**:固定对手 πb → 用 PPO/SAC/V-MPO 训练 best-response policy πₐ* → 对多个对手(πb, πc, πd...)的 best-response 做蒸馏 → 得到混合策略(能应对联盟中任意对手的平均水平)
- 这正是 AlphaStar(StarCraft)和 OpenAI Five(Dota 2)使用的方法
- 本质思想与 MCTS 一致:为已有动作重新标注更优标签。区别是标签来源不同——MCTS 用搜索,NFSP 用 model-free RL
- 不完全信息博弈(如 2v2 围棋、扑克、Diplomacy)需要建模对手行为的时序信息——这是完美信息博弈(如标准围棋)不需要的,也是"非常令人兴奋的研究方向"
Off-policy 为什么在 AlphaGo 中能用?DAgger 视角下的重放缓冲区
**核心要点:Off-policy 数据的价值取决于它与当前策略的状态分布距离——最优训练集是"最优轨迹 + 轨迹附近的扰动状态"(DAgger 直觉),太远的状态会浪费模型容量。**
- **问题**:AlphaGo 的 replay buffer 中大多数棋步来自旧版本 policy,新 policy 可能永远不会访问这些状态——为什么训练不崩?
- **DAgger 直觉**:最优训练数据 = 最优轨迹上的状态(exploitation) + 轨迹附近漂移后如何回正的状态(robustness)。如果只训练最优轨迹,一旦被对手打偏就没有纠错数据——"围棋和象棋的问题是,对手总在搞事情"
- **Jang 的 MCTS relabeling 实验**:从旧轨迹中随机取状态,用当前网络重新跑 MCTS 标注。好处:能充分利用 GPU(不用等围棋游戏产生新棋盘)。坏处:如果状态太远离当前策略,浪费模型容量。实际效果"还行,但太复杂不值得开源"
- **行业趋势**:机器人/RL 领域正整体回归 on-policy 训练——更稳定。off-policy 数据只用于辅助计算 advantage(如 Q - V),不直接进入损失函数。Google QT-Opt 时代的 replay buffer + Bellman updater + trainer 三件套正在被简化
神经网络与计算复杂性:一个"令人不安"的发现
**核心要点:一个 10 层网络能将"应该"需要指数级搜索的问题压缩进一次前向传播——这不是 P=NP 的证明,但暗示最坏情况复杂度理论可能对现实问题过于悲观。**
- AlphaGo、AlphaFold、AlphaTensor 都展示了同一模式:NP-hard(最坏情况)问题在实践中被小网络"几乎任意程度地"解决
- **Jang 的解释**:这些问题在最坏情况下不可解,但现实中通常有大量结构可利用。"我们应该重新思考,用最坏情况复杂度来描述解决方案是否恰当"
- **混沌与可预测性的类比**:围棋中,预测 100 步后的棋盘(类似天气预报)对初始条件极度敏感——但预测"谁会赢"(宏观量)却可以很准。这就像 Lorenz 吸引子:你不知道系统会走到哪个具体点,但你知道整体形状。Jascha Sohl-Dickstein 的研究表明,神经网络在"混沌边缘"拥有最大能力
- **密码学的反面**:hash function 也依赖初始条件敏感性,但故意没有宏观结构(否则就不安全了)。有趣的是:密码学协议和神经网络在架构上惊人相似——"sequential layers of jumbling information together"(Reiner 的博客文章观点)。一个追求最大混乱,一个追求最大信息整合,但数学形式趋同
> "It actually makes me wonder if our understanding of problems like P=NP, or these fundamental computational hardness problems, is incomplete." —— Eric Jang
LLM 能否做前向搜索?树结构推理的希望与障碍
**核心要点:MCTS 在围棋中成功依赖两个条件——value function 可靠、动作空间有限且可重复采样——LLM 推理两者都不满足。但"向前看多条路径"的思想可能以不同形式回归。**
- **为什么 PUCT 对 LLM 不适用**:PUCT 的探索项 √N/(1+Nₐ) 假设你会多次采样同一个子节点。但语言太开放,几乎不可能两次生成同一段文字——离散动作的重访统计毫无意义
- LLM 已经在**隐式地**做类似 MCTS 的事——"试一种方法,发现不对,回退,换一种"——但没有显式的树结构
- Google 在 2023-2024 年尝试过将树结构应用到推理,"目前还没有定论"
- **数学证明可能是例外**:数学推理更接近逻辑搜索,有明确的回溯和路径判断——比商务谈判更像围棋。Jang 认为 MCTS 式前向搜索"可能会在某种不同的实例化形式下回归"
实操:$10K 重建 AlphaGo 的工程经验
**核心要点:借助 LLM 编码(Claude 4.6/4.7)和现代 GPU,当年 DeepMind 团队花数百万美元做的事情现在几千美元即可复现。多数 KataGo 的工程技巧已被硬件进步淘汰。**
- **预算分配**:Prime Intellect 赞助约 $10K——$4K 用于探索性实验,$3K 用于最终训练,剩余用于模型服务
- **为什么第一次做总是更贵**:"第一次做某件事的计算量永远远大于追赶它的计算量。"AlphaGo Zero 使用 3E23 FLOPS(当时远超其他所有 AI 模型),但 KataGo 在 2020 年实现了 40x 计算量缩减——开源项目 KataGo 由 Jane Street 的 David Wu 开发
- **哪些技巧仍然重要**:(1) 在 9x9 小棋盘预训练 value function,再迁移到 19x19——大幅缩短冷启动时间;(2) 先用 best-response training 对已有强 bot(KataGo)训练,而非从零自我博弈;(3) 同步训练(collect → train → collect)替代复杂的异步分布式 RL 系统
- **哪些技巧不再重要**:(1) 架构选择(ResNet vs Transformer 差异甚微);(2) KataGo 的辅助监督目标(有好的初始化时不需要);(3) 模拟次数的精细调节("不太敏感")
- Jang 在线托管了自己的 bot,使用 best-response training 对 KataGo 模型训练达到强水平;正在验证 tabula rasa 自我博弈是否可行
Scaling laws 在围棋中的探索与教训
**核心要点:Jang 最初想用 scaling laws 指导 Go bot 训练,但发现"在系统工作之前研究 scaling laws"是个陷阱——你可能只是在研究坏数据上的 scaling laws。**
- Andy Jones 2021 年论文"Scaling Scaling Laws with Board Games"展示了两个预见性结论:(1) test-time compute 和 training compute 可互换(预见了 inference scaling);(2) 可以预测解决更大棋盘所需的计算量
- **Jang 的失败经验**:最初有 MCTS 标注 bug 时,他在专家数据上训练了一个监督学习模型并画出了看起来像 scaling laws 的曲线——"但如果 policy 不工作,你只是在研究坏数据上的 scaling laws"
- **实用教训**:"你的人造物需要先有趣到值得研究,然后再用科学方法去理解它。"这对做研究的从业者是重要提醒:先让系统工作,再研究系统
- **compute multiplier 的暂时性**:很多算法技巧在特定硬件时代有价值(如 KataGo 的技巧在 V100 时代),但随着 GPU 升级(V100 → Blackwell),这些 multiplier 变得无关紧要。"任何给定 compute multiplier 的收益可能是暂时性的"——这正是 Bitter Lesson 的核心预测
自动化 AI 研究:LLM 编码助手能做什么、不能做什么
**核心要点:LLM 编码助手已能胜任超参数优化和实验执行(比传统 grid search 灵活得多),但缺乏"横向思维"——不会主动质疑实验方向、不会识别 bug vs 理念错误。Ilya 式的研究直觉仍是人类的领地。**
- **能做的事**:(1) 开放式超参数搜索——不是传统的 grid search,而是"发现某层梯度小,于是修改数据加载器、改 augmentation、重写损失函数"的灵活探索;(2) 自动执行完整实验链——Jang 有一个 Claude Skill 叫"Experiment",描述 x 轴 y 轴后自动跑实验、画图、写报告
- **不能做的事**:(1) 判断当前实验方向是否正确——Jang 会在一个方向(如 off-policy MCTS relabeling)上做几个实验后意识到不值得,但模型不会主动提出"我们该换方向了";(2) 区分 bug 和理念失败——需要人类 prompt 正确问题,模型才能诊断
- **Ilya 的研究直觉**:Ilya Sutskever 认为优秀研究者的核心能力是"相信某个想法应该能行,因此坚持通过 bug 调试直到成功"——而不是在第一次失败时就放弃整个方向。这种判断力目前 LLM 不具备
- **Go 作为自动化研究的训练场**:围棋覆盖了分布式系统、policy optimization、value estimation 等核心研究工程问题,且外层验证(win rate)快速可靠。Jang 建议用 Go 环境训练自动化科学家的横向思维能力——"在围棋中获得的技能也许可以迁移到生物科学或机器人领域"
- Jang 主要使用 Opus 4.6 和 4.7 进行研究
> "They don't seem to be able to step back and do the lateral thinking of, 'Wait a minute, this track doesn't really make sense. Let's go back to first principles and think about what the bottleneck might be.'" —— Eric Jang
Compute multiplier 的可叠加性:为什么好想法不一定能组合
**核心要点:多个独立验证有效的 compute multiplier 往往不能叠加——它们可能提供相关的、冗余的收益,而且每个 multiplier 的价值随硬件升级而衰减。**
- 传闻某些 AI 实验室发现:个人独立追求的好想法组合后训练反而失败——"两个看起来好的想法之间存在奇怪的交互作用"
- **Bitter Lesson 的研究品味**:知道什么时候可以依赖 Bitter Lesson(scale 就行),什么时候必须用启发式方法——这是当前计算水平下的核心研究判断力
- 机器人领域的 frontier 模型训练 scatter plot "到处都是",没有 LLM 那样清晰的 scaling 线——因为研究者优化的目标是"让能力出现"而非"compute-optimal"。只有当计算预算涨到数亿美元时,每个 FLOP 的效率才真正重要