我對圍棋一竅不通,過去也對AI-Game沒有特別研究,拜近日來阿爾法狗(AlphaGo)重創人類在圍棋上領先的地位之賜,特別把這篇《自然》上的論文(〈Mastering the game of Go with deep neuralnetworks and tree search〉)拿來看了一下。
這是一篇非常有趣的論文,摘錄心得如下:
1.阿爾法狗(AlphaGo)決策過程跟過去的棋類程序不大一樣。它里面每一個stage單獨的方法都是不是新的創見,只是它組合這些方法的框架很特別。它的學習結果,(不管是深度神經網絡或是增強式學習)都只是中間產物,最后用來幫助搜尋最好的棋步。
2.??? 它的學習分三個階段,第一個階段天下棋手為我師,它主要希望建構一個13層的深度神經網絡來學圍棋專家的棋步,也就是根據這個盤面預測過去歷史資料中大家會怎么下。第一階段訓練出來的SL系統就可以下棋,但是結果不是很好,因為其實就只是個模仿專家的系統。
3。而第二階段超越過去的自己是一個增強式學習的系統,藉由跟過去的自己對戰來增進第一階段學到的棋步,而且需要跟過去不同版本的對手對戰避免overfitting。在這個增強式學習的階段,才首度把勝負當成reward來訓練模型。第二階段訓練出來的棋步已經有85%的機會贏過過去已知最強的圍棋程序(段數約二段)。
4.??? 第三階段我戲稱為「機率算盡太聰明」。其宗旨在預估每個盤面的價值。所謂盤面的價值,就是從這個盤面開始,假設對手能夠窮舉所有可能的下法找到最佳解,AlphaGo的獲勝機率有多高。當然我們無法知道無懈可擊的對手會怎么下,所以退而求其次,AlphaGo模擬跟自己下的過程決定每個盤面的勝率有多少,然后用有限的盤面與勝率當成訓練數據再去訓練一個深度神經網絡估計所有盤面的價值。在這個階段還有一個招數,也就是這些當成訓練資料不能用第一階段數據庫搜集的棋局盤面,因為同一局的盤面有高的相關性以及一樣的獎勵,會造成學習中的記憶效應,而是要用「與自己下棋」中每一局單獨抽取的獨立盤面來訓練。
前三個階段都是阿爾法狗(AlphaGo)的訓練過程,這些都是offline可以做的。訓練好的阿爾法狗(AlphaGo)已經可以贏過一般的對手。
5.??? 雖然訓練好的第三階段阿爾法狗(AlphaGo)可以仗劍大殺四方,但是還不足以贏過高段的對手。因為實戰中的盤面有很大的機率是在訓練中沒有看過(圍棋的盤面總數高達250的150次方之多),對于它們價值的預測其實不一定準。真正在實戰中,AlphaGo采取「靈機應變,無招勝有招」的戰術,不堅持使用之前學習到的棋步,反而利用過去學到的棋步結合了蒙地卡羅樹狀搜尋(MCTS)的方法找出最好棋步。也就是在實戰中對現在盤面進行模擬下棋(再度假設對手就是自己),在模擬的過程中把所有經歷的盤面重新計算它們的價值,在有限的思考時間內盡量進行模擬,最后選擇模擬過程中最穩定的棋步(不是價值最高的棋步)。在這個過程中需要快速的運算,越多的仿真就會讓盤面價值的計算越準,阿爾法狗(AlphaGo)利用平行化計算加上GPU達成高速運算的目的。
6.??? 算法總結:阿爾法狗(AlphaGo)第一階段的訓練過程就像是把一個人關在房間里,不告訴他圍棋是什么,也不告訴他圍棋的規則,甚至連圍棋最后怎么算勝負都不跟他說,只拿一大堆過去專家下棋的棋譜給他看。然后等它看完棋譜后,第二階段就讓他自己跟自己下棋,從中學習更好的下法,最后第三階段它只要看到某個盤面就知道這個盤面的勝率,雖然從頭到尾它還是不知道圍棋的規則。
真正在下棋的時候,阿爾法狗(AlphaGo)還是沈浸在自己的世界里。每當對手下完一步,它就開始模擬接下來可能的數步(模擬的時候就是假設對手是自己,所以對手是誰對AlphaGo而言完全不重要,他也完全不去預測對手會怎么下),在模擬的過程中,它就重新對于未來可能面對棋局來估算勝率,最后選擇最穩定最有可能獲勝的棋步。它的風格就像是金庸筆下的獨孤九劍,不拘于定式,而是當下根據對手的招式才決定最佳的進擊策略。
7.阿爾法狗(AlphaGo)并沒有針對對手的棋步訓練系統,我不確定在他使用的數據里面有沒有李世石的棋譜,不過就算是有,所占的比例也應該微乎其微。「自我學習」(與自己對戰)才是AlphaGo的主軸。
8.??? 看起來AlphaGo所使用的所有招數跟方法是缺一不可,論文里面還有一些決策(decision)的細節并沒有講清楚,但是相信是嘗試錯誤后決定的。
后記:阿爾法狗(AlphaGo)的唯一目的是最后的勝利,所以在過程中它并不在乎下某一子的短期利益(會贏多少地盤),它甚至對于這些短期損益完全沒有認知,在訓練的過程中也不在乎贏幾目。在與人類對決的時候,我們看到棋評會指出它犯了一個失誤」,或是它不喜歡某種策略如打劫。其實如果了解AlphaGo的決策模式,就會知道他其實沒有策略以及失誤的概念,對它而言,棋類等游戲就是對于每個盤面精確且快速的估算其通往勝利的機率。
因為阿爾法狗(AlphaGo)在下棋的過程中會看到越來越多的盤面,所以它只會愈來愈進步。未來如果人類想從與其對奕中取得勝利,必須要能夠走出前所未見的局面,降低它對于盤面估測的準確度才會有機會。這也不是完全不可能,因為圍棋的復雜度太高。其實要更理解AlphaGo,必須要去研究它present每一個盤面所用的features,我因為不懂圍棋,所以沒有辦法評論。但是理論上如果它遺漏了某個重要的特征,表示它無法利用這個信息判斷盤面的價值,人類可以利用這個信息去進攻,盡量去創造某個比較不容易被已有的feature來表達的盤面。
公子義【微信號gongzi348】80后,90后心理研究專家,4年心理學,9年大數據研究者,專注于移動互聯網,大數據究狂熱愛好者,熱愛寫作。原創文章,未經許可,嚴禁轉載,違者追究法律責任。