怎樣三天訓練出AI圍棋大師?教你AlphaGo Zero的3個trick
原作 Seth Weidman
夏乙 問耕 編譯自HackerNoon
量子位 出品 | 公眾號 QbitAI
過去一年,AI領域最exciting的進展可能要數AlphaGo的不斷進步。AlphaGo Zero不僅提出了新的網路架構,也帶來了一些新的神經網路訓練技巧。
雖然DeepMind發表了論文,並在Reddit論壇上進行了一次公開答疑,後來還有人將AlphaGo Zero的演算法實現了出來,但如何訓練?其中有哪些trick?
發表在HackerNoon上的一篇最新博客文章做出了直觀的解讀:
先從AlphaGo各個版本一脈相承的兩種方法說起:一是前瞻的蒙特卡洛樹搜索,二是憑「直覺」來對落子位置進行評估,也就是DeepMind所說的策略網路和價值網路。這兩種方法結合起來,構成了每一版AlphaGo的核心。
從更高的層面討論,AlphaGo Zero的工作方式和AlphaGo差不多,它們都使用了基於MCTS的前向搜索,並輔以神經網路的指導。然而,AlphaGo Zero的神經網路,或者說它的「直覺」,跟AlphaGo的訓練方式完全不同。
以下是三個你需要知道的tricks。
Trick 1:如何訓練AlphaGo Zero
所謂神經網路學會下圍棋,就是能在當前的局面下,判斷出下一步的最佳落子位置。DeepMind發現,無論神經網路智能程度如何,從一無所知到圍棋大師,使用MTCS總是更好的評估判斷方案。
從根本上來說,MCTS是一種前向搜索,如果有足夠的時間,人類圍棋大師也能完成。這個過程無非是不斷腦補棋局未來的變化,評估哪些「套路」可能是最佳方案。
舉個例子。第一種落子方案,最終可能導致平局,評估得分就是0.0。接著看第二種方案,神經網路推算出這麼下可能會獲勝,評估得分為0.5。
這個過程一直持續進行的話,前向搜索總是能夠評估出更好的落子方案。
當然,這也要求神經網路能夠判斷如何下棋落子能帶來勝利。基於MCTS的改進評估與神經網路的當前狀態,智能體Agent不斷地展開自我對局。
DeepMind用來訓練AlphaGo Zero的數據,全部都是通過前向搜索和自我博弈產生的。
不使用人類下棋的數據,其實是一個trick。這樣的話,對於每個給定的局面,神經網路都能通過執行基於MCTS的前向搜索,再用其提高智能體的棋力。
在這種方法的幫助下,AlphaGo Zero從一無所知成長為圍棋大師。
Trick 2: 雙頭怪
AlphaGo Zero的神經網路,是一個「雙頭」架構。
這個網路的前20層左右,是常見的神經網路結構。然後跟著是兩個「頭」,一個頭取走了前20層的輸出,然後產生了下一步的落子概率,另一個頭基於同樣的數據,輸出當前局面的獲勝概率。
這是個不尋常的結構。幾乎所有的應用中,神經網路都只給出一個固定的輸出。如果有兩個不同的輸出結果,應該如何學習呢?
答案很簡單。請記住,神經網路的本質只是一些數學函數,包括一系列影響決策的參數。所謂訓練,就是反覆向神經網路展示正確答案,讓網路更新參數,使得輸出更接近正確答案。
所以,當我們使用一個頭進行預測時,只需要更新「身體」和「頭1」中的參數。而使用另一個頭時,更新「身體」和「頭2」中的參數。
這就是DeepMind訓練單一、雙頭神經網路的方法,並且用其來指導MCTS的搜索。有點像AlphaGo使用了兩個單獨的神經網路。這個trick在技術上被稱為硬參數共享的多任務學習(Multi-Task Learning with Hard Parameter Sharing)。
Trick 3: 殘差網路
AlphaGo Zero還用了比之前版本更前沿的神經網路架構:殘差網路。
殘差網路是2015年孫劍在微軟亞洲研究院帶領的團隊開發的,當時AlphaGo第一版的工作已經快要接近尾聲。
殘差網路和普通卷積神經網路的比較
這兩種神經網路相關的技巧——用殘差網路架構替代卷積架構、用「雙頭怪」神經網路替代各個單獨的神經網路,都能讓整個網路的性能增加一倍,兩者結合起來,性能又有提升。如下圖所示:
小結
上面三個tricks讓AlphaGo Zero展現出令人難以置信的能力。
值得注意的是,AlphaGo沒有使用任何經典或者前沿的強化學習概念,沒有Deep Q Learning,也沒有Asynchronous Actor-Critic Agents。
DeepMind只是使用了模擬的方法為神經網路產生數據,然後以監督的方式學習。
Denny Britz曾經總結說:具有諷刺意味的是,強化學習在過去幾年裡的主要發展,都讓強化學習看起來不像強化學習,反而更像監督學習。
手把手訓練AlphaGo Zero
1、初始化神經網路
2、讓神經網路開始自我對弈,每一步進行1600次MCTS模擬,大概耗時0.4秒
3、隨著對弈數量的增長,從最近的50萬場比賽中,採樣2048個落子決定,以及比賽對應的輸贏情況。
4、使用MCTS前向搜索產生的落子評估,以及輸贏結果,一起對神經網路進行訓練。
5、步驟3、4每進行1000次迭代,評估當前神經網路與此前最佳版本。如果新版本勝率達到55%,就開始用其生成新的遊戲,而不再用此前的版本。
重複3、4步70萬次,自我對局不要停,三天後,你也能訓練出一個AlphaGo Zero。
對AI未來的啟示
DeepMind的成就,對於人工智慧研究的未來有很多啟示,以下是關鍵幾點:
第一,通過模擬產生的自我對弈數據對於神經網路的訓練來說,已經足夠好了。這證明了模擬的自我對局數據能夠訓練AI智能體完成極其複雜的任務,超越人類表現,甚至能夠完全從0開始,根本不需要人類專家提供的數據。
第二,為了讓智能體在多個領域學習執行幾個相關任務,「雙頭」的trick能提供很大幫助。這似乎可以防止智能體的行為在任何單個任務上過擬合。DeepMind似乎非常喜歡這個trick,還用它的高級版本構建了可以在多個不同領域學習多個任務的智能體。
DeepMind的AI用多任務強化學習框架學習走迷宮
很多機器人項目,特別是用模擬環境訓練機器人使用四肢完成任務的領域裡,用這兩種技巧取得了不錯的效果。Pieter Abbeel在NIPS上的最新演講展示了很多令人印象深刻的新成果,這些成果用了很多前沿強化學習技術加上了這些trick。
實際上,機器人的運動對於「雙頭」來說是一個完美的使用場景,比如說,要教機器人打棒球,其實包含兩類動作,一是握住、揮動球棒,二是擊打一個運動中的物體。用「雙頭」,兩種動作的訓練就可以同時完成,因為這二者包含一些共同技能,比如平衡、轉體等等。
DeepMind將訓練AlphaGo Zero的技巧用到了機器人運動上
—完—
加入社群
量子位AI社群13群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot5入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微信號qbitbot5,並務必備註相應群的關鍵詞~通過審核後我們將邀請進群。(專業群審核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。


TAG:量子位 |