AlphaGo:策略网络、价值网络与树搜索
WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
上一章用神经网络逼近
或 。围棋的动作空间约 手、局面约 ,单靠一次前向传播选子仍然太莽。AlphaGo 的答案是:网络负责「感觉」,蒙特卡洛树搜索(MCTS)负责「想清楚」。 后面的 PPO / GRPO / RLHF 都在优化「感觉」;这一章先把「感觉 + 搜索」讲透。
前置:深度强化学习 的策略梯度与 Actor-Critic。

图解说明:三条网各管一件事——模仿、会赢、估胜率;对局时真正下棋的是右边的 MCTS。
一、为什么围棋不能只靠一张网
Atari 上 DQN 可以「看像素 → 选键」。围棋不行,原因很具体:
- 分支因子大:每步合法落子经常超过
,穷举几步就爆炸。 - 奖励极稀疏:终局才知道输赢,
,中间 手几乎没有即时反馈。 - 「看起来好」≠「算完真好」:人类也是先凭棋感缩小候选,再在局部算清。
所以 AlphaGo 把问题拆成两层:
| 层 | 谁来做 | 输出 |
|---|---|---|
| 棋感 | 深度网络 | 先验 |
| 计算 | MCTS | 访问次数 |
网络提出候选并评估叶子;树在这张「缩小后的地图」上把计算预算砸在关键变化上。
二、2016 年那一版:三条网,再加搜索
Silver 等人发表在 Nature 的 AlphaGo(对阵李世石的那套)不是一张网打天下,而是三条网 + 快速走子 + MCTS:
2.1 监督学习策略 (SL policy)
用人类对局
它学的是「职业棋手会下哪」。这不是最优策略,但足够给 MCTS 一个靠谱的先验,让搜索别在明显的废棋上浪费模拟。
2.2 强化学习策略 (RL policy)
从
2.3 价值网络
在自我对弈产生的局面上回归胜率:
原始 AlphaGo 的叶子评估还混了一点快速走子策略

图解说明:对手是自己的旧拷贝,终局
沿整盘回传,和 s20 的 REINFORCE 同一类梯度。
三、MCTS:把计算预算花在刀刃上
对局时真正下棋的不是「网络
:访问次数 :累计价值 :平均价值 :策略网给出的先验
一次模拟四步,循环几千次:
选择 Selection 从根沿树走,直到叶子
扩展 Expansion 用策略网展开合法手,写入 P
评估 Evaluation 价值网(+ 可选滚出)给叶子打分 v
回传 Backup 把 v 加到路径上每一条边的 W、N3.1 怎么选边:PUCT
AlphaGo 用的选择规则是 PUCT(PUCB 的变体):
两项分工非常清楚:
:利用——目前算下来赢面高的手。 - 后一项:探索——先验
大、但还没被访问够的手,会被加成抬起来。
访问越多,
数字例(demo 井字棋,均匀先验 demo.py 的 C_PUCT=1.5,叶子随机滚出,无神经网络。
逐步推导:PUCT 与四步 MCTS(点击展开)
选择:从根沿
PUCT 的
3.2 对局时怎么落子
搜索结束后,根节点按访问次数采样(训练自我对弈时还加温度;正式比赛常取

图解说明:四步循环几千次。对局按根上的
落子,而不是网络瞬时 。
四、AlphaGo Zero:烧掉人类棋谱
2017 年的 AlphaGo Zero 把三条网收成一张双头网:同一个塔,一头
- MCTS 改进后的落子分布
当策略标签; - 终局
当价值标签。
损失函数可以写成:
要点不是「更炫的架构」,而是:搜索既是对局引擎,也是策略改进算子。 网络提出先验 → MCTS 把它炼成更好的
后面 MuZero 又把「规则已知」放松成「隐式环境模型」,那是世界模型路径上的故事,见 MuZero。
五、和后面几章怎么接
把 AlphaGo 拆成三块积木,后面可以原样拎走:
| 积木 | AlphaGo 里 | 后面谁用 |
|---|---|---|
| 策略梯度 / 自我对弈 | 训 | PPO 把「更新别迈太大」做稳 |
| 价值基线 | PPO 的 Critic;GRPO 则用组内相对分数代替 Critic | |
| 搜索 | MCTS | 对局可以搜;LLM 对齐通常不搜整棵树,但「先验 + 评估」的分工还在 |
下一节不要跳去 RLHF。先把 PPO 的裁剪目标和 GAE 讲完,再看 DeepSeek 的 GRPO,最后才把这些优化器接到大模型上。

图解说明:Zero 用
当训练标签——搜索既是引擎,也是策略改进算子。
六、本节小结
| 概念 | 一句话 |
|---|---|
| 棋感 vs 计算 | 网络给先验和价值;MCTS 把有限模拟砸在关键变化上 |
| SL 策略 | 模仿人类落子,给搜索当靠谱的 |
| RL 策略 | 自我对弈 + 策略梯度,学会赢而不是模仿 |
| 价值网络 | 叶子上估计胜率,少做完整滚出 |
| PUCT | |
| AlphaGo Zero | 一张双头网,用 MCTS 改进后的 |
📥 Code
| File | View | Download |
|---|---|---|
| demo.py | Open | Download |
| exercise.py | Open | Download |
参考
- Silver, D., et al. (2016). Mastering the game of Go with deep neural networks and tree search. Nature. [doi:10.1038/nature16961]
- Silver, D., et al. (2017). Mastering the game of Go without human knowledge. Nature. (AlphaGo Zero) [doi:10.1038/nature24270]
- Kocsis, L. & Szepesvári, C. (2006). Bandit based Monte-Carlo Planning. ECML. (UCT)
- Rosin, C. D. (2011). Multi-armed bandits with episode context. Annals of Mathematics and Artificial Intelligence. (PUCB / PUCT 先验)