# 大卫·西尔弗：AlphaGo、AlphaZero 与深度强化学习

> DeepMind 研究者回顾 AlphaGo 与 AlphaZero 的诞生，讲解自我对弈与强化学习背后的关键思想。

- 原标题：#86 – David Silver: AlphaGo, AlphaZero, and Deep Reinforcement Learning
- 期数：第 86 期
- 发布日期：2020-04-03
- 嘉宾 / 主题：大卫·西尔弗
- 网页版：https://lexfridman-cn.pages.dev/ep/david-silver/
- 官方页面：https://lexfridman.com/david-silver/
- 精读字数：约 8457 字（阅读约 19 分钟）

> 本文为 lex.qiaomu.ai 基于原始访谈的 AI 改写中文精读，非官方翻译；引用请注明出处并链接网页版。

2000 年，一个悬赏一百万美元的围棋奖项到期了。这笔钱留给第一个能击败人类职业棋手的围棋程序，结果没人领走。

奖金到期那一年，世界上最强的围棋程序被一个九岁小孩击败。而且小孩开局先让了九子。职业棋手让得更多，二十九子照样能赢。

二十年前围棋 AI 的处境就是这样。上世纪九十年代，国际象棋、跳棋、西洋双陆棋、黑白棋，一个接一个被启发式搜索加高性能计算攻破，人类世界冠军依次失守。同一时期，围棋纹丝不动。

大卫·西尔弗（David Silver）就是在那个时间点进入这个领域的。他现在在 DeepMind 带强化学习研究组，是 AlphaGo 的首席研究员，也是 AlphaZero 的主要设计者之一。他的判断是，围棋需要另一种方法，因为围棋里的胜负判断依赖一种说不清楚的直觉。

看一盘中盘棋，黑白子散落在棋盘上，人类棋手扫一眼就能说，这块将来是我的地盘，那块是你的，我大概会赢，下一手应该下在这里。这种判断没法写成规则。国际象棋里，你给每个子赋一个分值，加总一下，谁占优大致就出来了。围棋不行，双方落子数差不多，提子在高水平对局里很少发生，唯一区分优劣的，是对未来地盘的预判。

问题因此被重新定义：怎么把直觉塞进计算机。

## 七岁那年的 BBC 微型计算机

西尔弗的第一段程序写在七岁。父母带回一台 BBC Model B 微型计算机，他用不同颜色把自己的名字打印出来，再加一个循环让它反复刷屏。

他把这台机器和乐高类比。乐高能拼出任何东西，但受限于你手上那套积木。计算机的特别之处在于，没有这层限制。他从用户手册读到高级用户手册，先学 BASIC，后来学 6502 汇编。

更有意思的是他父亲。父亲对这台机器产生了兴趣，干脆放弃原来的职业，回学校读了一个人工智能硕士。那时候西尔弗七岁。父亲教他写 Prolog，拿家族族谱当查询对象。一个七岁小孩对着一堆父子关系事实做推理查询，这是他关于人工智能最早的记忆。

真正让这件事变成执念，是在剑桥读计算机科学的本科阶段。他当时反复问自己一个问题：这门学科的目标到底是什么。想清楚之后，他觉得唯一算得上重大的一步，是尝试复现出接近人类智能的东西。这个想法的原创权并不属于他，但它像一只虫子，钻进去就不走了。

> 除非你相信某种形而上的东西，否则我们的大脑在做什么？在某个层面上，它们就是信息处理系统，接收信息，通过某种程序变换，输出结果，让这个人能够在这个世界上做成那些了不起的事。（大卫·西尔弗）

毕业后他先去游戏行业待了五年，写游戏里的 AI。那五年让他明白了一件事：这些手工编写的智能体，在某些特定场景里能赢他，但赢的方式是靠反应更快，或者靠一个可以反复利用的模式。他自己形容，那都是短期补丁，不是长期愿景。

于是他回去读博士，论文题目把强化学习用到围棋上。他做的第一个围棋程序，通过自我对局试错，学会哪些棋型对预测胜负真正有用，然后选择那些能导向更有利棋型组合的落子。这个程序赢了他。

