看了 AlphaGo 和李世乭九段這 5 場(chǎng)比賽之后,你知道 AlphaGo 是怎么思考的嗎?
其實(shí),AlphaGo 的“思考”和人類(lèi)的思考有些相似,所以它的勝利才顯得意義重大。
想要知道 AlphaGo 怎么下圍棋,簡(jiǎn)單了解圍棋的規則非常重要。
顧名思義,“圍棋”的要點(diǎn)在于“圍”。圍棋棋盤(pán)是 19 × 19 的格狀棋盤(pán),黑子和白字在交叉點(diǎn)上交替落子,哪一方“圍”的地盤(pán)大便獲勝。
如何計算“地盤(pán)”?每當棋盤(pán)上落下一子,便會(huì )出現與該子橫或豎相鄰的四個(gè)交叉點(diǎn),這四個(gè)點(diǎn)被稱(chēng)為“氣”,一顆棋子最多擁有四口“氣”,斜方向相鄰的交叉點(diǎn)不是氣。
橫或豎相鄰的同色棋子可以共用“氣”。如果一個(gè)字或幾個(gè)字周?chē)械臍舛急粚Ψ狡遄诱紦?,沒(méi)有氣的棋子就是死子。

右側圖中棋子周?chē)牡狞c(diǎn)表示氣,雙方棋子可以共用氣。
在這樣的規則要求下,勝負的關(guān)鍵便在于如何高效地用棋子占據更大的地盤(pán),同時(shí)還要防止對方將你已經(jīng)占據的位置圍死。圍棋開(kāi)局時(shí)一般從靠近邊緣的地方開(kāi)始落子也是因為相對于棋盤(pán)中央,邊緣方便用更少的棋子占據更大的地方。
圍棋棋盤(pán)一共有 361 個(gè)落子點(diǎn),平均分配的話(huà),一方棋子占據的位置加上活棋圍住的落子點(diǎn)只要超過(guò) 180.5 個(gè)就會(huì )勝利。但先落下第一個(gè)子的黑棋占有優(yōu)勢,按照中國規則,在計算棋子數量時(shí),黑棋必須減掉 3 又 3/4 子,也就是必須超過(guò) 185 子才能獲勝。
有的棋局會(huì )在未下完時(shí),便因為對方已經(jīng)占據了無(wú)法追趕的優(yōu)勢而認輸。而有的棋局雙方會(huì )進(jìn)行到“收官”的階段,這里不再展開(kāi)。
以上,是圍棋的簡(jiǎn)單的基礎規則,但因為棋盤(pán)很大,圍棋的戰術(shù)千變萬(wàn)化。
說(shuō)起這個(gè),“窮舉”、“蒙特卡羅樹(shù)算法”、“深度學(xué)習”等等一大堆術(shù)語(yǔ)經(jīng)常出現。
所謂 “深度學(xué)習”,是 AlphaGo 圍棋訓練的第一步,將人類(lèi)棋譜輸入計算機,學(xué)習人類(lèi)的落子習慣。這種“識別”與人臉識別、圖像分類(lèi)等搜索技術(shù)類(lèi)似。
第一步:
AlphaGo 會(huì )把輸入系統的人類(lèi)棋譜的每一步進(jìn)行分拆,棋盤(pán)上每個(gè)落子以及隨后的應對落子算作一個(gè)樣本,AlphaGo 從這些人類(lèi)棋局中分解出了三千多萬(wàn)個(gè)樣本。
這些樣本集合在一起,能夠識別出每個(gè)特定的落子之后,哪一種應對方法的概率最高,這個(gè)最高的概率其實(shí)就是人類(lèi)棋手最喜歡的應對方法。
雖然說(shuō)圍棋“千古無(wú)同局”,但是局部來(lái)看還是有很多相似的模式反復出現,AlphaGo 就學(xué)會(huì )了這些最受歡迎的下法。

