達觀資料:一文詳解AlphaGo原理
摘要
1、圍棋是一個MDPs問題
2、policy iteration如何求解MDPs問題?
3、WHAT and WHY is MonteCarlo method?
4、AlphaGo Zero的強化學習演算法
前言
AlphaGo是GoogleDeepMind團隊開發的一個基於深度神經網路的圍棋人工智慧程式,其一共經歷了以下幾次迭代[1]:
2015年10月 以5-0擊敗歐洲冠軍樊麾,其使用了兩個神經網路。
2016年3月 以4-1擊敗世界冠軍李世石,較於上一版本,其使用了更復雜的網路結構,在生成訓練資料時,使用了更加強大的模擬器。
2017年1月 AlphaGo Master在網路上與人類棋手的對陣中保持了60不敗的戰績,與之前版本不同的是,只使用了一個神經網路。
2017年10月 DeepMind公開了最新版本的AlphaGo Zero,此版本在與2016年3月版的AlphaGo的對陣中取得了100-0的戰績,並且,在訓練中未使用任何手工設計的特徵或者圍棋領域的專業知識,僅僅以歷史的棋面作為輸入,其訓練資料全部來自於self-play。
馬爾可夫決策過程
一個馬爾可夫決策過程(Markov Decision Processes,MDPs)通常包括以下幾個要素:
1)狀態集合 ,包含MDPs可能處在的各個狀態。
2)動作集合 ,包含MDPs在各個狀態上可採取的動作。
3)轉換概率 ,表示在狀態 上採取動作 後,下一個狀態的概率分佈。
4)回報函式 ,
表示狀態 的回報。
在定義了以上幾個要素之後,我們可以來描述一個典型的MDPs: 從某個起始狀態
開始,選擇採取動作 ,然後,以
的概率轉換到下一個狀態
,然後採取動作
,並以

的概率轉換到下一個狀態……
如果MDPs的狀態集合和動作集合是有限大的,則稱之為有限MDPs。
通常,我們還會定義另外一個引數——折扣因子(discountfactor) 。定義折扣因子之後,MDPs的總回報可以表示為:

MDPs的核心問題是如何找到一個對所有狀態都適用的最優策略,按照此策略來選擇動作,使總回報的期望最大化。 在總回報中加入折扣因子後,為使總回報的期望最大化,須儘可能的將正向回報提前,負向回報推遲。
回想一下圍棋的對弈,起始狀態是一個空的棋盤,棋手根據棋面(狀態)選擇落子點(動作)後,轉換到下一個狀態(轉換概率為:其中一個狀態的概率為1,其他狀態的概率為0),局勢的優劣是每個狀態的回報。棋手需要根據棋面選擇合適落子點,建立優勢並最終贏下游戲,因此,圍棋可以看作是一個MDPs問題。(達觀資料)
策略迭代
定義一個策略 的狀態值函式(state-valuefunction)為:

等式右半部即為總回報的期望值。展開等式的右半部分:

上面的等式稱作貝爾曼方程(Bellman equation),從貝爾曼方程可以看出,當前狀態的回報的期望包括兩部分:
1)當前狀態的立即回報;
2)後續狀態的回報的期望和與折扣因子之積。
定義最優狀態值函式(optimal state-value function)為:

根據貝爾曼方程有:

定義策略 為:

對於任意狀態
和任意策略 ,均有:

因此,策略 即為最優策略。
最優策略可通過策略迭代來求解。一次策略迭代包括兩個步驟:
1)策略估計(PolicyEvaluation): 基於當前的策略和狀態值函式根據貝爾曼方程更新狀態值函式;
2)策略提升(PolicyImprovement): 基於當前的策略和1)中更新後的狀態值函式來更新策略。
策略迭代求解MDPs問題的演算法如圖1所示[2]。

為證明演算法的收斂性,定義動作值函式(action-value function)為:

假設有兩個策略 和 ,對於任意狀態
均有

那麼,對於任意狀態 ,不等式

成立,即策略 優於策略 。
因此,在策略迭代中,每一次策略提升後,將得到一個更優的解。對於有限MDPs,策略的個數是有限的,在經過有限次的迭代之後,策略將收斂於最優解。(達觀資料)
蒙特卡洛方法
在策略迭代中,為了估計狀態值函式,需要計算並存儲所有狀態的值函式。在圍棋中,有超過2 x 10170的狀態[3],遠遠超出了計算或儲存的極限,因此,策略迭代的方法不再適用。
蒙特卡洛方法(Monte Carlo Method)通過模擬取樣來估計狀態值函式和動作值函式,將取樣結果的均值作為估計值, 根據大數定律,隨著取樣次數的增加,估計值將趨近於實際值。蒙特卡洛方法適用於“情節任務(episodic tasks)”,即不管使用哪種策略,最終都能到達終止狀態 ,圍棋是一種“情節任務”。蒙特卡洛方法對各個狀態的估計是相互獨立的,即在估計狀態值函式或動作值函式時不依賴於其他狀態的值函式,因此,不需要計算或儲存所有狀態的值函式。
為估計策略

