AlphaGo論文閱讀

AlphaGo中的關鍵組件


論文的模型看似復雜,不過將其拆分為以下部件逐一理解會比較容易

  1. 有監(jiān)督學習得到的策略網絡。這一策略網絡通過學習人類高手的棋盤颈渊,從而能夠在給定某個棋盤狀態(tài)時,以較高準確率預測人類高手的落子點
  2. 強化學習得到的策略網絡。進行自我對弈蝴光,根據對弈的結果用policy gradient的方法更新策略網絡
  3. 狀態(tài)值評估網絡。使用部件2進行自我對弈的數據集進行訓練达址,因此也是由強化學習訓練得到的蔑祟,該網絡在輸入一個棋盤狀態(tài)時,能給出該狀態(tài)下獲勝的概率沉唠。
  4. 改進的蒙特卡洛搜索樹疆虚。用于做對弈的模擬演算,這個改進的版本將上述部件整合在一起满葛,提供了更具智能的模擬装蓬。

上述部件的實現


有監(jiān)督學習的策略網絡

這一網絡目的是學習預測人類高手的落子的概率分布,用于最終搜索算法的先驗信息纱扭。使用的網絡結構是卷積神經網絡牍帚,由卷積層與非線性激活函數構成,最后的輸出層是softmax層乳蛾,該層的作用是將輸出歸一化暗赶,使之能表示所有合法落子點的概率,即P(a|s), 其中s為輸入網絡的棋盤狀態(tài)肃叶。

數據集是從KGS圍棋服務器得到的3千萬個棋局蹂随,每一個棋局包含一個棋盤狀態(tài)s和一個人類落子的位置a。那么棋盤信息如何進行卷積操作呢因惭,這里是將19x19的棋盤看成一個19x19的圖像一樣看待岳锁,這樣就可以用圖像的卷積方法了。

最終訓練得到的網絡能很好的預測人類在給定棋盤時的落子點的概率分布蹦魔,概率越大表示人類越有可能在該點落子激率。這就得到了有監(jiān)督的策略網絡P_\sigma(a|s)咳燕,這個網絡的預測準確率能達到57.0\%。 不過于此同時乒躺,他們還訓練了一個快速的但是準確率較低的策略網絡P_\pi(a|s)招盲,這個快速策略在之后的蒙特卡洛搜索樹中會用得到。

強化學習的策略網絡

該部件旨在提升有監(jiān)督的策略網絡P_\sigma(a|s)嘉冒, 它為之后的狀態(tài)值評估網絡提供了對弈的數據曹货。在網絡結構上,與有監(jiān)督的網絡的網絡結構完全相同讳推,并且其網絡的初始權重就是P_\sigma(a|s)網絡學習到的權重顶籽。

該網絡的學習是基于策略的學習,使用的是策略梯度算法银觅。我們知道強化學習最常應用在游戲中礼饱,那么同樣的,這里的“游戲”的過程是一個左右互博的過程设拟,即當前的策略網絡與某個對手策略進行相互博弈慨仿,這里的對手是隨機的從訓練過程中的前面一些迭代次數的策略網絡中選擇出來的,這里的隨機選擇能避免過擬合的情況纳胧。

定義在狀態(tài)s_t下執(zhí)行a_t的收益z_t是:如果該局勝利則+1镰吆,如果該局失敗則-1。則在時間t的期望收益為p_\rho(a_t|s_t)跑慕。因此在每一個時間點t万皿,網絡的參數需要更新的梯度為
\Delta\rho\propto\frac{\partial\log{p_\rho(a_t|s_t)}}{\partial\rho}z_t
在對Pachi的對弈中,僅使用強化學習得到的策略P_\rho(a|s)能獲得85%的勝率核行,而僅使用有監(jiān)督的策略網絡P_\sigma(a|s)只能得到15%的勝率

強化學習的狀態(tài)值評估網絡

該網絡v_\theta(s) 在最終的搜索算法中會用于對節(jié)點的評估牢硅。它評估給定棋盤狀態(tài)s和策略p時雙方的收益值,即
v^P(s)=E[z_t|s_t=s, a_t...T~p]
該網絡的網絡架構與之前兩個相似芝雪,但是不同的是網絡最后只輸出一個預測值而非概率分布减余。給定一組“狀態(tài)s-結果z”的樣本,該網絡的損失函數為
L_\theta=(v_\theta(s)-z)^2
數據集是用前面介紹的強化學習的策略網絡進行自我對弈得到的3千萬個棋盤狀態(tài)和對應的結果惩系。另外為了避免因為棋盤之間有關聯性而帶來的模型過擬合問題位岔,這些數據集的每一個樣本都是從不同的一局對弈中獲取的,也就是說3千萬個棋盤狀態(tài)對應的是3千萬盤的獨立的對弈堡牡。

蒙特卡洛樹搜索

這是將前面的部件整合在一起的算法抒抬。由于下一節(jié)會詳細展開,因此這里不贅述晤柄。

