# 奧里奧爾·維尼亞爾斯：DeepMind AlphaStar、星際爭霸、語言與序列

> DeepMind 研究負責人談 AlphaStar 如何攻克星際爭霸，以及序列模型與語言建模的相通之處。

- 原標題：Oriol Vinyals: DeepMind AlphaStar, StarCraft, Language, and Sequences
- 期數：特別節目
- 釋出日期：2019-04-29
- 嘉賓 / 主題：奧里奧爾·維尼亞爾斯
- 網頁版：https://lex.qiaomu.ai/tw/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，專案啟動時認為完整版做不到。這不影響他把事情做成，反而讓他把每一步的可行性看得更清楚。樂觀負責啟動，悲觀負責校準。
