# 奥里奥尔·维尼亚尔斯：DeepMind AlphaStar、星际争霸、语言与序列

> DeepMind 研究负责人谈 AlphaStar 如何攻克星际争霸，以及序列模型与语言建模的相通之处。

- 原标题：Oriol Vinyals: DeepMind AlphaStar, StarCraft, Language, and Sequences
- 期数：特别节目
- 发布日期：2019-04-29
- 嘉宾 / 主题：奥里奥尔·维尼亚尔斯
- 网页版：https://lexfridman-cn.pages.dev/ep/oriol-vinyals/
- 官方页面：https://lexfridman.com/oriol-vinyals/
- 精读字数：约 7656 字（阅读约 17 分钟）

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

AlphaStar 打赢 TLO 那天晚上，团队去酒吧庆祝。David 说，要不我们邀请一个真正打 Protoss 的高手来打一场？比 TLO 高一千 MMR 的那种。Oriol Vinyals 说，好啊。他后来说，当时心里想的是，这不可能赢。

在星际争霸 II 里，一千 MMR 是另一个物种。Mana 用 Protoss 对 TLO 的 Protoss，胜率 99%。这不是同一水平的对局。

而在这之前，还有一个更离谱的赌注。Oriol 给团队发邮件，说我们先打 TLO 吧，大家猜猜结果。他自己填的是 0:5。他是团队里出了名的悲观主义者，五局全输，这是他的真实预期。

结果 5:0。然后 Mana 也输了。

这个故事值得从更早的地方讲起，因为 AlphaStar 之所以能赢，和 Oriol 这个人的来路关系很大。

## 从一台被拆坏的电脑说起

访谈一开始，Lex 问他：先有对编程的热爱，还是先有对游戏的热爱？

Oriol 说，都不是。十岁、十一岁的时候，他做的事情是拆电脑、弄坏、再修好。谈不上写代码，就是瞎折腾。真正的入口是游戏，尤其是 1998 年那版星际争霸一代。

他是西班牙人。1998 年的欧洲，电竞这个概念还不存在，他所谓“半职业”也就是在自己的圈子里打到很高的水平，后来有几年稳定在欧洲前 32。没有 MMR 系统，没有直播，没有赞助，只有局域网和后来慢慢变好的网络。

有意思的是他的种族选择。他喜欢打随机，甚至比赛里也打随机。理由很实用：你得玩过那个种族，才知道它哪里难受，然后你站在对面的时候，才知道往哪里捅。最喜欢的种族是 Zerg，也是他打得最好的。

这个细节后来在 AlphaStar 的设计里反复出现。理解对手不是靠看，是靠曾经站在对手的位置上。

## “三选二”

Lex 问了一个很实在的问题：你是我见过最高产的研究者之一，同时你又真心喜欢游戏，这两件事能共存吗？

Oriol 提到一个说法，是别人告诉他的。大学那几年，你只能三选二：女朋友、游戏、学习。

他说这个说法大体是真的。星际争霸这种游戏，你要认真打，时间就是硬消耗。所以他上大学之后就基本停了，完全停。后来的《魔兽世界》算是休闲版，上线就能玩，任务总能做完，不像星际那样每一秒都在做取舍。而且魔兽世界给他的东西不太一样，是社交。他现在还有一批 Facebook 好友，是当年在虚拟世界里认识的，其中一个是他扮演牧师时遇到的一个战士。他说这些人让他很早就意识到，世界是多样的，只是他们之间连着的不是街道，是光纤。

这一段听着像闲笔，其实是理解他研究方法的一条线索。他很清楚一件事能吃掉多少时间，也很清楚什么时候该停。

## 2014 年，Demis 说“也许现在还太早”

时间线是这样的。

2014 年，Google 收购 DeepMind。Brain 和 DeepMind 两个团队搞了一次联合峰会，各自做报告。Oriol 当时在 Brain，他讲了自己在伯克利做的 Berkeley OverMind，一个星际争霸一代的 bot。

那个 bot 是什么水平？他自己说得很直白：一堆规则。你有超过三个单位就进攻，对方单位比你多就撤退，诸如此类。

讲完之后，Demis Hassabis 走过来，说了句大意是：

> “也许不是现在，可能有点早，但你应该来 DeepMind，用深度强化学习把这件事再做一遍。”（Demis Hassabis）