整合上述部件的蒙特卡洛樹搜索


在學習本文的改進版蒙特卡洛樹搜索之前擦剑,先了解以下原始的蒙特卡洛樹搜索

原始的蒙特卡洛樹搜索[1]

  • 目的

    該算法的目的是給定一個”游戲狀態(tài)“并選擇“勝率最高的下一步”

  • 主要思想

    眾所周知,蒙特卡洛就意味著模擬,在這里也是一樣惠勒,蒙特卡洛樹搜索會多次模擬博弈赚抡,并嘗試根據模擬結果預測最優(yōu)的移動方案。

    蒙特卡洛樹搜索的主要概念是搜索捉撮,即沿著博弈樹向下的一組遍歷過程怕品。

    1. 單次遍歷會從當前節(jié)點根據節(jié)點的信息選擇子節(jié)點向下遍歷妇垢,直到一個沒有完全展開的節(jié)點巾遭,未完全展開表示其子節(jié)點至少有一個未訪問到。
    2. 遇到未完全展開的節(jié)點時闯估,它的一個未訪問子節(jié)點將會作為單次模擬的根節(jié)點灼舍,從該節(jié)點開始模擬運行至產生游戲結果。
    3. 模擬的結果將會反向傳播回當前樹的根節(jié)點并更新博弈樹的節(jié)點統(tǒng)計數據涨薪。一旦搜索受限于時間或計算力而終止骑素,下一步行動將基于收集到的統(tǒng)計數據進行決策。
  • 算法

    1. 遍歷

      向下遍歷的過程并不是隨機的刚夺。對于已經未完全展開的節(jié)點献丑,選擇未訪問的子節(jié)點,若當前節(jié)點已經完全展開那么對子節(jié)點有一個評估函數侠姑,每次向下遍歷均選擇評估值最大的子節(jié)點進行遍歷创橄。評估函數如下
      uct(v_i, v)=\frac{Q(v_i)}{N(v_i)}+c\sqrt{\frac{\log{N(v)}}{N(v_i)}}
      其中v是當前節(jié)點,v_i是子節(jié)點莽红,Q(v_i)是節(jié)點v_i的模擬獲勝次數妥畏,N(v_i)是節(jié)點v_i的總模擬次數,N(v)是節(jié)點v的總模擬次數安吁。c是一個可調節(jié)的參數醉蚁。

      這個函數中的前一個加數表示的是該節(jié)點的模擬勝率,后一個加數表示的是訪問次數的多寡鬼店。這兩項結合在一起的意義則是遍歷過程中會盡量選擇勝率高的節(jié)點進行展開(這點與極大極小策略一致)网棍,但是同時會鼓勵探索很少訪問的節(jié)點。

      綜上所述妇智,遍歷環(huán)節(jié)的偽代碼為:

      while(完全展開(node)):
         node = best_uct(node)
      return 未訪問的子節(jié)點(node)
      
    2. 模擬與反向傳播

      前一個步驟遍歷到了一個未訪問(未評估)的節(jié)點v_u滥玷,那么接下來就從該節(jié)點開始進行模擬,在原始算法中采用完全隨機(即均勻分布)的方法向下模擬俘陷,直到游戲結束返回一個結果(例子:象棋中從某一棋盤狀態(tài)開始隨機走棋罗捎,直到自己被將死或者對方被將死)。

      接著將該結果記錄在節(jié)點v_u中拉盾,并且從節(jié)點v_u向上傳播桨菜,更新第一步的遍歷路徑上的所有節(jié)點的信息。舉個例子,如果模擬的結果是獲勝倒得,那么路徑上所有節(jié)點的獲勝次數都會加一泻红。

    3. 算法結束與預測

      對于博弈樹很大的游戲來說,上述算法可以執(zhí)行特別久霞掺,那么什么時候終止 MCTS谊路?答案是:只要資源允許,就可以一直運行 MCTS菩彬,因為與其他蒙特卡洛方法一樣缠劝,模擬的次數越多,得到的結果通常會越準確骗灶。

      而MCTS 算法結束運行之后惨恭,算法預測的最好的一步是有最高訪問量N(v_i)的一步,因為它的獎勵值評估結果最好