> 我感到极大的满足。因为这个系统是从第一性原理出发自我学习的，它最终对这个领域的理解超过了我，还能击败我。（大卫·西尔弗）

## 强化学习是问题，不是解法

读博前，西尔弗空出一年时间想清楚自己要走哪条路。这一年他读到萨顿和巴托（Sutton & Barto）那本强化学习教科书。他的原话是，读完有一种共振感，这就是他理解中智能该有的样子。

他去信萨顿，问愿不愿意指导自己做计算机围棋的博士论文。萨顿当时正与严重的癌症抗争，不确定自己还能不能撑到学生毕业。后来这段故事有了好结局，西尔弗去了加拿大阿尔伯塔，那里有一个很强的博弈研究团队，也是强化学习的发源地之一。

他把智能分成两层来看：**问题**和**解法**。在他看来，智能这个问题可以被形式化成强化学习问题，这个形式化足以覆盖我们所说的大部分智能。至于用什么方法去解，那是另一回事。

所以当有人问「未来的通用智能系统里有没有强化学习」时，他的回答是：如果那个系统存在，它就是这个问题的一个解。至于具体用了什么算法，那属于解法层面。他认为应当对具体的算法保持开放，现有这些方法可能还有很长的路，也可能还缺一些关键的东西。

那么强化学习本身是什么。他给的定义很朴素：

> 强化学习是关于智能的科学和问题，它的形式是一个与环境交互的智能体。智能体采取动作，动作对环境产生影响，环境回传观测，以及一个特殊的信号，叫做奖励，用来表示它做得怎么样。强化学习问题就是随着时间不断采取动作，最大化这个奖励信号。（大卫·西尔弗）

解法层面，他习惯把系统拆成三块积木，看哪些被显式地表示出来：

- **价值函数**：显式预测未来能拿到多少奖励
- **策略**：显式表示怎么选动作
- **模型**：显式预测环境接下来会发生什么

用不用这三块积木，用哪几块，就衍生出我们熟悉的各种强化学习分支。但这三块之下还有一层更根本的选择：学习本身。强化学习问题的定义并不强制你学习，理论上你可以不学而直接最大化奖励，只是那样效果会很差。

在任何一个足够大、足够复杂的环境里，学习是唯一能达到好表现的途径。这条线索往下走，才能谈「学什么」。学价值函数，是学预测；学策略，是学怎么做好；学模型，是学世界怎么运转。目标函数的形式，决定了整个系统的语义。

## 为什么高维空间里没有真正的局部最优

深度强化学习，就是把神经网络这套表示工具用到上面三块积木上。

西尔弗说他对强化学习这个方向本身不感到意外。理由很简单：我们手上有存在证明，也就是人类智能本身。既然人脑能做到，那么从经验中学习、并把经验用在复杂度堪比人类所处环境的地方，在某个层面上一定是可能的。

真正让他和一整代研究者意外的是另一件事：神经网络居然能一直训下去。

你去看神经网络想要优化的那个损失曲面，它极度非线性，到处是坑坑洼洼。按低维直觉判断，学习很快就会陷进某个局部最优，然后卡死。但实际发生的是，学习继续往下走，你以为的局部最优其实不是局部最优，总有一条路能带你到更低的地方，再到更低的地方。

原因在维度上。当网络真的很大，维度很高的时候，逃逸路径永远存在。

> 在高维空间里，我们做很大的神经网络时，总有出路，总能走到更低的地方。走到那儿之后，那也还不是局部最优，因为还有别的通路能带你出去，带你到更低。（大卫·西尔弗）

他对 AI 寒冬的归因也在这里。当年人们只能搭五十个节点的网络，只能在低维空间里做实验。从低维经验出发，你无法想象十亿维的曲面会呈现出性质完全不同的行为。到今天，支撑这一点的理论仍在建立中，但所有已知的结论都指向同一个方向：神经网络不仅在表示能力上是通用的（这一点早就知道），在学习能力上也是通用的（这一点相当反直觉）。