Oriol 当时的反应是，这听起来像科幻。

2016 年，他真的从 Brain 转到伦敦的 DeepMind。同一年 AlphaGo 赢了李世石。也是在这一年前后，暴雪主动找上门来，问要不要接下一个挑战。几件事凑到一起，项目就启动了。他飞去加州 Irvine 的暴雪总部，先跟对方讲清楚这件事打算怎么做，然后再动手。

从第一天起，项目的 DNA 就定了：**一切都要学出来，不写规则**。Berkeley OverMind 那种 if-else 是被明确排除的路线。

## 为什么这件事本来不该成

Lex 追问：你当时觉得离目标有多远？

Oriol 的回答很诚实，也很值得注意。他说，他觉得完整版这件事很可能做不到。一个纯神经网络、没有任何领域规则、一对一打完整局星际，他当时不认为可行。

> “我真的不觉得这有可能。但另一方面，我能看到一些踏脚石。”（Oriol Vinyals）

踏脚石有三块。

第一，星际争霸可以被切成子问题。开局、运营、交战、微操，每一块都可以单独定义、单独攻。

第二，暴雪开放了人类对局录像。不是全部历史对局，但量极大，而且每天都能拉到当天新产生的数据。这在当时是独一无二的资源：一个复杂度这么高的游戏，有如此规模的人类专家轨迹可以拿来监督学习。Oriol 之前做语言、做序列、做机器翻译，他很清楚这种数据意味着什么。

第三，团队。他自己说，同事比他自己重要。Demis 在 2014 年就已经看到了方向，他只是跟着走。

所以他接下了一个自己认为大概率做不完的题目，原因不是乐观，是因为能看见第一步踩在哪里。这个判断方式后面还会出现很多次。

## 把星际争霸翻译成一个序列问题

技术上的核心，用一句话说：**AlphaStar 的全部智能，都在一个神经网络的权重里**。你把正确的观察喂进去，用同样的方式解读动作，那个网络就是那个 agent，别的什么都不需要。

先说观察怎么表示。他们试过几种方案，最后用的是混合的：

- 一张缩小的全局地图，当成图像处理
- 一张当前镜头的局部视图
- 一份单位列表，每个单位带坐标、血量、类型、归属等属性

第三项是关键。把单位当成一个集合来处理，而不是像素。有意思的是，这跟 Facebook 的一篇论文是同一个思路：那篇论文把图像打散成像素列表，只保留每个像素的 XY 坐标，然后交给 Transformer，在 ImageNet 上照样跑得很好。Oriol 说他们其实是无意中用了同一个架构。

你一旦接受“单位列表就是一堆带坐标的像素”，星际争霸的观察就变成了一个序列问题，和语言里的词序列在形式上没有区别。

接下来是时间维度。星际争霸按每秒 22 帧左右推进，一局十分钟就是一万三千多帧。他们没有逐帧观察，只在自己要行动的时候观察，然后让网络自己决定下一个动作隔多久发生。这个设计既是计算上的必要，也刚好符合人类的节奏。处理完之后，一局平均只有一千到一千五百个动作。这个长度，LSTM 和 Transformer 都能吃下。

然后是训练。第一步是模仿。

他们从 3500 MMR 以上的人类对局里学，这个门槛定得低，是为了保留数据量。训练的时候还会把这一局的 MMR 数值一起喂给网络，相当于告诉它：你现在要模仿的是一个 4000 分的对手，或者一个 6000 分的对手。

这个设计带来的效果很有意思。训练完之后，你可以要求同一个策略“像 3000 分那样打”或者“像 6000 分那样打”，它真的会变。打得低的时候运营更差，每分钟操作数更少。他们测过，6000 分模式下的策略能打赢暴雪内置的所有 AI，但离真正的 6000 分选手差得远，大概只有金牌、白金水平。

原因很清楚：模仿学的是“下一步该点哪里”，不是“怎么赢”。这两件事之间隔着胜负信号，隔着信用分配。

## 最难的从来不是网络结构，是探索

Lex 问，星际争霸最难的部分是什么？不完全信息？长期规划？实时性？动作空间？还是博弈论意义上的无解？

Oriol 的回答是探索。而且他解释得很具体。

