背景:谷歌的阿爾法圍棋算法(AlphaGo)是第一個擊敗人類職業圍棋選手、第一個戰勝圍棋世界冠軍的人工智能機器人,由谷歌(Google)旗下DeepMind公司戴密斯·哈薩比斯領銜的團隊開發。其主要工作原理是“深度學習(deep learning)”。2017年,谷歌推出了Alpha Zero,通過強化學習(reinforcement learning)的方法,在不依賴人類經驗的基礎和擊敗了AlphaGo。
目的:解析AlphaZero的論文。
目錄
一、概覽
Nature上的論文結構與平時看的機器學習領域的會議論文的結構很不一樣,我參照相關技術論文的結構來解析這篇文章。
1.1 動機
- 人工智能的一大挑戰是機器是否可以在挑戰性的領域,從白板狀態學起,達到或者超過人類的狀態。近期的AlphaGo就是通過樹查找算法和深度學習網絡擊敗的人類。
- 專家數據集非常昂貴,不易得到。
- 監督學習會達到一個天花板,這個天花板就是已有的訓練集的能力的頂峯。
1.2 貢獻點
強化學習的實現
- AlphaGo:通過監督學習(supervised learning),學習人類棋譜。
- AlphaZero:通過強化學習(Reinforcement learning)的方法, 只從遊戲規則之中學習。完全不依靠人類知識。
僅用黑白子作爲輸入特徵
AlphaGo需要輸入一系列的特徵作爲特徵給深度網絡進行分類
而AlphaZero僅僅需要黑白子的位置作爲特徵進行輸入。
單一網絡
僅僅需要一個單一網絡來實現相應的步數,而不用像AlphaGo一樣用分開的policy Network和Value Network
二、方法
2.1 圍棋與AlphaZero的公式描述
- 首先我們定義一個神經網絡fθ
- 它的網絡參數(權重)爲θ
- 當前的棋盤狀態(加上過去的棋盤狀態)表示爲s
- 所以網絡根據棋盤狀態得到的輸出爲(p,v)=fθ(s)
- 其中p表示採用每一個圍棋動作a之後的概率Pa=Pr(a|s)
- 值v是一個估計值,用來估測當前狀態s下的勝率
-
AlphaZero採用的強化學習的訓練算法
所以alphaZero的神經網絡結合了alphaGo的policy Netwrok和value Network這兩個網絡爲一個網絡。
alphaZero的神經網絡可以視爲一個 ResNet,因爲其組成爲residual block組成的卷積層和batch normalization,和rectifier nonlinerarties
2.2 訓練方法
alphaZero通過自我博弈的方法,運用強化學習的算法實現相應的網絡
- 在棋盤狀態s之下,MCTS(Monte Carlo Tree Search蒙特卡洛樹搜索算法)會被執行,它的作用是輸出一個當前的希望的棋盤動作的概率π
- π是一個比原始的神經網絡的p=fθ(s)的輸出更強的一個監督信息。
這裏我們理一下思路,即運用強化學習的方法,運用MCTS算法得出了一個棋盤動作概率π,這個概率的可靠性比神經網絡通過其參數自己預測的強。
通過自學習加上搜索的方法,MCTS來選擇每一個動作,從而選出最後的遊戲勝家z,z可以看作一個非常好的強化學習的policy evaluation operator。
我們希望網絡的輸出(p,v)=fθ(s)儘量的接近MCTS算法鎖所得到的(π,z)
2.3 MCTS算法
MCTS(Monte Carlo Tree Search蒙特卡洛樹搜索算法)在alphaGo與alphaZero之中非常重要,後面會給出詳細的解析。
https://www.jianshu.com/p/d011baff6b64
https://blog.csdn.net/ljyt2/article/details/78332802
https://www.cnblogs.com/xmwd/p/python_game_based_on_MCTS_and_UCT_RAVE.html
蒙特卡洛樹查找算法
2.4 訓練過程
公式描述
首先,網絡會被初始化相應的參數θo,在每一次子迭代的過程中,迭代次數被認爲 i >1, 通過自我下棋的棋盤動作就產生了。
在每一個棋盤時刻 t 的時候,MCTS算法都會被執行,
MCTS運用的算法是 i-1 迭代時候的神經網絡。
從而獲得該時刻的棋盤動作可能性
MCTS得到的監督信息
這裏我們可以看出來,MCTS運用前一次迭代的神經網絡來搜索步數,得到這一次迭代的神經網絡的訓練信息。所以,MCTS通過搜索相應的算法達到了神經網絡棋力的提升,用提升後的信息作爲新的訓練信息給神經網絡,從而保證神經網的棋力一直提升,從而達到網絡的收斂。
當搜索的可執行步驟search value低於某個閾值的時候,或者棋局大於某一個長度的時候,該場對局會被給出一個最終的reward
此前每一個 t 時刻的步數都會被記錄下來:
注意這個變量是MCTS算法的出來的。
監督信息與loss function
網絡的權重 θi 會被從上面MCTS得到的數據
這個數據之中進行訓練,然後神經網絡的希望儘量的讓p接近π,v接近z
用上面那個信息來作爲監督信息更新網絡的權重
相應的loss值爲最小均方值誤差和交叉熵,如下面這樣:
三、實驗
3.1 訓練平臺與方法
谷歌的TPU
據Google稱,每個雲端TPU都由四個定製的ASIC構成,每個板卡可以提供高達180 teraflops(TFLOPS)的浮點性能和64 GB的高帶寬內存。作爲對比,目前市面上廣泛試用的英偉達Tesla P100 GPU性能則爲每秒21 teraflops(TFLOPS),即便是最新發布的V100也只是剛剛突破100 teraflops(TFLOPS)的大關。
訓練過程
Over the course of training, 4.9 million games of self-play were generated,using 1,600 simulations for each MCTS, which corresponds to approximately 0.4 s thinking time per move. Parameters were updated from 700,000 mini-batches of 2,048 positions. The neural network contained 20 residual blocks (see Methods for further details).
訓練過程之中,運行了4,900,000場自己跟自己下棋,MTCS算法運用了1600個simulations,基本相當於0.4秒想一步。參數運用700,000 個mini-batch來更新2048個棋盤位置。相應的網絡具有20個殘差單元。
3.2 與AlphaGO的對比
alphaZero僅用36小時就超過了alphaGo,並且佔用平臺很少,只需要4個TPU。然後以100:0戰勝了之前的alphaGo。
首先解釋下不同顏色的dual,sep,conv,res的作用。
- sep表示採用alphaGo的方法,兩個policy network與value netwrok分開並行
- dual表示用同一個網絡來預測相應的值
- res表示採用resnet的結構
- conv表示運用卷積神經網絡的結構
從左往右三個圖的表示:
a . Elo rating是一種棋力分析的算法,https://blog.csdn.net/houzhuoming1/article/details/50541415,
此算法用於預測相應軟件或者人的棋力。
b .表示用於預測人類專業選手的步數的準確率(採用圍棋的GoKifu數據集)
c. MSE最小均方值誤差,用於確定人類專業的遊戲輸出。
從這些實驗我們都可以看出採用zlphaZero採用的網絡結構是最好的,即一個獨立的resnet
3.3 AlphaZero圍棋棋力
虛線可以看作現在人類水平的最高水平,也是數據集的最高水平。
從此實驗可以看出監督學習的方法,只能收斂到人類的最高水平,而通過強化學習的方法可以突破數據集的極限。
這張圖顯示了預測人類棋手的準確度。我們看到監督學習的方法能很好的學習人類棋手的行爲,但是alphaZero的預測準確率就沒有那麼高。
第二張圖是預測人類棋手行爲的最小均方值誤差(MSE)此處得到了看似矛盾的結果
爲什麼預測精度與MSE反而相反?暫時猜測爲評測方法不同帶來的不同,後續我們需要詳細研究給出相應解釋。
這張圖顯示着隨着訓練時間的增加,alphaZero的棋力與其他棋力的對比。
四、結論與個人總結
- 強化學習具有非常強大的能力,即使在很具有挑戰性的圍棋領域,沒有人類的指引,alphaZero依然可以從白板學起很快達到很好的水平。
- 強化學習的方法需要的時間與運算消耗比監督學習更少並且達到了更好的效果。
- 人類從millions的博弈之中上千年積累起來的圍棋知識,在幾天之內被alphaZero超越。
- 最新的研究領域不難讀懂,google依託強大的算法和算力支持,就能取取得非常好的效果。