Facebook工程師解疑:AlphaGo為什這厲害 - 圍棋

Daph Bay avatar
By Daph Bay
at 2016-03-14T15:40

Table of Contents

Facebook工程師解疑:AlphaGo為什麼這麼厲害?

 Facebook田淵棟解析演算法技術:AlphaGo為什麼這麼厲害?

  最近我仔細看了下AlphaGo在《自然》雜誌上發表的文章,寫一些分析給大家分享。

  AlphaGo這個系統主要由幾個部分組成:

  走棋網路(Policy Network),給定當前局面,預測/採樣下一步的走棋。

  快速走子(Fast rollout),目標和1一樣,但在適當犧牲走棋品質的條件下,速度
要比1快1000倍。

  估值網路(Value Network),給定當前局面,估計是白勝還是黑勝。

  蒙特卡羅樹搜索(Monte Carlo Tree Search,MCTS),把以上這三個部分連起來,
形成一個完整的系統。

  我們的DarkForest和AlphaGo同樣是用4搭建的系統。DarkForest較AlphaGo而言,在
訓練時加強了1,而少了2和3,然後以開源軟體Pachi的缺省策略 (default policy)部
分替代了2的功能。以下介紹下各部分。

  1. 走棋網路

  走棋網路把當前局面作為輸入,預測/採樣下一步的走棋。它的預測不只給出最強的
一手,而是對棋盤上所有可能的下一著給一個分數。棋盤上有361個點,它就給出361個
數,好招的分數比壞招要高。DarkForest在這部分有創新,通過在訓練時預測三步而非一
步,提高了策略輸出的品質,和他們在 使用增強學習進行自我對局後得到的走棋網路(
RL network)的效果相當。當然,他們並沒有在最後的系統中使用增強學習後的網路,而
是用了直接通過訓練學習到的網路(SL network),理由是RL network輸出的走棋缺乏變
化,對搜索不利。

  有意思的是在AlphaGo為了速度上的考慮,只用了寬度為192的網路,而並沒有使用最
好的寬度為384的網路(見圖2(a)),所以要是GPU更快一點(或者更多一點),
AlphaGo肯定是會變得更強的。

  所謂的0.1秒走一步,就是純粹用這樣的網路,下出有最高置信度的合法著法。這種
做法一點也沒有做搜索,但是大局觀非常強,不會陷入局部戰鬥中,說它建模了“棋感
”一點也沒有錯。我們把DarkForest的走棋網路直接放上KGS就有3d的水準,讓所有人都
驚歎了下。可以說,這一波圍棋AI 的突破,主要得益於走棋網路的突破。這個在以前是
不可想像的,以前用的是基於規則,或者基於局部形狀再加上簡單線性分類器訓練的走子
生成法,需要慢慢調參數年,才有進步。

  當然,只用走棋網路問題也很多,就我們在DarkForest上看到的來說,會不顧大小無
謂爭劫,會無謂脫先,不顧局部死活,對殺出錯,等等。 有點像高手不經認真思考的隨
手棋。因為走棋網路沒有價值判斷功能,只是憑“直覺”在下棋,只有在加了搜索之後,
電腦才有價值判斷的能力。

  2. 快速走子

  那有了走棋網路,為什麼還要做快速走子呢?有兩個原因,首先走棋網路的運行速度
是比較慢的,AlphaGo說是3毫秒,我們這裡也差不多,而快速走子能做到幾微秒級別,
差了1000倍。所以在走棋網路沒有返回的時候讓CPU不閑著先搜索起來是很重要的,等到
網路返回更好的著法後,再更新對應的著 法資訊。

  其次,快速走子可以用來評估盤面。由於天文數字般的可能局面數,圍棋的搜索是毫
