人工智慧 | AlphaGo的「大腦」中到底藏了些什麼?
在上期中我們講到,任何一個完全公開信息類的遊戲,都可以用一棵樹來描繪。遊戲中的選手們,可以通過獲取所有樹葉的信息,來得出自己應該採取的最佳策略。
圍棋,作為完全公開信息類的遊戲的一種,必然也可以用一棵樹來描繪。我們姑且稱之為圍棋樹。圍棋樹上的每一個樹杈,都象徵著一個棋面。連接兩個樹杈之間的樹枝,象徵著從舊棋面通往新棋面的那一步棋。棋局的結果呢,便是樹葉了。
在半個世紀前,計算機之父,馮諾伊曼告訴我們,對於圍棋這種遊戲來說,若雙方從當下棋面開始都按照最佳策略去下棋,那麼棋局的結果是可以由當下棋面來判斷的。這個判斷的結果叫做判定值,它可以告訴你最後會是誰獲勝。之所以存在這樣的值,是因為如果雙方都按照最佳策略去下棋,他們的棋路便是固定的,一直到棋局的結尾。而通過結尾,我們可以判斷誰勝誰負。
既然圍棋樹中每一個樹杈(棋面)都有判定值,而它們又或多或少地透漏出棋局結果的信息,那麼獲取樹杈的判定值則對選手來說十分重要:它能告訴選手自己是否在通往勝利的路上。假設一位選手能獲取全部樹杈的判定值,他就可以根據判定值謀划出一套完美的下棋方案。這套方案可以確保該選手走向勝利。
AlphaGo便是看中了這點。
然而,理論上看似簡單,實際操作起來卻是困難重重。光是圍棋樹的樹根,就連接著361個樹杈,而每一個樹杈又連接著360個樹杈,如此往複。這樣下來,整個圍棋樹的樹杈數不勝數,樹葉更是鋪天蓋地。要想獲取所有樹杈的判定值,基本上不可能。
這該如何是好呢?
AlphaGo靈機一動:既然我們沒法獲取每一個樹杈的判定值,那麼我們乾脆只獲取一部分樹杈的判定值,總比沒有的好。然而,這也不可能。我們知道,一個樹杈的判定值是由它下方所有的樹杈的判定值和樹葉的信息決定的。如果只獲取該樹杈下方一部分樹杈信息,是不可能計算出該樹杈的判定值的。
面對這個質疑,AlphaGo說:「沒有關係,對於這部分樹杈,我們不需要計算出它的判定值,只需要計算出判定值的一個近似值。這個近似值是根據該樹杈下方部分樹杈的近似值來計算的。而下方樹杈的近似值又是根據下下方部分樹杈的近似值來計算的。最後歸於樹葉。我們知道樹葉的信息是確定的:要麼A贏,要麼B贏。因此當抵達樹葉後,我們便可用倒推法一步步計算出這部分樹杈的近似值。最後,我們可以根據這些近似值謀划出一套良好方案。若近似值估算得好,這套良好方案就很接近於最佳方案。」
這是一個很偉大的思想,但是究竟是什麼意思呢?這就讓小編通過一個簡單的例子給大家講講。
如果我們把兩位選手看作是圍棋樹上的兩隻螞蟻,那麼他們的目標都是要爬到標註著自己獲勝的樹葉,誰先爬到誰就贏,那麼整個圍棋的遊戲過程,就可以類比為這兩個螞蟻的爬樹過程。這裡要聲明一下,爬圍棋樹有兩個約定俗成的規定。一是在任何樹杈,做決定的只有一方,且他決定之後雙方都必須朝那一個決定前行,因為在圍棋的棋局中,任何一方下過之後,對手必須在他下過之後所形成的新棋面上下棋。二是,任何一方都不能走回頭路,這相當於下了之後不能悔棋。
AlphaGo這個螞蟻有些不同,他可以預知未來。也就是說,他可以在自己設想的虛擬世界中模擬雙方的爬行,從樹根到樹葉。當他在虛擬世界中爬完每一個樹葉,並得知每一個樹葉上標註著的信息,便可以通過倒推法,計算出圍棋樹每一個節點的判定值。
然而他知道,即便在虛擬世界中,要想在有限的時間內爬完所有的樹葉,也是不可能的。於是他想了一招:在有限的時間內爬到某些樹葉,然後根據這些樹葉的信息,計算出這些樹葉上方樹杈的近似值,然後一層一層往上算,直到樹根。最後,根據這些樹杈的近似值,他便可以謀劃一套良好的爬行方案。當爬過的樹葉數量增多,近似值就會趨近判定值,這個爬行方案就會趨近於最佳方案。
那麼AlphaGo是如何選擇爬向哪片樹葉的呢?為了更好地回答這個問題,小編將以第一人稱視角帶領大家一探究竟。
我們看到,AlphaGo現在站在樹根,手裡攜帶了一個黑盒子。這個黑盒子有種神奇的力量,就是每當AlphaGo到達一個樹杈(包括樹根),他就對該樹杈拍張照,丟進黑盒子。黑盒子經過一聲巨響,便會吐出來一塊被切割成很多塊的披薩,每一塊的大小不同。第N塊披薩塊的面積,就是第N條路通往勝利的概率。
現在AlphaGo開始行動了。他對著圍棋樹根拍了個照,然後丟進黑盒子。咕隆咕隆一陣後,黑盒子吐出了一個被切成361份不同大小的披薩。這時,AlphaGo把披薩放在地上,拿出一塊石子,閉上眼睛,隨機地扔在披薩上。面積越大的披薩塊,被投中的機率就越大,這樣就可以保證勝率越高的路被選中的可能性就越大。這時我們看到,石子恰好落在了第51塊披薩塊上。於是他決定,朝著第51條路前行。
當他通過第51條路到達新的樹杈時,他便對該樹杈拍照,並丟進黑盒子。咕隆咕隆一陣後,黑盒子吐出了一個被切成360份不同大小的披薩。這一次,他意識到,該前行的是李世石而不是自己。於是他拿出自己模擬好的對手,讓他去丟石子。石子落到了第36塊披薩塊上,於是他和對手一起向第36條路前行。
就這樣,每到一個新節點,他就用重複一次上述過程,然後按照結果前行。終於,他抵達一片樹葉,獲取該樹葉信息並記錄下來。然後他返回上一個樹杈,拋石子,選擇路徑,然後爬到一片新的樹葉,記錄該樹葉的信息,再返回上一層,如此往複。只是,他在每一個樹杈扔石子的次數,是小於該樹杈下方樹杈總數的。這樣他就不會爬完該樹杈下所有可能的路徑,只是抽取其中獲勝率比較高的路徑進行爬行。
有了黑盒子和「扔石子法」後,AlphaGo便可有效地獲取到比較有用的樹葉的信息,並計算連接這些樹葉的樹杈(包括樹根)的近似值。他根據這些近似值可以謀划出一套比較良好的爬行策略,這樣獲勝的概率就極大地增加了。
其實,一切的關鍵,就在於黑盒子。如果黑盒子吐出的披薩能準確地下方每一條路徑的獲勝概率,那麼AlphaGo在虛擬世界中的爬行選擇就變的非常高效。這樣,他獲取到的信息的重要性就很高。信息越重要,他所謀劃的爬行方案就越接近於最佳方案,按照這個爬行方案爬行所帶來勝利的概率越大。
為了提高黑盒子的功效,DeepMind團隊可是下了很大功夫。首先,他們深度研究了世界級圍棋大師們在面對很多棋面時所採取的下棋策略,然後根據這些策略訓練黑盒子。我們知道,黑盒子所吐出的披薩,是用來告訴AlphaGo連接當下樹杈的每一條路徑的獲勝概率,換句話說也就告訴了他在面對該棋面時,每種下法的獲勝概率。如果黑盒子掌握了世界級圍棋大師們的思維,他就可以更加準確地判斷每種下法的獲勝概率。
其次,當他們訓練出了一個可以按照世界級圍棋大師們的思維進行思考的黑盒子後,便讓這黑盒子和自身PK,不斷地磨練自己。久而久之,黑盒子便成了一個經驗十足的老手,成為了遠遠超越世界級圍棋大師們的終極高手。
久經沙場,並掌握了世界級圍棋大師們思維的黑盒子,便是AlphaGo「大腦」中藏著的秘密武器。而裝有黑盒子的AlphaGo,便在圍棋場上所向披靡。
這便是一切的答案。
至此,小編盡自己最大努力,為大家講完了AlphaGo背後的原理,希望能有幫助。若文章中有誤,或有疑問,還請大家在我們的知乎專欄「eigenPhys亦知物理」中提出,我們會儘力回復。此外,小編非常推薦有興趣者去讀Nature上的官方論文。
也希望大家通過點擊文章頂部藍色字體「eigenPhys亦知物理」,或識別下方二維碼,關注我們。我們將為您帶來更有趣的科學知識,讓您體會到理性的浪漫。
Reference:
David Silver, Aja Huang, Mastering the game of Go with deep neural networks and tree search, Nature 529, 484-489.
歡迎關注eigenPhys亦知物理微信公眾號,您可通過搜索「eigenPhys」找到我們。我們將為您定期分享物理學的美,將理性的浪漫撒向人間。
推薦閱讀:
※「讓狡猾女人不再欺負我」番外:我知道你知道我也知道你同樣知道我們應該在哪裡碰面
※博弈論-混合策略
※我們是誰 | Who Are We
※探索圍棋官子最優解(三):組合博弈論
※遊戲理論攻略(序)