[心得] 電腦圍棋的小常識消失
AlphaGo的問世,使得有些人會很好奇怎麼這麼強,甚至覺得懷疑,提出造假論
我想就我的理解來讓大家稍稍體會AG或一般程式裡面的運作模式。不過,因為
我不是專家,同時又要寫的通俗,難免背離實際設計難度而過度簡化,歡迎指正
與補充。
整個系統主要有幾個大的模組,簡介如下:
形勢判斷模組(value network)
這個模組要回答一個很單純的問題:給你看一個中盤,請問雙方獲勝機率為何?
訓練方式就是給非常非常大量的棋譜庫,隨機展示(中盤畫面,最終輸贏)這樣
的案例給電腦去學習,學習的方法是最近人工智慧的大熱門 deep learning,有
興趣且英文好的玩家推薦去看 udacity 上 google 專家的線上教學。
下一步去哪兒模組(policy network)
這個模組要回答一個很單純的問題:給你看一個中盤,請問棋盤上每個位置成為
下一手的機率為何?訓練方式就是給非常非常大量的棋譜庫,隨機展示(中盤畫
面,下一手)這樣的案例給電腦去學習。
賽局樹(Game tree)
用張圖舉個例子 http://imgur.com/XwQ6tmm

上圖:假設圓圈是該黑棋下,方塊是該白棋下,假設現在“下一步
模組”會提供兩個落子的可能性,黑棋任選其一下了之後,就會出
現兩個可能的盤面情形(分支),接著,請出“形勢判斷模組”來
打分數,分別給出-6和-11的得分,如果黑棋只滿足於最最簡單的
計算,那麼它就會挑-6這個相對較好的發展方向來落子,問號的位
置將被填入-6。
中圖:假設黑棋認為時間充裕或他的硬體強大,可以做更深入的
計算。那他或許覺得把-6這個局勢再多設想一步比較保險,於是
現在從-6這個盤面開始考慮,是該白棋落子了。同樣透過“下一步
模組”來提供兩個落子的可能性,白棋任選其一下了之後,就會出
現兩個可能的盤面情形,接著,請出“形勢判斷模組”來打分數,
分別給出21和-8的得分。
下圖:因為要站在白棋的角度思考,他想把盤面弄的對黑棋不利
,21和-8中,白棋應會選擇-8,於是,在第一張圖時原本認為導
向-6這個局面其實再更進一步思量之後,局面繼續發展方向沒那
麼樂觀,實際上只有-8分而已。至此,最頂層的黑棋便必須在-8
或-11中挑較佳的下,所以下圖裡面的問號將會被填上-8,代表以
黑棋目前的細算能力,他認為他會把棋盤導向最下排右邊那個得
分-8的盤面。
以此類推,輪流請出兩個模組的結果,就是這棵樹會越長越多層。
如果你的時間充裕或硬體強大,也可以讓“下一步模組”每次提供
三個以上的落子位置來候選,這樣樹就會長得比較寬(分支較多)
,又或者,你可以一次又一次的使用“下一步模組”來多往下發展
幾步,這樣樹就會長得比較深比較多層。總之,你有多少養分,就
可以種多大的樹,隨時可以喊停,不用去窮盡所有棋局變化,這樣
做是不切實際的。
最大最小法則(Minmax rule)
以這個圖作為例子 http://imgur.com/TsmiK04

