AlphaGo技术剖析:揭开围棋大脑的神秘面纱
● 每周一言
智能所體現(xiàn)的思維與認(rèn)知,沒有標(biāo)準(zhǔn)。
?
?
導(dǎo)語(yǔ)
圍棋,起源于我國(guó)堯舜時(shí)期,自古以來(lái)備受追捧,蘊(yùn)含著中華文化的豐富內(nèi)涵。有別于象棋和國(guó)際象棋,圍棋棋盤之大,玩法千變?nèi)f化,其落子的可能性更是不可估量,因此一直以來(lái)都是棋類AI無(wú)法攻克的一道屏障。
隨著深度學(xué)習(xí)的快速發(fā)展及計(jì)算機(jī)硬件技術(shù)的突飛猛進(jìn),DeepMind團(tuán)隊(duì)研發(fā)的AlphaGo圍棋AI程序于去年一月以5:0優(yōu)勢(shì)橫掃歐洲圍棋專業(yè)二段棋手樊麾,之后的三月份則以4:1大勝圍棋專業(yè)九段、世界排名第四的韓國(guó)棋手李世石。?
最近,新版AlphaGo又與世界排名第一的我國(guó)棋手柯潔對(duì)弈三局:5月23日第一局柯潔以四分之一子的半目差距憾負(fù);25日第二局柯潔中盤認(rèn)負(fù);27日第三局209手柯潔投子。最終柯潔0:3敗于AlphaGo。
?
那么,AlphaGo為何如此之強(qiáng)?其背后的算法思想是什么?能橫掃當(dāng)今的人類最強(qiáng)棋手柯潔,是否意味著已經(jīng)開啟強(qiáng)AI時(shí)代之門?
AlphaGo
其實(shí)網(wǎng)上已經(jīng)有很多介紹AlphaGo背后技術(shù)的文章,不過(guò)其中大部分文章一上來(lái)就把AlphaGo分成策略網(wǎng)絡(luò)(Policy Network)和價(jià)值網(wǎng)絡(luò)(Value Network)兩個(gè)部分來(lái)講,個(gè)人感覺有點(diǎn)過(guò)于抽象和籠統(tǒng)。本著學(xué)習(xí)交流的態(tài)度,想從技術(shù)角度為大家剖析一下AlphaGo的內(nèi)部實(shí)現(xiàn)機(jī)制,若有理解偏差之處,還請(qǐng)留言相告。?
揭開AlphaGo的神秘外衣,它是一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目。既然是一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目,那么至少包含這三個(gè)模塊:特征提取,模型訓(xùn)練和模型預(yù)測(cè)。我們不妨就從這三個(gè)方面展開,來(lái)講講這個(gè)“神秘的”機(jī)器學(xué)習(xí)項(xiàng)目。
?
特征提取
對(duì)于圍棋數(shù)據(jù)來(lái)說(shuō),特征提取就是把每一步下棋狀態(tài)數(shù)值化、結(jié)構(gòu)化。?AlphaGo所用的原始圍棋數(shù)據(jù)取自KGS圍棋服務(wù)器上6到9段的對(duì)局,共16萬(wàn)盤近3000萬(wàn)步走棋。根據(jù)不同子模型的需求,AlphaGo從這些原始的棋局中一共提取了兩份特征數(shù)據(jù)。?
首先,我們不難想到第一個(gè)最直觀的棋盤特征,那就是落子情況。如上圖所示,圍棋棋盤大小為19×19,每一個(gè)位置的可能落子情況有三種:黑子、白子或留白。因此一個(gè)樣本的落子特征數(shù)據(jù)就是3個(gè)19×19的矩陣,每個(gè)矩陣分別描述棋盤上的一種落子情況。
?
除了落子情況,當(dāng)前棋盤本身的狀態(tài)也可以提取出許多特征,比如當(dāng)前執(zhí)黑還是執(zhí)白、每個(gè)落子經(jīng)過(guò)的輪次、落子后預(yù)計(jì)吞子數(shù)目以及落子是否合法等。拿“每個(gè)落子經(jīng)過(guò)的輪次”特征舉例,一個(gè)8位的二進(jìn)制串足以表示任一方在整盤棋中所下的輪數(shù),因此該特征可以用8個(gè)19×19的矩陣表示。下圖舉例展示了落子情況的特征矩陣形式,其他特征以此類推。?
加上落子情況,AlphaGo一共提取了48種特征,構(gòu)成一個(gè)19×19×48的特征空間。為了方便后文敘述,這份特征數(shù)據(jù)集先命名為SetA。SetA相當(dāng)于一份圖片數(shù)據(jù)集,作為卷積神經(jīng)網(wǎng)絡(luò)的輸入。
?
除開圖片數(shù)據(jù)集,AlphaGo還根據(jù)圍棋的領(lǐng)域知識(shí)提取了另一份喂給softmax回歸網(wǎng)絡(luò)的局部特征,用來(lái)實(shí)現(xiàn)快速走棋,為后面的蒙特卡洛樹搜索 (MCTS)做準(zhǔn)備。對(duì)于這些局部特征,AlphaGo只提供了數(shù)目統(tǒng)計(jì),并未給出這些特征的具體提取方法,數(shù)目統(tǒng)計(jì)如下圖所示。?
同樣,為了便于后文描述,這份特征數(shù)據(jù)集命名為SetB。
?
模型訓(xùn)練
一上來(lái)就分為策略網(wǎng)絡(luò)與價(jià)值網(wǎng)絡(luò)來(lái)講,只會(huì)加“厚”AlphaGo的神秘面紗。講道理,AlphaGo的子模型其實(shí)一共有四個(gè):卷積策略網(wǎng)絡(luò)、增強(qiáng)策略網(wǎng)絡(luò)、softmax回歸網(wǎng)絡(luò)和卷積價(jià)值網(wǎng)絡(luò)。下面我將逐一講解這四個(gè)網(wǎng)絡(luò)結(jié)構(gòu)及其訓(xùn)練過(guò)程。
卷積策略網(wǎng)絡(luò)
這里有必要先鋪墊幾句,自從機(jī)器學(xué)習(xí)的泰山北斗Hinton在06年重新掀起深度學(xué)習(xí)的熱潮以來(lái),伴隨著計(jì)算機(jī)硬件技術(shù)的迅猛發(fā)展,作為深度學(xué)習(xí)代表之一的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN),在算法界可謂無(wú)人不知無(wú)人不曉。CNN擅長(zhǎng)解決的問(wèn)題是圖像識(shí)別和圖片分類,在這些問(wèn)題上有著驚人的效果,因此DeepMind團(tuán)隊(duì)選擇了CNN來(lái)訓(xùn)練AlphaGo的base模型。這個(gè)模型的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。?
可知,輸入數(shù)據(jù)集為setA,卷積策略網(wǎng)絡(luò)共有13個(gè)卷積層,一個(gè)softmax全連接層。其中第1個(gè)卷積層使用5×5的卷積核同尺寸Relu輸出,第2~12個(gè)卷積層均使用3×3的卷積核同尺寸Relu輸出,第13層使用1×1的單元核做了一個(gè)線性歸一的過(guò)濾,最后softmax全連接層預(yù)測(cè)輸出下一步落子位置的可能性。
?
可想而知,這個(gè)卷積策略網(wǎng)絡(luò)所形成的圍棋AI水平已經(jīng)很高了,起碼它已經(jīng)學(xué)會(huì)了大部分人類高手的下法。但是,這對(duì)于AlphaGo來(lái)說(shuō)還遠(yuǎn)遠(yuǎn)不夠。
增強(qiáng)策略網(wǎng)絡(luò)
如果說(shuō)卷積策略網(wǎng)絡(luò)是一個(gè)學(xué)習(xí)他人、超越他人的階段,那么增強(qiáng)策略網(wǎng)絡(luò)就是一個(gè)自我學(xué)習(xí)、超越自我的階段。據(jù)說(shuō)AlphaGo的內(nèi)部測(cè)試結(jié)果為,增強(qiáng)策略網(wǎng)絡(luò)對(duì)上卷積策略網(wǎng)絡(luò)的勝率高達(dá)80%!那么其究竟是如何實(shí)現(xiàn)自我學(xué)習(xí)的呢?
這里不得不說(shuō)一下增強(qiáng)學(xué)習(xí)了。增強(qiáng)學(xué)習(xí)又稱強(qiáng)化學(xué)習(xí),是通過(guò)一種不斷地自我試錯(cuò)方式,來(lái)找到最佳策略并加以激勵(lì)的機(jī)器學(xué)習(xí)方式。就以下圍棋為例,好比兩個(gè)完全不會(huì)下棋的人,一開始都隨機(jī)落子,直到一方獲勝。獲勝的一方根據(jù)走法來(lái)優(yōu)化自己的落子策略,然后兩人再繼續(xù)不停地下棋、優(yōu)化、下棋,重復(fù)這樣的過(guò)程,直到滿足某一條件。最終,不會(huì)下棋的人也能知道哪一步是好棋,哪一步是臭棋。這就是增強(qiáng)學(xué)習(xí)的一種通俗解釋,有點(diǎn)像周伯通的雙手互搏術(shù)。?
增強(qiáng)策略網(wǎng)絡(luò)使用增強(qiáng)學(xué)習(xí)進(jìn)行訓(xùn)練,這里可不是隨機(jī)落子,而是用卷積策略網(wǎng)絡(luò)這個(gè)基礎(chǔ)AI開始落子。具體方法是先復(fù)制一份卷積策略網(wǎng)絡(luò)參數(shù)給增強(qiáng)策略網(wǎng)絡(luò)初始化,最終輸贏標(biāo)簽和棋為0、贏棋為1、輸棋為-1,然后用增強(qiáng)策略網(wǎng)絡(luò)反復(fù)和自己弈棋,根據(jù)輸贏結(jié)果反向傳播更新網(wǎng)絡(luò)參數(shù)。經(jīng)過(guò)若干次迭代之后更新一份參數(shù)至對(duì)手網(wǎng)絡(luò),直至滿足一定的條件后結(jié)束。
?
據(jù)說(shuō)單憑該網(wǎng)絡(luò)的下棋水準(zhǔn)就已經(jīng)達(dá)到了KGS的3d水平。不過(guò),AlphaGo并沒有在最后的系統(tǒng)中使用這個(gè)增強(qiáng)策略網(wǎng)絡(luò),理由是增強(qiáng)策略網(wǎng)絡(luò)的走棋風(fēng)格缺乏變化,對(duì)后面的蒙特卡洛樹的搜索不利。
softmax回歸網(wǎng)絡(luò)
大家或許會(huì)問(wèn),上面已經(jīng)有了一個(gè)很強(qiáng)的走棋網(wǎng)絡(luò),為什么還需要一個(gè)softmax回歸網(wǎng)絡(luò)來(lái)走棋呢?我想可能有如下兩點(diǎn)原因:
第一,回歸網(wǎng)絡(luò)結(jié)構(gòu)只有一個(gè)隱層,相比卷積神經(jīng)網(wǎng)絡(luò)的13層結(jié)構(gòu),其落子的速度實(shí)在是快太多了,根本不在一個(gè)數(shù)量級(jí)上,且準(zhǔn)確率還不錯(cuò),而后面要講的蒙特卡洛樹搜索方法對(duì)搜索的時(shí)間要求很高,卷積網(wǎng)絡(luò)無(wú)法滿足要求;?
第二,**softmax回歸網(wǎng)絡(luò)的數(shù)據(jù)集是**setB,與setA處于完全不同的特征空間,因此能提高走棋策略的多樣性,增加了是落子的不同可能性。
?
事實(shí)證明,用softmax回歸網(wǎng)絡(luò)單獨(dú)落子,也達(dá)到了KGS的3d水平。
卷積價(jià)值網(wǎng)絡(luò)
這是AlphaGo的又一個(gè)厲害之處,就是說(shuō)AlphaGo不僅要有高效的落子方案,還要有這么一個(gè)網(wǎng)絡(luò)來(lái)評(píng)估當(dāng)前棋局的獲勝概率,來(lái)雙重保證當(dāng)前的落子方案是最優(yōu)方案。
卷積價(jià)值網(wǎng)絡(luò)的算法思想是:每次隨機(jī)一盤棋局之中的輪次T,棋局的第1輪到T-1輪落子由卷積策略網(wǎng)絡(luò)生成;然后在第T輪隨機(jī)落子,第T+1輪一直到該局結(jié)束則使用增強(qiáng)策略網(wǎng)絡(luò)生成落子;最后計(jì)算輸贏,贏棋為1,輸棋為0,反向傳播誤差調(diào)整網(wǎng)絡(luò)參數(shù)。這個(gè)卷積價(jià)值網(wǎng)絡(luò)的結(jié)構(gòu)如下圖所示。?
觀察上圖可知,除了輸出層把softmax層替換成了256的全連接層外加一個(gè)Tanh激活層,其它層的結(jié)構(gòu)與卷積策略網(wǎng)絡(luò)一模一樣。此外,需要注意的是,這里的輸入數(shù)據(jù)集全部是由卷積策略網(wǎng)絡(luò)和增強(qiáng)策略網(wǎng)絡(luò)共同生成。而且為了避免同一對(duì)局下,輸入不同但結(jié)局相同所帶來(lái)的過(guò)擬合現(xiàn)象,每一個(gè)對(duì)局只會(huì)取一個(gè)樣本進(jìn)行訓(xùn)練,這也是為什么單獨(dú)采集了3000萬(wàn)個(gè)對(duì)局的樣本作為訓(xùn)練集的原因。
?
模型預(yù)測(cè)
打造好了上述四件兵器,卷積策略網(wǎng)絡(luò)、增強(qiáng)策略網(wǎng)絡(luò)、softmax回歸網(wǎng)絡(luò)和卷積價(jià)值網(wǎng)絡(luò),AlphaGo披掛上陣。它走進(jìn)了人類頂級(jí)圍棋道場(chǎng)與頂級(jí)棋手較量,采用的戰(zhàn)術(shù)策略就是前面提到的蒙特卡洛樹搜索 (MCTS),其搜索示意圖如下所示。?
?
蒙特卡洛樹搜索
MCTS的基本思想是:多次模擬未來(lái)棋局,然后選擇模擬次數(shù)最多的落子方案作為當(dāng)前走法。具體步驟如下:
首先,用卷積策略網(wǎng)絡(luò)生成到未來(lái)T輪的落子方案;?
然后,用卷積價(jià)值網(wǎng)絡(luò)評(píng)估該落子方案的勝率,用softmax回歸網(wǎng)絡(luò)基于該落子方案繼續(xù)快速走棋,直至棋局結(jié)束得到輸贏結(jié)果,綜合兩個(gè)結(jié)果算出該T輪落子方案的勝率;?
接著,結(jié)合該勝率,用卷積策略網(wǎng)絡(luò)重新生成到未來(lái)T輪的落子方案,若出現(xiàn)相同走法,則勝率取平均值;?
最后,循環(huán)上述過(guò)程若干次,選擇模擬次數(shù)最多的勝率最高的落子方案作為當(dāng)前走法。?
現(xiàn)在這里可以總結(jié)說(shuō)一下了,如果單純把AlphaGo分成策略網(wǎng)絡(luò)和價(jià)值網(wǎng)絡(luò),那么策略網(wǎng)絡(luò)指的就是上面所說(shuō)的卷積策略網(wǎng)絡(luò),而價(jià)值網(wǎng)絡(luò)則是卷積價(jià)值網(wǎng)絡(luò)與softmax回歸網(wǎng)絡(luò)的結(jié)合。其中策略網(wǎng)絡(luò)負(fù)責(zé)計(jì)算當(dāng)前的落子位置,價(jià)值網(wǎng)絡(luò)則負(fù)責(zé)評(píng)估落子該位置的最終勝率,MCTS則利用這兩個(gè)結(jié)果進(jìn)行搜索,給出最終的落子方案。
?
據(jù)說(shuō)最近對(duì)戰(zhàn)柯潔的AlphaGo Master版本要?jiǎng)偃ツ甑睦钍朗姹救?#xff0c;與柯潔三局下來(lái)也沒有出現(xiàn)像去年第四局那樣,因昏招而落敗的情況。推測(cè)原因,一是在MCTS的時(shí)候做了優(yōu)化,結(jié)合快速走棋來(lái)搜索節(jié)點(diǎn)而不是只用卷積策略網(wǎng)絡(luò),這樣就能避免短期內(nèi)落入局部思維而完全忽略人類的“神來(lái)之筆”;二是數(shù)據(jù)集已經(jīng)完全棄用人類棋局,而是用從AlphaGo自我對(duì)弈中挑選出的樣本來(lái)構(gòu)成,因此策略網(wǎng)絡(luò)也會(huì)更加強(qiáng)大。?
這里多說(shuō)一句,只用卷積策略網(wǎng)絡(luò)搜索節(jié)點(diǎn)存在弊端,是因?yàn)榫矸e核一般都很小,導(dǎo)致棋盤不同位置的局部視野需要在若干輪之后才能相互影響,因此才出現(xiàn)了所謂的昏招。
?
文末,想表達(dá)一下我對(duì)下面這個(gè)問(wèn)題的觀點(diǎn)。
先后勝樊麾、李世石與柯潔,是否意味著AlphaGo已具備自主意識(shí),走向強(qiáng)AI時(shí)代?
對(duì)于這個(gè)問(wèn)題,我想用兩點(diǎn)來(lái)回答一下。?
其一,一個(gè)能識(shí)別出美女圖片的圖像識(shí)別系統(tǒng),是否就是好色呢??
其二,Facebook黑暗森林的負(fù)責(zé)人田淵棟老師說(shuō),AlphaGo在去年三月和李世石對(duì)局的時(shí)候要求用中國(guó)規(guī)則,因?yàn)槿绻麚Q成別的規(guī)則,預(yù)測(cè)目標(biāo)發(fā)生改變,AlphaGo就需要重新訓(xùn)練價(jià)值網(wǎng)絡(luò)了。?
智能所體現(xiàn)的思維與認(rèn)知,沒有標(biāo)準(zhǔn)。而目前各大公司的人工智能項(xiàng)目,更像是標(biāo)準(zhǔn)化的產(chǎn)物。所以從這些方面看,無(wú)論是AlphaGo、Google Brain,還是百度大腦,離真正的智能其實(shí)都還很遙遠(yuǎn)。
總結(jié)
以上是生活随笔為你收集整理的AlphaGo技术剖析:揭开围棋大脑的神秘面纱的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: GBDT和RF的区别
- 下一篇: zookeeper应用之分布式锁