1. 程式人生 > >無借鑑棋手知識而精通圍棋

無借鑑棋手知識而精通圍棋

簡單智慧  AIChangeLife

AIChangeLife

AIChangeLife

通過對資訊進行量化分析(經濟,各行業動態等), 進行預測。

原文標題:Mastering the game of Go without human knowledge

David Silver1*, Julian Schrittwieser1*, Karen Simonyan1*, ioannis Antonoglou1, Aja Huang1, Arthur Guez1,Thomas Hubert1, Lucas baker1, Matthew Lai1, Adrian bolton1, Yutian chen1, Timothy Lillicrap1, Fan Hui1, Laurent Sifre1,George van den Driessche1, Thore Graepel1 & Demis Hassabis

 

原文連結:


http://www.tensorflownews.com/wp-content/uploads/2017/10/nature24270.pdf

https://www.nature.com/nature/journal/v550/n7676/pdf/nature24270.pdf

 

譯文連結

https://mp.weixin.qq.com/s?__biz=MzI1MDU5MTAxNA==&mid=2247483773&idx=1&sn=d771e9aa38713777ead427f44645a55a&chksm=e9fea334de892a22023b2ba84b3c33a9b6a1656e077e682d33ac464e3f5ac88caf573ca818da#rd


轉載必須註明翻譯作者名(AIChangeLife)翻譯文章連結,和原始論文標題和連結(請尊重轉譯者,和原作者所付出的)

 

 

注:為了可以比較簡潔的表達較重要的內容,只包括原文實現方法(Methods)章節。對AlphaGo Zero任何討論,請發在公眾號。

ALPHA GO ZERO實現方法

 

注:

[]中標註的內容表示參考文獻的編號

 

self-play:           與自己比賽,對手也是自己,所以譯為自我對抗

value function:    策略的有效性函式(策略的勝率函式),所以value譯為價值,value function譯為價值函式

policy component:  Alpha Go Zero處理策略的元件,譯為策略處理單元

value component:    Alpha Go Zero評估策略的有效性的元件,譯為價值評估單元

Tetris            俄羅斯方塊遊戲

Atari:             美國阿塔裡遊戲公司

CBMPI:            基於分類的改進策略迭代演算法

rollout:           蒙特卡洛搜尋演算法中模擬遊戲動作,推演遊戲的過程,譯為推演

 

注,蒙特卡洛搜尋4步(蒙特卡洛搜尋演算法有助於全面理解文章,請參考詳細資料)



rollout是上圖的simulation步驟

 

 

強化學習:

 

策略迭代[20,21]是一種經典的演算法,通過交替執行策略評估(估計當前策略的價值函式)和策略強化(用當前的價值函式來生成更好的策略),來生成一列不斷強化的策略。

一種簡單的策略評估方法是取樣的動作軌跡[20,21]的輸出估計價值函式,一種簡單的策略強化方法是根據價值函式[20]貪婪(貪婪演算法)的選擇動作。

在很大目標狀態空間中(包括圍棋的落棋子的可選位置),使用迴歸演算法來評估每個策略的價值和表示策略的價值優化度是必要的[22,23]

 

基於分類的強化學習[37]用簡單的蒙特卡洛搜尋演算法來優化策略。每一個動作都要很多次推演;(推演出勝負後會對推演過的動作累計分)計分均值最大的動作做為一個正例訓練樣本,而其它所有的動作做為負例訓練樣本;然後一個策略被訓練用來把動作分類為正例或負例,用來進行下一步推演。這種方法可以視為當τ->0時(溫度值)Alpha Go Zero的策略處理單元的前身。

 

最近的基於分類的改進策略迭代演算法CBMPI),也通過迴歸價值函式到(部分)推演結果來實現策略評估,類似Alpha Go Zero的價值評估單元;在俄羅斯方塊遊戲[38]上達到了最高水準。但這個方法的侷限是:

1.      簡單的推演過程

2.      使用人工設計的特徵表達的線性函式進行迴歸運算。

 