無希望走到底的,搜索到一定程度就要對現有局面做個估分。在沒有估值網路的時候,
不像國象可以通過算棋子的分數來對盤面做比較精確的估值,圍棋盤面的估計得要通過模
擬走子來進行,從當前盤面一路走到底,不考慮岔路地算 出勝負,然後把勝負值作為當
前盤面價值的一個估計。這裡有個需要權衡的地方:在同等時間下,模擬走子的品質高,
單次估值精度高但走子速度慢;類比走子速度 快乃至使用隨機走子,雖然單次估值精度
低,但可以多模擬幾次算平均值,效果未必不好。所以說,如果有一個品質高又速度快的
走子策略,那對於棋力的提高是非 常有幫助的。

  為了達到這個目標,神經網路的模型就顯得太慢,還是要用傳統的局部特徵匹配(
local pattern matching)加線性回歸(logistic regression)的方法,這辦法雖然不
新但非常好使,幾乎所有的廣告推薦,競價排名,新聞排序,都是用的它。與更為傳統的
基於規則的方案相比,它在 吸納了眾多高手對局之後就具備了用梯度下降法自動調參的
能力,所以性能提高起來會更快更省心。AlphaGo用這個辦法達到了2微秒的走子速度和
24.2%的走子準確率。24.2%的意思是說它的最好預測和圍棋高手的下子有0.242的概率是
重合的,相比之下,走棋網路在GPU上用2毫秒能達到 57%的準確率。這裡,我們就看到了
走子速度和精度的權衡。

  和訓練深度學習模型不同,快速走子用到了局部特徵匹配,自然需要一些圍棋的領域
知識來選擇局部特徵。對此AlphaGo只提供了局部特徵的數目 (見Extended Table 4),
而沒有說明特徵的具體細節。我最近也實驗了他們的辦法,達到了25.1%的準確率和4-5微
秒的走子速度,然而全系統整合下來並沒有複現他們的水 平。我感覺上24.2%並不能完全
概括他們快速走子的棋力,因為只要走錯關鍵的一步,局面判斷就完全錯誤了;而圖2(b
)更能體現他們快速走子對盤面形勢 估計的精確度,要能達到他們圖2(b)這樣的水準
,比簡單地匹配24.2%要做更多的工作,而他們並未在文章中強調這一點。

  在AlphaGo有了快速走子之後,不需要走棋網路和估值網路,不借助任何深度學習和
GPU的幫助,不使用增強學習,在單機上就已經達到了3d 的水準(見Extended Table 7倒
數第二行),這是相當厲害的了。任何使用傳統方法在單機上達到這個水準的圍棋程式,
都需要花費數年的時間。在AlphaGo之前,Aja Huang曾經自己寫過非常不錯的圍棋程式,
在這方面相信是有很多的積累的。

  3. 估值網路

  AlphaGo的估值網路可以說是錦上添花的部分,從Fig 2(b)和Extended Table 7來
看,沒有它AlphaGo也不會變得太弱,至少還是會在7d-8d的水準。少了估值網路,等級分
少了480分,但是少了走棋網路,等級分就會少掉 800至1000分。特別有意思的是,如果
只用估值網路來評估局面(2177),那其效果還不及只用快速走子(2416),只有將兩個
合起來才有更大的提 高。我的猜測是,估值網路和快速走子對盤面估計是互補的,在棋
局一開始時,大家下得比較和氣,估值網路會比較重要;但在有複雜的死活或是對殺時,
通過快速 走子來估計盤面就變得更重要了。考慮到估值網路是整個系統中最難訓練的部

分(需要三千萬局自我對局),我猜測它是最晚做出來並且最有可能能進一步提高的。
  關於估值網路訓練資料的生成,值得注意的是文章中的附錄小字部分。與走棋網路不
同,每一盤棋只取一個樣本來訓練以避免過擬合,不然對同一對局而 言輸入稍有不同而
輸出都相同,對訓練是非常不利的。這就是為什麼需要三千萬局,而非三千萬個盤面的原
因。對於每局自我對局,取樣本是很有講究的,先用SL network保證走棋的多樣性,然後
隨機走子,取盤面,然後用更精確的RL network走到底以得到最正確的勝負估計。當然這
樣做的效果比用單一網路相比好多少,我不好說。

  一個讓我吃驚的地方是,他們完全沒有做任何局部死活/對殺分析,純粹是用暴力訓
