2016年1月28日,谷歌圍棋程序AlphaGo以5:0戰勝職業棋手的消息,震動了圍棋圈。這兩天有很多的討論,主要是新聞性的。我也在第一時間進行了常識性的介紹。
本文進一步從圍棋和人工智慧技術的角度,深入分析AlphaGo棋藝特點,評估其算法框架的潛能,預測與人類最高水平棋手的勝負。下文中出現的策略網絡、價值網絡、蒙特卡洛法請參考前文,理解具體圍棋局面也需要一定的棋力,但是與算法推理相關的內容理解起來並不難。
AlphaGo是如何下棋的
所有人,包括職業棋手,看了AlphaGo戰勝樊麾二段的五盤棋,都說這程序下得像人了,和以前的程序完全不同。柯潔九段(公認目前最強棋手,一年獲得三個世界冠軍,對李世石6:2,古力7:0)的看法是:
「完全看不出來。這五盤棋我也仔細地看了一眼,但我沒看名字,不知道誰執黑誰執白,完全看不出誰是AI。感覺就像是一個真正的人類下的棋一樣。該棄的地方也會棄,該退出的地方也會退出,非常均衡的一個棋風,真是看不出來出自程序之手。因為之前的ZEN那樣的程序,經常會莫名其妙的抽風,突然跑到一個無關緊要的地方下棋。它這個不會。它知道哪個地方重要,會在重要的地方下棋,不會突然短路。這一點是非常厲害的。」
連笑七段讓四子對DolBaram。棋譜可參考附錄的sgf文件,看看電腦是如何搞笑的。
先來看我上一篇文章中提到的DolBaram被連環劫搞昏的局面。右下角白是連環劫淨活,電腦卻不知道,耗費了很多劫材來回打。這是因為電腦是用蒙特卡洛樹形搜索(MCTS)下的,一直模擬下到終局,看各個選擇的獲勝概率。人一眼就知道打劫是沒用的,你提這個我必然提回那個。電腦模擬時的選點卻不會只有那一招,就會發現,如果對手不提另一個劫走了別的,那電腦就能吃角了,所以就去提劫。直到劫材損光,電腦才會恍然大悟,吃不掉,但這已經過去幾十手,超過電腦的搜索能力了。
看到電腦被連環劫搞昏,樂開花的連笑
2014年日本UEC杯軟體決賽,Zen執黑對CrazyStone。完整棋譜可看附錄的文件。
再來看Zen和CrazyStone兩個過去最強的程序間的一個局面。黑61威脅白右上角和中上,白卻不應,在下面62切斷,黑繼續63吃掉右上角。最後白在上面損失慘重,為了救中上幾個白子,下面又被黑先動手,沒有收益。為什麼CrazyStone不應上面?因為程序沒有價值的概念。白不應上面,黑要把白右上吃掉,還需要很多手,中上的白子活不活更不好說,這已經超出了電腦蒙特卡洛模擬的能力。因為電腦不知道要對著上面猛算,它不知道上面是焦點,可能花了很多計算在下面或者其它地方,認為62手下面切斷勝算更大,上面的損失它模擬得不對。這個局面能說明蒙特卡洛樹形搜索法(MCTS)的局限性,這個弱點很要命。
那麼AlphaGo會如何解決這兩個問題?連環劫問題,DolBaram可能得打個補丁。AlphaGo也是基於MCTS的,但是它的策略網絡是深度學習高手對局的招法訓練出來的,更為準確,有可能提劫這手就不會給多大概率,因為高手們面對這個局面不會去提劫。另一種可能是,AlphaGo有一個價值網絡,不用來回打一堆劫就能直接判斷下一招後,獲勝機會如何。由於價值網絡是訓練出來的,包含了3000萬局的最終結果,對於右下那塊白棋的死活是有判斷的。當然也可能AlphaGo針對連環劫有補丁。
CrazyStone犯錯這個圖,假設AlphaGo執白,在考慮第62手。61、62、63這些著手顯然都會在AlphaGo的策略網絡的選點中。你要讓它用MCTS模擬出右上和中上白棋幾個子是怎麼回事,估計也是不行的,手數和分支太多。因為這不是一個簡單的死活問題,白可以不要一部分甚至都不要,只要在其它地方有足夠的補償。但是AlphaGo有價值網絡,它會在模擬到63手時,用價值網絡快速評估一下,發覺白必敗,於是迅速否定62這手棋,在上面下棋。因為價值網絡的3000萬個樣本中,上面這種白棋類似棋形導致失敗的棋局會有一些。
這裡我們看出來,AlphaGo相比前一代軟體的革命性進步,是有了一個價值網絡。實際上,AlphaGo可以不用搜索,直接用策略網絡給出一些選點,用價值網絡判斷這些選點的價值,選一個最好的作為著手,就可以做出一個非常厲害的程序。這個簡單程序就可以打敗其它軟體,達到KGS(一個圍棋網,人工智慧程序一般在上面打級) 7D,這是非常驚人的。Facebook的Darkforest也可以不搜索,用策略網絡給出一些選點,選其中概率最大的點(最像是高手下的那招棋),這樣可以達到KGS 3D。在此基礎上再加上MCTS,把Darkforest提升到了5D。這說明AlphaGo的價值網絡對棋力提升的價值,可能比MCTS還要大。
有了高效的價值網絡,AlphaGo就容易知道局面的焦點在哪,不會在非關鍵的地方走。可以預期,其它軟體開發者要跟上AlphaGo,就得把價值網絡搞出來。但是這非常難,需要模擬海量的對局,對局水平還不能低,需要的投入很大。
AlphaGo想要戰勝業餘高手,策略網絡、價值網絡就夠了。但要戰勝業餘頂尖,就還得加上MCTS。這相當於對策略網絡、價值網絡的選擇,進行驗算。策略網絡有兩個,一個是給出當前局面的選點,一個是在MCTS模擬中快速給出一些選點。價值網絡給出判斷,有價值的搜得深。整個決策過程非常象人類高手的思維過程了:面對局面,給出一些選點;然後對各個選點推演下去,有的推幾步就判斷不行終止,有的會推得很遠;有時算不清,就根據感覺下;有時沒時間,直接感覺,都不推理了。
所以AlphaGo的算法框架很強大,和人類高手很像。而且它沒有情緒波動,每一步都會穩定地用MCTS進行驗算,人類不一定做得到。樊麾二段就是敗在這上面,不少著都沒有仔細驗算,衝動地下了被AlphaGo反擊吃大虧。