顺着这个逻辑走下去，一个问题自然浮出来：因为维度直觉的限制，我们今天还漏掉了什么？西尔弗说，一百年后回头看，那时候的智能体可能会觉得我们今天的强化学习系统太复杂了，答案其实一直都很简单。

他同意萨顿那一派的基本立场：**能被时间放大、最终胜出的，往往是那些简单清晰的想法。**但现实是，今天就得让系统跑起来，所以不得不先把一些还没完全理解的部件拼在一起。

## MoGo 与蒙特卡洛树搜索

读完西尔弗这条线，再看围棋本身为什么难，会更清楚。

围棋的规则简单到有人开玩笑说，如果有一天人类遇见外星生命，语言大概率不通，但围棋规则可能会被双方各自发现。19 乘 19 的棋盘，交叉点上落子，轮流下，目标是围出比对手更多的地盘。唯一的变化是，完全包围对方的子可以提掉，提掉的区域算自己的。

从这几条规则里长出来的复杂度，是天文数字。一盘棋的可能局面大约是 10 的 170 次方。传统启发式搜索，就是深蓝在国际象棋上用的那一套，挪到围棋上直接垮掉：搜索空间太大，而局面评估又没法做。

转折点在 2006 年。雷米·库隆（Rémi Coulom）提出蒙特卡洛树搜索，思路是让机器从一个局面出发，随机把棋下到终局，重复很多次，看黑棋赢的比例高还是白棋高，用这个平均值来评估这个局面。MoGo 那一代程序就建立在这个想法上。

围棋是完全确定的游戏，精确到每一步的顺序都有讲究，可为什么随机乱下反而有用？西尔弗的解释是，随机化捕捉到了这个局面的某种性质，从一个节点往后随机采样，等价于用大量随机终局去给这个节点做统计估计。

MoGo 是第一个在小棋盘上达到人类高手水平的程序，作者是西尔万·热利（Sylvain Gelly）。但这类程序有一个天花板。人们投入再多工程，也只能到业余高段，够不到职业，更别提世界冠军。西尔弗说，这个平台期正是 AlphaGo 出世的背景。

## 一场赌局和一次意料之外的胜利

AlphaGo 项目在 DeepMind 内部起始于一个科学问题，当时只有西尔弗、黄士杰和实习生克里斯·麦迪逊（Chris Maddison）在做。问题很纯粹：有没有另一种根本不同的方法，做出那个「看局面就知道该下哪、谁会赢」的直觉？

2012 年 ImageNet 被深度学习拿下，这个问题就有了新的答案形状。如果深度学习能把图像理解到足以分类的程度，为什么不能把棋盘上那些黑白子当作输入，让系统自己理解它意味着什么？

第一篇 AlphaGo 论文是一个纯粹深度学习系统，完全没有搜索。它在 19 乘 19 的完整棋盘上，达到了人类高段水平。

这件事的意义在于，它标志着一个长达二十年的范式松动了：搜索在 AI 中的统治地位，第一次被一个只靠直觉判断的系统正面挑战。

当时团队内部有个赌局，赌的是纯深度学习、不加搜索，能不能赢一个段位水平的棋手。恰好有一位段位棋手加入团队，第一场比赛就是和他下。西尔弗压的是深度学习和强化学习这一边，系统赢了。

> 对我来说，那是「有特别的事情正在发生」的瞬间。一个不做搜索的系统，光看局面，就已经能像人类强手一样理解了。（大卫·西尔弗）

从那一刻起，他判断达到职业水平、乃至世界冠军水平只是时间问题。既然迟早有人做到，他希望是这支团队。项目开始扩张，德米斯·哈萨比斯（Demis Hassabis）非常兴奋。几个月后，系统对阵欧洲冠军樊麾，这是历史上第一次有程序击败职业棋手。

接下来要拿一个主意：什么时候去挑战世界冠军。这个决定很难做。他们只能基于自己的进步速度去做估计，最终定在了 2016 年 3 月，对手是李世石。

## 首尔的五盘棋

