轉載請聲明 http://blog.csdn.net/u013390476/article/details/50925347
前言:
圍棋的英文是 the game of Go,標題翻譯爲:《用深度神經網絡和樹搜索征服圍棋》。譯者簡介:大三,211,計算機科學與技術專業,平均分92分,專業第一。爲了更好地翻譯此文,譯者查看了很多資料。譯者翻譯此論文已盡全力,不足之處希望讀者指出。
在AlphaGo的影響之下,全社會對人工智能的關注進一步提升。3月12日,AlphaGo 第三次擊敗李世石。在3月15日總比分定格爲4:1,隨後AlphaGo的圍棋排名世界來到第二。
編者按:2014年5月,人們認爲至少需要十年電腦才能擊敗職業選手。筆者在翻譯的時候忠實於原文,很少加入自己的理解(本人不敢說有啥深入理解可言)。最終翻譯結果可能不好。但是對於本人而言,翻譯這篇文論的過程大於結果:一篇一萬字的中文翻譯,背後是十萬中英文資料的閱讀。
譯文
標題:用深度神經網絡和樹搜索征服圍棋
作者:David Silver 1 , Aja Huang 1 , Chris J. Maddison 1 , Arthur Guez 1 , Laurent Sifre 1 , George van den Driessche 1 , Julian Schrittwieser 1 , Ioannis Antonoglou 1 , Veda Panneershelvam 1 , Marc Lanctot 1 , Sander Dieleman 1 , Dominik Grewe 1 , John Nham 2 , Nal Kalchbrenner 1 , Ilya Sutskever 2 , Timothy Lillicrap 1 , Madeleine Leach 1 , Koray Kavukcuoglu 1 , Thore Graepel 1 , Demis Hassabis 1
他們來自 Google DeepMind 英國團隊(用1表示), Google 總部(用2表示)
David Silver , Aja Huang是並列第一作者
摘要:人們長久以來認爲:圍棋對於人工智能來說是最具有挑戰性的經典博弈遊戲,因爲它的巨大的搜索空間,評估棋局和評估落子地點的難度。我們給電腦圍棋程序引入一種新的方法,這個方法使用估值網絡來評估棋局,以及使用策略網絡來選擇如何落子。這些深度神經網絡被一種新的組合來訓練:使用了人類專業比賽數據的監督學習,以及自我對弈的強化學習。沒有使用任何預測搜索的方法,神經網絡下圍棋達到了最先進的蒙特卡洛樹搜索程序的水準,這程序模擬了數以千計的自我對弈的隨機博弈。我們同時也引入了一種新的搜索算法,這算法把蒙特卡洛模擬和估值、策略網絡結合在一起。運用了這個搜索算法,我們的程序AlphaGo在和其它圍棋程序的對弈中達到了99.8%的勝率,並且以5:0的比分擊敗了歐洲冠軍,這是史上第一次計算機程序在全尺寸圍棋中擊敗一個人類職業棋手。在此之前,人們認爲需要至少十年纔會達成這個壯舉。
引言
所有完全信息博弈都有一個最優估值函數
蒙特卡洛樹搜索使用蒙特卡洛走子方法,評估搜索樹中每一個狀態的估值。隨着執行越來越多的模擬,這個搜索樹成長越來越大,而且相關估值愈發精確。用來選擇下棋動作的策略在搜索的過程中也會隨着時間的推移而改進,通過選擇擁有更高估值的子樹。漸近的,這個策略收斂到一個最優下法,然後評估收斂到最優估值函數。目前最強的圍棋程序是基於蒙特卡洛樹搜索的,並且受到了策略的增強,這個策略被人訓練用來預測專家棋手的下法。這些策略用來縮窄搜索空間到一束高可能性下棋動作,和用來在走子中採集下法動作。這個方法已經達到了業餘高手的級別。然而,先前的工作已經受到了膚淺策略的限制或基於輸入的線性組合的估值函數的限制。
最近,深度卷積神經網絡已經在計算機視覺中達到了空前的性能:比如圖像分類,人臉識別,和玩雅達利的遊戲。它們使用很多層的神經網絡,層與層之間像瓦片重疊排列在一起,用來構建圖片的愈發抽象的局部代表。我們爲圍棋程序部署了類似的體系架構。我們給程序傳入了一個19*19大小棋局的圖片,然後使用卷積神經網絡來構建一個位置的代表。我們使用這些神經網絡來降低搜索樹的有效的深度和廣度:通過估值網絡來評估棋局,和使用策略網絡來博弈取樣。
我們使用一個包含多個不同階段的機器學習方法的管道來訓練神經網絡。我們開始使用一個監督學習(SL)策略網絡
1 策略網絡的監督學習
在訓練管道的第一階段,我們在先前工作的基礎上,使用了監督學習來預測人類專家下圍棋。監督學習(SL)策略網絡
我們用KGS圍棋服務器的3千萬個棋局,訓練了13層的策略網絡(我們稱之爲SL 策略網絡)。在輸入留存測試數據的所受特徵的時候,這個網絡預測人類專家下棋的精準的達到了57%,而且在僅僅使用原始棋局和下棋記錄的時候,精度達到了55.7%。與之相比,截至到本篇文論提交(2015年),其他研究團隊的最先進的精度是44.4%(全部結果在擴展數據表3)。在精確度方面的小提升會引起下棋能力的很大提升(圖片2,a);更大的神經網絡擁有更高的精確度,但是在搜索過程中評估速度更慢。我們也訓練了一個更快的但是精確度更低的走子策略
圖1:神經網絡訓練管道和體系結構。a:在一個棋局數據集合中,訓練一個快速走子策略
圖2:策略網絡和估值網絡的能力和精確度。a圖顯示了策略網絡的下棋能力隨着它們的訓練精確度的函數。擁有128,192,256,384卷積過濾每層的策略網絡在訓練過程中得到週期性的評估;這個圖顯示了AlphaGo使用不同策略網絡的贏棋概率隨着的不同精確度版本的AlphaGo的變化。b:估值網絡和不同策略網絡的評估對比。棋局和結局是從人類專家博弈對局中採樣的。每一個棋局都是由一個單獨的向前傳遞的估值網絡
2 策略網絡的強化學習
訓練管道第二階段的目標是通過策略梯度強化學習(RL)來提高策略網絡。強化學習策略網絡
我們在博弈過程中評估 RL策略網絡的性能表現,從輸出的下棋動作的概率分佈,對每一下棋動作
3 估值網絡的強化學習
訓練管道的最後一個階段關注於棋局評估,評估一個估值函數
理想情況下,我們期望知道在完美下法
這個天真的從擁有完整對弈的數據來預測博弈結局的方法導致過度擬合。問題在於,連續的棋局之間的聯繫十分強大,和僅單獨下一步棋有差距,但是迴歸目標和整個博弈又是相通的。當通過這種方式在KGS數據集合上訓練是,估值網絡記住了博弈的結局而不是推廣出新的棋局,在測試數據上面MSE最小達到了0.37,與之相比在訓練數據集合上面MSE是0.19。爲了解決這個問題,我們想出了新的自我對弈的數據集合,包含了三千萬個不同的棋局,每一個都是從不同盤博弈中採樣。每一盤博弈都是在 RL策略網絡和自己之間對弈,直到博弈本身結束。在這個數據集合上訓練導致了MSE爲0.226,和訓練和測試數據集合的MSE爲0.234,這預示着很小的過度擬合。圖2,b展示了估值網絡對棋局評估的精確度:對比使用了快速走子策略網絡
4 運用策略網絡和估值網絡搜索
AlphaGo在把策略網絡、估值網絡和MCTS算法結合,MCTS通過預測搜索選擇下棋動作。每一個搜索樹的邊(s,a)存儲着一個動作估值 Q(s, a),訪問計數 N(s, a),和先驗概率 P(s, a)。這棵樹從根節點開始,通過模擬來遍歷(比如在完整的博弈中沿着樹無沒有備份地向下搜索)。在每一次模擬的時間步驟 t,在狀態 s的時候選擇一個下棋動作
用來最大化動作估值加上一個額外獎勵
在模擬的結尾 n,更新所有被遍歷過的邊的下棋動作估值和訪問次數。每一條邊累加訪問次數,和求出所有經過該邊的模擬估值的平均值。
其中
在AlphaGo中,SL策略網絡
評估策略網絡和估值網絡和傳統的啓發式搜索相比,需要多幾個數量級的計算量。爲了高效的把 MCTS 和深度神經網絡結合在一起,AlphaGo 在很多CPU上使用異步多線程搜索技術進行了模擬,在很多GPU上計算策略網絡和估值網絡。最終版本的 AlphaGo使用了40個搜索線程,48個CPU,和8個GPU。我們也實現了一個分佈式的AlphaGo版本,它利用了多臺電腦,40個搜索線程,1202個CPU,176個GPU。在方法部分提供了關於異步和分佈MCTS的全部的細節。
圖3:AlphaGo中的蒙特卡洛樹搜索。a 每一次模擬遍歷搜索樹,通過選擇擁有最大下棋動作估值 Q的邊,加上一個額外獎勵 u(P)(依賴於存儲的該邊的先驗概率 P) 。b葉節點可能被展開,新的結點被策略網絡
5 評估AlphaGo的下棋能力
爲了評估 AlphaGo 的水平,我們舉辦了內部比賽,成員包括不同版本的 AlphaGo 和幾個其它的圍棋程序,包括最強的商業程序 CrazyStone和Zen,和最強的開源程序Pachi和Fuego。所有這些程序都是基於高性能蒙特卡洛樹搜索算法的。此外,我們的內部比賽還包括了開源程序GnuGo,它使用了最先進搜索方法的蒙特卡洛樹搜索。所有程序每次執行下一步棋允許5秒鐘。
比賽的結果如圖4,a,它預示着單擊版本的AlphaGo比先前任何一個圍棋程序強上很多段,在495場比賽中,AlphaGo贏了其中的494場比賽。我們也在讓對手4目棋的情況下進行了比賽:AlphaGo和CrazyStone,Zen,Pachi的勝率分別是77%,86%,99%。分佈式版本的AlphaGo強大很多:和單機版本的AlphaGo對弈的勝率是77%,和其他的圍棋程序對弈的勝率是100%。
我們也評估了不同版本的AlphaGo,不同版本僅僅使用估值網絡(
最終,我們把分佈式版本的AlphaGo和樊麾進行了評估,他作爲一個職業2段棋手,是2013,2014,2015年的歐洲圍棋冠軍。在2015年10月5-9日,AlphaGo和樊麾在真實比賽中下了5盤棋。AlphaGo以5:0的比分贏了比賽(圖6和擴展數據表1)。這是史上第一次,在人類不讓子和完整棋盤的情況下,一個圍棋程序在贏了一個人類職業棋手。這個壯舉之前認爲需要至少十年才能達到。
圖4:AlphaGo的比賽評估。a 和不同圍棋程序比賽的結果(見擴展數據表6-11)。每個程序使用接近5秒每走一步棋的速度。爲了給AlphaGo更高的挑戰難度,一些程序得到了所有對手讓4步子的優勢。程序的評估基於ELO體系:230分的差距,這相當於79%的勝率差距,這大致相當於在KGS中高一個業餘等級。一個和人類接近的相當也顯示了,水平的線顯示了程序在在線比賽中達到的KSG等級。和歐洲冠軍樊麾的比賽也包括在內。這些比賽使用更長的時間控制。圖中顯示了95%的置信區間。b 單機版本的AlphaGo在組成部分的不同組合下的性能表現。其中僅僅使用了策略網絡的版本沒有使用任何搜索算法。c 蒙特卡洛搜索樹算法關於搜索線程和GPU的可擴展性研究,其中使用了異步搜索(淺藍色)和分佈式搜索(深藍色),每下一步時間兩秒。
圖5:AlphaGo(執黑)是在一個和樊麾的非正式的比賽中選擇下棋走子的。接下來的每一個統計中,估值最大的落子地點用橘黃色標記。a根節點 s 的所有後繼結點 s’ 的估值,使用估值網絡
6 討論
在這個工作中,我們基於一個深度神經網絡和樹搜索的結合開發了一個圍棋程序,它的下棋水平達到了人類最強的水平,因此成功戰勝了一項人工智能領域的偉大挑戰。我們首次,對圍棋開發了一個有效的下棋走子選擇器和棋局評估函數,它是基於被一個創新型的監督學習和強化學習的組合訓練的深度神經網絡。我們引入了新的搜索算法,它成功的把神經網絡評估和蒙特卡洛走子結合在一起。我們的程序AlphaGo把這些組成部分按照比例集成在一起,成爲了一個高性能的樹搜索引擎。
在和樊麾的比賽中,AlphaGo對棋局評估的次數和深藍對卡斯帕羅夫下國際象棋的時候的次數相比,是其千分之一。作爲補償的,是更加智能的棋局選擇能力,使用了更加精確的評估棋局的能力,使用了估值網絡(一個也許是更加接近於人類下棋方式的方法)。此外,深藍使用的是人類手工調參數的估值函數,然而AlphaGo 的神經網絡是直接從比賽對弈數據中訓練出來的,純通過一個通用目的的監督學習和強化學習方法。
圍棋在很多方面是橫亙在人工智能面前的困難:一個有挑戰性的決策任務;一個難以對付的解空間;和一個非常複雜的最優解,以至於它看上去不可能世界使用策略或者估值函數逼近。之前的關於圍棋程序的重大突破,蒙特卡洛樹搜索,在其它領域導致了相應的進步:比如通用的博弈比賽,經典的規劃問題,局部觀察規劃問題,調度問題,和約束滿足問題。通過把樹搜索和策略網絡、估值網絡結合在一起,AlphaGo 最終達到了圍棋職業選手的水平,並且提供了希望:在其它看似難以解決的人工智能領域裏,計算機現在是可以達到人類水平的。
圖6: AlphaGo 和歐洲冠軍樊麾的博弈棋局。下棋走的每一步按照下棋順序由數字序列顯示出來。重複落子的地方在棋盤的下面成雙成對顯示出來。每一對數字中第一個數字的落子,重複下到了第二個數字顯示的交叉地方。
參考文獻
略
其他貢獻者
略
感謝
我們感謝樊麾答應和AlphaGo進行比賽;感謝T.M擔當比賽的裁判;感謝R.M和T.S給予有幫助的討論和建議;感謝A.C和M.C在可視化方面的工作;感謝P.D, G.W, D.K, D.P, H.vH, A.G和G.O修訂了這篇論文;感謝 DeepMing 團隊其它的成員的支持,想法,和鼓勵。
後記
理解 AlphaGo 有兩個關鍵部分:
- 深度神經網絡的訓練過程,文章把這個過程描述成爲一個管道。所謂管道,很像Linux系統中的管道命令,把前者的輸出作爲後者的輸入
- 蒙特卡洛樹搜索的過程,看這個搜索是如何把 SL策略網絡,估值網絡,快速走子策略結合在一起的。
先談談 1:
輸入人類的棋譜,經過監督學習,輸出SL策略網絡
輸入SL策略網絡,經過強化學習,輸出RL策略網絡
輸入RL策略網絡,經過強化學習,輸出估值網絡
再談談 2:
蒙特卡洛樹搜索是模擬下棋,並且評估的過程。蒙特卡洛就是“隨機”的意思,只不過逼格更高而已。如果你“隨機”下棋,肯定輸呀,怎麼辦?使用 SL策略網絡來預測人類是如何下棋的。AlphaGo每次要下棋的時候,先運行 SL策略網絡一遍,得到一個概率分佈,在此基礎上進行“隨機”:更有可能在概率更大的地方落子。
AlphaGo一邊模擬自己下棋,一邊模擬對手下棋,最後,下完了。所謂下完了,就是在樹搜索的時候達到了葉節點。下完了之後,對棋局進行評估。結合估值網絡和快速走子策略,得到一個估值函數,該函數的值越高,越好。
模擬很多很多遍。模擬結束之後,進行“統計”工作。統計每一條邊走過的次數,和估值函數的估值。最後,AlphaGo做出選擇:現在是棋局 s,如果在 a 地方,結合 a 在模擬過程中走過的次數,以及 a 下面的葉節點的估值函數,累加起來最高,那麼AlphaGo選擇在 a 地方落子。