蒙特卡羅樹搜索+深度學習
原版論文是《Mastering the game of Go with deep neural networks and tree search》,有時間的還是建議讀一讀,沒時間的可以看看我這篇筆記湊活一下。網上有一些分析AlphaGo的文章,但最經典的肯定還是原文,還是踏踏實實搞懂AlphaGo的基本原理我們再來吹牛逼吧。
需要的一些背景對圍棋不了解的,其實也不怎麼影響,因為只有feature engineering用了點圍棋的知識。這裡有一篇《九張圖告訴你圍棋到底怎麼下》可以簡單看看。
對深度學習不怎麼了解的,可以簡單當作一個黑盒演算法。但機器學習的基礎知識還是必備的。沒機器學習基礎的估計看不太懂。
「深度學習是機器學習的一種,它是一台精密的流水線,整頭豬從這邊趕進去,香腸從那邊出來就可以了。」
蒙特卡羅方法
蒙特卡羅演算法:採樣越多,越近似最優解;拉斯維加斯演算法:採樣越多,越有機會找到最優解;舉個例子,假如筐里有100個蘋果,讓我每次閉眼拿1個,挑出最大的。於是我隨機拿1個,再隨機拿1個跟它比,留下大的,再隨機拿1個……我每拿一次,留下的蘋果都至少不比上次的小。拿的次數越多,挑出的蘋果就越大,但我除非拿100次,否則無法肯定挑出了最大的。這個挑蘋果的演算法,就屬於蒙特卡羅演算法——盡量找好的,但不保證是最好的。作者:蘇椰鏈接:https://www.zhihu.com/question/20254139/answer/33572009
蒙特卡羅樹搜索(MCTS)
網上的文章要不拿蒙特卡羅方法忽悠過去;要不籠統提一下,不提細節;要不就以為只是樹形的隨機搜索,沒啥好談。但MCTS對於理解AlphaGo還是挺關鍵的。 MCTS這裡的採樣,是指一次從根節點到遊戲結束的路徑訪問。只要採樣次數夠多,我們可以近似知道走那條路徑比較好。貌似就是普通的蒙特卡羅方法?但對於樹型結構,解空間太大,不可能完全隨機去採樣,有額外一些細節問題要解決:分支節點怎麼選(寬度優化)?不選比較有效的分支會浪費大量的無謂搜索。評估節點是否一定要走到底得到遊戲最終結果(深度優化)?怎麼走?隨機走? 基本的MCTS有4個步驟Selection,Expansion,Simulation,Backpropagation(論文里是backup,還以為是備份的意思),論文里state,action,r(reward),Q 函數都是MCTS的術語。
圖片展示了如何更新節點的勝率,選擇勝率大的分支進行搜索(7/10->5/6->3/3),到了3/3葉子節點進行展開選擇一個action,然後進行模擬,評估這個action的結果。然後把結果向上回溯到根節點。來自維基百科
具體的細節,可以參考UCT(Upper Confidence Bound for Trees) algorithm – the most popular algorithm in the MCTS family。從維基百科最下方那篇論文截的圖。原文有點長,這裡點到為止,足夠理解AlphaGO即可。N是搜索次數,控制exploitation vs. exploration。免得一直搜那個最好的分支,錯過邊上其他次優分支上的好機會。
AlphaGo
四大組件。最後只直接用了其中3個,間接用其中1個。Policy Network (
Supervised learning(SL)學的objective是高手在當前棋面(state)選擇的下法(action)。
linear softmax + small pattern features 。對比前面Policy Network,
Reinforcement Learning of Policy Networks (
要點
跟Pachi對決,勝率從原來當初SL Policy Networks的11%上升到85%,提升還是非常大的。
Reinforcement Learning of Value Networks (判斷一個棋面,黑或白贏的概率各是多少。所以參數只有s。當然,你枚舉一下a也能得到p(a|s)。不同就是能知道雙方勝率的相對值
MSE | training set | test set |
---|---|---|
before | 0.19 | 0.37 |
after | 0.226 | 0.234 |
AlphaGo與其他程序的對比。AlphaGo上面提到的幾個組件之間對比。這幾個組件單獨都可以用來當AI,用MCTS組裝起來威力更強。(kyu:級,dan:段)
MCTS 組裝起來前面的組件
結構跟標準的MCTS類似。
每次MCTS simulation選擇
最開始還沒expand Q是0,那SL的
搜索次數N一多會扣分, 鼓勵exploration其他分支。
summary整體看完,感覺AlphaGo實力還是挺強的。在機器學習系統設計和應用方面有很大的參考意義。各個組件取長補短也挺有意思。 了解了AlphaGo之後,再去看別人的分析就比較有感覺了,比如fb同樣弄圍棋的 @田淵棟 的 AlphaGo的分析 - 遠東軼事 - 知乎專欄
推薦閱讀:
※資源|5本深度學習和10本機器學習書籍(免費下載)
※乾貨 | 深度學習時代的目標檢測演算法
※深度學習發展簡要筆記
※純乾貨:一篇文章講清楚人工智慧、機器學習和深度學習的區別
※除了深度學習,你還應該關注這6大AI領域