出发去首尔之前，团队每人伸出一只手，用伸出的手指数表示自己预测能赢几盘。预测的分布很分散。西尔弗猜四比一。

四比一这个数字来自数据，跟直觉无关。团队此前已经确认，AlphaGo 大约每五盘棋会陷入一次「妄想」，也就是知识上的一个洞，系统没法完全理解当前局面，而这个洞会持续几十手。他们知道两件事：没有妄想的时候，AlphaGo 的水平远超任何人类棋手；有妄想的时候，正相反。

第一盘，AlphaGo 在终盘阶段侵入李世石的地盘。这手下法相当冒险，等于当面说，你以为这是你的地盘，我偏要在中间放一颗子，证明我能把它拆开。李世石的脸色当场变了。

第二盘出了那一手著名的第 37 手。这手棋打破了围棋界所有的惯例，观战的棋手一度怀疑是操作员填错了坐标。围棋从小教的一条规则是，肩冲只能下在三线或四线。AlphaGo 下在了五线，结果这是一手妙棋，在中腹形成了漂亮的棋形，最终赢下这盘。

人类常说的创造力，大概就是这个意思：一个此前不在人类知识库里的想法，被机器找出来了。现在职业棋手普遍认为这手下得合理，它已经进了人类的知识体系。

第三盘，李世石在劣势下凭空挑起战斗，做出一连串双劫（double ko）的重复局面。他清楚历史上没有任何程序能正确处理双劫。AlphaGo 处理得完全正确。

第四盘，李世石下出了他唯一赢下的一盘。他在中盘找到一串极为精彩的组合，整盘局势被彻底扭转。AlphaGo 的评估值瞬间崩塌，从「我在赢」变成「我没机会了」。

第五盘则给了团队一次教训。因为见过系统在前几盘出妄想，团队一致认为是系统又在误判局面，一直到最后几分钟才意识到，系统虽然全程预测自己会赢，它确实赢了。

> 它又一次教给我们一件事：当系统的能力超过你自己的判断时，你要相信它。一旦你赋予了它比你更好的判断力，就该让它去做。（大卫·西尔弗）

比赛结束后，李世石的话也很克制。他说，就算我成为第一名，也有一个无法被击败的存在。他后来在 2019 年宣布退役。

## 卡斯帕罗夫、卡尔森和 AlphaZero 的国际象棋

访谈里有个插曲。录这期节目时，西尔弗刚参加完一个论坛，同台的还有加里·卡斯帕罗夫（Garry Kasparov）和深蓝的作者默里·坎贝尔（Murray Campbell）。那是 1997 年那场比赛之后，两个人第一次同台。

卡斯帕罗夫后来对这件事的看法变了。他最初把输给深蓝当成自己的失败，后来越来越把它看成一次成功，因为那个时刻本身构成了转折，意义远大于他个人的一次失利。

而他认为 AlphaZero 在国际象棋上的突破比深蓝更深刻。理由是深蓝的评估函数由人类大师手工编码，AlphaZero 的知识由系统自己发现。后者可以迁移，前者不行。

有个细节很能说明问题。现任世界冠军马格努斯·卡尔森（Magnus Carlsen）据说最近提到自己棋力提升，归因于研究 AlphaZero 的棋局，并且调整了自己的风格去更接近 AlphaZero 的下法，等级分因此创下新高。

## 蜜月里的那个想法

AlphaGo Zero 的构想，西尔弗是在蜜月里想出来的，在他最放松的状态下，整个算法一下子完整地浮现出来。那还是在对阵李世石之前。

这个细节他专门讲出来，是给研究者听的一课。太多人 24 小时泡在自己的研究里，拼命挤出下一个想法，反而挤不出来。

AlphaGo 依赖人类棋谱，这从一开始就是权宜之计。用人类数据能把系统拆成更容易理解的部件，帮助团队更快推进，但长期目标一直是纯自我对局。西尔弗说，他做研究不太愿意做那些已经知道大概结果的题目。如果开一个实验，事先就有 95% 的把握会成功，那价值有限。更值得做的是不确定的那些。