开局阶段，几乎任何主动动作都是坏的。因为你的工人本来在自动免费采矿，你随便点一下，就是把它从矿上拽下来，派到别处去。纯强化学习靠随机试错起步，它试出来的第一个能赢的策略是什么？把所有工人拉过去一波推。这个策略在自对弈里真的会赢，因为对面的网络也什么都不懂，也不会防守。

更复杂的动作，比如开分矿，需要选中工人、走过去、放下建筑、等它建好、再派人过去采矿。这一整串操作，靠随机点击几乎不可能凑巧撞上，更不可能撞上之后还能连到胜利信号上。这就是为什么纯强化学习在星际里会卡死。

所以他们的路线是：先用人类录像做模仿学习，把策略带到人类附近，再用自对弈往上推。这一步绕开了最要命的探索问题。

## 一个 League，而不是一个 agent

自对弈还有一个陷阱。如果只有一个 agent 和自己打，它会收敛到一个很小的策略子集，然后卡在那里。

他们的解法叫 AlphaStar League。不是纯自对弈，是一个由不同“性格”的 agent 组成的联盟。有些专门练偷袭，有些专练经济，有些专练早期压制，有些专练后期爆发。每个新 agent 训练时，对手是整个联盟的当前快照，它会去找这个分布的最优解，也就是最狠的克制。然后新一代 agent 又被放进去，逼着所有人继续进化。

Oriol 把它比作战网。你在天梯上碰到一个没见过的打法，被打爆，然后你立刻想学它，想再来一局。联盟就是在人造这个环境。

这个设计的效果在对 TLO 和 Mana 的十局里能看出来：其中两局的 agent 打的是“偷袭”路线。不是团队事先给它们写的剧本，是联盟逼出来的生态位。

## 手速、微光，和“像人一样玩”

这里有一个绕不开的争议：机器的操作精度。

先给数字。人类顶尖选手每分钟大概 300 到 800 次操作，其中相当一部分是没意义的连点，是为了保持手感。而社区里那些脚本 bot，每分钟两万到四万次。两者之间差了两个数量级。

AlphaStar 因为第一步是模仿，操作频率的分布天然就像人类，连那些没意义的连点都学来了。博客里放出来的曲线，APM 分布和人类高度重合。但自对弈一旦启动，这个分布就可能漂移，精度也可能上升。

所以他们按人类职业选手的分布设了一个上限，超过就丢弃动作。Oriol 自己承认，这个阈值大概设高了。有些 agent 的 APM 加精度确实超过了人类范畴，社区也因此吵了一阵。

另一个更难模拟的东西叫 shimmer。星际里有些单位是隐形的，你需要专门的侦测单位才能攻击它，否则它可以直接拆你的建筑、杀你的工人。但隐形单位移动时，屏幕上会有一层很淡的扰动，职业选手训练之后能立刻看出来。机器这边很难模拟“你有没有在看那块屏幕”。对 AlphaStar 来说，那个 bit 从 0 变成 1，它就知道那里有个单位，清楚得不像话。

这两件事指向同一个问题：**什么叫“像人一样玩”**。是限制手速？是模拟注意力？是模拟疲劳？每加一条规则，agent 更像人，但也更远离“纯粹的学习”。这是一条没有标准答案的线，Oriol 说他们只是在做第一次尝试，后面还要继续迭代。

## 三个种族是一局石头剪刀布

Lex 说自己几乎没跟真人聊过星际，让 Oriol 讲讲三个种族。

Protoss 是科技种族。单位贵、强、数量少，打起来要尽量保住兵，靠技能和战术优势取胜。很多人觉得它最好上手，这次演示也只用了 Protoss 对 Protoss。

Zerg 相反。核心是扩张，占尽可能多的资源点，单位便宜、可再生，整支部队死光了也不算大事，因为资源库存大，能快速重建。打法上偏向持续施压，用交换换空间。

Terran 是中间那一路，人族的机械化路线。

比种族更有意思的是开局博弈。Oriol 把它讲成一局连续的石头剪刀布：你选了科技路线，对面如果猜中，就会选克制你的路线；你要在他改主意之前把优势兑现，他要在这之前完成转型。整个游戏就是一场对彼此意图分布的估计。什么时候去侦察，是一个纯粹的信息决策：侦察能提高信念状态的准确度，但也会暴露自己的信息。

