AlphaGo Zero演算法簡介

2021-09-20 21:55:17 字數 3489 閱讀 1972

alphago zero 引起巨大社會轟動

只告訴機器圍棋的基本規則,但是不告訴它人類摸索了上千年才總結出來的定式等圍棋戰術,讓機器完全依靠自學,打敗人類。這個題目不僅新鮮,而且熱辣。

上週 deepmind alphago 人工智慧圍棋團隊的一篇新**,題目是「mastering the game of go without human knowledge」。

這篇**不僅被頂級學術期刊 nature 發表,而且立刻被**反覆報導,引起社會熱議。

這篇**讓人驚豔的亮點有四,

只告訴機器圍棋規則,但是不告訴它定式等等人類總結的圍棋戰術,也不讓它讀人類棋手比賽的棋譜,讓機器完全自學成才。

機器完全靠自己摸索,自主總結出了定式等等圍棋戰術,而且還發現了人類上千年來沒有發現的定式。

從零開始,機器自學了不到 40 天,就超越了前一版 alphago(alphago master),而 alphago master 幾個月前,曾以 60 : 0 的戰績,戰勝了當今幾乎所有人類圍棋高手。

alphago zero 的演算法,比 alphago master 簡練很多。

alphago zero 的演算法,說來並不複雜。理解清楚 monte carlo tree search、深度學習啟發函式和置信上限,這三個概念就行了。

monte carlo tree search:不窮舉所有組合,找到最優或次優位置

圍棋棋面總共有 19 * 19 = 361 個落子位置。假如電腦有足夠的計算能力,理論上來說,我們可以窮舉黑白雙方所有可能的落子位置,找到最優落子策略。

但是,如果窮舉黑白雙方所有可能的落子位置,各種組合的總數,大約是 250^150 數量級。這個數太大了,以至於用當今世界最強大雲計算系統,算幾十年也算不完。

有沒有不窮舉所有組合,就能找到最優或者次優落子策略的演算法呢?有,monte carlo tree search 就是這樣一種演算法。

剛剛開始教機器下圍棋的時候,機器除了規則,對圍棋一無所知。讓兩台機器對弈,分別執黑子與白子。只要不違反規則,以均等概率,在所有合法的位置上,隨意選擇乙個地點落子。

黑方先行,它有 361 個合法投子位置。黑方先隨機考慮乙個候選位置,譬如天元(9,9)。開局是否投子在天元呢?取決於假如投子在此,是否有可能贏得勝利。如何估算贏得勝利的可能性呢?黑方模擬對局。

假如黑方第一手投子天元,那麼白方的第二手會投子**呢?根據均等概率的初步策略,白方有 360 個合法位置,在任何一處投子的概率均等。假如白方的第二手投子在棋盤的最邊緣(0,0)。

接下去,黑方在剩餘的 359 個合法位置中,隨機選擇乙個落子位置。接下去白方投子。如此重複,直到終局。

完成這樣一次對局模擬的過程,上限是 361 手,計算成本很低。

假如黑白兩個機器,以黑方投子天元開局,一路亂走,最終以黑方勝利。那麼根據 monto carlo tree search 演算法,投子天元的開局,有可能獲勝,那麼第一手,就真的投子天元。

假如一路亂走,最終黑方失敗,那麼黑方就換乙個候選位置,再次模擬對局。假如第二次模擬對局以黑方獲勝,就投子在第二個位置。假如失敗,那就再換到第三個候選位置,第三次模擬對局。如此重複。

這樣反覆亂走,收集到了第一批棋譜,當然,這些棋譜的水平,慘不忍睹。

水平之所以慘不忍睹,是因為 「以均等概率,在所有合法的位置上,隨意選擇乙個地點落子」 的下棋策略。

如何通過自學,不斷改進下棋策略?

alphago zero 用深度學習神經網路來解決這個問題。

用深度學習網路實現啟發函式

alphago zero 用 cnn 來改進圍棋投子策略。具體到 cnn 的系統架構,alphago zero 用的是 residual 架構 resnet。而 residual 架構是其時任職於微軟亞洲研究院的中國人 kaiming he、xiangyu zhang、shaoqing ren、jian sun,於 2015 年發明的。

resnet 的輸入是當前的棋面 s_ 。它的輸出有兩個,

當前棋面 s_ 的贏率,v( s_ ),贏率就是最終獲勝的概率,是乙個數值。

