4
本文作者: 董飛 | 2016-03-09 17:43 |
按:本文由董飛編譯于:How AlphaGo Works ,原作者SpinPunch CTO DAN MAAS。作者微信公號“董老師在硅谷”。
剛剛?cè)祟惵殬I(yè)選手世界冠軍李世石九段認(rèn)輸,第一局AlphaGo贏了。
谷歌DeepMind宣布他們研發(fā)的神經(jīng)網(wǎng)絡(luò)圍棋AI,AlphaGo,在2015年10月首次5:0戰(zhàn)勝了人類職業(yè)選手歐洲圍棋冠軍Fan Hui二段。這篇論文由David Silver等完成。里面的技術(shù)是出于意料的簡單卻又強(qiáng)大。為了方便不熟悉技術(shù)的小白理解,這里是我對系統(tǒng)工作原理的解讀。以下是編譯正文:
深度學(xué)習(xí)”是指多層的人工神經(jīng)網(wǎng)絡(luò)和訓(xùn)練它的方法。一層神經(jīng)網(wǎng)絡(luò)會把大量矩陣數(shù)字作為輸入,通過非線性激活方法取權(quán)重,再產(chǎn)生另一個數(shù)據(jù)集合作為輸出。這就像生物神經(jīng)大腦的工作機(jī)理一樣,通過合適的矩陣數(shù)量,多層組織鏈接一起,形成神經(jīng)網(wǎng)絡(luò)“大腦”進(jìn)行精準(zhǔn)復(fù)雜的處理,就像人們識別物體標(biāo)注圖片一樣。
雖然神經(jīng)網(wǎng)絡(luò)在幾十年前就有了,直到最近才形勢明朗。這是因?yàn)樗麄冃枰罅康摹坝?xùn)練”去發(fā)現(xiàn)矩陣中的數(shù)字價(jià)值。對早期研究者來說,想要獲得不錯效果的最小量訓(xùn)練都遠(yuǎn)遠(yuǎn)超過計(jì)算能力和能提供的數(shù)據(jù)的大小。但最近幾年,一些能獲取海量資源的團(tuán)隊(duì)重現(xiàn)挖掘神經(jīng)網(wǎng)絡(luò),就是通過“大數(shù)據(jù)”技術(shù)來高效訓(xùn)練。
AlphaGo是通過兩個不同神經(jīng)網(wǎng)絡(luò)“大腦”合作來改進(jìn)下棋。這些大腦是多層神經(jīng)網(wǎng)絡(luò)跟那些Google圖片搜索引擎識別圖片在結(jié)構(gòu)上是相似的。它們從多層啟發(fā)式二維過濾器開始,去處理圍棋棋盤的定位,就像圖片分類器網(wǎng)絡(luò)處理圖片一樣。經(jīng)過過濾,13 個完全連接的神經(jīng)網(wǎng)絡(luò)層產(chǎn)生對它們看到的局面判斷。這些層能夠做分類和邏輯推理。
這些網(wǎng)絡(luò)通過反復(fù)訓(xùn)練來檢查結(jié)果,再去校對調(diào)整參數(shù),去讓下次執(zhí)行更好。這個處理器有大量的隨機(jī)性元素,所以我們是不可能精確知道網(wǎng)絡(luò)是如何“思考”的,但更多的訓(xùn)練后能讓它進(jìn)化到更好。
AlphaGo的第一個神經(jīng)網(wǎng)絡(luò)大腦是“監(jiān)督學(xué)習(xí)的策略網(wǎng)絡(luò)(Policy Network)” ,觀察棋盤布局企圖找到最佳的下一步。事實(shí)上,它預(yù)測每一個合法下一步的最佳概率,那么最前面猜測的就是那個概率最高的。你可以理解成“落子選擇器”。
(落子選擇器是怎么看到棋盤的?數(shù)字表示最強(qiáng)人類選手會下在哪些地方的可能。)
團(tuán)隊(duì)通過在KGS(網(wǎng)絡(luò)圍棋對戰(zhàn)平臺)上最強(qiáng)人類對手,百萬級的對弈落子去訓(xùn)練大腦。這就是AlphaGo最像人的地方,目標(biāo)是去學(xué)習(xí)那些頂尖高手的妙手。這個不是為了去下贏,而是去找一個跟人類高手同樣的下一步落子。AlphaGo落子選擇器能正確符合57%的人類高手。(不符合的不是意味著錯誤,有可能人類自己犯的失誤)
更強(qiáng)的落子選擇器
AlphaGo系統(tǒng)事實(shí)上需要兩個額外落子選擇器的大腦。一個是“強(qiáng)化學(xué)習(xí)的策略網(wǎng)絡(luò)(Policy Network)”,通過百萬級額外的模擬局來完成。你可以稱之為更強(qiáng)的。比起基本的訓(xùn)練,只是教網(wǎng)絡(luò)去模仿單一人類的落子,高級的訓(xùn)練會與每一個模擬棋局下到底,教網(wǎng)絡(luò)最可能贏的下一手。Sliver團(tuán)隊(duì)通過更強(qiáng)的落子選擇器總結(jié)了百萬級訓(xùn)練棋局,比他們之前版本又迭代了不少。
單單用這種落子選擇器就已經(jīng)是強(qiáng)大的對手了,可以到業(yè)余棋手的水平,或者說跟之前最強(qiáng)的圍棋AI媲美。這里重點(diǎn)是這種落子選擇器不會去“讀”。它就是簡單審視從單一棋盤位置,再提出從那個位置分析出來的落子。它不會去模擬任何未來的走法。這展示了簡單的深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的力量。
更快的落子選擇器
AlphaGo當(dāng)然團(tuán)隊(duì)沒有在這里止步。下面我會闡述是如何將閱讀能力賦予AI的。為了做到這一點(diǎn),他們需要更快版本的落子選擇器大腦。越強(qiáng)的版本在耗時(shí)上越久-為了產(chǎn)生一個不錯的落子也足夠快了,但“閱讀結(jié)構(gòu)”需要去檢查幾千種落子可能性才能做決定。
Silver團(tuán)隊(duì)建立簡單的落子選擇器去做出“快速閱讀”的版本,他們稱之為“滾動網(wǎng)絡(luò)”。簡單版本是不會看整個19*19的棋盤,但會在對手之前下的和新下的棋子中考慮,觀察一個更小的窗口。去掉部分落子選擇器大腦會損失一些實(shí)力,但輕量級版本能夠比之前快1000倍,這讓“閱讀結(jié)構(gòu)”成了可能。
AlphaGo的第二個大腦相對于落子選擇器是回答另一個問題。不是去猜測具體下一步,它預(yù)測每一個棋手贏棋的可能,在給定棋子位置情況下。這“局面評估器”就是論文中提到的“價(jià)值網(wǎng)絡(luò)(Value Network)”,通過整體局面判斷來輔助落子選擇器。這個判斷僅僅是大概的,但對于閱讀速度提高很有幫助。通過分類潛在的未來局面的“好”與“壞”,AlphaGo能夠決定是否通過特殊變種去深入閱讀。如果局面評估器說這個特殊變種不行,那么AI就跳過閱讀在這一條線上的任何更多落子。
(局面評估器是怎么看這個棋盤的。深藍(lán)色表示下一步有利于贏棋的位置。)
局面評估器也通過百萬級別的棋局做訓(xùn)練。Silver團(tuán)隊(duì)通過 復(fù)制兩個AlphaGo的最強(qiáng)落子選擇器,精心挑選隨機(jī)樣本創(chuàng)造了這些局面。這里AI 落子選擇器在高效創(chuàng)建大規(guī)模數(shù)據(jù)集去訓(xùn)練局面評估器是非常有價(jià)值的。這種落子選擇器讓大家去模擬繼續(xù)往下走的很多可能,從任意給定棋盤局面去猜測大致的雙方贏棋概率。而人類的棋局還不夠多恐怕難以完成這種訓(xùn)練。
增加閱讀
這里做了三個版本的落子選擇大腦,加上局面評估大腦,AlphaGo可以有效去閱讀未來走法和步驟了。閱讀跟大多數(shù)圍棋AI一樣,通過蒙特卡洛樹搜索(MCTS)算法來完成。但AlphaGo 比其他AI都要聰明,能夠更加智能的猜測哪個變種去探測,需要多深去探測。
(蒙特卡洛樹搜索算法)
如果擁有無限的計(jì)算能力,MCTS可以理論上去計(jì)算最佳落子通過探索每一局的可能步驟。但未來走法的搜索空間對于圍棋來說太大了(大到比我們認(rèn)知宇宙里的粒子還多),實(shí)際上AI沒有辦法探索每一個可能的變種。MCTS做法比其他AI有多好的原因是在識別有利的變種,這樣可以跳過一些不利的。
Silver團(tuán)隊(duì)讓AlphaGo裝上MCTS系統(tǒng)的模塊,這種框架讓設(shè)計(jì)者去嵌入不同的功能去評估變種。最后馬力全開的AlphaGo系統(tǒng)按如下方式使用了所有這些大腦。
1. 從當(dāng)前的棋盤布局,選擇哪些下一步的可能性。他們用基礎(chǔ)的落子選擇器大腦(他們嘗試使用更強(qiáng)的版本,但事實(shí)上讓AlphaGo更弱,因?yàn)檫@沒有讓MCTS提供更廣闊的選擇空間)。它集中在“明顯最好”的落子而不是閱讀很多,而不是再去選擇也許對后來有利的下法。
2. 對于每一個可能的落子,評估質(zhì)量有兩種方式:要么用棋盤上局面評估器在落子后,要么運(yùn)行更深入蒙特卡羅模擬器(滾動)去思考未來的落子,使用快速閱讀的落子選擇器去提高搜索速度。AlphaGo使用簡單參數(shù),“混合相關(guān)系數(shù)”,將每一個猜測取權(quán)重。最大馬力的AlphaGo使用 50/50的混合比,使用局面評估器和模擬化滾動去做平衡判斷。
這篇論文包含一個隨著他們使用插件的不同,AlphaGo的能力變化和上述步驟的模擬。僅使用獨(dú)立大腦,AlphaGo跟最好的計(jì)算機(jī)圍棋AI差不多強(qiáng),但當(dāng)使用這些綜合手段,就可能到達(dá)職業(yè)人類選手水平。
(AlphaGo的能力變化與MCTS的插件是否使用有關(guān)。)
這篇論文還詳細(xì)講了一些工程優(yōu)化:分布式計(jì)算,網(wǎng)絡(luò)計(jì)算機(jī)去提升MCTS速度,但這些都沒有改變基礎(chǔ)算法。這些算法部中分精確,部分近似。在特別情況下,AlphaGo通過更強(qiáng)的計(jì)算能力變的更強(qiáng),但計(jì)算單元的提升率隨著性能變強(qiáng)而減緩。
我認(rèn)為AlphaGo在小規(guī)模戰(zhàn)術(shù)上會非常厲害。它知道通過很多位置和類型找到人類最好的下法,所以不會在給定小范圍的戰(zhàn)術(shù)條件下犯明顯錯誤。
但是,AlphaGo有個弱點(diǎn)在全局判斷上。它看到棋盤式通過5*5金字塔似的過濾,這樣對于集成戰(zhàn)術(shù)小塊變成戰(zhàn)略整體上帶來麻煩,同樣道理,圖片分類神經(jīng)網(wǎng)絡(luò)往往對包含一個東西和另一個的搞不清。比如說圍棋在角落上一個定式造成一個墻或者引征,這會劇烈改變另一個角上的位置估值。
就像其他的基于MCTS的AI, AlphaGo對于需要很深入閱讀才能解決的大勢判斷上,還是麻煩重重的,比如說大龍生死劫。AlphaGo 對一些故意看起來正常的局也會失去判斷,天元開盤或者少見的定式,因?yàn)楹芏嘤?xùn)練是基于人類的棋局庫。
我還是很期待看到AlphaGo和李世石9段的對決!我預(yù)測是:如果李使用定式,就像跟其他職業(yè)棋手的對決,他可能會輸,但如果他讓AlphaGo陷入到不熟悉情形下,他可能就贏。
參考資料:
1、Nature 論文。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。