在这之上还有两种特殊打法。一种是 cheese，全押式的偷袭，比如在对面基地边上偷偷修炮台，或者藏科技建筑速出隐形单位，对手如果不能及时反应就直接输。另一种叫 all in，在某个精确时间点凑出一波完美配比加刚完成的升级，四分钟半一波推过去，赢了就赢，输了就打出 GG。

这些招式的存在，恰恰是 AlphaStar League 存在的理由。纯自对弈不会自然长出所有生态位，你需要有人专门去当那个讨厌的对手。

## 赢了之后，离“解决”还差得远

5:0 这个比分容易被误读。Oriol 反复强调，他们的主张只是“第一次击败职业选手”，不是“星际争霸被解决了”。

几个明显的窟窿：

- 只练了 Protoss 对 Protoss。想打 Terran，权重要全部扔掉重训。人类学会一个种族之后再学另一个，速度快得多。
- 对手不知道怎么打它。Mana 面对的是一个从未见过的对手，赛前预期是错位的。等人类选手研究出针对方案，结果可能会变。
- 有些局里 AlphaStar 明显没侦察，或者对隐形单位的处理有漏洞。这些都能被利用。
- 它没有显式的对手建模。信念状态是隐式的，网络里没有一项损失是专门用来预测“对面在干什么”。

最后这一条，是 Oriol 自己最想补的。他说想看到 agent 真的去猜对手在想什么，去设局骗对手，去主动制造错误认知。扑克和博弈论里那一套，星际和它天生一对。

## 泛化：深度学习唯一没解决的问题

访谈后半段从游戏转向了更大的话题。Lex 问，现在深度学习的边界在哪？

Oriol 只给了一个词：泛化。

他的表述很朴素。我们做的事情，本质是在拟合函数。数据分布一变，或者哪怕没变、只是加了点噪声，模型就崩。对抗样本是最清楚的证据：人眼完全看不出差别的扰动，能让网络输出任意结果。

他顺手翻了一段历史。当年 SVM 之所以流行，一部分原因就是它有泛化保证。而现在这一代模型，在数学上就是一堆矩阵相乘，数值上必然存在能被找到的角落。

有没有解法？他说目前真正持续有效的公式只有一个：**把数据和模型同时放大**。翻译、语言、星际，都是这一条在起作用。很多之前被认为“不可能泛化”的任务，规模上去之后就泛化了。

但他不认为这是根本解。他更看好的是把神经网络和程序、离散决策结合起来。他举了一个特别清楚的例子：

> “你可以用神经网络学排序。给足够多的例子，它看起来会排序。但你给我一个特别大的数，它就崩了。而如果你直接写一段排序代码，你可以证明它对所有可能的输入都成立。”（Oriol Vinyals）

这就是“强泛化”和“拟合”的区别。前者有证明，后者只有统计意义上的信心。

## 他为什么不用图灵测试定义目标

Lex 提到图灵测试，问他怎么看。

Oriol 先说喜欢，因为他本来就做语言。早期的机器翻译工作，他们也试过往对话系统上套，当然那种系统绝不可能通过图灵测试。

但他随后给了一个很实用的判断框架，引用的是物理学家 Hamming 的一篇文章：一个宏大挑战，光“宏大”不够，得有人能看见攻击路径。瞬移和时间旅行都是物理学的宏大挑战，但没有路径，所以没人拿它当博士课题。

> “我觉得完整的图灵测试还是太早了。我不认为自己会去做，也不太会建议别人拿它当博士题目，因为它太早、也太难。”（Oriol Vinyals）

他的理由不是“做不到”，是“不知道计划长什么样”。星际争霸他能看见路径：模仿学习、自对弈、联盟。图灵测试他看不见。GPT-2 很惊艳，但要从“生成像样的文本”走到“让人分辨不出对面是不是人”，中间缺的不是规模，是一个还没出现的想法。

> “我不担心会不会有突破，我担心的是统计方法根本不够用。我们需要一个突破，这对社区是好事，但不确定性大得多。”（Oriol Vinyals）

这个判断方式很值得学。他不用“难不难”来评估一个题目，用“能不能画出路线图”来评估。

## 从星际争霸到维基百科

那什么才算通用智能？

Oriol 说他觉得 AGI 这个词被用得太模糊，所以他自己给了一个可操作的版本：

> “如果有一个方法，能在面对新问题时直接吸收、直接解决，而不需要把整个过程重来一遍，那对我来说就是 AGI 的一个不错的定义。”（Oriol Vinyals）

