1. 程式人生 > >AlphaGo技術剖析:揭開圍棋大腦的神祕面紗

AlphaGo技術剖析:揭開圍棋大腦的神祕面紗

● 每週一言

智慧所體現的思維與認知,沒有標準。

face

導語

圍棋,起源於我國堯舜時期,自古以來備受追捧,蘊含著中華文化的豐富內涵。有別於象棋和國際象棋,圍棋棋盤之大,玩法千變萬化,其落子的可能性更是不可估量,因此一直以來都是棋類AI無法攻克的一道屏障。

隨著深度學習的快速發展及計算機硬體技術的突飛猛進,DeepMind團隊研發的AlphaGo圍棋AI程式於去年一月以5:0優勢橫掃歐洲圍棋專業二段棋手樊麾,之後的三月份則以4:1大勝圍棋專業九段、世界排名第四的韓國棋手李世石。

fig1

最近,新版AlphaGo又與世界排名第一的我國棋手柯潔對弈三局:5月23日第一局柯潔以四分之一子的半目差距憾負;25日第二局柯潔中盤認負;27日第三局209手柯潔投子。最終柯潔0:3敗於AlphaGo。

那麼,AlphaGo為何如此之強?其背後的演算法思想是什麼?能橫掃當今的人類最強棋手柯潔,是否意味著已經開啟強AI時代之門?

AlphaGo

其實網上已經有很多介紹AlphaGo背後技術的文章,不過其中大部分文章一上來就把AlphaGo分成策略網路(Policy Network)和價值網路(Value Network)兩個部分來講,個人感覺有點過於抽象和籠統。本著學習交流的態度,想從技術角度為大家剖析一下AlphaGo的內部實現機制,若有理解偏差之處,還請留言相告。

fig2

揭開AlphaGo的神祕外衣,它是一個機器學習專案。既然是一個機器學習專案,那麼至少包含這三個模組:特徵提取,模型訓練和模型預測。我們不妨就從這三個方面展開,來講講這個“神祕的”機器學習專案。

特徵提取

對於圍棋資料來說,特徵提取就是把每一步下棋狀態數值化、結構化。

AlphaGo所用的原始圍棋資料取自KGS圍棋伺服器上6到9段的對局,共16萬盤近3000萬步走棋。根據不同子模型的需求,AlphaGo從這些原始的棋局中一共提取了兩份特徵資料。

fig3

首先,我們不難想到第一個最直觀的棋盤特徵,那就是落子情況。如上圖所示,圍棋棋盤大小為19×19,每一個位置的可能落子情況有三種:黑子、白子或留白。因此一個樣本的落子特徵資料就是3個19×19的矩陣,每個矩陣分別描述棋盤上的一種落子情況。

除了落子情況,當前棋盤本身的狀態也可以提取出許多特徵,比如當前執黑還是執白、每個落子經過的輪次、落子後預計吞子數目以及落子是否合法等。拿“每個落子經過的輪次”特徵舉例,一個8位的二進位制串足以表示任一方在整盤棋中所下的輪數,因此該特徵可以用8個19×19的矩陣表示。下圖舉例展示了落子情況的特徵矩陣形式,其他特徵以此類推。

fig4

加上落子情況,AlphaGo一共提取了48種特徵,構成一個19×19×48的特徵空間。為了方便後文敘述,這份特徵資料集先命名為SetASetA相當於一份圖片資料集,作為卷積神經網路的輸入。

除開圖片資料集,AlphaGo還根據圍棋的領域知識提取了另一份餵給softmax迴歸網路的區域性特徵,用來實現快速走棋,為後面的蒙特卡洛樹搜尋 (MCTS)做準備。對於這些區域性特徵,AlphaGo只提供了數目統計,並未給出這些特徵的具體提取方法,數目統計如下圖所示。

fig5

同樣,為了便於後文描述,這份特徵資料集命名為SetB

模型訓練

