AlphaGo Zero 背後的強化學習演算法

AlphaGo Zero 背後的強化學習演算法

今天打開手機,被AlphaGo Zero的報道刷屏了。通過讀報道,被它的效果驚艷到了。趕緊找來論文拜讀!當粗略地讀了一遍論文後,內心仍然激動不已。不禁感慨,deepmind終於將強化學習演算法框架真正用起來了,而不再像以前那樣將強化學習演算法當成AlphaGo的「下腳料」了。在我看來,AlphaGo Zero才是第一款自主智能下棋機器人。為什麼這麼說呢?我們先看看強化學習演算法如何從「下腳料」變成「頂樑柱」的。

1. 「下腳料」時代的AlphaGo

按照論文中的說法,這個時代的AlphaGo包括AlphaGo Fan, AlphaGo Lee和AlphaGo Master, 即分別於2015年10月,2016年3月和2017年5月擊敗樊輝,李世石和柯潔的下棋機器人。這些AlphaGo所採用的強化學習演算法框架都是AC框架(對這個概念不熟的可參看我的知乎專欄zhuanlan.zhihu.com/p/29),即強化學習演算法包括一個策略網路和值函數網路。其中策略網路的輸出為落子的概率,即在當前棋盤下,落每個子的概率是多少。值函數網路輸出為位置的評估。

「下腳料」時代的AlphaGo最明顯的特徵是:策略網路的訓練需要人類專家數據作為監督得到一個初步的能夠預測人類專家的網路,然後再通過策略梯度強化學習方法來調優。

值函數網路的訓練是通過策略網路之間的對弈來完成。

之所以說強化學習演算法是「下腳料」,是因為當策略網路和值函數網路訓練完成後,這兩個網路只是被用到蒙特卡羅搜索樹中幫助搜索剪枝。即在蒙特卡羅進行前向模擬的時候,策略網路用來縮小擴展的範圍,而值函數網路則用來評估樹中位置。

2. 「頂樑柱」時代的AlphaGo

當強化學習演算法被當成「頂樑柱」時,AlphaGo就變成了AlphaGo Zero。三十年河東,三十年河西,在上個時代作為頂樑柱的蒙特卡羅搜索樹在這個時代就成了「下腳料」。不過,蒙特卡羅搜索樹並非真正的「下腳料」,而是每次迭代更新時,神經網路的「老師」。

AlphaGo Zero的整個訓練框架完全是強化學習的框架——廣義策略迭代(不了解的可參看我的知乎專欄zhuanlan.zhihu.com/p/25)。

所謂廣義策略迭代是指:策略評估和策略改善交替循環。

圖1 廣義策略迭代演算法

如圖1為傳統的廣義策略迭代演算法。傳統的廣義策略迭代演算法流程是:先對當前策略進行評估,由此找到值函數,有了值函數再根據值函數和貪婪策略進行策略改進(如傳統的qlearning方法和DQN等)

然而,AlphaGo Zero並沒有用這個老的套路,而是充分發揮了蒙特卡羅搜索樹的優勢。利用蒙特卡羅搜索樹可以同時完成策略改善和策略評估。下面我們看看AlphaGo Zero背後的強化學習演算法

1. 蒙特卡羅搜索樹可實現策略改善

如圖2所示為利用蒙特卡羅樹實現策略改善,具體的實現方式是:在每個狀態s處,原神網路的策略為 p_{theta}left(sright) ,經過蒙特卡羅搜索樹得到的策略為 pi(s) ,因此在狀態s處,策略改善為: p_{theta}left(sright)rightarrowpileft(sright)

2. 蒙特卡羅搜索樹實現策略評估

如圖2所示,在每個狀態s處,都會執行蒙特卡羅搜索樹給出的策略,直到最終棋局結束,根據棋局的輸贏會得到獎勵 z 值。從直觀上來說棋局的輸贏是由當前策略決定的,因此可以將獎勵值 z 當成是當前策略的評估

圖2 利用蒙特卡羅搜索樹實現策略改善和策略評估,原圖來自文獻[1]

3. AlphaGo Zero神經網路的訓練

每次試驗我們都可以收集到訓練數據 left(s,pi ,zright) ,根據訓練數據可構造如下損失函數:

loss =left(z-vright)^2-pi^Tlogtextrm{ }p+clVertthetarVert^2

在每次迭代結束後,利用監督學習更新神經網路權值。

圖3 神經網路的訓練, 圖來自文獻[1]

今天先更新到這,未完待續

參考文獻

[1] Mastering the Game of Go without Human Knowledge


推薦閱讀:

DeepZenGo和AlphaGo的差距主要體現在那些方面?
柯潔不是無敵的「大魔王」
AlphaGo在和李世石對戰時採用的是單機版本么?
李世石在與AlphaGo對弈的第四局下出的「78挖」這一手是否算得上「神之一手」?
棋道是什麼?從紀曉嵐筆下的圍棋故事說起

TAG:AlphaGo | 强化学习ReinforcementLearning | 深度学习DeepLearning |