作者:趙昊彤 國(guó)家電網(wǎng)國(guó)際發(fā)展有限公司,博士 二十年前我還是一名本科生的時(shí)候,就對(duì)計(jì)算機(jī)算法很感興趣。當(dāng)時(shí)深藍(lán)戰(zhàn)勝了卡斯帕羅夫,大家都普遍會(huì)議論到圍棋,并且基本的觀點(diǎn)都一致,就是計(jì)算機(jī)雖然在國(guó)際象棋上戰(zhàn)勝了人類,但是離在圍棋上戰(zhàn)勝人類還有相當(dāng)遙遠(yuǎn)的距離。沒(méi)想到二十年后,我已經(jīng)可以借助先進(jìn)的4G通訊技術(shù),實(shí)時(shí)收看AlphaGo在圍棋上擊敗人類的全過(guò)程,真的是感慨萬(wàn)千。 雖然我不做科研很多年,但出于興趣還是將DeepMind團(tuán)隊(duì)發(fā)表在Nature上的論文閱讀了一遍。之后發(fā)現(xiàn),很多圍棋愛(ài)好者、很多對(duì)AI感興趣的人雖然在網(wǎng)上發(fā)表了諸多議論,但是很少有真正了解AlphaGo是怎樣“思考”和下棋的。考慮到很多AI領(lǐng)域、深度學(xué)習(xí)領(lǐng)域的專家不屑于科普AlphaGo的“算法”,而更多的人又不愿意去啃那篇論文,干脆我就來(lái)拋磚引玉,將AlphaGo的“思考過(guò)程”和大家做個(gè)普及性分享,并談?wù)勛约横槍?duì)未來(lái)AI和深度學(xué)習(xí)領(lǐng)域的認(rèn)識(shí)。 一、AlphaGo“思考”的過(guò)程 考慮到我們?nèi)祟愓J(rèn)識(shí)問(wèn)題都愿意自頂向下,先看到全局再看局部。所以我先介紹一下AlphaGo“思考”的全過(guò)程。 形象地說(shuō),AlphaGo有四個(gè)思考用的“大腦”,也就是DeepMind團(tuán)隊(duì)訓(xùn)練出來(lái)的四個(gè)神經(jīng)網(wǎng)絡(luò),用論文中的符號(hào)表示,就是Pπ、Pσ、Pρ和Vθ,為了方便起見,給它們起名為“快速走子網(wǎng)絡(luò)”、“專家訓(xùn)練網(wǎng)絡(luò)”、“自我提升網(wǎng)絡(luò)”和“價(jià)值判斷網(wǎng)絡(luò)”。前三個(gè)神經(jīng)網(wǎng)絡(luò)都以當(dāng)前圍棋對(duì)弈局面為輸入,經(jīng)過(guò)計(jì)算后輸出可能的走子選擇和對(duì)應(yīng)的概率,概率越大的點(diǎn)意味著神經(jīng)網(wǎng)絡(luò)更傾向于在那一點(diǎn)走子,這個(gè)概率是針對(duì)輸入局面下所有可能的走子方法而計(jì)算的,也就是每個(gè)可能的落子點(diǎn)都有一個(gè)概率,當(dāng)然會(huì)有不少的點(diǎn)概率為0。第四個(gè)神經(jīng)網(wǎng)絡(luò)是進(jìn)行價(jià)值判斷的,輸入一個(gè)對(duì)弈局面,它會(huì)計(jì)算得出這個(gè)局面下黑棋和白棋的勝率。 簡(jiǎn)單的解釋一下前三個(gè)網(wǎng)絡(luò)的區(qū)別:“快速走子網(wǎng)絡(luò)”是一個(gè)比較低水平但是計(jì)算量也很小的神經(jīng)網(wǎng)絡(luò);“專家訓(xùn)練網(wǎng)絡(luò)”的參數(shù)都是通過(guò)職業(yè)棋手對(duì)弈的棋局訓(xùn)練出來(lái)的,它的激活函數(shù)和具體的卷積核數(shù)量以及相應(yīng)神經(jīng)元數(shù)量會(huì)與“快速走子網(wǎng)絡(luò)”有所不同,表現(xiàn)為計(jì)算量不同,水平也不同;“自我提升網(wǎng)絡(luò)”是在“專家訓(xùn)練網(wǎng)絡(luò)”的基礎(chǔ)上,通過(guò)電腦自我對(duì)弈的大量棋局進(jìn)行提升訓(xùn)練后的網(wǎng)絡(luò),理論上講水平更高,計(jì)算量與“專家訓(xùn)練網(wǎng)絡(luò)”是一樣的,只是訓(xùn)練出來(lái)的參數(shù)不同。 訓(xùn)練好這四個(gè)神經(jīng)網(wǎng)絡(luò)之后,AlphaGo就可以開始與人對(duì)弈了。對(duì)弈過(guò)程中,AlphaGo的“思考”是通過(guò)蒙特卡洛博弈樹搜索和模擬來(lái)實(shí)現(xiàn)的。大致步驟如下: (1)假設(shè)當(dāng)前棋局狀態(tài)為St,對(duì)于每一種可選擇的走法a,選擇走a之后的棋局價(jià)值Q(St,a)與“專家訓(xùn)練網(wǎng)絡(luò)”計(jì)算出的走a的概率P(St,a)之和最大的那種a,記為at。注意,這里面的Q(St,a)不是簡(jiǎn)單的靠“價(jià)值判斷網(wǎng)絡(luò)”計(jì)算出來(lái)的,而是“價(jià)值判斷網(wǎng)絡(luò)”計(jì)算結(jié)果與蒙特卡洛模擬結(jié)果的加權(quán)平均;這里的P(St,a)也不是直接用“專家訓(xùn)練網(wǎng)絡(luò)”計(jì)算出來(lái)的,而是正比于Pσ(St,a)/(1+N(St,a)),N(St,a)是(St,a)這個(gè)節(jié)點(diǎn)所經(jīng)過(guò)的搜索次數(shù),為了鼓勵(lì)搜索模擬,“專家訓(xùn)練網(wǎng)絡(luò)”所得到的走子概率用搜索次數(shù)進(jìn)行了衰減。 (2)按照(1)中的方法繼續(xù)搜索選擇下一級(jí)節(jié)點(diǎn),直到搜索下去碰上一個(gè)葉子節(jié)點(diǎn),也就是原來(lái)沒(méi)有再繼續(xù)展開的、沒(méi)有評(píng)估過(guò)的節(jié)點(diǎn)。 (3)將這個(gè)葉子節(jié)點(diǎn)SL展開,并用“價(jià)值判斷網(wǎng)絡(luò)”計(jì)算其價(jià)值Vθ(SL),然后用“快速走子網(wǎng)絡(luò)”在這個(gè)節(jié)點(diǎn)的基礎(chǔ)上進(jìn)行多局自我對(duì)弈,根據(jù)多局對(duì)弈的勝負(fù)比率來(lái)估算勝率Z(SL)。最后使用Vθ(SL)和Z(SL)的加權(quán)平均來(lái)估算此節(jié)點(diǎn)的勝率。 (4)將估算結(jié)果反向更新到這次搜索途經(jīng)的全部節(jié)點(diǎn),反向更新公式稍復(fù)雜,就不再列了,本來(lái)目的就是普及性介紹嘛。 (5)之后再?gòu)腟t開始,仍然按照(1)的規(guī)則重新搜索。 至于蒙卡搜索模擬到什么時(shí)候,取決于給AlphaGo多長(zhǎng)的時(shí)間走一步棋,時(shí)間快到的時(shí)候,AlphaGo就停止搜索模擬,并以跟節(jié)點(diǎn)St下搜索途經(jīng)次數(shù)最多的節(jié)點(diǎn)(因?yàn)槊看味际沁x最佳節(jié)點(diǎn)搜索模擬,所以搜索結(jié)束后就以途經(jīng)次數(shù)最多作為標(biāo)準(zhǔn)了)作為自己本步的著法。 以上就是AlphaGo思考的全過(guò)程,其實(shí)和人類很類似,有思考下一步著法的“大腦”,有判斷局面價(jià)值的“大腦”,然后再向后推斷若干步,確定自己的“走法”。 二、卷積神經(jīng)網(wǎng)絡(luò)(CNN)的極簡(jiǎn)介紹 下面簡(jiǎn)單介紹一下卷積神經(jīng)網(wǎng)絡(luò)。先說(shuō)神經(jīng)網(wǎng)絡(luò),就是模擬人類或者動(dòng)物大腦,用若干個(gè)神經(jīng)元共同計(jì)算逼近某種復(fù)雜計(jì)算(函數(shù))的方法。其實(shí)任何一種價(jià)值判斷都可以理解為某種多元函數(shù),輸入若干數(shù)據(jù)(信息),輸出結(jié)論。數(shù)學(xué)上可以證明,使用神經(jīng)網(wǎng)絡(luò)(多層)可以無(wú)限逼近這些多元函數(shù)。 拿圍棋來(lái)講,假設(shè)每種局面下會(huì)有一種或幾種最理想的走法,那么就可以將局面作為輸入,理想走法作為輸出形成一類多元函數(shù)。理論上,神經(jīng)網(wǎng)絡(luò)可以無(wú)限逼近這個(gè)函數(shù)。由于圍棋局面可以看成一個(gè)19*19的圖像,而卷積神經(jīng)網(wǎng)絡(luò)(CNN)又是處理圖像比較理想的方法,所以DeepMind團(tuán)隊(duì)就使用了CNN。 當(dāng)然CNN為什么設(shè)置為13層的神經(jīng)網(wǎng)絡(luò),每層的卷積核有幾個(gè),激活函數(shù)是什么,使用什么樣的誤差傳遞函數(shù)來(lái)反向訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò),這些都需要嘗試,這才是DeepMind團(tuán)隊(duì)最主要的成果,當(dāng)然論文里面也不會(huì)詳細(xì)說(shuō)了。 一個(gè)問(wèn)題是,訓(xùn)練最基礎(chǔ)的“專家訓(xùn)練網(wǎng)絡(luò)”所使用的數(shù)據(jù)是大量職業(yè)棋手的棋局,但是沒(méi)有理由認(rèn)為職業(yè)棋手的走法就是最佳走法,所以這種訓(xùn)練實(shí)際上是用一種有誤差的數(shù)據(jù)進(jìn)行的,當(dāng)然訓(xùn)練出來(lái)的神經(jīng)網(wǎng)絡(luò)也不會(huì)絕對(duì)理想。但是,如果AlphaGo真的在這種訓(xùn)練下達(dá)到高水平,以后可以考慮使用高水平AlphaGo自我對(duì)弈的棋局重新訓(xùn)練形成“專家訓(xùn)練網(wǎng)絡(luò)”,也許效果會(huì)更好。 三、關(guān)于論文中的幾個(gè)有趣事實(shí) (1)“快速走子網(wǎng)絡(luò)”計(jì)算一次需要2微秒,“專家訓(xùn)練網(wǎng)絡(luò)”計(jì)算一次需要3毫秒。 (2)“快速走子網(wǎng)絡(luò)”與專家走法的匹配準(zhǔn)確度為24.2%,“專家訓(xùn)練網(wǎng)絡(luò)”則為57%。 (3)“自我提升網(wǎng)絡(luò)”和“專家訓(xùn)練網(wǎng)絡(luò)”對(duì)弈勝率為80%。 (4)“價(jià)值判斷網(wǎng)絡(luò)”在使用職業(yè)棋手對(duì)局?jǐn)?shù)據(jù)進(jìn)行訓(xùn)練時(shí),發(fā)生了過(guò)度擬合的情況,訓(xùn)練組偏差0.19而測(cè)試組達(dá)到0.37,說(shuō)明泛化效果不好。為了解決這個(gè)問(wèn)題,改用了“自我提升網(wǎng)絡(luò)”自我對(duì)弈3000萬(wàn)局作為“價(jià)值判斷網(wǎng)絡(luò)”的訓(xùn)練數(shù)據(jù),基本解決了過(guò)度擬合的問(wèn)題。 (5)DeepMind團(tuán)隊(duì)發(fā)現(xiàn),在蒙特卡洛樹搜索時(shí),計(jì)算下一步走子概率使用“專家訓(xùn)練網(wǎng)絡(luò)”效果要優(yōu)于使用“自我提升網(wǎng)絡(luò)”,雖然“自我提升網(wǎng)絡(luò)”與“專家訓(xùn)練網(wǎng)絡(luò)”對(duì)弈時(shí)勝率高達(dá)80%。但是在訓(xùn)練“價(jià)值判斷網(wǎng)絡(luò)”時(shí),使用“自我提升網(wǎng)絡(luò)”自我對(duì)弈的棋局效果好于使用“專家訓(xùn)練網(wǎng)絡(luò)”。 (6)計(jì)算上,多線程搜索使用CPU處理,策略和價(jià)值并行計(jì)算使用GPU處理。單機(jī)版的AlphaGo使用了40個(gè)線程、48個(gè)CPU和8個(gè)GPU。分布式版的AlphaGo使用了40個(gè)線程、1202個(gè)CPU和176個(gè)GPU。 (7)分布式版本對(duì)單機(jī)版的勝率為77%。 四、澄清一些觀點(diǎn)及個(gè)人思考 (1)AlphaGo有自己的“棋風(fēng)”么? 從人類的角度看,某個(gè)固定版本的AlphaGo肯定會(huì)有自己的“棋風(fēng)”,因?yàn)橛?xùn)練好的神經(jīng)網(wǎng)絡(luò)參數(shù)就決定了它會(huì)如何“判斷”,蒙卡搜索算法又決定了它的“思考”過(guò)程,這些綜合在一起就形成了它的走棋風(fēng)格。但是這種風(fēng)格是在大量數(shù)據(jù)訓(xùn)練后形成的,肯定與人類的風(fēng)格很不一樣。它未必有系統(tǒng)的、前后一致的特點(diǎn),它的風(fēng)格更多體現(xiàn)在某種局面下會(huì)有怎樣的判斷傾向。當(dāng)然,是否能夠被人類準(zhǔn)確抓住不好說(shuō)。 (2)AlphaGo在第四局“抽風(fēng)”的bug好解決么? 個(gè)人認(rèn)為不好解決。訓(xùn)練形成的神經(jīng)網(wǎng)絡(luò)里面有大量的參數(shù),這些參數(shù)都不是程序員設(shè)定的,而是軟件自己學(xué)習(xí)形成的。如果這些參數(shù)不盡合理,在某些局面下會(huì)誤判,那么可能的解決辦法就是重新訓(xùn)練或者加強(qiáng)訓(xùn)練,絕不可能由哪個(gè)人直接修改某些參數(shù)來(lái)消除bug。嚴(yán)格的說(shuō),沒(méi)有哪個(gè)人敢隨意修改神經(jīng)網(wǎng)絡(luò)參數(shù),所以在與李世石這五局對(duì)局過(guò)程中,AlphaGo版本是沒(méi)有任何變化的。 (3)關(guān)于人工智能在深度學(xué)習(xí)技術(shù)下的可能發(fā)展? 首先,個(gè)人認(rèn)為那種能夠威脅人類的AI還遠(yuǎn)遠(yuǎn)看不到希望,目前的AlphaGo是在“監(jiān)督”下學(xué)習(xí),還算不上完全自我學(xué)習(xí)。即使不久的將來(lái)能自我學(xué)習(xí)了,也不過(guò)是針對(duì)圍棋,并不是萬(wàn)能的“學(xué)者”。我覺(jué)得人類還沒(méi)必要擔(dān)心AI會(huì)威脅人類。 其次,AI這次在圍棋上戰(zhàn)勝人類頂尖高手,基本證明了所謂的“棋感”、“棋風(fēng)”、“大局觀”等圍棋高手所談?wù)摰奶摰哪芰?,并不是人類?dú)有的,經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)也會(huì)有。所以,隨著技術(shù)的進(jìn)步,我相信電腦也會(huì)能夠欣賞藝術(shù)(音樂(lè)、畫作、小說(shuō)、笑話),能夠創(chuàng)作文學(xué)、藝術(shù)作品,能夠針對(duì)不同的情況形成自己的“情緒”。但是這些都不是人類害怕AI的理由,因?yàn)檫@些始終都是通過(guò)計(jì)算實(shí)現(xiàn)的,其實(shí)是我們?nèi)祟惪煽氐摹?/span> 未來(lái)的AI可以幫助人類搞科研、分析數(shù)據(jù)、協(xié)助醫(yī)療、創(chuàng)作詩(shī)歌、寫新聞報(bào)道等等,我相信這些都會(huì)是人類科技的進(jìn)步,都會(huì)讓生活更美好。當(dāng)然在享受這些美好的同時(shí),也需要記住,世界上所有的事情都是雙刃劍,AI也可以用來(lái)騙人、作惡,這就需要善良的人類通過(guò)有效的管理措施和監(jiān)督措施,通過(guò)法律,禁止人們開展“壞”AI的研究。 來(lái)源:科學(xué)網(wǎng),原文鏈接點(diǎn)擊 |
|
來(lái)自: 長(zhǎng)沙7喜 > 《智能技術(shù)》