他区分得很清楚：**泛化的是算法，不是权重**。AlphaStar 用的那套方法可以搬到任何即时战略游戏，甚至可以搬到别的领域，但训练出来的那组权重，连换个种族都救不回来。

所以他想看到的是一个网络，见过新任务之后，用人类差不多的速度学会它。你给一个人看一个新物体，他立刻能认；你让一个人玩一个新 Atari 游戏，他几局就上手。这就是他想要的基准。

他还提到 Leon Bottou 在 ICML 上的一次演讲：训练集和测试集这种划分本身就该被打破。为什么一个在 ImageNet 上训练好的网络，换到 MNIST 这种更简单的问题上就不能用？这在直觉上就是错的。

然后他讲到知识图谱。他很喜欢维基百科，觉得可惜的是，神经网络没有好好利用网上那些结构化的知识。如果能把维基百科自动抽成一张图，那张图的结构刚好适合和程序、和离散推理结合。他甚至想过把星际争霸的建筑依赖关系做成一张图喂给网络，试过一些，效果不算显著，但方向他喜欢。

## 关于 AI 安全，他的态度

Lex 问他担不担心存在性风险。

他的回答分两层。近期他不担心，但他承认自己可能错。长期他希望收益大于风险，但必须保持警觉，得留出足够的提前量，万一要转向还来得及。

有意思的是他自己补充的一句：他最近读 AI 安全的东西越来越多，这个领域他还没贡献过，也许可以做点什么。一个做出 AlphaStar 的人说这句话，分量不太一样。

他还提了一句更朴素的话：AI 已经能帮到很多人了，那些请不起助理的人、那些连天气都查不到的人。研究社区盯着 AGI 的时候，不该把这条线弄丢。

## 他的研究方法是长出来的

Lex 问他怎么产生想法，还提到 Ian Goodfellow 说 GAN 是喝了几杯啤酒之后想出来的。

Oriol 笑了，说他们的故事差不多。决定再打一局星际，也是在酒吧里定下来的。

更认真地说，他的方法变过。早期在 Brain，身边是 Hinton、Jeff Dean、Ilya Sutskever，那几年就是不停讨论、不停读论文。现在他更讲策略，会先判断这个领域是不是到了可以攻的时候，不早不晚。

他总结出一个自己最常用的公式：**先找一个难问题，再看研究怎么塞进去，塞不进去的地方就是需要创新的地方**。

这条公式能对上他所有的工作。机器翻译催生了序列到序列。组合优化催生了指针网络。星际争霸催生了大尺度模仿学习和 AlphaStar League。

另一种做法也成立：先选定一个研究方向，比如基于模型的强化学习，再去找能测试它的最小环境。两条路他都走过。

最后他说了一句听起来不像技术建议的话：同事比你自己重要。他见过太多例子，别人提的想法他觉得不靠谱，但给了空间去做，结果被证明错了。他自己被证明错了很多次。

## 给想做事的人

把这场对话收拢一下，能带走的东西大概是这样：

- 选题目的时候先画路线图，再谈热情。画不出来就先别做，不是因为它不重要，是因为你不知道第一步踩哪。Oriol 敢接星际，是因为他看见了模仿学习和人类录像这两块踏脚石。
- 拆问题，但要知道哪一块是命门。星际可以切成开局、运营、交战，真正卡住所有人的是探索，其他都是枝叶。找准那个卡点，比均匀用力有用得多。
- 别迷信规模，但也别瞧不起它。规模是当下唯一稳定生效的公式，只是它解决的是拟合，不是泛化。真正想要强泛化，得往程序、离散结构那边看。
- 模仿是起点，不是终点。人类的录像能把策略带到人类附近，但“下一步该点什么”和“怎么赢”之间隔着胜负信号。任何从人类数据起步的项目，都要提前想好第二步怎么接。
- 给自己造一个联盟。单一的自对弈会卡在局部最优，你需要不同风格的对手逼你进化。现实里的版本是：主动去找那些跟你打法不一样的人，别只跟同类混。
- 允许自己悲观。Oriol 赛前填的是 0:5，项目启动时认为完整版做不到。这不影响他把事情做成，反而让他把每一步的可行性看得更清楚。乐观负责启动，悲观负责校准。