現在該黑棋下,他當然希望局面分數越高越好(Max),但是他也
知道白棋不會讓他如意,會試圖把局面搞得越難看越好(Min),
於是,即使在他這棵0~4層的細算樹裡面也有著高達20分的分支,
黑棋是不可妄想去走到那個盤面的,他會從-8和-10選一個相對高
的,也就是問號的位置會被填入-8,代表目前黑棋可達到的最好形
勢。備註一下這裡的分數只是網路上隨便抓的圖,真正的分數可以
想成是落在0~1的獲勝機率。當然,這個最大最小法則只是最粗淺
的賽局策略而已,實際上AlphaGo有更好的細算方法,叫做蒙地卡羅
樹搜尋(Monte Carlo tree search),複雜許多,這裡就不細說了。
結語
近五年由於 deep learning 的問世,提煉出大量數據之精華的效果也變得超級好,
人工智慧的趨勢就是:得大數據/超級電腦者,得天下。舊的工程方法引入 deep
learning 改良後效能也都是巨幅提升,不僅僅是在電腦圍棋這塊而已。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.202.59
※ 文章網址: https://www.ptt.cc/bbs/GO/M.1454143782.A.438.html
推
01/30 17:00, , 1F
01/30 17:00, 1F
→
01/30 17:02, , 2F
01/30 17:02, 2F
→
01/30 17:03, , 3F
01/30 17:03, 3F
→
01/30 17:04, , 4F
01/30 17:04, 4F
→
01/30 17:05, , 5F
01/30 17:05, 5F
→
01/30 17:07, , 6F
01/30 17:07, 6F
推
01/30 18:15, , 7F
01/30 18:15, 7F
的確是 min-max tree 的圖啊,但 mcts 指的是用 sampling 來生成 tree,平不平衡
也不是重點(也容許長成平衡的情況出現),如果要精確的圖,參考 wiki 會比較詳盡
推
01/30 18:36, , 8F
01/30 18:36, 8F
→
01/30 18:36, , 9F
01/30 18:36, 9F
→
01/30 18:36, , 10F
01/30 18:36, 10F
→
01/30 18:36, , 11F
01/30 18:36, 11F
你說的對,但是那張圖也沒長到一樣深,即使長到一樣深,你也無法說 mcts 絕對長不
出這樣的樹吧,機率問題而已。
推
01/30 18:48, , 12F
01/30 18:48, 12F
→
01/30 18:48, , 13F
01/30 18:48, 13F
→
01/30 18:48, , 14F
01/30 18:48, 14F
→
01/30 18:48, , 15F
01/30 18:48, 15F
→
01/30 18:48, , 16F
01/30 18:48, 16F
→
01/30 18:48, , 17F
01/30 18:48, 17F
→
01/30 18:52, , 18F
01/30 18:52, 18F
→
01/30 18:52, , 19F
01/30 18:52, 19F
→
01/30 18:52, , 20F
01/30 18:52, 20F
→
01/30 18:52, , 21F
01/30 18:52, 21F
→
01/30 18:52, , 22F
01/30 18:52, 22F
→
01/30 18:53, , 23F
01/30 18:53, 23F
嗯,沒錯,這圖有錯,節點上面的分數是變動的,會在下方有節點更動的時候,重新
更新,只是要找一組圖來說明這個過程,我有點懶了。就讓人們看推文來發現錯誤好了。
圖上就只是想要呈現一棵樹,至於在文字部分描述樹會視情況來生長,才是 mcts 的
宗旨。
在這補充這樹是由某組條件來決定是否繼續增長的,例如,打分太低的分支變化就沒有
繼續往下生長探索的必要了。你的說法確實比較精確。謝謝。
推
01/30 19:33, , 24F
01/30 19:33, 24F

謝謝補充,能看論文圖說的就看那邊比較對,我是簡化得變形了...
推
01/31 10:40, , 25F
01/31 10:40, 25F
推
01/31 11:54, , 26F
01/31 11:54, 26F
→
01/31 21:22, , 27F
01/31 21:22, 27F
推
02/01 14:01, , 28F
02/01 14:01, 28F
已修正錯誤
※ 編輯: aaaba (223.136.121.147), 02/02/2016 23:50:47
推
02/03 10:08, , 29F
02/03 10:08, 29F
推
02/04 01:20, , 30F
02/04 01:20, 30F
推
02/04 03:21, , 31F
02/04 03:21, 31F
→
02/04 03:23, , 32F
02/04 03:23, 32F
→
02/04 03:25, , 33F
02/04 03:25, 33F
→
02/04 03:25, , 34F
02/04 03:25, 34F
推
02/04 12:38, , 35F
02/04 12:38, 35F
推
02/04 13:27, , 36F
02/04 13:27, 36F
討論串 (同標題文章)
GO 近期熱門文章
PTT遊戲區 即時熱門文章
38
57
37
55