網路不打烊

人工智慧下出罕見妙手

從蒙地卡羅樹搜尋演算法到深度神經網路,層層剖析AlphaGo如何在圍棋比賽中出奇制勝。

撰文/葉平

網路不打烊

人工智慧下出罕見妙手

從蒙地卡羅樹搜尋演算法到深度神經網路,層層剖析AlphaGo如何在圍棋比賽中出奇制勝。

撰文/葉平


今年3月DeepMind公司的AlphaGo圍棋程式和多次世界冠軍南韓職業棋士李世乭九段的五局大戰,牽動了全球圍棋界和科技界的神經,筆者接觸電腦圍棋超過20年,自然不會錯過每局比賽的現場直播。2016年3月12日無疑會在科技史上留名,這一天AlphaGo取得第三勝,確定擊敗李世乭。五戰結束後,AlphaGo以4:1的成績獲勝。許多職業棋士說,AlphaGo下得很像人,如果只看棋譜,看不出AlphaGo持黑還持白。或許我們可以說AlphaGo在圍棋上通過了涂林測試,值得冠上人工智慧之名。


AlphaGo的致勝關鍵


AlphaGo的大架構仍然是MCTS,成功的關鍵是引進策略網路與估值網路兩個深度神經網路,大大提高MCTS的效能:策略網路減少需要考慮的落點,估值網路減少需要模擬的手數,結合起來,就能在更短的時間找到更佳的著手。而DeepMind團隊用了三個階段,來訓練這兩種網路。


第一階段是模仿,術語是監督式學習。DeepMind團隊用KGS圍棋伺服器上的3000萬盤棋來訓練策略網路,讓它在給定一個盤面時算出下一手人類會下在各個著點的機率。假設某個角落的定石(雙方都不吃虧的已知落子順序)在某一手之後有三種最常見的變化,策略網路學完後,這三個落點的機率應該是最高的。測試發現,策略網路預測人類落點的正確率達到57%,所需時間是三毫秒,我稱之為「仿人網路」。DeepMind另外訓練了快速仿人網路,只要兩微秒就能選出落點,但正確率只有24%。


有了仿人網路就可以下圍棋了,每一手可以依其預測的機率選定落點,比方說,有三個落點A、B、C機率各是10%、40%、50%,如果碰到完全相同的局面100次,大約有10次會下A、40次下B,依此類推。


第二階段是有獎賞的練功,術語是加強學習。練功就是左右互搏,左手是最新版的策略網路,右手從眾多舊版策略網路中任選一個。獎賞就是左右手下完一盤棋後,勝者走過的各著手機率上升,敗者走過的著手機率下降,調整後就誕生新版的策略網路。不斷練功,策略網路也就逐漸變強。練出來的策略網路對上仿人網路的勝率達到80%。


人一天不吃不喝也許能下完並檢討10盤棋,AlphaGo在「精神時光屋」裡練功,一天下個幾萬盤棋都沒問題,才能在短期內進步神速。


第三階段訓練形勢判斷的能力:給定一個盤面,如果之後雙方每手都是最佳著手的話,誰會贏?但沒人知道浩瀚的棋局變化中最佳著手是什麼,所以退而求其次,讓雙方都用策略網路下棋。因為策略網路每一手都有機率,勝負不固定,問題就變成:如果雙方都用策略網路下棋,勝率是多少?


為了回答這個問題,DeepMind建立了估值網路,從KGS的3000萬盤棋中每盤隨機挑一個盤面,讓策略網路接手互搏到終局,並記下勝者。然後拿這3000萬盤棋局用加強學習來訓練估值網路。有了估值網路,每個落點是好是壞就可以很快判斷,不需要拿策略網路模擬到終局,省下1萬5000倍的時間。