詳解AlphaGo到AlphaGo Zero!
作者 | 劉思鄉,達觀資料資料探勘工程師,負責達觀資料推薦系統的開發和部署,對推薦系統在相關行業中的應用有濃厚興趣。
編輯 | Jane
摘要
1、圍棋是一個 MDPs 問題
2、policy iteration 如何求解 MDPs 問題?
3、WHAT and WHY is Monte Carlo method?
4、AlphaGo Zero 的強化學習演算法
1.前言
AlphaGo 是 Google DeepMind 團隊開發的一個基於深度神經網路的圍棋人工智慧程式,一共經歷了以下幾次迭代:
(1)2015 年 10 月,以 5-0 擊敗歐洲冠軍樊麾,其使用了兩個神經網路;
(2)2016 年 3 月,以 4-1 擊敗世界冠軍李世石,較於上一版本,其使用了更復雜的網路結構,在生成訓練資料時,使用了更加強大的模擬器;
(3)2017 年 1 月,AlphaGo Master 在網路上與人類棋手的對陣中保持了 60 不敗的戰績,與之前版本不同的是,只使用了一個神經網路;
(4)2017 年 10 月,DeepMind 公開了最新版本的 AlphaGo Zero,此版本在與 2016 年 3 月版的 AlphaGo 的對陣中取得了 100-0 的戰績,並且,在訓練中未使用任何手工設計的特徵或者圍棋領域的專業知識,僅僅以歷史的棋面作為輸入,其訓練資料全部來自於 self-play。
2.馬爾可夫決策過程
一個馬爾可夫決策過程(Markov Decision Processes,MDPs)通常包括以下幾個要素:
(1)狀態集合 S,包含 MDPs 可能處在的各個狀態;
(2)動作集合 A,包含 MDPs 在各個狀態上可採取的動作;
(3)轉換概率 Psa,表示在狀態上採取動作後,下一個狀態的概率分佈;
(4)回報函式 R,R(s) 表示狀態的回報。
在定義了以上幾個要素之後,我們可以來描述一個典型的 MDPs:從某個起始狀態 開始,選擇採取動作 ,然後,以 的概率轉換到下一個狀態 ,然後採取動作 ,並以 的概率轉換到下一個狀態 ... ...
如果 MDPs 的狀態集合和動作集合是有限大的,則稱之為有限 MDPs。
通常,我們還會定義另外一個引數——折扣因子(discount factor)。定義折扣因子之後,MDPs的總回報可以表示為:
MDPs的核心問題是如何找到一個對所有狀態都適用的最優策略,按照此策略來選擇動作,使總回報的期望最大化。在總回報中加入折扣因子後,為使總回報的期望最大化,須儘可能的將正向回報提前,負向回報推遲。
回想一下圍棋的對弈,起始狀態是一個空的棋盤,棋手根據棋面(狀態)選擇落子點(動作)後,轉換到下一個狀態(轉換概率為:其中一個狀態的概率為 1,其他狀態的概率為 0),局勢的優劣是每個狀態的回報。棋手需要根據棋面選擇合適落子點,建立優勢並最終贏下游戲,因此,圍棋可以看作是一個 MDPs 問題。
3.策略迭代
定義一個策略?的狀態值函式(state-value function)為:
等式右半部即為總回報的期望值。展開等式的右半部分:
上面的等式稱作貝爾曼方程(Bellman equation),從貝爾曼方程可以看出,當前狀態的回報的期望包括兩部分:1)當前狀態的立即回報,2)後續狀態的回報的期望和與折扣因子之積。
定義最優狀態值函式(optimal state-value function)為:
根據貝爾曼方程有:
定義策略為:
對於任意狀態和任意策略,均有:
因此,策略即為最優策略。
最優策略可通過策略迭代來求解。一次策略迭代包括兩個步驟:1)策略估計(Policy Evaluation):基於當前的策略和狀態值函式根據貝爾曼方程更新狀態值函式;2)策略提升(Policy Improvement):基於當前的策略和1)中更新後的狀態值函式來更新策略。
策略迭代求解MDPs問題的演算法如圖1所示:
圖1 策略迭代演算法
為證明演算法的收斂性,定義動作值函式(action-value function)為:
假設有兩個策略和,對於任意狀態均有 ,那麼,對於任意狀態,不等式成立,即策略優於策略。
因此,在策略迭代中,每一次策略提升後,將得到一個更優的解。對於有限MDPs,策略的個數是有限的,在經過有限次的迭代之後,策略將收斂於最優解。
4.蒙特卡洛方法
在策略迭代中,為了估計狀態值函式,需要計算並儲存所有狀態的值函式。在圍棋中,有超過 的狀態,遠遠超出了計算或儲存的極限,因此,策略迭代的方法不再適用。
蒙特卡洛方法(Monte Carlo Method)通過模擬取樣來估計狀態值函式和動作值函式,將取樣結果的均值作為估計值,根據大數定律,隨著取樣次數的增加,估計值將趨近於實際值。蒙特卡洛方法適用於“情節任務(episodic tasks)”,即不管使用哪種策略,最終都能到達終止狀態,圍棋是一種 “情節任務”。蒙特卡洛方法對各個狀態的估計是相互獨立的,即在估計狀態值函式或動作值函式時不依賴於其他狀態的值函式,因此,不需要計算或儲存所有狀態的值函式。
為估計策略 ,把初始狀態置為 s,然後開始模擬取樣,在狀態 s 上採取動作 a,轉換到下一個狀態,在後續的狀態中,依據策略 ? 來選擇動作,直到到達終止狀態,記錄下此時的回報。重複執行以上操作。對於路徑上的每一個狀態-動作對(state-action pair),將所有包含此狀態-動作對的模擬的回報的均值作為動作值函式 的估計值。以上過程稱之為“深耕(exploitation)”,即在現有的知識下,將每一步都做到最好。
策略 是貪婪的,即在每個狀態 s 上均以 P=1 的概率選擇當前最優的動作 ,因此,對於任意動作 ,狀態-動作對 都不會被選擇,其動作值函式也不會被估計。估計動作值函式的目的是幫助我們在狀態 s 上選擇合適的動作,為了比較動作的收益,我們還需要估計這個狀態上其他的動作的值函式。為了估計其他動作的值函式,一種常用的方法是 策略,其中是一個接近於0的小數,對於每一個狀態 s,以 的概率選擇非貪婪動作,以 的概率選擇貪婪動作 。以上過程稱之為“探索(exploration)”,即不滿足於眼前的最好,探索未知中可能存在的更好。
在蒙特卡洛方法中,“深耕”使得我們更多的在最有希望的方向上搜尋,而“探索”使得我們能夠同時兼顧到其他方向。
5.AlphaGo Zero
5.1 AlphaGo Zero的網路架構
圍棋的棋面可以看作是一個 19 × 19 的影像,每一個棋子對應一個畫素點,不同顏色的棋子對應不同的畫素值。考慮到深度神經網路,尤其是卷積神經網路在影像領域的成功應用,AlphaGo 使用卷積神經網路來估計當前的局面,選擇落子的位置。
AlphaGo Zero 所使用的卷積神經網路的輸入是 19 × 19 × 17 的張量 ,其 17 個通道中, 表示 t 時刻棋盤上第 i 個位置是否有己方的棋子,表示 t 時刻棋盤上第i個位置是否有對方的棋子,C 是一個常數,用於標識當前輪次的顏色;網路包括兩個輸出,,輸出值函式的分支稱之為值網路(Value network),輸出策略的分支稱之為策略網路(Policy network)。在之前的版本中,值網路和策略網路是兩個同架構但分立的網路,在AlphaGo Zero中,這兩個網路合併成一個網路。
圖2 AlphaGo Zero網路架構
5.2 策略迭代與蒙特卡洛樹搜尋
蒙特卡洛樹搜尋使用蒙特卡洛方法估計搜尋樹上的每個節點的統計量。AlphaGo 將策略迭代與蒙特卡洛樹搜尋(Monte Carlo Tree Search,MCTS)結合了起來。對於每個狀態,根據策略網路輸出的策略選擇動作,執行 MCTS。MCTS 輸出策略,通常這個策略要比策略網路輸出的策略更加健壯,因此,這個過程可以看作是策略迭代中的策略提升;根據 MCTS 輸出的策略選擇動作,並轉換到下一個狀態,然後執行 MCTS…,直到終止狀態(遊戲結束),將遊戲的勝者 作為模擬的結果,這個過程可以看作是策略迭代中的策略估計,如圖3(a)所示。作為一個訓練樣本,用於訓練神經網路,更新網路引數,如圖3(b)所示。在後續的策略迭代中,使用更新後的神經網路來指導 MCTS。
圖3 AlphaGo的強化學習演算法
5.2.1 策略提升
在 MCTS 的過程中,搜尋樹上的每個節點 s 的每條邊維護一個集合,其中,是此條邊被訪問的次數,是總的動作值函式,是平均動作值函式,是在狀態採取動作的先驗概率。
策略提升的一次搜尋過程包括以下幾個步驟:
(1)對於從根節點到葉節點之間的每個節點,動作的選擇策略是,c 用於控制策略中“探索”的比重,當 c=0 時,該策略即為貪婪策略,如圖4(a)所示。在 MCTS 的初期,該策略傾向於選擇先驗概率大、訪問次數少的動作,隨著搜尋的進行,將更多地選擇值函式大的動作。此外,為了鼓勵“探索”,對於根節點還會在其策略上疊加一個狄利克雷(Dirichlet )噪聲,其中 。
(2)在搜尋到達葉節點後,將輸入到神經網路中計算值函式和策略。對於此節點的每條邊,初始化其集合為 的先驗概率,如圖4(b)所示。
(3)備份,更新搜尋路徑上節點的邊的集合中的元素,,如圖4(c)所示。
在多次搜尋之後,根據根節點上的各條邊 a 的訪問次數輸出策略是溫度引數,用於控制“探索”的比重,如圖4(d)所示。
5.2.2 策略估計
在狀態上,按照策略提升返回的策略選擇落子位置。在遊戲的初期(前30手,),為了鼓勵“探索”、提升棋局的多樣性,將溫度引數的值設為1,即,選擇落子位置的概率正比於節點的這條邊在策略提升中被訪問的次數;在30手之後 ,溫度引數,此時,策略是貪婪的,以P=1的概率選擇訪問次數最多的邊。
在狀態上執行動作後,進入到下一個狀態,將搜尋樹上所對應的節點作為新的根節點,執行MCTS,返回提升後的策略,…,直到遊戲結束,將遊戲的勝者作為狀態的值函式的估計值。
圖4 MCTS
這個過程即 self-play。為了提高搜尋的效率,在策略提升時,當搜尋到葉節點後,使用值網路估計狀態值函式作為收益返回,避免繼續向下搜尋,限制搜尋的深度;在策略估計時,使用策略提升輸出的策略來指導動作的選擇,限制搜尋的廣度。另外,如果值網路估計的局勢的收益(勝率)低於一個閾值之後,便放棄此局遊戲。
5.2.3 旋/翻轉不變性
將圍棋的棋盤旋轉或翻轉之後,不會影響局勢,落子的位置也只需要做相應的變換即可。如果狀態 s 被旋轉或翻轉,值網路的輸出 v 不變,策略網路的輸出做相應的變換,假設 d 為變換函式,則有。在策略提升中,當搜尋到達葉節點後,從 8 種旋/翻轉變換中隨機地選取一種對葉節點的狀態進行變換,變換之後的狀態作為神經網路的輸入。
棋盤有 7 種不重複的旋/翻轉變換,分別是:上(下)翻轉,右(左)翻轉,右上(左下)翻轉,右下(左上)翻轉,90度旋轉,180度旋轉,270度旋轉。90度旋轉可以通過右下翻轉+上翻轉來實現,180度旋轉可以通過上翻轉+右翻轉來實現,270度旋轉可以通過右下翻轉+右翻轉來實現,因此,只需要實現4個基礎的翻轉變換。在估計葉節點的值函式和各條邊的先驗概率時,從8種變換中隨機地取一個對葉節點進行處理,並對策略網路的輸出做相應的反變換。
圖5 旋轉和翻轉
5.3 模型優化
在 self-play 的每一局遊戲中,會生成一系列的狀態-策略-值元組,,這一系列狀態是強關聯的。為了避免過擬合這種關聯,每局遊戲只隨機地選擇一個元組來組成訓練集。
模型優化的損失函式是,其中,第一項為值網路的輸出與 self-play 實際結果的均方誤差,第二項為策略網路的輸出與策略提升的輸出的交叉熵,第三項為 L2 正則項。在損失函式中,由於,(值網路的最後一層使用tanh啟用函式),因此,均方誤差對損失函式的貢獻被限定在範圍內。給予均方誤差和交叉熵相同的權重,避免由於過擬合了狀態值函式而出現“模型能夠精準預測遊戲勝負卻輸出糟糕的策略”的現象。
模型引數更新使用帶動量和學習率衰減的隨機梯度下降方法,動量因子設為0.9,學習率在優化的過程中從 0.01 衰減到 0.0001。每次從最近的 500,000 局遊戲中隨機地選取一個大小為 2048 的 mini-batch,每 1000 次更新之後,對模型進行評估。
5.4 模型評估
更新後的模型與當前最優的模型對戰 400 局,即在策略提升中,分別使用和來估計葉節點的值函式和各條邊的先驗概率,在選擇落子位置時,溫度引數,在每一步均貪婪地選擇訪問次數最多的邊。如果新模型的勝率大於55%,則新模型成為當前最優的模型,並使用此模型進行 self-play 生成訓練資料,以確保訓練資料的質量。
6.總結
人工智慧在很多領域已經顯示出了超越人類的水準,並且還在不斷的攻城略地,達觀也將在文字智慧處理領域持續地深耕和探索,讓計算機代替人工來處理企業內的各類文書資料,幫助企業提升自動化水平。
(*本文為 AI科技大本營投稿文章,轉載請聯絡作者)
推薦推薦閱讀
相關文章
- AlphaGo Zero:筆記與虛擬碼Go筆記
- AlphaGo Zero,一次成功的炒作而已?Go
- 遲蹭一個熱點:自我對弈的 AlphaGo ZeroGo
- DeepMind新一代圍棋程式AlphaGo Zero再次登上NatureGo
- 一張圖解AlphaGo原理及弱點圖解Go
- 比AlphaGo Zero更強的AlphaZero來了!8小時解決一切棋類!Go
- 遊戲AI探索之旅:從AlphaGo到MOBA遊戲遊戲AIGo
- 我對 AlphaGo 的分析Go
- AlphaGo是如何下棋的?Go
- 微信團隊開源圍棋AI技術PhoenixGo,復現AlphaGo Zero論文AIGo
- 【AlphaGo】AlphaGo背後的力量:蒙特卡洛樹搜尋入門指南Go
- 王亮:遊戲AI探索之旅——從alphago到moba遊戲遊戲AIGo
- leela zero 一種開源的採用alphago zero論文思路的訓練軟體 正在招募訓練者Go
- 李世石終於戰勝谷歌AlphaGo谷歌Go
- 演算法比資料和計算更重要,AlphaGo Zero自學3天100:0完爆舊狗演算法Go
- 強化學習-學習筆記5 | AlphaGo強化學習筆記Go
- AlphaGo比象棋冠軍深藍厲害多少倍?Go
- 日報 | 李世石堅信自己能贏AlphaGoGo
- AlphaGo相關技術:蒙特卡羅方法簡介Go
- alphago論文使用的圍棋Tromp-Taylor規則Go
- AlphaGo與李世石之間的博弈事件淺析Go事件
- 揭秘谷歌AlphaZero:從AlphaGo進化 如何通殺棋類遊戲谷歌Go遊戲
- 一點隨想——寫在AlphaGo戰勝李世石後Go
- 淺談AlphaGo背後所涉及的深度學習技術Go深度學習
- AlphaGo的勝利是大資料+深度學習的勝利Go大資料深度學習
- AlphaGo戰勝李世石讓人工智慧早熟10年Go人工智慧
- 揭祕谷歌AlphaZero:從AlphaGo進化 如何通殺棋類遊戲谷歌Go遊戲
- 完勝人類之後,AlphaGo猝不及防的宣佈“退役”Go
- 谷歌AlphaGO挑戰賽:人工智慧的邊界在人類谷歌Go人工智慧
- AlphaGo原來是這樣執行的,一文詳解多智慧體強化學習的基礎和應用Go智慧體強化學習
- AlphaGo之後,DeepMind重磅推出AlphaFold:基因序列預測蛋白質結構Go
- 受AlphaGo啟發,AI重建量子系統新方法登上Nature PhysicsGoAI
- 閉關多月,AlphaGo將於2017年初復出圍棋界Go
- 為何谷歌圍棋AI AlphaGo可能會把李世石擊潰谷歌AIGo
- 廣東省長希望李嘉誠牽線搭橋 引進AlphaGo團隊Go
- 田淵棟:AlphaGo系統即使在單機上也有職業水平Go
- Anthropic挖走DeepMind強化學習大牛、AlphaGo核心作者Julian Schrittwieser強化學習Go
- AlphaGo的制勝祕訣:蒙特卡洛樹搜尋初學者指南Go