練法訓練出一個相當不錯的估值網路。這在一定程度上說明深度卷積網路(DCNN)有自動
將問題分解成子問題,並分別解決的能力。

  另外,我猜測他們在取訓練樣本時,判定最終勝負用的是中國規則。所以說三月和李
世石對局的時候也要求用中國規則,不然如果換成別的規則,就需要 重新訓練估值網路
(雖然我估計結果差距不會太大)。至於為什麼一開始就用的中國規則,我的猜測是程式
設計非常方便(我在寫DarkForest的時候也是這樣 覺得的)。

  4. 蒙特卡羅樹搜索

  這部分基本用的是傳統方法,沒有太多可以評論的,他們用的是帶先驗的UCT,即先
考慮DCNN認為比較好的著法,然後等到每個著法探索次數多 了,選擇更相信探索得來的
勝率值。而DarkForest則直接選了DCNN推薦的前3或是前5的著法進行搜索。我初步試驗下
來效果差不多,當然他們的辦 法更靈活些,在允許使用大量搜索次數的情況下,他們的
辦法可以找到一些DCNN認為不好但卻對局面至關重要的著法。

  一個有趣的地方是在每次搜索到葉子節點時,沒有立即展開葉子節點,而是等到訪問
次數到達一定數目(40)才展開,這樣避免產生太多的分支,分散 搜索的注意力,也能
節省GPU的寶貴資源,同時在展開時,對葉節點的盤面估值會更準確些。除此之外,他們
也用了一些技巧,以在搜索一開始時,避免多個執行緒 同時搜索一路變化,這部分我們
在DarkForest中也注意到了,並且做了改進。

  5. 總結

  總的來說,這整篇文章是一個系統性的工作,而不是一兩個小點有了突破就能達到的
勝利。在成功背後,是作者們,特別是兩位第一作者David Silver和Aja Huang,在博士
階段及畢業以後五年以上的積累,非一朝一夕所能完成的。他們能做出AlphaGo並享有現
在的榮譽,是實至名歸的。

  從以上分析也可以看出,與之前的圍棋系統相比,AlphaGo較少依賴圍棋的領域知識
,但還遠未達到通用系統的程度。職業棋手可以在看過了寥寥 幾局之後明白對手的風格
並採取相應策略,一位資深遊戲玩家也可以在玩一個新遊戲幾次後很快上手,但到目前為
止,人工智慧系統要達到人類水準,還是需要大量 樣本的訓練的。可以說,沒有千年來
眾多棋手在圍棋上的積累,就沒有圍棋AI的今天。

  在AlphaGo中,增強學習(Reinforcement Learning)所扮演的角色並沒有想像中那
麼大。在理想情況下,我們希望人工智慧系統能在對局中動態地適應環境和對手的招式並
且找到辦法反制之,但是 在AlphaGo中增強學習更多地是用於提供更多品質更好的樣本,
給有監督學習(Supervised Learning)以訓練出更好的模型。在這方面增強學習還有很
長的路要走。

  另外,據他們的文章所言,AlphaGo整個系統在單機上已具有了職業水準,若是谷歌
願意開幾萬台機器和李世石對決(這對它來說再容易不過了,改個參數就行),相信比賽
會非常精彩。

  下面是根據讀者提問做的一些更新。

  問題1:“Alphago的MCTS做rollout的時候,除了使用快速走子,還用了搜尋樹的已
有部分,看起來像是AMAF/RAVE反過 來:AMAF是把快速走子的資訊傳導到樹的其它無關部
分,Alphago是把樹的其它無關部分拿來增強快速走子。我懷疑這是不是它棋力比其它
DCNN+MCTS強的原因之一。“

  這個辦法在解死活題的文章中出現過,會在一定程度上提高搜索效率,但是提高多少
還不知道。

  問題2:“rollout的走法品質變好可能會導致棋力下降。”

  這裡要分兩種情況,tree policy和default policy。在AlphaGo的文章裡面已經說過
了,tree policy的分佈不能太尖,不然在搜索時太過重視一些看起來的好著,可能使得
棋力下降。但是除了這種原因,一般來說tree policy變好棋力還是會變強的。

  default policy這邊,即(半)隨機走子到最後然後判分,就很複雜了,品質變好未