一上來就分為策略網路與價值網路來講,只會加“厚”AlphaGo的神祕面紗。講道理,AlphaGo的子模型其實一共有四個:卷積策略網路、增強策略網路、softmax迴歸網路和卷積價值網路。下面我將逐一講解這四個網路結構及其訓練過程。

卷積策略網路

這裡有必要先鋪墊幾句,自從機器學習的泰山北斗Hinton在06年重新掀起深度學習的熱潮以來,伴隨著計算機硬體技術的迅猛發展,作為深度學習代表之一的卷積神經網路(Convolutional Neural Network,CNN),在演算法界可謂無人不知無人不曉。CNN擅長解決的問題是影象識別和圖片分類,在這些問題上有著驚人的效果,因此DeepMind團隊選擇了CNN來訓練AlphaGo的base模型。這個模型的網路結構如下圖所示。

fig7

可知,輸入資料集為setA,卷積策略網路共有13個卷積層,一個softmax全連線層。其中第1個卷積層使用5×5的卷積核同尺寸Relu輸出,第2~12個卷積層均使用3×3的卷積核同尺寸Relu輸出,第13層使用1×1的單元核做了一個線性歸一的過濾,最後softmax全連線層預測輸出下一步落子位置的可能性。

可想而知,這個卷積策略網路所形成的圍棋AI水平已經很高了,起碼它已經學會了大部分人類高手的下法。但是,這對於AlphaGo來說還遠遠不夠。

增強策略網路

如果說卷積策略網路是一個學習他人、超越他人的階段,那麼增強策略網路就是一個自我學習、超越自我的階段。據說AlphaGo的內部測試結果為,增強策略網路對上卷積策略網路的勝率高達80%!那麼其究竟是如何實現自我學習的呢?

這裡不得不說一下增強學習了。增強學習又稱強化學習,是通過一種不斷地自我試錯方式,來找到最佳策略並加以激勵的機器學習方式。就以下圍棋為例,好比兩個完全不會下棋的人,一開始都隨機落子,直到一方獲勝。獲勝的一方根據走法來優化自己的落子策略,然後兩人再繼續不停地下棋、優化、下棋,重複這樣的過程,直到滿足某一條件。最終,不會下棋的人也能知道哪一步是好棋,哪一步是臭棋。這就是增強學習的一種通俗解釋,有點像周伯通的雙手互搏術。

fig8

增強策略網路使用增強學習進行訓練,這裡可不是隨機落子,而是用卷積策略網路這個基礎AI開始落子。具體方法是先複製一份卷積策略網路引數給增強策略網路初始化,最終輸贏標籤和棋為0、贏棋為1、輸棋為-1,然後用增強策略網路反覆和自己弈棋,根據輸贏結果反向傳播更新網路引數。經過若干次迭代之後更新一份引數至對手網路,直至滿足一定的條件後結束。

據說單憑該網路的下棋水準就已經達到了KGS的3d水平。不過,AlphaGo並沒有在最後的系統中使用這個增強策略網路,理由是增強策略網路的走棋風格缺乏變化,對後面的蒙特卡洛樹的搜尋不利。

softmax迴歸網路

大家或許會問,上面已經有了一個很強的走棋網路,為什麼還需要一個softmax迴歸網路來走棋呢?我想可能有如下兩點原因:

第一,迴歸網路結構只有一個隱層,相比卷積神經網路的13層結構,其落子的速度實在是快太多了,根本不在一個數量級上,且準確率還不錯,而後面要講的蒙特卡洛樹搜尋方法對搜尋的時間要求很高,卷積網路無法滿足要求;

fig9

第二,**softmax迴歸網路的資料集是**setB,與setA處於完全不同的特徵空間,因此能提高走棋策略的多樣性,增加了是落子的不同可能性。

事實證明,用softmax迴歸網路單獨落子,也達到了KGS的3d水平。

卷積價值網路

這是AlphaGo的又一個厲害之處,就是說AlphaGo不僅要有高效的落子方案,還要有這麼一個網路來評估當前棋局的獲勝概率,來雙重保證當前的落子方案是最優方案。

