# 大衛·西爾弗：AlphaGo、AlphaZero 與深度強化學習

> DeepMind 研究者回顧 AlphaGo 與 AlphaZero 的誕生，講解自我對弈與強化學習背後的關鍵思想。

- 原標題：#86 – David Silver: AlphaGo, AlphaZero, and Deep Reinforcement Learning
- 期數：第 86 期
- 釋出日期：2020-04-03
- 嘉賓 / 主題：大衛·西爾弗
- 網頁版：https://lex.qiaomu.ai/tw/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 構想出現在蜜月裡，不在工位上。