必對局面能估得更准。default policy需要保證的是每塊棋的死活大體正確,不要把死的
棋下成活的或者反之,而對大局觀的要求反而沒有那麼高。雙方完全可以配合著把每塊棋
下完,然後 轉戰另一塊,而不是說搶在對方前去別處占先手。

  (雷鋒網)

http://sports.sohu.com/20160314/n440358534.shtml

--
Tags: 圍棋

All Comments

Edward Lewis avatar
By Edward Lewis
at 2016-03-16T18:31
推一個 這篇是目前看過寫的最簡單而且清楚的
Irma avatar
By Irma
at 2016-03-20T08:05
而且他已經對論文內的幾個要點進行過實際測試
有些效果接近 有些實力差很遠(估計要需要很多時間調整)
Bethany avatar
By Bethany
at 2016-03-25T00:08
Edwina avatar
By Edwina
at 2016-03-28T18:48
推!這是不是說快走子品質不夠導致78手勝率誤判呢?
Olga avatar
By Olga
at 2016-03-31T06:23
Frederica avatar
By Frederica
at 2016-03-31T21:32
但最後又說rollout不能太高 看來AG可能有瓶頸?
George avatar
By George
at 2016-04-02T20:27
把 MCTS 漏算看成結果的話 前面是一環扣一環 都有可能
Charlie avatar
By Charlie
at 2016-04-04T19:26
最後應該是要補安全機制 自爆手不下
Emma avatar
By Emma
at 2016-04-05T21:49
"他們完全沒有做任何局部死活/對殺分析" 覺得這點很重要
從這裡看起來 安全機制是不可能的 因為這和理念背道而馳
Mary avatar
By Mary
at 2016-04-09T02:50
因為開發 AlphaGo 的目的應該是"讓電腦自己學會下圍棋"
Eartha avatar
By Eartha
at 2016-04-10T10:09
同意, DM原本的計畫還要把棋譜拿掉, 讓電腦從零開始學
Leila avatar
By Leila
at 2016-04-13T04:30
不過如果有一個死活超過一定量的職棋會走錯 他走子網路算
的局部死活會不會出問題啊?
Necoo avatar
By Necoo
at 2016-04-18T01:20
很有可能啊, 跟傳統方法有專門設計各式檢查的軟體相比
不想辦法再訓練個網路補強的確有可能變成弱點
Mia avatar
By Mia
at 2016-04-21T13:41
想想AG根本秀哉戰法嘛 一堆高手門徒(走子網路)幫他想 然後
Freda avatar
By Freda
at 2016-04-22T12:17
提供解果給他讓他選 只是以前門徒們要幾個月所以用暫停大
Frederica avatar
By Frederica
at 2016-04-26T20:23
法 現在靠GPU可以縮時用時還比小李少 XD
Isabella avatar
By Isabella
at 2016-04-30T18:40
樓上比喻挺妙的 只是徒子徒孫不需要高手 只是俗手而已
Barb Cronin avatar
By Barb Cronin
at 2016-05-04T01:09
"如果有一個死活超過一定量的職棋會走錯" 樣本數應該低到
Steve avatar
By Steve
at 2016-05-05T02:09
推,這篇是目前最清楚的技術文
Hedda avatar
By Hedda
at 2016-05-07T17:43
不足計吧?除非它跟自己對戰時也頻錯 但這樣會影響勝率
Cara avatar
By Cara
at 2016-05-11T02:55
他自行對戰有25%機率跟職棋一樣 假設這走子網路三段好了
Andrew avatar
By Andrew
at 2016-05-11T13:36
有一個死活高過半數的三段高手會走錯 那他的走子網路可能
會誤判吧?
Andrew avatar
By Andrew
at 2016-05-12T19:21
沒這麼簡單 @@ 希望走子網路強 但也要保留足夠隨機性
Caroline avatar
By Caroline
at 2016-05-17T04:07
這就是文章最後補充問題2裡面講的... 真的很複雜 @@
Ethan avatar
By Ethan
at 2016-05-17T10:04
難怪有人說像虛竹+段延慶 虛竹保持彈性 段延慶走子強
Brianna avatar
By Brianna
at 2016-05-22T01:59
這一了解真是有點佩服小李了根本是以一打百啊都下到發抖了
Irma avatar
By Irma
at 2016-05-24T04:43
又來一篇新的 "第四局AlphaGo败招的分析"
http://zhuanlan.zhihu.com/yuandong/20644427
Andrew avatar
By Andrew
at 2016-05-28T12:39
Yuandong Tian真的很不錯!
Xanthe avatar
By Xanthe
at 2016-06-01T06:14
不過rollout policy中的default policy論文裡有嗎?
Dora avatar
By Dora
at 2016-06-04T13:47
default policy應該是他在開發Darkforest的時候自己用的
Daniel avatar
By Daniel
at 2016-06-09T12:54
前面有講到他用 Pachi 的 default policy 替代 rollout
Sierra Rose avatar
By Sierra Rose
at 2016-06-11T10:21
作者好強喔 不過birdy版友要不要直接把文章發版上?
Hazel avatar
By Hazel
at 2016-06-12T21:49
我不敢確定轉載有沒有問題呀 轉連結是最保簽的
Hedy avatar
By Hedy
at 2016-06-13T01:40
good!
Joe avatar
By Joe
at 2016-06-15T23:20
感謝birdy590大,官方外的圍棋AI最高看法 :O
Joe avatar
By Joe
at 2016-06-18T10:29
推一個,夠專業
Erin avatar
By Erin
at 2016-06-23T04:26
第四局田淵棟的分析,有人轉到板上了 #1MvjmKPj