当时团队并不确定纯自我对局能到同一水平，他个人的把握大概是五五开。结果 AlphaGo Zero 以 100 比 0 击败了 AlphaGo。

为什么能赢？他把这件事归结为纠错。

AlphaGo 的妄想来自很多源头，既来自人类数据，也来自搜索方式和算法本身。在一个复杂系统里，唯一的纠错办法是让系统自己有能力发现「我以为这盘要赢，结果却输了」，然后回头修正知识里的洞。这个机制一旦建立起来，就可以一路往回追溯：从完全随机的水平开始，系统能看到随机下法的蠢处并修正，于是比随机好一点；再从这一点出发，继续找错、继续提升。这个过程没有终点。

他还给了一个可证伪的预测。如果未来有人用更大的算力跑 AlphaZero，应该能以 100 比 0 击败当前的版本；再过几年重跑一遍，又应该以 100 比 0 击败上一代。这个链条可以一直延续下去，至少在他有生之年不会停。围棋的 10 的 170 次方个状态会是最终上限，但这个上限任何物理上能造出来的计算设备都够不到。

顺便回答一个更细的问题：纠错的时候会不会捅出新的错？会。但这类博弈的数学性质保证了，只要表示能力足够，自我改进的进程会持续朝最优方向推进。

## 连规则都不告诉它

AlphaZero 更进一步。不修改任何算法，同一套东西丢进围棋、国际象棋和将棋，三个项目都达到超人类水平。国际象棋里它击败了当时最强的国际象棋程序，将棋也是第一次运行就直接超人类，没有任何调参。

但 AlphaZero 仍然有一个前提：规则是人给的。

现实世界不是这样。没人会告诉你这个世界的规则。你可能知道微观上它遵循量子力学，宏观上遵循相对论，但这些模型跟一个人日常做决策的方式几乎没关系。智能体必须自己从一团混乱的感官输入里，理解这个世界怎么运转。

MuZero 就是冲着这一点去的。它被丢进一组 Atari 游戏，自己学出一个足够好用的世界模型，用来规划。同一套系统不做修改，在围棋、国际象棋、将棋上也达到了 AlphaZero 的水平。而它从始至终没被告知任何规则，只在下完之后收到一个分数。

## 四十天里重新发现定式

关于创造力，西尔弗先给了一个定义：发现此前不为人知、超出既有规范的东西。按这个定义，自我对局本身就是创造力机制。它在整个训练过程中，每时每刻都在做微小的发现：这个棋形对我有用，我以后多用；这两个想法可以这样连起来；这里的子可以弃掉。这种微发现发生了数百万次。

AlphaGo Zero 的训练过程留下了一条很漂亮的时间线。围棋里有一批人类下了几千年、不断打磨的角部定式，叫定式（joseki）。在四十天的训练里，系统先自己重新发现了人类在下的那些定式。然后它开始丢弃其中一些，拿出人类不知道的新变化。

再往后，职业棋手开始研究 AlphaGo 下出的新定式，这些变化成了今天高水平比赛里的常规下法。

西尔弗提到这件事的时候语气很温和。一个对人类一无所知的自我对局机制，独立发现了人类几千年积累的角部下法，这本身说明了某种东西：我们在这个领域做的事，方向没有错。

## 从化学合成到量子计算

他被问到 AlphaZero 这类方法能不能用在真实世界，比如机器人、自动驾驶、安全攸关的场景。

他提到两篇自己没参与的 Nature 论文。一篇是化学逆合成，用 AlphaZero 那套算法寻找合成路径，击败了当时的最高水平。另一篇刚发表几周，用同类方法处理量子计算里的一个问题，同样明显超过了此前的最好结果。

他的结论是机器学习领域反复出现的那个规律：**只要工具足够通用，它就会被用在你想不到的地方。**现在只是开始。

## 奖励函数、子目标和生命的意义

访谈最后转到一个更抽象的问题：如果奖励函数很难写，能不能靠内在动机让系统自己发现目标？人类看起来就不是在最大化单一奖励。