下一手投子的位置及其概率,p( a_ | s_ ),這是乙個向量。投子的位置可能有多種,每個位置的概率不同,概率越高,說明在以往的棋譜中,經常投子在這個位置。

用先前收集到的棋譜,來訓練 resnet,擬合輸入 s_,以及輸出 p( a_ | s_ ) 向量和當前棋面的贏率 v( s_ )。

alphago zero 只用機器自我對弈的棋譜,來訓練 resnet。

當然,也可以用人類棋手的棋譜來訓練 resnet。理論上來說,用人類棋手的棋譜來訓練 resnet,alphago zero 的水平,會在更短時間內,獲得更快提公升。

但是,即便不用人類棋手的棋譜,只用機器自我對弈的棋譜,來訓練 resnet,在短短 40 天內,alphago zero 就已經超越人類棋手的水平。這個速度,實在讓人驚豔。

resnet 訓練好了以後,仍然用 monte carlo tree search,繼續讓機器自我對弈。只不過把投子的策略,從均等概率的隨機投子,改為根據 resnet 的指導,來決定下一手的投子位置。

**配圖:mcts 使用神經網路模擬落子選擇的過程

具體策略如下,

根據當前棋面 s_,讓 resnet 估算下一手可能的投子位置,a_,及其概率 p( a_ | s_ )。

下一手的投子位置,a_ 有多種,每一種位置的贏率 v(s_) ,和投子概率 p( a_ | s_ ) 不同。贏率和投子概率越高,得分越高。

贏率 v(s_) 和 投子概率 p( a_ | s_ ) ,是對以往棋譜的總結。而置信上限(upper confidence bound,ucb ),是來鼓勵探索新的投子位置,越是以往很少投子的位置,ucb( a_ ) 得分越高。

綜合考慮下一手的棋面的贏率 v( s_ ),投子概率 p( a_ | s_ ) ,和置信上限 ucb( a_ ),給下一手的各個投子位置打分。取其中得分最高者,來指導 monto carlo tree search,決定下乙個投子的位置。

用改進了投子策略的 monte carlo tree search,繼續讓機器自我對弈,這樣得到更多棋譜。然後,用這些棋譜,再次訓練 resnet,提高贏率和投子概率的估算精度。如此迴圈重複,不斷提高 resnet 的精度。

定式(joseki)與投子位置熱力圖

投子概率 p( a_ | s_ ) ,反應了下一手投子位置的熱力圖。各個位置被投子的概率非常不均等,其中某些位置被投子的概率,比其它位置顯著地高。

這些位置,加上前面幾手的落子位置和相應的棋面,就是圍棋定式(joseki)。

**補充材料:訓練中alphago zero偏好的投子位置熱力圖

alphago zero 在五天以內,就通過機器自我對弈,總結出了常見的定式。

而人類發現這些定式,花費了幾百年。

更加令人驚豔的是,alphago zero 還發現了新的定式,而這些定式,人類迄今為止並沒有發現。

總結一下,alphago zero 的演算法非常簡潔,monte carlo tree search + resnet。

與傳統的 a* 演算法比較一下,monte carlo tree search 只是 a* 演算法中的樹拓展的一種特例,而 resnet 是 a* 演算法中啟發函式的一種特例。

AlphaGo Zero 阿爾法元 簡介

阿爾法元是deepmind圍棋軟體alphago的乙個版本。alphago團隊於2017年10月19日在 自然 雜誌上發表了一篇文章,介紹了alphago zero,這個版本不用學習人類的遊戲資料,比之前的版本更強大。alphago zero 在三天內通過自我對弈擁有了超過了alphago lee的...

演算法學習(五) alphago Zero模型

原文 github上的復現,膜拜大神 alphago zero模型的理解 0.應用場景 完美資訊零和博弈遊戲。1.不再使用監督資料對模型進行訓練,使用自博弈的方式,自動生成資料,學習圍棋的知識。2.前向搜尋很有用,使用前向搜尋的alphago zero得分5185,使用裸網路的得分為3055,打不過...

AlphaGo zero 概述和引言翻譯

人工智慧的乙個長期目標是可以學習到在具有挑戰領域超越人類的演算法,最近,阿爾法圍棋成為第乙個在圍棋遊戲中擊敗世界冠軍的程式。在阿爾法圍棋的樹搜尋中,使用深度神經網路來評估當前形勢和選擇落子位置。這些神經網路由人類專家的棋譜指導學習訓練,並通過自我博弈來強化學習。在這裡,我們引入了一種沒有使用人類的資...