「戰勝自己」對於AlphaGo而言不只是口號

Odelette avatar
By Odelette
at 2016-03-14T15:12
※ 引述《Tkuei (itand#39;s me)》之銘言: : 這是台大資工林守德老師在他FB寫的一篇文章,是他看過Nature那篇論文之後寫的感想 : 個人認為高手解讀應該有助於釐清大家對AlphaGo行為模式的理解 : 原文連結:https://goo.gl/m8cBHn (FB連結,不喜誤入) 小 ...

今晚七點 人機大戰3.4盤實況

Hedy avatar
By Hedy
at 2016-03-14T14:53
https://www.twitch.tv/mariakoutei42 大家好我是葉罡廷7段 在推廣一下 今天晚上七點 人機大戰3.4盤實況 有空的棋友記得收看喔~ -- Sent from my Windows - ...

人機大戰第四局,神之一手降臨

Zanna avatar
By Zanna
at 2016-03-14T14:33
https://www.youtube.com/watch?v=g7dw6XHMnQ4 強者我朋友圍棋老“濕”錄製的賽後講解 連我這學過幾個月的初學者都覺得非常精彩 推薦給大家 他每天都會po 有興趣的話歡迎大家訂閱~ 希望圍棋能夠藉由這次人機大戰能更受到矚目 讓更多小朋友或是有興趣的人能更喜 ...

人機對戰的熱潮後,要如何推廣圍棋呢?

Elma avatar
By Elma
at 2016-03-14T13:59
※ 引述《MonkeyCL (猴總召)》之銘言: : 先自報棋力,弱弱的棋協2D : 人機大戰,為圍棋板史無前例超高人氣 : 雖然很多是一日棋迷,很多跟風而來 : 但無疑讓圍棋的能見度大大的躍昇 : 那麼3/15第五盤結束後 : 還有什麼棋局能夠讓這麼多人關注呢? : 如何讓圍棋的熱潮能延續下去? : 而不是 ...

中日韓的民間圍棋風氣盛行度

Dora avatar
By Dora
at 2016-03-14T13:54
先說個人之前只有看過棋靈王幾次 小學去過圍棋教室幾次就不去了 但覺得會下圍棋的人很帥又聰明的感覺 所以以下如果有不正確的地方 還請大家多多指教 感覺日本民間圍棋風氣應該不若以往? 從棋靈王一開始的劇情 佐為請阿光去下棋的時候 阿光的反應是:圍棋是老人的活動 我想可能或多或少代表著年輕一代的想法? 我自己身 ...