“我們現在的策略是蒙特卡洛樹搜索,由于圍棋的可能性太多,完全樹搜索是不可能做到的。”黃士杰打開代碼文件夾,為孟繁岐介紹現在的進度情況。
前面說到,圍棋有361!種下法,這個數量就是一個樹型的結構。
從最初的一個節點,分為361個子節點,每個子節點又各自擁有360個子節點,如此循環往復。
第二層樹有十幾萬種情況,第三層樹就有四千六百萬種情況了。
而這個無敵巨大的樹,竟然有三百多層。
別說完全遍歷,就是遍歷上百層也是很難處理的。
“這個數字太過龐大了,即便我們通過種種方式,預先排除了不合法的情況,余下的合理可能性仍舊太過夸張。一個天文數字的百分1.2,仍舊是天文數字。”戴密斯介紹道。
一百倍的差距,在這里都是杯水車薪。
樹每向下搜索一層,就代表著可以多往后考慮一步。
由此可以看出,每多考慮一步的代價都是成倍增長的。
蒙特卡洛搜索樹就是阿爾法狗目前兩板斧中的走子演算。
如果只是使用深度神經網絡為基礎的策略網絡,那么模型只具備在當前局面下落子的能力,實力僅僅只有elo2000分左右,遠遜于高端棋手。
蒙特卡洛搜索樹,賦予了它長遠思索的能力。
它可以從當前的局面開始自我左右互博,黑白兩邊隨機落子,直到有一方取勝,分出勝負為止。
那么此時就具備了一組后續對弈的棋譜,雖然機器不理解這一系列落子的原因,但最終的勝負代表著這兩種下法的好壞。
贏的那一組順序,此后被隨機到的可能性就會變大,雖然這兩組可能都是臭棋,但好歹也還是分出了一名勝者不是?
不斷重復上述過程,那么能夠導致最后獲勝的那些落子位置的得分就會越來越高,直到進行了數十萬次模擬。
模型才會根據那個得分最高的位置落子,真正下了一步棋,這便是走子演算。
你下一步棋,想了一分多鐘,想了大概十幾步。
阿爾法狗下一步棋,想了一分多鐘,已經在自己腦中自行對弈了后續十幾萬種可能了。
光是下一步棋的思考量,就比人類一輩子能下總盤數還要多。
柯潔一年4000盤網棋就已經被人津津樂道,可見人的上限,一輩子也就十來萬盤。
這種模擬搜索有兩點好處,一是可持續運行。
這種算法在對手思考對策的時候自己也可以思考對策。
在對方思考落子的過程中,蒙特卡洛搜索樹也可以繼續進行演算,對手的下的這步棋,很可能也在之前演算的高分落子選擇內。
另一點,蒙特卡洛搜索樹是完全可并行的算法。
這也就意味著海量的設備可以極大地增強阿爾法狗的威力,繼續拓展它能力的極限。
黃士杰將蒙特卡洛搜索樹和策略網絡相結合,就可以把搜索樹最基本的隨機落子改為根據策略網絡計算去落子,然后以新的方式來計算分數。
這樣極大地增加了搜索的效率,因為很顯然棋盤上并不是每一個點都有必要去做這樣的搜索。
完全隨機的話,下在什么位置都是有可能的,無法避免這種計算資源的浪費。
但是,依賴于策略網絡,同樣會導致別的問題。
那就是策略網絡覺得沒什么可能會下的位置,搜索樹基本不會去考慮。
李世石所謂的“神之一手”,其實就是落在了阿爾法狗覺得不大可能會下的位置。
這個分支的可能性太低,導致在搜索樹的演算當中基本沒有出現,阿爾法狗的應對大失水準。
不過這兩者的結合,目前也只能勉強達到職業初段的水準而已,距離真正的目標還有一定的差距。
蒙特卡洛樹搜索是黃士杰的博士課題,他在這個方向上深耕已久。
孟繁岐不準備在這個方向上做什么嘗試,因為他非常清楚,真正使得阿爾法狗和其他游戲智能成為數字神明的,是新時代的強化學習算法。
最為核心的技術內容,強化學習,此時還沒有加入到阿爾法狗當中。
強化學習是一類算法,可以讓計算機實現自我學習:從一開始什么都不懂,腦袋里沒有一點想法,通過不斷地嘗試,從錯誤中學習,最后找到規律,學會了達到目的的方法。
這個學習過程就是一個完整的強化學習過程。
其實這個過程對于正常普通的人類來說也很熟悉,普通人經常通過類似的方式來學習新的知識和技能。
只不過通常來說,人類會有導師,書本或者其他形式的東西來教導我們具體應該怎么做。
如何做選擇,如何分析局面,在某些時候又有什么技巧。
這些內容會非常具體。
計算機的學習過程也會有這樣的一個[老師],但這個老師不會教它做任何事情,一切都由機器自由發揮,它只會給你的行為去打分。
那機器應該以什么形式學習這些現有的資源,或者說怎么樣只從分數中學習到它們應該怎樣做決定呢?
很簡單,只需要記住那些高分,低分對應的行為,下次用同樣的行為拿高分,同時盡量避免低分的行為。
這就是強化學習的核心思想,鼓勵想要看到的行為和局面,懲罰不想看到的。
可以看出一種行為會獲得怎樣的分數是十分重要的事情。
如果你不能制定出非常嚴格的得分方式和懲罰方式,那么人工智能就會采用各種你意想不到的方式來獲得分數。
比如你讓它學俄羅斯方塊,它會迅速落下每一塊方塊并在游戲即將失敗的時候按下暫停鍵。
因為每落下一塊方塊都能使AI獲得的更多獎勵分,而在輸掉游戲前按下暫停就不會得到失敗的懲罰——你得承認,這對它來說確實是一種極具效率的得分方式。
再比如在一個《海岸賽艇》的小游戲里,AI操縱的船只沉迷于利用 Bug不斷地撞擊獎勵目標以達到更高的分數,順利到達終點這件事已經不在它的計劃之內了。
AI展示了它如何在沒有人類介入的情況下贏得游戲勝利,出乎意料其富有創造性,可能會完全顛覆人類對游戲如何運行的理解。