這裡是記錄個人的旅行,以及影像、地圖、軌跡等資訊。如果您覺得本站的文章或資訊對您有所幫助,請幫忙點擊Google的廣告或右邊的廣告,因為寫東西也是要花時間和力氣,購買儲存空間也是要費用,能夠透過您的點擊得到些微的幫忙和贊助,對於作者的支持是非常有幫助的。

3/11/2016

圍棋, AlphaGo, 與 Deep Machine Learning

打到一半 Mac 跟我說四國語言.....(當然不是 Hello, Willkommen ) 重來 QQ

這篇文章可能要有 CS 背景。純屬個人理解和自己的解釋,如果有錯請指正或google文獻

一般普遍常見 ML (Machine Learning) 應用是先用大量數據訓練,然後回答是否或是信心程度。而遊戲的應用,以最簡單的 ML 玩 Mario (瑪麗兄弟) 來舉例,他並不需要收集大量玩家的玩法來訓練。而是讓 ML 自己去玩(每次選擇只有上下左右跳) 然後 search tree 只要每次進度都比前次更往前進一個距離 (搜尋深度不需要太深),最後就可以學到一組連續的組合,可以不 game over 且抵達終點。

而圍棋也可以這樣來玩,但光 input 組合數量和深度,就足夠把電腦算到爆算都算不完。即便 search tree 選用 MCTS,但是 random sampling 數量 * 搜尋深度還是太多,即便用當今電腦也需要非常大量的計算能例如超級電腦。所以需要定義一個好的 sampling function 來對 input 作選擇。先前 MoGo, CrazyStone, Zen 都是靠人去定義這組 function 而影響 MCTS 結果,進而決定電腦程度。人類一直去學習怎樣定義好的 function,一直去 refine 這組 sampling function 最終一定可以越來越強,缺點是過程太慢而且圍棋大師不是人人都會寫電腦 function,即便如此這個 function 也是固定死的。而 ML 就是拿來應用在學習和自動改善這個 random sampling 過程。AlphaGo 設計了 value network 跟 policy network 來 guide MCTS。因為是 ML 所以一樣需要棋譜來訓練一開始的 value network 跟 policy network。等到電腦程度到達一定水準,就換電腦程式自己對奕,產生棋譜來 reinforce 前面的 value & policy network。

但問題來了,人類兩個程度差的人對奕久了也不會成大師,一般人跟李九段對奕久了也不可能變九段。一開始初始 value & policy network 得到 sampling 很差,所以 MCTS 要找很久,靠程度差的 function 砍樹後剩下的還是太多 search space,不過沒關係。這些電腦對奕不管輸或贏的棋譜都拿來重新加強 value & policy network,把先前 MCTS 結果"記"下來在 value & policy network,下次 sampling function 遇到類似的走法,就知道下次該砍的樹枝更多或是該優先嘗試的分支,進而可以考慮更深遠的優略勢。

雖然一開始 16 萬份棋譜相對大數據而言其實不多,但至少是有用的 training data 可以把 value & policy network 訓練到一定水準。如果一開始就讓兩個笨蛋白癡(MCTS + real random sampling)電腦去對戰,要讓電腦自己學習好的走法,一定不能限制搜尋時間。如果限制搜尋時間找出來解不佳。就算不限制搜尋時間只能算到某種計算機極限,找出來還是搜尋深度不足,差的走法,這樣電腦不能更快也無法學到更深遠的走法來 reinforce network。

再來電腦的 NL 可以學到多少或是真的能不能 master Go 不得而之,但是只要電腦的 NL 可以記到超過人類意識上可以記的,MCTS 不受體力和情緒影響,就勝過人類實際能力會受體力跟壓力影響。人類依然可以勝過電腦,但是這種雲端時代,分散版 AlphaGo 也才用 1202 CPU 跟 176 GPU。電腦也許不能真的 master Go,但是再學習後擊敗人類機率應該只會越來越高。