Alpha Go Zero自我對抗的演算法可以被近似理解為一個用蒙特卡洛樹搜尋做策略優化和策略評估進行優化迭代的策略框架。

策略優化從一個神經網路的策略開始,執行蒙特卡洛樹搜尋(策略推薦),得到優化後的搜尋策略,然後將其規劃到神經網路的函式空間中。

策略評估使用優化後的搜尋策略產生動作,同時將動作輸出也規劃到神經網路的函式空間中。

通過分別訓練神經網路引數來匹配搜尋概率和自我對抗遊戲動作的輸出來實現規劃。

(注:以上原文沒有更多細節)

 

Guo及其它人[7] 也規劃蒙特卡洛樹搜尋的輸出到神經網路中,以搜尋結果迴歸價值評估網路,或對蒙特卡洛樹搜尋選擇的動作進行分類。

這種方法被用來訓練一個神經網路玩阿塔裡遊戲,但這個方法蒙特卡洛樹搜尋是固定的(沒有策略的迭代),也沒有使用經過訓練的網路。

 

遊戲中的自我對抗優化學習

 

我們的方法可很直接的用於具有完整資訊的零和遊戲中。借鑑了前人研究的[12]交替馬爾可夫鍊形式進行遊戲,注意基於值和策略迭代的演算法會自然的擴充套件成這個形式 [39]

 

自我對抗優化學習之前已經被用在圍棋遊戲中,NeuroGo[40,41]用一個神經網路來表達價值函式(基於圍棋知識(空territory,眼eyes等,原文:connectivity, territory and eyes)的精巧的架構)。

這個神經網路通過時序差分學習訓練來預測自我對抗中的棋盤佈局(空),基於[43]。一個相關的實現,RLGO[44],用特徵的線性組合來表達價值函式,窮盡列舉所有的棋子的3*3佈局,用時序差分學習訓練來預測遊戲贏家。NeuroGoRLGO實現了初等業餘水平。

 

蒙特卡洛樹搜尋也可以被視為一種自我對抗優化學習。搜尋樹中的節點包含了在搜尋中發現的每個位置對應的值(代表棋子移動的價值),這些值被更新來預測自我對抗模擬遊戲的贏家。蒙特卡洛樹搜尋程式之前實現了圍棋高等業餘水平[46,47],但使用了全面的專業知識:

1.      基於人工設計的特徵的快速推演的策略[13,48],評估直到遊戲結束,模擬遊戲經過的所有位置。

2.      基於人工設計的特徵樹策略,選擇了搜尋樹中的棋子移動方式。

 

自我對抗優化學習方法已經在其它遊戲中達到了高級別水平:

象棋[49-51],方格棋[52],西洋雙陸棋[53],奧賽羅[54],英語文字圖版遊戲[55],和撲克[56](近期)。

在所有這些例子中,一個價值函式用自我對抗生成的訓練資料通過迴歸 [54-56]或時序差分學習[49-52]訓練。訓練的價值函式用來做為博弈樹搜尋(alpha–beta search,[49-54] 簡單蒙特卡羅搜尋[55,57]或虛擬條件反悔最小化(counterfactual regret minimization)[56]的評估函式。但這些方法使用了人工設計的輸入特徵[49-53,56],或人工設計的特徵模板[56]。同時使用監督學習來初始化權重值[58],人工選擇每部分值的權重[49,51.52],人工限制動作的空間[56],或使用之前已經做好的電腦程式來做為訓練對手[49,50]或生成遊戲記錄資料[51]

 

很多非常成功的,廣泛使用的強化學習方法是第一次被引入零和遊戲環境中:

,當蒙特卡洛樹搜尋被引入圍棋遊戲時,時序差分學習第一次引入象棋程式中。無論如何,很相近的演算法緊接著在在視訊遊戲[6-8,10],機器人[60],工業控制[61-63]和線上推薦系統實現了很好的效果[64,65]

 

Alpha Go版本:

 

3個互不相同的Alpha Go版本:

  1. AlphaGo     Fan是之前是公開的程式[12],和Hui Fan2015 10月進行了比賽。分佈在很多機器,使用176GPU

 

  1. AlphaGo Lee 4-1戰勝了Lee     Sedol2016 3月。沒有公開,但在很多主要方面是與AlphaGo Fan是相同的。

重要的不同之處:

1)        價值計算網路是基於AlphaGo執行的自我對抗的高速遊戲過程生成的資料訓練,而不是基於策略評估網路執行的自我對抗遊戲過程;這個過程是迭代很多次的(參考原論文的白板演算法(tabula rasa algorithm))。

