先說我是個兩日棋迷,可以等同於完全不懂圍棋(可能有十幾級?),
實在班門弄斧..不過想要來講一下我讀AlphaGo論文的心得,
(論文連結:http://www.willamette.edu/~levenick/cs448/goNature.pdf )
希望能對這裡的專業板友提供一點參考價值@@
然後這論文是一月發的,跟現在的AlphaGo很可能有所不同。
先說下面肯定有不少錯誤,請大家指正orz
(更新錯誤:感謝fgkor123的連結,寫得比我好百倍,不過好像原作者關了orz)
感謝countingtls版友的啟發,本來有些看不懂的地方被他指出重點突然就懂了XD
-
AlphaGo的運作原理(超級簡化版)的四個部分:
(1) SL策略網路: (SL=監督式學習)
從數十萬個棋譜學習,讓類神經網路猜測職業棋手在每個盤面會下的一步,不搜尋。
這裡可以達到57%的猜測準確率。
(讓業餘初段的旗手能自由翻閱棋譜來猜頂尖職業棋手的下一步應該可以做得遠遠更好?)
用這個網路而不搜尋,對Pachi(KGS業餘2段)有12%勝率。
(1')展示策略(rollout policy,亂翻一通XD):
類似SL策略網路,但使用簡單許多的棋盤特徵來做判斷。
展示策略只能達到24%的猜測準確率。
呼叫一次展示策略要用0.000002秒,相對於SL策略網路要0.003秒(1500倍)。
(2) RL策略網路: (RL=強化學習)
從SL策略網路開始自我改良,一直自己跟自己的變種下(還是不搜尋)。
每一局下到完為止,下的結果只問勝負不問差幾目。
最後進化出來得到的RL策略網路不搜尋對Pachi有85%勝率。
(大概在這裡可以想成只憑直覺完全不做計算而有至少業餘二段的棋手)
補註: SL和RL策略網路其實不是真的猜最有可能的一步,而是給出每個步數認為的機率。
(3) RL助值網路:
用RL策略網路自己跟自己下棋+搜尋來建立,
這次的目的是建立一個網路來對每個盤面賦予一個分數,
大概類似於『往後計算個幾步,問問RL策略網路對得到的盤面有何看法』。
這個分數誕生於RL策略網路給與的回饋,與目數差無直接關係。
(4) 真AlphaGo:
用(1)SL策略網路,(1')展示策略和(3)RL助值網路一起來做判斷基準,
(1), (3)的用法應該就是直接用來評分(兩者具體用法不同,不過我自己還不太懂),
但(1')的使用方法是以當下盤面開始自己跟自己下直到遊戲結束用得到的結果評分。
然後用蒙特卡洛樹搜尋法的變體。我個人的粗淺理解是:
(還蠻直覺的我覺得)
越好的落子點(機率越高&分數越高)就去計算越多步,
反過來用計算的結果來定義什麼是好的落子。
最後被計算最徹底的一步,AlphaGo就判定為當下最佳的一手。
-
討論:
1. 文章內有提到AlphaGo對CrazyStone(KGS業餘6段)讓四子的勝率是77%。
我是個大外行,不過如果假設是李世石是不是可以有高得多的勝率?
我的猜測是要讓AlphaGo很好的學會玩讓子還是有點障礙,
因為AlphaGo的力量本源是自己跟自己下來追求進步:p
而自己跟自己下讓子只會是一方慘電另一方,聽起來不是很有學習效率..
2. AlphaGo並不是嚴格意義上的追求最大勝率;讓我覺得很奇妙與神秘的,
它追求最大勝率以及下起來最像職業棋士(SL策略網路)。
就在下讀到的,它打一開始就不認得什麼是目數差。
但反過來說,它所學習的職業棋士顯然會考慮目數差,
所以某種意義上它還是有『考慮』到的...
3. 論文裡的AlphaGo並沒有提到劫,就算AlphaGo真的很討厭劫,
它多半也不知道他在討厭的東西是劫。
以我這個外行看來,一種可能是:
『引入這種又臭又長的結果會讓我在搜尋範圍內可預見的勝率變低。』之類的@@
我自己是認為教AlphaGo去刻意避免劫不大可能:他的計算公式是自己生成的,
人類很難重新去讀懂。加入刻意的人工設計多半會弱化它。
4. 由於(1')展示策略的存在,因此不管AlphaGo的搜尋計算(=蒙特卡洛樹)考慮多少盤面,
他其實還有加一個會粗糙的另外計算到底的設計。
所以如果一個劫所展開的變化『不難』,那不管後續有幾百步AlphaGo應該都是能照顧的。
(我猜這是AlphaGo理解循環劫的主要方式)