2016年3月,Deepmind的AlphaGo以4比1的比分戰(zhàn)勝18屆圍棋世界冠軍李世石,這場(chǎng)比賽吸引到全球超過(guò)2億觀眾。機(jī)器學(xué)會(huì)圍棋策略,并擊敗人類(lèi)頂尖高手,這在以往被視為一種不可能的壯舉——或者至少被認(rèn)為要到十年后才有可能實(shí)現(xiàn)。
AlphaGo對(duì)李世石第三盤(pán)比賽
這本身已經(jīng)成就了歷史性時(shí)刻。但2017年10月18日,DeepMind又再次邁出新的一大步。
在《無(wú)需人類(lèi)知識(shí)掌握圍棋游戲》論文當(dāng)中,DeepMind公布了一種新的算法變種,即AlphaGo Zero——其能夠以100比0的比分狂虐AlphaGo。令人難以置信的是,AlphaGo Zero完全通過(guò)自學(xué)掌握了圍棋技藝,即以“白板”狀態(tài)起步通過(guò)戰(zhàn)勝自我進(jìn)行學(xué)習(xí)。如此一來(lái),無(wú)需人類(lèi)圍棋專(zhuān)家提供的數(shù)據(jù)庫(kù),超人類(lèi)AI即可成為現(xiàn)實(shí)。
僅僅48天之后,DeepMind于2017年12月5日發(fā)布了另一篇題為《通過(guò)自我強(qiáng)化學(xué)習(xí)算法掌握國(guó)際象棋與將棋》的論文,展示了AlphaGo Zero如何在國(guó)際象棋與將棋領(lǐng)域分別擊敗最強(qiáng)程序StockFish與Elmo。更可怕的是,其整個(gè)學(xué)習(xí)過(guò)程是——從一竅不通到成為世界上最強(qiáng)的下棋程序——僅用了24個(gè)小時(shí)。
憑借如此恐怖的實(shí)力,AlphaZero正式誕生——這種通用型算法能夠在無(wú)需人類(lèi)專(zhuān)家策略作為知識(shí)基礎(chǔ)的前提下,快速建立起適用于特定目標(biāo)的一般性解決方法。
這樣的能力無(wú)論如何夸大都不為過(guò)。這意味著AlphaGo Zero的底層方法能夠利用完美信息(即比賽雙方皆可隨時(shí)了解全盤(pán)信息)適應(yīng)任何游戲,即除游戲規(guī)則之外不再需要任何預(yù)先提供的專(zhuān)業(yè)指導(dǎo)。
也正因?yàn)槿绱?,DeepMind才能夠在初始AlphaGo Zero論文發(fā)布的短短48天之后,發(fā)布國(guó)際象棋與將棋版本。毫不夸張地講,我們需要做的僅僅是變換用于描述游戲機(jī)制的輸入文件,同時(shí)調(diào)整與神經(jīng)網(wǎng)絡(luò)以及蒙特卡洛樹(shù)搜索相關(guān)的超參數(shù)。
如果說(shuō)AlphaZero所使用的超復(fù)雜算法全世界只有少數(shù)人能夠理解,仍然不會(huì)影響到這項(xiàng)卓越的成就。而更難能可貴的是,其核心實(shí)際上相當(dāng)簡(jiǎn)單,甚至可以總結(jié)成以下幾句概括:
通過(guò)潛在的未來(lái)場(chǎng)景設(shè)計(jì)游戲思維,優(yōu)先考慮更具前景的途徑,同時(shí)考慮對(duì)方可能選擇的反應(yīng)行為,同時(shí)繼續(xù)探索未知。
在達(dá)成某種陌生狀態(tài)后,評(píng)估對(duì)當(dāng)前優(yōu)勢(shì)位置的信心,并將評(píng)分與此前采取的達(dá)成當(dāng)前狀態(tài)的思維途徑進(jìn)行映射。
在完成對(duì)未來(lái)可能性的思考之后,采取探索程度最高的行動(dòng)。
在游戲結(jié)束時(shí),返回并評(píng)估一切錯(cuò)誤的未來(lái)位置價(jià)值評(píng)估,并相應(yīng)更新自身理解。
這聽(tīng)起來(lái)正是我們每個(gè)人游玩游戲時(shí)的學(xué)習(xí)過(guò)程,對(duì)吧?當(dāng)做出錯(cuò)誤判斷時(shí),很可能是由于我們未能準(zhǔn)確把握所占據(jù)位置的未來(lái)價(jià)值,或者錯(cuò)誤判斷了對(duì)手執(zhí)行某種操作的可能性,因此錯(cuò)過(guò)了搶占先機(jī)的機(jī)會(huì)。而這些,正是成就 Alpha Zero游戲?qū)W習(xí)訓(xùn)練的兩大根基。
在今天的文章中,我將嘗試探討以下三項(xiàng)內(nèi)容:
1、AlphaZero之所以標(biāo)志著人工智能發(fā)展一大步的兩個(gè)理由。
2、如何重現(xiàn)AlphaZero方法以掌握Connect4游戲。
3、如何調(diào)整代碼以適應(yīng)其它游戲。
首先,查看AlphaGo Zero備忘清單以深入理解AlphaGo Zero的工作原理。我們顯然有必要對(duì)代碼中的各個(gè)組成部分進(jìn)行遍歷。
克隆此Git庫(kù),其中包含我所引用的代碼。
要開(kāi)始整個(gè)學(xué)習(xí)過(guò)程,首先請(qǐng)運(yùn)行run.ipyng Jupyter記事本中的前兩面。在建立起足夠的游戲位置以填充自身記憶之后,神經(jīng)網(wǎng)絡(luò)即可開(kāi)始訓(xùn)練。通過(guò)更多自我對(duì)抗及訓(xùn)練,其將能夠慢慢提升游戲價(jià)值以及后續(xù)潛在位置移動(dòng)判斷方面的能力,從而做出更好的決策并獲得更強(qiáng)大的游戲水平。
現(xiàn)在我們將查看具體代碼內(nèi)容,并展示一些結(jié)果,用以證明AI確實(shí)隨著時(shí)間推移而變得愈發(fā)強(qiáng)大。
備注——這只是我個(gè)人對(duì)于AlphaZero工作原理的理解,這些理解主要基于前文提到的論文內(nèi)容。如果以下存在任何謬誤,我向大家誠(chéng)摯道歉,并期待您能夠加以糾正!
在本示例中,我們的算法將要學(xué)習(xí)如何進(jìn)行Connect4游戲(或者叫四連棋)。其復(fù)雜程度當(dāng)然無(wú)法與圍棋相提并論……但其中仍然包含總計(jì)4531985219092個(gè)游戲位置。
游戲規(guī)則非常簡(jiǎn)單。玩家輪流在可用位置上放入自己顏色的棋子,第一個(gè)將四個(gè)己方棋子連成一排的玩家獲勝——垂直、水平或者斜向皆可。如果整個(gè)棋盤(pán)都被填滿(mǎn)但仍未出現(xiàn)四連一排,則游戲打成平局。
下面來(lái)看構(gòu)成代碼庫(kù)的關(guān)鍵文件摘要:
此文件包含Connect4游戲的基本規(guī)則。
每個(gè)方格被分配一個(gè)數(shù)字,范圍為由0到41,如下所示:
Connect4行動(dòng)方塊
Game.py文件提供游戲狀態(tài)間的轉(zhuǎn)移邏輯,并給出可選行動(dòng)范圍。舉例來(lái)說(shuō),若當(dāng)前為空棋盤(pán)且將棋子放在38號(hào)位,則takeAction方法會(huì)返回一個(gè)新的游戲狀態(tài),且起手玩家位于中央列的底部。
您可以利用任何擁有同樣API的游戲文件替換game.py,算法會(huì)自動(dòng)根據(jù)您提供的規(guī)則進(jìn)行自我學(xué)習(xí)并逐步掌握游戲策略。
本文件中包含開(kāi)始學(xué)習(xí)過(guò)程的相關(guān)代碼。其會(huì)加載游戲規(guī)則,而后通過(guò)主算法循環(huán)進(jìn)行迭代,具體分為以下三個(gè)階段:
1. 自我對(duì)抗
2. 重新訓(xùn)練神經(jīng)網(wǎng)絡(luò)
3. 評(píng)估神經(jīng)網(wǎng)絡(luò)
此循環(huán)當(dāng)中主要涉及兩個(gè)代理,分別為best_player與current_player。
其中best_player包含表現(xiàn)最好 神經(jīng)網(wǎng)絡(luò),并將被用于生成自我對(duì)抗記憶。而current_player隨后會(huì)根據(jù)記憶重新訓(xùn)練其神經(jīng)網(wǎng)絡(luò),而后做出最好的選擇。如果贏了,那么best_player當(dāng)中的神經(jīng)網(wǎng)絡(luò)會(huì)被切換為current_player中的神經(jīng)網(wǎng)絡(luò),而后再次開(kāi)始循環(huán)。
此文件當(dāng)中包含Agent類(lèi)(游戲中的一位玩家)。每個(gè)玩家都會(huì)利用自己的神經(jīng)網(wǎng)絡(luò)與蒙特卡洛樹(shù)進(jìn)行初始化。
其中simulate方法運(yùn)行蒙特卡洛樹(shù)搜索過(guò)程。具體來(lái)講,該代理移動(dòng)至對(duì)的葉節(jié)點(diǎn),利用其神經(jīng)網(wǎng)絡(luò)評(píng)估該節(jié)點(diǎn),而后通過(guò)該樹(shù)回填該節(jié)點(diǎn)的值。
而act方法則多次重復(fù)模擬,從而理解當(dāng)前哪個(gè)位置為最優(yōu)行動(dòng)。此后,其會(huì)將選定的行動(dòng)返回給游戲,并實(shí)際加以執(zhí)行。
最后是replay方法,其負(fù)責(zé)利用原有游戲記憶對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行重新訓(xùn)練。
此文件包含Residual_CNN類(lèi),其負(fù)責(zé)定義如何構(gòu)建神經(jīng)網(wǎng)絡(luò)實(shí)例。
它利用AlphaGo Zero論文當(dāng)中提到的一種神經(jīng)網(wǎng)絡(luò)架構(gòu)縮寫(xiě)形式——即卷積層,而后為大量剩余層,最終拆分為一個(gè)值與策略標(biāo)頭。
各卷積過(guò)濾器的深度與數(shù)量可以在配置文件當(dāng)中指定。
Keras庫(kù)負(fù)責(zé)構(gòu)建該網(wǎng)絡(luò),后端則由TensorFlow充當(dāng)。
要查看該神經(jīng)網(wǎng)絡(luò)當(dāng)中的各獨(dú)立卷積過(guò)濾器以及密集連接層,請(qǐng)?jiān)趓un.ipyng記事本當(dāng)中運(yùn)行以下命令:
current_player.model.viewLayers()
神經(jīng)網(wǎng)絡(luò)中的卷積過(guò)濾器
其中包含Node、Edge與MCTS類(lèi),其共同構(gòu)成蒙特卡洛搜索樹(shù)。
MCTS類(lèi)包含之前提到的moveToLeaf與backFill方法,且Edge類(lèi)的各實(shí)例存儲(chǔ)與每項(xiàng)潛在移動(dòng)相關(guān)的統(tǒng)計(jì)信息。
在此文件中,大家可以設(shè)置將對(duì)算法造成影響的關(guān)鍵參數(shù)。
調(diào)整上述變量會(huì)對(duì)運(yùn)行時(shí)間、神經(jīng)網(wǎng)絡(luò)準(zhǔn)確性以及算法的整體成功率造成影響。上述參數(shù)能夠產(chǎn)生高質(zhì)量Connect4玩家,但需要很長(zhǎng)時(shí)間才能學(xué)習(xí)完成。要加快算法速度,請(qǐng)嘗試使用以下參數(shù)。
此文件當(dāng)中包含 playMatches與playMatchesBetweenVersions函數(shù),負(fù)責(zé)實(shí)現(xiàn)兩個(gè)代理間的對(duì)抗。
要進(jìn)行自我對(duì)抗,請(qǐng)運(yùn)行以下代碼(同樣位于run.ipynb記事本當(dāng)中):
from game importGame
from funcs importplayMatchesBetweenVersions
importloggers as lg
env = Game()
playMatchesBetweenVersions(
env
, 1 #計(jì)算機(jī)玩家所在的運(yùn)行版本號(hào)
, -1 #第一玩家版本號(hào)(-1為人類(lèi))
, 12 #第二玩家的版本號(hào)(-1為人類(lèi))
, 10 #進(jìn)行多少盤(pán)游戲
, lg.logger_tourney #游戲日志記錄位置
, 0 #哪個(gè)玩家先起手,-0為隨機(jī)
)
在運(yùn)行算法時(shí),所有模型與記憶文件都將被保存在root目錄下的run文件夾內(nèi)。
若需要稍后從此檢查點(diǎn)重新啟動(dòng)算法,請(qǐng)將run文件夾移動(dòng)至run_archive文件夾,并在文件夾名稱(chēng)中添加運(yùn)行編號(hào)。接下來(lái),在initialise.py文件中輸入運(yùn)行編號(hào)、模型版本號(hào)以及記憶版本號(hào),對(duì)應(yīng)于run_archive文件夾中相關(guān)文件的位置。這樣如往常一樣運(yùn)行算法后,即可從此檢查點(diǎn)開(kāi)始。
Memory類(lèi)的一個(gè)實(shí)例,用于存儲(chǔ)以往游戲的記憶,以供算法對(duì)current_pkayer神經(jīng)網(wǎng)絡(luò)進(jìn)行重新訓(xùn)練。
此文件中包含一項(xiàng)自定義丟失函數(shù),其會(huì)在將預(yù)測(cè)結(jié)果發(fā)送至交叉熵丟失函數(shù)之前地其進(jìn)行模糊,從而避免出現(xiàn)非法移動(dòng)。
Run與run_archive文件夾的位置。
日志文件被保存在run文件夾當(dāng)中的log文件夾內(nèi)。
要啟動(dòng)日志記錄,請(qǐng)?jiān)谖募袑ogger_disabled變量的值設(shè)置為False。
查看日志文件將幫助我們理解算法的工作狀態(tài)并掌握其“思路”。舉例來(lái)說(shuō),以下為logger.mcts文件樣本。
來(lái)自logger.mcts文件的輸出結(jié)果
在logger.tourney當(dāng)中,您可以看到評(píng)估階段當(dāng)中每項(xiàng)移動(dòng)的具體可能性:
來(lái)自logger.tourney文件的輸出結(jié)果
通過(guò)幾天的訓(xùn)練,以下為小批量迭代后產(chǎn)生的圖表:
小批量迭代中的丟失情況
第一行為策略標(biāo)頭中的誤差(MCTS移動(dòng)可能性中的交叉熵,針對(duì)來(lái)自神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果)。最下一行則為值標(biāo)頭(實(shí)際游戲價(jià)值與神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)值之間的均方誤差)誤差。中間一行則為二者的平均值。
很明顯,該神經(jīng)網(wǎng)絡(luò)在預(yù)測(cè)每種游戲狀態(tài)值以及潛在下一動(dòng)移動(dòng)方面表現(xiàn)得越來(lái)越好。為了顯示這一結(jié)果的提升過(guò)程,我從第1次迭代到第49次迭代當(dāng)中選出17個(gè)玩家組成聯(lián)盟。每個(gè)玩家進(jìn)行兩次配對(duì),并在其中獲得一次起手權(quán)。
以下為最終排名:
很明顯,該神經(jīng)網(wǎng)絡(luò)的新版本要比初始版本更勝一籌,贏得了大部分游戲。另外,學(xué)習(xí)似乎還沒(méi)有飽和——隨著訓(xùn)練時(shí)間的進(jìn)一步延長(zhǎng),其游戲水平變得更為強(qiáng)大,并能夠?qū)W習(xí)到愈發(fā)復(fù)雜的策略。
舉例來(lái)說(shuō),神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)的第一項(xiàng)明確策略在于盡早搶占中央列。觀察該算法最初版本與第30次迭代版本間的差異,會(huì)發(fā)現(xiàn):
神經(jīng)網(wǎng)絡(luò)最初版本
神經(jīng)網(wǎng)絡(luò)第30次迭代版本
這是一項(xiàng)很好的策略,因?yàn)榇蠖嗨倪B排布都需要經(jīng)過(guò)中間列——因此應(yīng)盡早阻止對(duì)手利用這一點(diǎn)。神經(jīng)網(wǎng)絡(luò)在無(wú)需任何人為輸入的前提下發(fā)現(xiàn)了這項(xiàng)規(guī)律。
項(xiàng)目的games文件夾當(dāng)中有一個(gè)面向“Metasquares”游戲的game.py文件,其基本規(guī)則是在網(wǎng)格當(dāng)中畫(huà)下X與O,從而盡可能形成不同大小的正方形。正方形面積越大,得分則越高。當(dāng)網(wǎng)格被畫(huà)滿(mǎn)時(shí),得分最高的玩家獲勝。
如果你將Connect4 game.py文件切換為Metasquares game.py文件,即可通過(guò)同樣的算法學(xué)習(xí)如何玩轉(zhuǎn)Metasquares游戲。
medium.com
作者:David Foster
編譯整理:科技行者
好文章,需要你的鼓勵(lì)
這項(xiàng)研究提出了"高效探測(cè)"方法,解決了掩碼圖像建模AI難以有效評(píng)估的問(wèn)題。通過(guò)創(chuàng)新的多查詢(xún)交叉注意力機(jī)制,該方法在減少90%參數(shù)的同時(shí)實(shí)現(xiàn)10倍速度提升,在七個(gè)基準(zhǔn)測(cè)試中均超越傳統(tǒng)方法。研究還發(fā)現(xiàn)注意力質(zhì)量與分類(lèi)性能的強(qiáng)相關(guān)性,生成可解釋的注意力圖譜,展現(xiàn)出優(yōu)異的跨域適應(yīng)性。團(tuán)隊(duì)承諾開(kāi)源全部代碼,推動(dòng)技術(shù)普及應(yīng)用。
伊利諾伊大學(xué)研究團(tuán)隊(duì)開(kāi)發(fā)了CLAIMSPECT系統(tǒng),通過(guò)層次化分解復(fù)雜爭(zhēng)議、智能檢索相關(guān)文獻(xiàn)、多角度收集觀點(diǎn)的方法,將傳統(tǒng)的"真假"判斷轉(zhuǎn)變?yōu)槎嗑S度分析。該系統(tǒng)能夠自動(dòng)構(gòu)建爭(zhēng)議話(huà)題的分析框架,識(shí)別不同觀點(diǎn)及其支撐證據(jù),為科學(xué)和政治爭(zhēng)議提供更全面客觀的分析,已在生物醫(yī)學(xué)和國(guó)際關(guān)系領(lǐng)域驗(yàn)證有效性。
清華大學(xué)研究團(tuán)隊(duì)首次提出情感認(rèn)知融合網(wǎng)絡(luò)(ECFN),讓AI能像人類(lèi)一樣理解和表達(dá)情感。該系統(tǒng)通過(guò)多層次情感處理架構(gòu),在情感識(shí)別準(zhǔn)確率上比現(xiàn)有最佳系統(tǒng)提升32%,情感表達(dá)自然度提升45%。研究突破了傳統(tǒng)AI情感理解的局限,實(shí)現(xiàn)了跨模態(tài)情感融合、動(dòng)態(tài)情感追蹤和個(gè)性化情感建模,為醫(yī)療、教育、客服等領(lǐng)域帶來(lái)革命性應(yīng)用前景。
哈佛大學(xué)研究團(tuán)隊(duì)通過(guò)創(chuàng)新的多智能體強(qiáng)化學(xué)習(xí)方法,讓AI在戰(zhàn)略游戲中學(xué)會(huì)復(fù)雜推理。研究發(fā)現(xiàn)AI通過(guò)游戲競(jìng)爭(zhēng)能發(fā)展出類(lèi)人思維能力,在邏輯推理、創(chuàng)造性解決問(wèn)題等方面表現(xiàn)顯著提升。這項(xiàng)突破性成果為未來(lái)AI在醫(yī)療、教育、城市管理等領(lǐng)域的應(yīng)用奠定基礎(chǔ),展現(xiàn)了通過(guò)模擬人類(lèi)學(xué)習(xí)過(guò)程培養(yǎng)真正智能AI的新路徑。