的動作值函式 ,把初始狀態置為 ,然後開始模擬取樣,在 狀態上採取動作
,轉換到下一個狀態,在後續的狀態中,依據策略 來選擇動作,直到到達終止狀態,記錄下此時的回報。重複執行以上操作。對於路徑上的每一個狀態-動作對(state-actionpair),將所有包含此狀態-動作對的模擬的回報的均值作為動作值函式 的估計值。以上過程稱之為“深耕(exploitation)”,即在現有的知識下,將每一步都做到最好。
策略

是貪婪的,即在每個狀態上均以P=1的概率選擇當前最優的動作 ,因此,對於任意動作,狀態-動作對
都不會被選擇,其動作值函式也不會被估計。估計動作值函式的目的是幫助我們在狀態上選擇合適的動作,為了比較動作的收益,我們還需要估計這個狀態上 其他的動作的值函式。為了估計其他動作的值函式,一種常用的方法是
策略,其中 是一個接近於0的小數,對於每一個狀態 ,以
的概率選擇非貪婪動作

以

的概率選擇貪婪動作 。 以上過程稱之為 探索(exploration),即不滿足於眼前的最好,探索未知中可能存在的更好。
在蒙特卡洛方法中,“深耕”使得我們更多的在最有希望的方向上搜索,而“探索”使得我們能夠同時兼顧到其他方向。(達觀資料)
AlphaGo Zero
1. AlphaGo Zero的網路架構
圍棋的棋面可以看作是一個19 × 19的影象,每一個棋子對應一個畫素點,不同顏色的棋子對應不同的畫素值。考慮到深度神經網路,尤其是卷積神經網路在影象領域的成功應用,AlphaGo使用卷積神經網路來估計當前的局面,選擇落子的位置。(AlphaGo Zero所使用的卷積神經網路的輸入是19× 19 × 17的張量

其17個通道中, 表示t時刻棋盤上第i個位置是否有己方的棋子,
表示t時刻棋盤上第i個位置是否有對方的棋子,C是一個常數,用於標識當前輪次的顏色;網路包括兩個輸出,值函式 和策略

是網路的引數,輸出值函式的分支稱之為值網路(Value network),輸出策略的分支稱之為策略網路(Policy network)。在之前的版本中,值網路和策略網路是兩個同架構但分立的網路,在AlphaGo Zero中,這兩個網絡合併成一個網路[4]。

2. 策略迭代與蒙特卡洛樹搜尋
蒙特卡洛樹搜尋使用蒙特卡洛方法估計搜尋樹上的每個節點的統計量。AlphaGo將策略迭代與蒙特卡洛樹搜尋(Monte Carlo Tree Search,MCTS)結合了起來。對於每個狀態 ,根據策略網路輸出的策略

選擇動作,執行MCTS。
MCTS輸出策略

通常這個策略要比策略網路輸出的策略

更加健壯,因此,這個過程可以看作是策略迭代中的策略提升;根據MCTS輸出的策略 選擇動作,並轉換到下一個狀態 ,然後執行MCTS…,直到終止狀態(遊戲結束),將遊戲的勝者

作為模擬的結果,這個過程可以看作是策略迭代中的策略估計,如圖3(a)所示。

作為一個訓練樣本,用於訓練神經網路 ,更新網路引數 ,如圖3(b)所示。在後續的策略迭代中,使用更新後的神經網路來指導MCTS。

2.1 策略提升
在MCTS的過程中,搜尋樹上的每個節點 的每條邊
維護一個集合

其中 是此條邊被訪問的次數,
是總的動作值函式,
是平均動作值函式,
是在狀態採取動作 的先驗概率。
策略提升的一次搜尋過程包括以下幾個步驟:
1)對於從根節點 到葉節點
之間的每個節點

動作的選擇策略是

其中

c用於控制策略中“探索”的比重,當c=0時,該策略即為貪婪策略,如圖4(a)所示。

在MCTS的初期,該策略傾向於選擇先驗概率大、訪問次數少的動作,隨著搜尋的進行,將更多地選擇值函式大的動作。此外,為了鼓勵“探索”,對於根節點 還會在其策略上疊加一個狄利克雷(Dirichlet)噪聲,

其中

2)在搜尋到達葉節點 後,將
輸入到神經網路
中計算值函式和策略

對於此節點的每條邊 ,初始化其集合為:

其中 是
中 動作的先驗概率,如圖4(b)所示。
3)備份。
更新搜尋路徑上節點 的邊

的集合中的元素

如圖4(c)所示。 在多次搜尋之後,根據根節點 上的各條邊 的訪問次數
輸出策略