2)        策略和價值網路是比(AlphaGo)論文中描述的網路更大(使用256個平面(輸入資料維度)的12個卷積網路)同時經過更多次迭代訓練。分佈在很多48TPU的機器中,不是GPU,使它可以在搜尋時更快的對網路進行評估。

 

  1. AlphaGo Master2017.01月以60-0戰勝頂尖棋手。沒有公開,但使用了本文章描述的相同神經網路架構,強化學習演算法,和蒙特卡洛樹搜尋演算法。

但它使用與AlphaGo Lee相同的人工設計的特徵和推演方法,同時訓練是使用棋手的資料通過監督學習初始化。

 

  1. AlphaGo     Zero是本文章中描述的程式。從隨機初始化權重值開始,用自我對抗遊戲強化學習方法訓練,沒有蒙特卡洛搜尋推演,沒有人監督同時只使用原始下棋歷史資料做輸入。僅使用了在谷歌雲中的1臺具有4TPU的機器(AlphaGo Zero也可以是分散式的,但我們選擇儘可能簡單的搜尋演算法)


領域知識:


我們主要的貢獻是展示了超越棋手水平的效能可以在沒有專業領域知識情況下實現。為了幫助理解,我們列舉了在訓練過程和蒙特卡洛樹搜尋過程中,AlphaGo Zero使用的明確或潛在的專業知識;這些是使AlphaGo Zero學習其它的(交替馬爾可夫鏈)遊戲需要替換的知識專案。

  1. AlphaGo     Zero接收了遊戲規則的全面的知識。它們在蒙特卡洛樹搜尋過程中被用來模擬經過一系列移動後的位置,同時對到達結束狀態的摸擬位置評分。當圍棋雙方一致確認著子(放置棋子)完畢時或者在19*19*2=722次著子後,遊戲結束。另外程式接收了每個位置的合法移動的集合。

  2. AlphaGo     Zero在蒙特卡洛樹搜尋模擬過程和自我對抗訓練過程使用了Tromp-Talor評分方法[66]。這是因為如果遊戲在黑白棋子各自邊界明確前結束時對棋手的評分(中國,日本,韓國規則)沒有統一的定義。我們使用中國規則對所有的正式,非正式比賽進行評分。

  3. 輸入特徵資料是結構化為19*19大小描述棋子位置的影象;神經網路的架構棋盤的格子布局匹配。

  4. 圍棋的規則在旋轉和反轉時是固定的;     這點反映在AlphaGo Zero用了旋轉和反轉方法來增強訓練資料集(augmenting dataset),同時蒙特卡洛樹搜尋過程中模擬的每個位置隨機旋轉或反轉(參考原論文Search     algorithm)。

    對於貼目(komi),規則是不由顏色轉換改變的;這點反映在用當前遊戲方的視角表示棋盤(引數原論文Neural network architecture


AlphaGo Zero以上指出的點之外,沒有使用任何其它的專業知識。只使用深度學習網路來評估葉子節點(結束點)和選擇移動(參考原論文Search algorithm)。它沒有使用任何的推演策略和樹策略,同時MCTS沒有任何的專業規則和技巧上的增強。沒有任何合法的移動是被排除的(甚至那些一眼就能識別的不合適的移動)(在之前的程式中是標準的技巧)


演算法是通過隨機初始化的神經網路引數開始。這個神經網路架構(參考Neural network architecture)是基於當前最高水準的影象識別技術[4,18],對應選擇訓練時的超參(參考自我對抗訓練管道)。 蒙特卡洛樹搜尋引數是通過高斯處理優化方法(Gaussian process optimization[68])選擇,所以可視為使用預執行過程訓練的神經網路來優化AlphaGo Zero的自我對抗效能。對於大批量的執行(40塊,40天),蒙特卡洛樹搜尋引數是用這個經過小批量執行(20個塊,3天)的神經網路來重新優化。訓練演算法是沒有人的干涉自動執行的。


自我對抗訓練管道:


AlphoGo Zero的自我對抗訓練管道由3個主要元件構成,全部併發非同步執行。神經網路引數θi是用最近的自我對抗資料連續優化的;AlphaGo Zero選手(程式視為遊戲選手)αθi是被連續評估的;同時用當前評估出的最佳效能的選手αθ生成新的自我對抗資料。


優化:


使用tensorflow谷歌雲中多個配備64GPU的客戶端(訓練)和多個配備19CPU的服務端(儲存引數)優化每個神經網路fθi。每個客戶端的批(mini-batch)大小是32,總的批大小是2048(所有應有2048/32=64個客戶端)。每批資料是從最近的500000次自我對抗的所有位置隨機均勻取樣的。神經網路引數使用隨機梯度下降(使用學習率,動量(momentum)退火(衰減技術))優化。

損失函式為等式1

注:

P表示網路移動選擇概率。

V對移動的價值預測

π是搜尋概率

c是控制L2正規化的引數

公式的含義是最小化動作預測價值v和勝者z的距離,最大化搜尋概率和網路移動選擇概率的相同度


學習率是通過上表3的標準流程退火的。

動量是配置為0.9

交叉熵和MSE權重是相同的(因為獎勵是單位比例r{-1, +1}

L2正則化引數配置為c=10^-4

1000個訓練步產生了新檢查點(check pointer會儲存模型訓練引數)。檢查點由評估器評估,並且可能用來生成自我對抗的下一批資料。

 

評估器:

為了保證一直生成最高質量的資料,在使用新檢查點生成下一批資料前用當前最佳的網路fθ評估每個新檢查點。

神經網路fθi是通過使用fθi來評估葉子位置和先驗概率來評估的(參考原論文Search algorithm)的蒙特卡洛樹搜尋αθi評估。每一步評估經過使用1600次模擬來選擇每一次移動的蒙特卡洛樹搜尋的400輪遊戲(使用極限小溫度τ0(根據最大訪問次數,判別選擇這次移動,給出最可能強的效果))。如果贏得遊戲的得分優勢大於55%(為避免噪聲影響),那它就成為最佳的選手αθ,同時用於生成下一批遊戲資料,也成為下一次比較的基準。

自我對抗:

被選擇為評估器的當前最佳選手αθ,也用來生成下一批資料。每一次迭代中,αθ使用1600次模擬來選擇一次移動的蒙特卡洛樹搜尋(需要大約0.4秒每次搜尋)選擇每次移動,執行25000輪自我對抗遊戲。

每輪遊戲的頭30次移動,這個溫度值配置為τ = 1(根據訪問計數選擇移動的係數)蒙特卡洛樹搜尋使用訪問次數比例值選擇移動,並保證可訪問到不同的位置集合。

之後的移動,使用極小量溫度值τ0

新增狄利克雷噪聲到根節點s0的先驗概率來增加搜尋範圍,特別是當η Dir(0.03) ε = 0.25P(s, a) =(1 - ε)pa + εηa,;這些噪聲保證所有的移動都可能執行,但搜尋仍然會駁回低效的移動。為了節約計算力,會放棄明顯失敗的遊戲。放棄臨界值vresign是通過保持假正率(false positivepositive指如果AlphaGo不放棄遊戲可以贏)低於5%來自動選擇。為了衡量合適的假正率,我們禁用了自我對抗遊戲的10%的放棄率直到遊戲結束。

監督式學習:

為了比較,我們也通過監督式學習訓練了神經網路引數θSL。這個神經網路的架構與AlphaGo Zero是相同的。資料(s, π, z)(mini-batch)KGS資料集被隨機取樣得到,如果專家(被參考的人)移動到aπa= 1引數使用隨機梯度下降優化(對動量和學習率退火),損失函式為等式1

MSE權重因數為0.01(與優化不同)。

學習率是通過上表3的標準流程退火的。

動量引數配置為0.9

L2正則化引數配置為c=10^-4

 


通過使用組合策略和值的網路架構,且對價值評估單元使用低權重值,減少價值函式過擬合的可能性([12]有說明)。在72小時後預測移動準確率超過了以前報告的最高水準[12,30-33],在KGS測試資料集上達到了60.4%;價值預測錯誤率也大幅超過了之前報告的分數[12]。驗證資料集是專家資料和GoKifu資料集的組合。準確率和MSE分別報告在上表1和表2中。

 

搜尋演算法:

AlphaGo Zero使用了AlphaGo FanAlphaGo Lee的非同步策略和值的蒙特卡洛樹搜尋演算法(APV-MCTS)的更簡單形式。

 

在搜尋樹中每個節點s包括所有動作a A(s)構成的(s,a)。每個邊記錄了一些統計值。

{N(s, a), W(s, a), Q(s, a), P(s, a)}

N(s,a)是訪問計數,W(s, a)是全部動作價值,Q(s, a)是平均動作價值,P(s, a) 是選擇一條邊的先驗概率。

多次模擬過程被併發的執行在不同的執行緒中。


演算法通過迭代3個階段繼續執行(圖2a–c),然後選擇執行一次移動(圖2a–d)。

選擇(2a):

選擇的階段與AlphaGo Fan幾乎相同[12];我們為了完整性扼要重述一下。每次模擬過程中第1次在樹中階段開始於搜尋樹的根節點s0,且在模擬過程在步驟L達到葉子節點sL 時結束。

在每個t< L的步驟,動作使用一個PUCT演算法的變形:

由記錄在搜尋樹中統計值選擇

cpuct是決定搜尋級別的常量值;搜尋控制策略初始時優先選擇高先驗概率和低訪問計數的動作,但逐漸優先選擇高價值的動作。

伸展和評估(2b)

葉子節點sL被新增到用於神經網路評估的佇列中(di(p), v)= fθ(di(sL))di是整數區間 [1…8]上隨機分佈的集合中均勻選擇的二面角反射或旋轉(參考[70]。佇列中的位置被神經網路用大小為8的批(mini-batch)評估(對81批的經過隨機,二面角反射處理過的落子可選位置評估);搜尋執行緒被鎖定直到評估過程結束。葉子節點被擴充套件,它和動作連線的每個邊(sL, a)被初始為{N(sL, a)=0, W(sL, a)=0, Q(sL, a)=0, P(sL, a)=pa};計算得到的值v被儲存下來。

反饋(ac)

每個邊訪問計數等統計資訊在反饋過程中對每個tL的步驟更新。訪問計數被累加, N(st, at)=N(st, at)+1,同時動作值被更新為均值


,使用這虛損失函式來保證每個執行緒不同的節點評估[12,69]

 

動作(2d)

搜尋完成後,AlphaGo Zero在根位置s0選擇移動a,和它的訪問計數的指數級量是成比例的:,這裡τ溫度引數用來控制搜尋的級別。接搜尋樹被再用於下來的步驟中:

對應於這個動作的子節點做為新的根節點。

子節點下的子樹和它們所有的統計值(如訪問計數)被儲存。

樹的其餘部分被丟棄。

如果根節點的值和最佳子節點的值低於臨界值vresignAlphaGo Zero放棄遊戲

 

AlphaGo FanAlphaGo Lee蒙特卡洛樹搜尋比較,原理上的不同是:

AlphaGo Zero不使用任何推演;

它使用單個神經網路來代替策略網路和價值評估網路;

葉子節點是一直伸展的,而不是動態的伸展;

所有搜尋執行緒等待神經網路的評估結束後執行,而不是同時進行評估和反饋(前向與後向);

這裡沒有樹策略

 

在大的AlphaGo Zero