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

看板GO作者 (it's me)時間8年前 (2016/03/14 11:49), 8年前編輯推噓15(15018)
留言33則, 13人參與, 最新討論串1/2 (看更多)
這是台大資工林守德老師在他FB寫的一篇文章,是他看過Nature那篇論文之後寫的感想 個人認為高手解讀應該有助於釐清大家對AlphaGo行為模式的理解 原文連結:https://goo.gl/m8cBHn (FB連結,不喜誤入) 「戰勝自己」對於AlphaGo而言不只是口號 ─ “Mastering the game of Go with deep neural networks and tree search” Nature 2016 讀後感想 SHOU-DE LIN·2016年3月12日 我對圍棋一竅不通,過去也對AI-Game沒有特別研究,拜近日來AlphaGo重創人類在圍棋上 領先的地位之賜,特別把這篇Nature上的論文拿來看了一下。 這是一篇非常有趣的論文,摘錄心得如下: 1. AlphaGo 決策過程跟過去的棋類程式不大一樣。它裡面每一個stage單獨的方法都是不 是新的創見,只是它組合這些方法的framework很特別。它的learning結果(不管是DNN或 是RL)都只是中間產物,最後用來幫助搜尋最好的棋步。 2. 它的learning分三個階段,第一個階段「天下棋手為我師」,它主要希望建構一個13 層的DNN來學「圍棋專家」的棋步(policy),也就是根據這個盤面預測過去歷史資料中 大家會怎麼下。第一階段訓練出來的SL系統就可以下棋,但是結果不是很好,因為其實就 只是個模仿專家的系統。 3. 而第二階段「超越過去的自己」是一個Reinforcement Learning的系統,藉由跟過去 的自己對戰來refine第一階段學到的policy,而且需要跟過去不同版本的對手對戰avoid overfitting。在這個RL的階段,才首度把勝負當成reward在訓練model。第二階段訓練出 來的policy已經有85%的機會贏過state-of-the-art二段的程式。 4. 第三階段我戲稱為「機率算盡太聰明」。其宗旨在預估每個盤面的價值。所謂盤面的 價值,就是從這個盤面開始,假設對手能夠窮舉所有可能的下法找到最佳解,AlphaGo的 獲勝機率有多高。當然我們無法知道無懈可擊的對手會怎麼下,所以退而求其次, AlphaGo模擬跟自己下的過程決定每個盤面的「勝率」有多少,然後用有限的盤面與勝率 當成Training data再去Train一個DNN來估計所有盤面的價值。在這個階段還有一個trick ,也就是這些當成training data不能用第一階段資料庫蒐集的棋局盤面,因為同一局的 盤面有高的dependency以及一樣的reward,會造成學習中的「記憶」效應,而是要用「與 自己下棋」中每一局單獨抽取的獨立盤面來訓練。 5. 前三個階段都是AlphaGo的「訓練」過程,這些都是offline可以做的。訓練好的 AlphaGo已經可以贏過一般的對手。 6. 雖然訓練好的第三階段AlphaGo就可以仗劍大殺四方,但是還不足以贏過高段的對手。 因為實戰中的盤面有很大的機率是在訓練中沒有看過(圍棋的盤面總數高達250的150次方 之多),對於它們價值的預測其實不一定準。真正在實戰中,AlphaGo採取「靈機應變, 無招勝有招」的戰術,不堅持使用之前學習到的棋步,反而利用過去學到的policy 結合 了蒙地卡羅樹狀搜尋(MCTS)的方法找出最好棋步。也就是在實戰中對現在盤面進行模擬下 棋(再度假設對手就是自己),在模擬的過程中把所有經歷的盤面重新計算它們的價值, 在有限的思考時間內盡量進行模擬,最後選擇模擬過程中最穩定的棋步(不是價值最高的 棋步)。在這個過程中需要快速的運算,越多的模擬就會讓盤面價值的計算越準, AlphaGo利用平行化計算加上GPU達成高速運算的目的。 7. 演算法總結:AlphaGo第一階段的訓練過程就像是把一個人關在房間裡,不告訴他圍棋 是什麼,也不告訴他圍棋的規則,甚至連圍棋最後怎麼算勝負都不跟他說,只拿一大堆過 去專家下棋的棋譜給他看。然後等它看完棋譜後,第二階段就讓他自己跟自己下棋,從中 學習更好的下法,最後第三階段它只要看到某個盤面就知道這個盤面的勝率,雖然從頭到 尾它還是不知道圍棋的規則。 真正在下棋的時候,AlphaGo還是沈浸在自己的世界裡。每當對手下完一步,它就開始模 擬接下來可能的數步(模擬的時候就是假設對手是自己,所以對手是誰對AlphaGo而言完 全不重要,他也完全不去預測對手會怎麼下),在模擬的過程中,它就重新對於未來可能 面對棋局來估算勝率,最後選擇最穩定最有可能獲勝的棋步。它的風格就像是金庸筆下的 獨孤九劍,不拘於定式,而是當下根據對手的招式才決定最佳的進擊策略。 8. AlphaGo並沒有針對對手的棋步訓練系統,我不確定在他使用的Data裡面有沒有李世石 的棋譜,不過就算是有,應該占的比例也應該微乎其微。「自我學習」(與自己對戰)才 是AlphaGo的主軸。 9. 看起來AlphaGo所使用的所有Tricks跟方法是缺一不可,paper裡面還有一些decision 的detail並沒有講清楚,但是相信是嘗試錯誤後決定的。 10. 後記1:AlphaGo的唯一目的是最後的勝利,所以在過程中它並不在乎下某一子的短期 利益(會贏多少地盤),它甚至對於這些短期損益完全沒有認知,在訓練的過程中也不在 乎「贏幾目」。在與人類對決的時候,我們看到棋評會指出它犯了一個「失誤」,或是它 不喜歡某種策略如「打劫」。其實如果瞭解AlphaGo的決策模式,就會知道他其實沒有「 策略」以及「失誤」的概念,對它而言,棋類等遊戲就是對於每個盤面精確且快速的估算 其通往勝利的機率。 11. 後記2:因為AlphaGo在下棋的過程中會看到越來越多的盤面,所以它只會愈來愈進步 。未來如果人類想從與其對奕中取得勝利,必須要能夠走出前所未見的局面,降低它對於 盤面估測的準確度才會有機會。這也不是完全不可能,因為圍棋的複雜度太高。其實要更 理解AlphaGo,必須要去研究它present每一個盤面所用的features,我因為不懂圍棋,所 以沒有辦法comment。但是理論上如果它遺漏了某個重要的feature,表示它無法利用這個 資訊判斷盤面的價值,人類可以利用這個資訊去進攻,盡量去創造某個比較不容易被已有 的feature來表達的盤面。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.29.101 ※ 文章網址: https://www.ptt.cc/bbs/GO/M.1457927381.A.569.html

03/14 11:58, , 1F
所以昨天李世石真的嚇到了電腦 XD
03/14 11:58, 1F

03/14 12:08, , 2F
Google:小李找到bug 加十分(X)
03/14 12:08, 2F

03/14 12:09, , 3F
電腦也才兩歲,被大人打當然會嚇到。
03/14 12:09, 3F

03/14 12:24, , 4F
考慮到AlphaGo的練習量,能嚇到他真是不容易
03/14 12:24, 4F

03/14 12:27, , 5F
意思是讓alphago多累積前所未見的棋路,未來人類想打敗
03/14 12:27, 5F

03/14 12:27, , 6F
alphago會越來越困難
03/14 12:27, 6F

03/14 12:27, , 7F
如果把圍棋所有的變化資料餵給電腦理論上訓練出來的阿發狗
03/14 12:27, 7F

03/14 12:28, , 8F
應該是圍棋之神的等級 永遠不敗 但實際上只有3000萬盤的訓練
03/14 12:28, 8F

03/14 12:29, , 9F
佔全部變化10的170方大概只有0.00000...(162個0)..1 所以還能
03/14 12:29, 9F

03/14 12:31, , 10F
未來開發出更好的演算法來降低運算複雜度,再過幾年人類
03/14 12:31, 10F

03/14 12:31, , 11F
想打敗電腦就很難了,雖然目前演算法能打敗alphago也只剩
03/14 12:31, 11F

03/14 12:31, , 12F
少數幾人了....
03/14 12:31, 12F

03/14 12:32, , 13F
擊敗 如果能輸入總變化量的1% 應該就很接近圍棋之神的境界了
03/14 12:32, 13F

03/14 12:43, , 14F
代表小李真的下出電腦沒完全考慮的一手
03/14 12:43, 14F

03/14 12:47, , 15F
所有的盤面都算出來並儲存也不代表AG會走對吧?她的決策機
03/14 12:47, 15F

03/14 12:49, , 16F
制還是有可能擊敗 只是人要贏的容錯率也會低到一個境界
03/14 12:49, 16F

03/14 13:15, , 17F
就像我打魔獸 用投石車飛船開樹林電腦就被打暈了一樣
03/14 13:15, 17F

03/14 13:15, , 18F
因為電腦平常根本練不到的怪招 一遇到就會傻釣
03/14 13:15, 18F

03/14 13:18, , 19F
找到這個歐美棋評: https://goo.gl/k0IwTu (英文)
03/14 13:18, 19F

03/14 13:19, , 20F
主要認為李世石是有計畫的試探出弱點,我覺得評論很全面
03/14 13:19, 20F

03/14 13:20, , 21F
(從只懂演算法不懂圍棋的觀點orz)不知道有沒有人想翻譯
03/14 13:20, 21F
懂圍棋的人也很震撼吧,看昨天古力一直驚呼「神之一手」就知道了 他們旁觀的可以擺盤反覆推敲都沒有想到,我想這一步也不只電腦弱點而以囉 ※ 編輯: Tkuei (140.112.29.101), 03/14/2016 13:42:26

03/14 13:48, , 22F
嗯,我不是說李九段依賴找弱點,比較像人類棋手間迫使
03/14 13:48, 22F

03/14 13:48, , 23F
對方走向不擅長的局勢那樣?
03/14 13:48, 23F
參考上面wukevinboy大大的解析文,感覺昨天李世石是有抓了AlphaGo的習慣 (愛扳不愛長之類的) 然後設計出一個比較大可以攻殺的戰場(中上那一塊),再用擅長的手法決勝 那「神之一手」就真的是個人棋力使然,AG沒算到的可能性很高 小區域攻防AG是絕對沒問題的,昨天的大區域決戰看起來有成功的讓AG露出破綻 就看看明天李世石會不會再用同樣的戰略了

03/14 13:52, , 24F
好文,but那個English讓人read不是很frequently
03/14 13:52, 24F
我想老師是發在自己FB所以就用平常講話的口吻了,身為一個資工的研究生是很習慣啦XD ※ 編輯: Tkuei (140.112.29.101), 03/14/2016 14:22:09

03/14 14:36, , 25F
這個領域的專用術語用英文早就是習慣了
03/14 14:36, 25F

03/14 14:58, , 26F
如果D大那個英文棋枰猜測為真 人如果跟電腦有一樣的資訊
03/14 14:58, 26F

03/14 14:59, , 27F
(MCTS勝率表) 其實是可以做出更好的選擇的樣子 AG單純選最
03/14 14:59, 27F

03/14 15:00, , 28F
高勝率點看來並非真實的最佳解
03/14 15:00, 28F

03/14 15:02, , 29F
而且若是這個缺點為真 單純增加百倍計算力多算一兩步似乎
03/14 15:02, 29F

03/14 15:03, , 30F
也無法改進 因為78手贏棋機率就是比較低被捨去 但是低是因
03/14 15:03, 30F

03/14 15:05, , 31F
為順序一定要對 可能得對順序對機率影響的權重改一下 但又
03/14 15:05, 31F

03/14 15:05, , 32F
會影響其他已成功的判斷
03/14 15:05, 32F

03/14 20:23, , 33F
看完更佩服李世石了
03/14 20:23, 33F
文章代碼(AID): #1MvZJLLf (GO)
文章代碼(AID): #1MvZJLLf (GO)