西尔弗的回答是，讨论智能时得先分清问题本身。系统可以有自己创造的动机和子目标，这可能是实现终极目标的关键机制。但终极目标仍然要存在，而且必须可度量、可评估。如果一个系统连自己最终要做什么都不清楚，那这个问题的定义本身就模糊了，而问题定义模糊，拿到的答案也会模糊。

他举了人类的例子。捡起一个物体、和某人沟通、影响别人的行为，这些都是子目标。我们选择做这些，是因为我们判断它有助于某个更终极的目标。所以在他看来，理解或实现智能的前提是有一个定义清楚的问题，否则等于承认无望。

顺着这个逻辑，主持人问那个绕不开的问题：如果人类也在试图搞清楚自己的奖励函数，那人类生命的奖励函数是什么？

西尔弗先声明这是超出他专业范围的猜测，然后给了一个多层嵌套的答案。

宇宙这一层，看起来只是机械地遵循物理定律在演化。但换一个角度看，热力学第二定律说熵在持续增加，麻省理工学院的一些人由此发展出一种说法，把宇宙的目标理解为最大化熵。

再往下一层，如果目标是耗散能量，进化可能就是宇宙发现的一种更高效的耗散机制。那么进化就有了自己的目标：尽可能高效地繁殖。

再往下一层，为了高效繁殖，就需要能有效生存和繁殖的个体，于是生物进化出了大脑和智能。早期的大脑可能是直接控制行为的预编程系统，再往后一层，出现了能自我学习、能重新给自己编程去达成任意目标的部分。人类那种「给我任何目标我都觉得自己能搞定」的灵活性，大概就是从这里来的。

所以同一个系统可以有很多层、很多种理解角度。你可以在优化目标这一层理解它，工程师用这一层去实现和设计；你也可以在物理机制这一层理解它，看神经元里的原子怎么碰撞。这两者并不矛盾。

主持人补了一句：您漏掉了最新的那一层，就是您负责创造的人工智能层。而人工智能这一层自己，又会去设定下一层。

西尔弗接住了这个说法。他说，当年他想做一个下围棋比自己强的系统，本质上是他通过造一个系统，达成了「下围棋比我自己下得更好」这个目标。新的层次就这样诞生了。往后还会有更多层。

> 我个人相信，我们已经看到某种转折点：很多我们以前认为只属于人类心智的能力，比如直觉和创造力，机器智能同样够得到。历史正走到一个非常激动人心的节点上。（大卫·西尔弗）

这期访谈的分量，在于一个把整条路径走完的人，回过头来怎么解释这条路径。他反复强调的是同一件事：把知识从系统里拿掉，让系统自己纠错，然后给它足够的算力和表示能力，进步可以没有上限。这个原则在围棋上验证过，在国际象棋和将棋上验证过，在 Atari 上验证过，现在正在化学合成和量子计算上验证。

剩下的工作，是把这套原则推进到没有人给规则、也没有清晰胜负判定的世界里去。

- 如果你在做强化学习相关的工作，先想清楚你把价值函数、策略、模型这三块积木里的哪一块显式表示了出来，以及为什么。这个选择决定了整个系统的语义，比调超参数重要得多。
- 遇到系统自我改进停滞的时候，先问它有没有能力发现并纠正自己的错误。AlphaGo 的妄想无法靠加数据修掉，只能靠让系统自己意识到预测和结果不一致。
- 做研究选题时，避开那些你事先就有 95% 把握会成功的题目。西尔弗明确说他不做这类实验，因为信息量太低。
- 如果你手上有算力，可以复现他那个可证伪的预测：用同一套 AlphaZero 算法，加算力，看能不能以 100 比 0 击败现有版本。这个实验明确、可验证、成本可控。
- 在需要迁移的场景里，优先考虑减少人工注入的知识。注入的知识会让系统在这个领域更脆，并且几乎无法搬到别的领域。
- 给自己留出彻底放松的时间，西尔弗的 AlphaZero 构想出现在蜜月里，不在工位上。