第二步:
AlphaGo 的思考結合了蒙特卡羅樹(shù)搜索。
假設一個(gè)從來(lái)都沒(méi)下過(guò)圍棋的人,用了分身術(shù)分成兩個(gè)人開(kāi)始在棋盤(pán)上亂下,最終這盤(pán)棋也會(huì )分出個(gè)勝負。第二盤(pán),上一盤(pán)贏(yíng)的那個(gè)分身不再完全是亂下了,開(kāi)始使用贏(yíng)的那一盤(pán)中的一些對應,第三盤(pán)棋,第二盤(pán)贏(yíng)的那個(gè)分身開(kāi)始使用第一盤(pán)和第二盤(pán)中的對應。當第 N 盤(pán)棋下完之后,這個(gè)始終贏(yíng)棋的分身就會(huì )獲得最有可能獲勝的落子方法。
以上這 N 盤(pán)棋就是一步使用蒙特卡羅樹(shù)搜索的思考過(guò)程,思考結束后的下一個(gè)落子,就是被是推演過(guò)次數最多,獲勝概率最高的那一步。
AlphaGo 團隊還改進(jìn)了以上這種傳統的蒙特卡羅樹(shù)搜索算法。
上面我們說(shuō)過(guò)的深度神經(jīng)網(wǎng)絡(luò )得出了一套人類(lèi)棋手概率最高的下法,假設蒙特卡羅樹(shù)搜索故事中那個(gè)完全不會(huì )下棋的人學(xué)習了這套下法,那么之后的“亂下”思考過(guò)程的起點(diǎn)就會(huì )提高很多。這樣一來(lái),蒙特卡羅樹(shù)算法的計算量就減少很多,提高了效率。
第三步:
AlphaGo 自己和自己下棋。 圍棋畢竟變化太多,AlphaGo 需要更多的棋局來(lái)學(xué)習,于是通過(guò)自我對弈產(chǎn)生新的棋局。
AlphaGo 自己和自己下棋,棋力的來(lái)源就是第一步通過(guò)學(xué)習人類(lèi)棋局得到的落子方法。AlphaGo 左右互搏,自我對弈幾萬(wàn)盤(pán),就能總結出贏(yíng)棋概率更高的新下法,接下來(lái)再用新下法自我對弈幾萬(wàn)盤(pán),以此類(lèi)推,最終得到了一套棋力比最初只學(xué)習人類(lèi)下法厲害很多的新策略。
那用這新的策略和蒙特卡羅樹(shù)搜索結合是不是更厲害呢?答案卻是否。
因為使用概率來(lái)訓練的這種策略會(huì )讓下法高度集中,變化太少,而蒙特卡羅樹(shù)搜索需要更多的變化才更有效。

第四步:局面評估。這也是 AlphaGo 最厲害的地方是,它可以像人類(lèi)一樣在比賽過(guò)程中估計局面的優(yōu)劣,這樣才有第四局它判斷獲勝幾率太小,選擇中盤(pán)認輸。
當一盤(pán)棋開(kāi)始的時(shí)候,AlphaGo 先用第一步訓練的下法下若干步,然后亂下一步,接著(zhù)用第三步自我對弈訓練產(chǎn)生的更厲害的下法下完整盤(pán)棋,然后對結果做一個(gè)評估,評估出“亂下”的那步棋造成的局面是好是壞。
AlphaGo 可以在一步的思考中亂下很多次,總有一次能匹配到真實(shí)對下棋的狀況。而對這一步亂下以及后續結果的評估,就是對當前局面的判斷。
大家對戰勝卡斯帕羅夫的“深藍”有一些誤解。深藍并不是單純的“窮舉”,通過(guò)計算所有的可能性來(lái)實(shí)現勝利。深藍的算力約為每秒 2 億步棋,想要窮盡國際象棋十的四十五次方這個(gè)級別的可能性需要十的二十九次方年的時(shí)間,這顯然不可能。
深藍內置了數百萬(wàn)人類(lèi)國際象棋的開(kāi)局庫,這部分計算可以省掉,同時(shí)深藍也不是算出所有可能的步法,而是推算 12 步左右,而人類(lèi)的國際象棋大師大約能夠推算 10 步,勝負就在這其中產(chǎn)生。
AlphaGo 每秒鐘可以計算幾百萬(wàn)步棋,通過(guò)大量學(xué)習人類(lèi)棋局,用這些經(jīng)驗自我對弈產(chǎn)生新的經(jīng)驗,用這些新經(jīng)驗來(lái)下棋,再利用蒙特卡羅樹(shù)搜索產(chǎn)生下一步對應的下法,配合“亂下”產(chǎn)生的對局面的評估,就是 AlphaGo 戰勝人類(lèi)頂尖棋手的秘密。
參考文獻:Mastering the game of Go with deep neural networks and tree search.——Nature 2016.1.27
聯(lián)系客服