本文的蒙特卡洛樹搜索

  1. 節(jié)點信息

    與原始的算法不同耙旦,本文的搜索樹中的節(jié)點不僅包含有動作值Q(s,a)脱羡,訪問計數N(s,a),還有另外的一個信息免都,即先驗動作概率分布P(s,a)锉罐。 當一個節(jié)點第一次被訪問到時,該節(jié)點對應的棋盤狀態(tài)送入有監(jiān)督學習到的策略網絡P_\sigma(a|s)绕娘,得到該節(jié)點狀態(tài)對應的動作概率分布脓规,將其賦值給該節(jié)點的先驗動作概率分布P(s,a)

  2. 遍歷

    與原算法相同的是,對于已經完全展開的節(jié)點业舍,需要有評估函數對其子節(jié)點進行評估抖拦,從而選擇子節(jié)點進行向下遍歷,不同的是這里的評估函數不同舷暮,變?yōu)槿缦碌墓?br> uct(a_t,s_t) = Q(s_t,a_t)+\frac{P(s_t,a_t)}{1+N(s_t,a_t)}
    也即由以下公式求下一步動作
    a_t=argmax(Q(s_t,a_t)+\frac{P(s_t,a_t)}{1+N(s_t,a_t)})

  3. 模擬與反向傳播

    與原算法中只通過隨機策略進行模擬的方法不同态罪,本文方法對一個葉節(jié)點的評估有兩個方面:

    • 通過狀態(tài)值估計網絡直接進行評估
    • 通過有監(jiān)督的學習得到的快速走子策略P_\pi(a|s)進行模擬,注意這里的模擬除了策略與原算法不一樣以外下面,其余是完全一樣的

    最后的評估函數由上述兩項加權求和得到:
    V(s_L)=(1-\lambda)v_\theta(s_L)+\lambda z_L
    其中\lambda是一個可調節(jié)的參數复颈,v_\theta(s_L)是狀態(tài)值估計網絡的評估,z_L是通過策略P_\pi(a|s)進行模擬的結果沥割。

    反向傳播時耗啦,對遍歷的路徑上的節(jié)點計數加一,并且對路徑上的節(jié)點更新
    Q(s,a)=Q(s,a)+\frac{V(s_L)}{N(s,a)}
    注意我這里的公式與論文中的公式有所不同机杜,是因為論文中是計算了所有模擬的評估值之和帜讲,而我這邊只寫了一次模擬,因此我這里的加法與論文中的求和本質上是一致的椒拗。

  4. 算法結束與預測

    與原算法相同似将,當算法結束時获黔,算法預測的最好的一步是有最高訪問量N(s,a) 的一步

總結與思考

  1. 有監(jiān)督學習得到的策略P_\sigma(a|s)在最終的搜索中作為節(jié)點的先驗信息,在節(jié)點的遍歷中起了指導的作用在验。
  2. 有監(jiān)督學習得到的快速走子策略P_\pi(a|s)在搜索中被用作模擬的策略玷氏,使得對葉節(jié)點的評估更具準確。
  3. 強化學習得到的策略P_\sigma(a|s)在搜索中沒有直接的作用腋舌,而是間接通過狀態(tài)值評估網絡的方式在葉節(jié)點的評估中發(fā)揮作用
  4. 狀態(tài)值評估網絡v_\theta(s)在搜索中對葉節(jié)點進行評估盏触,部分代替了原始蒙特卡洛樹搜索中的模擬評估,不僅加快了評估的速度块饺,還能以更大局觀的眼光評估葉節(jié)點狀態(tài)
  5. 關于哪個部件使得算法能超越了人類的問題赞辩,我認為,有監(jiān)督的學習得到的策略網絡由于是用人類的棋譜學習的刨沦,因此無論學的多好诗宣,其結果也只能是接近人類而非超過人類膘怕。因此我認為使之超過人類的主要是強化學習和蒙特卡洛樹搜索的功勞想诅。

[1]. https://www.jiqizhixin.com/articles/monte-carlo-tree-search-beginners-guide

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市岛心,隨后出現的幾起案子来破,更是在濱河造成了極大的恐慌,老刑警劉巖忘古,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徘禁,死亡現場離奇詭異,居然都是意外死亡髓堪,警方通過查閱死者的電腦和手機送朱,發(fā)現死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門瞪慧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臀晃,“玉大人,你說我怎么就攤上這事敦第≌海” “怎么了回怜?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長换薄。 經常有香客問我玉雾,道長,這世上最難降的妖魔是什么轻要? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任复旬,我火速辦了婚禮,結果婚禮上冲泥,老公的妹妹穿的比我還像新娘驹碍。我一直安慰自己失都,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布幸冻。 她就那樣靜靜地躺著粹庞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洽损。 梳的紋絲不亂的頭發(fā)上庞溜,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音碑定,去河邊找鬼流码。 笑死,一個胖子當著我的面吹牛延刘,可吹牛的內容都是我干的漫试。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碘赖,長吁一口氣:“原來是場噩夢啊……” “哼驾荣!你這毒婦竟也來了?” 一聲冷哼從身側響起普泡,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤播掷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后撼班,有當地人在樹林里發(fā)現了一具尸體歧匈,經...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年砰嘁,在試婚紗的時候發(fā)現自己被綠了件炉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡矮湘,死狀恐怖斟冕,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情板祝,我是刑警寧澤宫静,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站券时,受9級特大地震影響孤里,放射性物質發(fā)生泄漏。R本人自食惡果不足惜橘洞,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一捌袜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炸枣,春花似錦虏等、人聲如沸弄唧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽候引。三九已至,卻和暖如春敦跌,著一層夾襖步出監(jiān)牢的瞬間澄干,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工柠傍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留麸俘,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓惧笛,卻偏偏與公主長得像从媚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子患整,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容