是溫度引數,用於控制“探索”的比重,如圖4(d)所示。
2.2 策略估計
在狀態 上,按照策略提升返回的策略
選擇落子位置

在遊戲的初期(前30手, ),為了鼓勵“探索”、提升棋局的多樣性,將溫度引數 的值設為1,即,選擇落子位置
的概率正比於節點
的這條邊在策略提升中被訪問的次數;在30手之後,溫度引數

此時,策略是貪婪的,以P=1的概率選擇訪問次數最多的邊。在 狀態上執行
動作後,進入到下一個狀態 ,將搜尋樹上
所對應的節點作為新的根節點,執行MCTS,返回提升後的策略

…,直到遊戲結束,將遊戲的勝者

作為狀態 的值函式的估計值。
這個過程即self-play。 為了提高搜尋的效率,在策略提升時,當搜尋到葉節點後,使用值網路估計狀態值函式作為收益返回,避免繼續向下搜尋,限制搜尋的深度;在策略估計時,使用策略提升輸出的策略來指導動作的選擇,限制搜尋的廣度。另外,如果值網路估計的局勢的收益(勝率)低於一個閾值之後,便放棄此局遊戲。
2.3 旋/翻轉不變性
將圍棋的棋盤旋轉或翻轉之後,不會影響局勢,落子的位置也只需要做相應的變換即可。即,如果狀態 被旋轉或翻轉,值網路的輸出 不變,策略網路的輸出

做相應的變換,假設d為變換函式,則有

在策略提升中,當搜尋到達葉節點後,從8種旋/翻轉變換中隨機地選取一種對葉節點的狀態進行變換,變換之後的狀態作為神經網路的輸入。
棋盤有7種不重複的旋/翻轉變換,分別是:
上(下)翻轉,右(左)翻轉,右上(左下)翻轉,右下(左上)翻轉,90度旋轉,180度旋轉,270度旋轉。
90度旋轉可以通過右下翻轉+上翻轉來實現,180度旋轉可以通過上翻轉+右翻轉來實現,270度旋轉可以通過右下翻轉+右翻轉來實現。
因此,只需要實現4個基礎的翻轉變換。在估計葉節點的值函式和各條邊的先驗概率時,從8種變換中隨機地取一個對葉節點進行處理,並對策略網路的輸出做相應的反變換。

3. 模型優化
在self-play的每一局遊戲中,會生成一系列的狀態-策略-值元組

這一系列狀態是強關聯的。為了避免過擬合這種關聯,每局遊戲只隨機地選擇一個元組來組成訓練集[5]。
模型優化的損失函式是

其中,第一項為值網路的輸出與self-play實際結果的均方誤差,第二項為策略網路的輸出與策略提升的輸出的交叉熵,第三項為L2正則項。在損失函式中,由於

(值網路的最後一層使用tanh啟用函式),因此,均方誤差對損失函式的貢獻被限定在範圍內。 給予均方誤差和交叉熵相同的權重,避免由於過擬合了狀態值函式而出現“模型能夠精準預測遊戲勝負卻輸出糟糕的策略”的現象。
模型引數更新使用帶動量和學習率衰減的隨機梯度下降方法,動量因子設為0.9,學習率在優化的過程中從0.01衰減到0.0001。每次從最近的500,000局遊戲中隨機地選取一個大小為2048的mini-batch,每1000次更新之後,對模型進行評估。
4. 模型評估
更新後的模型 與當前最優的模型
對戰400局,即,在策略提升中,分別使用
和
來估計葉節點的值函式和各條邊的先驗概率,在選擇落子位置時,溫度引數

在每一步均貪婪地選擇訪問次數最多的邊。如果新模型 的勝率大於55%,則新模型成為當前最優的模型,並使用此模型進行self-play生成訓練資料,以確保訓練資料的質量。
總結
人工智慧在很多領域已經顯示出了超越人類的水準,並且還在不斷的攻城略地。 達觀資料作為中國知名的文字智慧處理企業,利用先進的文字語義自動分析技術,為企業、政府等各大機構提供文字自動抽取、稽核、糾錯、搜尋、推薦、寫作等智慧軟體系統,讓計算機代替人工實現業務流程自動化,大幅度提高企業效率。
參考資料
[1]
ofollow,noindex">AlphaGo | DeepMind[2]Sutton, R.S. and Barto, A.G., 2011. Reinforcement learning: An introduction.
[3]
Go (game) - Wikipedia[4]Silver, David, et al."Mastering the game of Go without human knowledge." Nature 550.7676 (2017): 354
[5]Silver, David, et al."Mastering the game of Go with deep neural networks and treesearch." nature 529.7587 (2016): 484
關於作者
劉思鄉:
達觀資料資料探勘工程師,負責達觀資料推薦系統的開發和部署,對推薦系統在相關行業中的應用有濃厚興趣。