卷積價值網路的演算法思想是:每次隨機一盤棋局之中的輪次T,棋局的第1輪到T-1輪落子由卷積策略網路生成;然後在第T輪隨機落子,第T+1輪一直到該局結束則使用增強策略網路生成落子;最後計算輸贏,贏棋為1,輸棋為0,反向傳播誤差調整網路引數。這個卷積價值網路的結構如下圖所示。

fig10

觀察上圖可知,除了輸出層把softmax層替換成了256的全連線層外加一個Tanh啟用層,其它層的結構與卷積策略網路一模一樣。此外,需要注意的是,這裡的輸入資料集全部是由卷積策略網路和增強策略網路共同生成。而且為了避免同一對局下,輸入不同但結局相同所帶來的過擬合現象,每一個對局只會取一個樣本進行訓練,這也是為什麼單獨採集了3000萬個對局的樣本作為訓練集的原因。

模型預測

打造好了上述四件兵器,卷積策略網路、增強策略網路、softmax迴歸網路和卷積價值網路,AlphaGo披掛上陣。它走進了人類頂級圍棋道場與頂級棋手較量,採用的戰術策略就是前面提到的蒙特卡洛樹搜尋 (MCTS),其搜尋示意圖如下所示。

fig11

蒙特卡洛樹搜尋

MCTS的基本思想是:多次模擬未來棋局,然後選擇模擬次數最多的落子方案作為當前走法。具體步驟如下:

首先,用卷積策略網路生成到未來T輪的落子方案;
然後,用卷積價值網路評估該落子方案的勝率,用softmax迴歸網路基於該落子方案繼續快速走棋,直至棋局結束得到輸贏結果,綜合兩個結果算出該T輪落子方案的勝率;
接著,結合該勝率,用卷積策略網路重新生成到未來T輪的落子方案,若出現相同走法,則勝率取平均值;
最後,迴圈上述過程若干次,選擇模擬次數最多的勝率最高的落子方案作為當前走法。

fig6

現在這裡可以總結說一下了,如果單純把AlphaGo分成策略網路和價值網路,那麼策略網路指的就是上面所說的卷積策略網路,而價值網路則是卷積價值網路與softmax迴歸網路的結合。其中策略網路負責計算當前的落子位置,價值網路則負責評估落子該位置的最終勝率,MCTS則利用這兩個結果進行搜尋,給出最終的落子方案。

據說最近對戰柯潔的AlphaGo Master版本要勝去年的李世石版本三目,與柯潔三局下來也沒有出現像去年第四局那樣,因昏招而落敗的情況。推測原因,一是在MCTS的時候做了優化,結合快速走棋來搜尋節點而不是隻用卷積策略網路,這樣就能避免短期內落入區域性思維而完全忽略人類的“神來之筆”;二是資料集已經完全棄用人類棋局,而是用從AlphaGo自我對弈中挑選出的樣本來構成,因此策略網路也會更加強大。

fig12

這裡多說一句,只用卷積策略網路搜尋節點存在弊端,是因為卷積核一般都很小,導致棋盤不同位置的區域性視野需要在若干輪之後才能相互影響,因此才出現了所謂的昏招。

文末,想表達一下我對下面這個問題的觀點。

先後勝樊麾、李世石與柯潔,是否意味著AlphaGo已具備自主意識,走向強AI時代?

對於這個問題,我想用兩點來回答一下。
其一,一個能識別出美女圖片的影象識別系統,是否就是好色呢?
其二,Facebook黑暗森林的負責人田淵棟老師說,AlphaGo在去年三月和李世石對局的時候要求用中國規則,因為如果換成別的規則,預測目標發生改變,AlphaGo就需要重新訓練價值網路了。

fig13

智慧所體現的思維與認知,沒有標準。而目前各大公司的人工智慧專案,更像是標準化的產物。所以從這些方面看,無論是AlphaGo、Google Brain,還是百度大腦,離真正的智慧其實都還很遙遠。

結語

這一次真心寫得有點長了,感謝各位的耐心閱讀!後續文章於每週日奉上,歡迎大家關注小鬥公眾號 對半獨白

face