AlphaGo對局李世石兩周年紀:AI算法的秘密
這篇文章的主角是AlphaGo,谷歌DeepMind團隊開(kāi)發(fā)出的圍棋AI。其憑借著(zhù)2016年擊敗全球頂尖棋手李世石的壯舉而廣受矚目。圍棋是一種古老的棋類(lèi)游戲,每一步都存在諸多選擇,因此接下來(lái)的落子位置很參議會(huì )預測——要求對弈棋手擁有強大的直覺(jué)與抽象思維能力。正因為如此,人們長(cháng)久以來(lái)一直認為只有人類(lèi)擅長(cháng)下圍棋。大多數研究人員甚至認定,還需要數十年才會(huì )出現真正具備這種思考能力的AI。但如今距離AlphaGo對李世石的比賽已經(jīng)過(guò)去了兩年(3月8日至3月15日),而本篇文章正是為了紀念這個(gè)偉大的日子!
本文引用地址:http://dyxdggzs.com/article/201803/377220.htm不過(guò)更可怕的是,AlphaGo并沒(méi)有停止自己的前進(jìn)腳步。8個(gè)月之后,它在某圍棋網(wǎng)站上以“Master”為名與全球各地的冠軍棋手進(jìn)行了60盤(pán)職業(yè)對弈,且拿下全勝成績(jì)。
這當然是人工智能領(lǐng)域的一項巨大成就,并在全球引起了一股新的討論熱潮——我們到底該對人工智能的發(fā)展速度感到興奮,還是擔心?
今天,我們將以DeepMind在《自然》雜志上發(fā)表的原始研究論文作為基礎,逐段對其內容進(jìn)行簡(jiǎn)單清晰的解讀,詳細介紹AlphaGo是什么以及它的工作原理。我也希望大家能夠在閱讀本文之后,不再被媒體頭條拋出的聳人聽(tīng)聞的標題所恐嚇,而真正對關(guān)于人工智能的發(fā)展感到振奮。
當然,你不需要掌握圍棋技巧,也同樣可以理解本文的觀(guān)點(diǎn)。事實(shí)上,我本人只讀過(guò)網(wǎng)絡(luò )百科上的一丁點(diǎn)圍棋說(shuō)明。相反,我其實(shí)會(huì )使用基礎的國際象棋示例來(lái)解釋相關(guān)算法。大家只需要了解雙人棋類(lèi)游戲的基本規則即可——每位選手輪流行動(dòng),最后將產(chǎn)生一位贏(yíng)家。除此之外,你不需要了解任何物理學(xué)或高數知識。
這樣盡可能降低入門(mén)門(mén)檻,是為了能讓剛剛接觸機器學(xué)習或者神經(jīng)網(wǎng)絡(luò )的朋友更容易接受。本文也刻意降低了表述復雜度,也是希望大家能把注意力盡量集中在內容本身。
眾所周知,AlphaGo項目的目標在于建立一款AI程序,并保證其能夠與世界頂級人類(lèi)選手在圍棋領(lǐng)域一較高下。
為了理解圍棋帶來(lái)的挑戰,我們首先聊聊與之類(lèi)似的另一種棋類(lèi)運動(dòng)——國際象棋。早在上世紀九十年代初,IBM公司出打造出深藍計算機,其在國際象棋比賽中擊敗了偉大的世界冠軍加里·卡斯帕羅夫。那么,深藍是如何做到這一點(diǎn)的?
事實(shí)上,深藍使用了一種非常“暴力”的作法。在游戲的每一步,深藍都會(huì )對所有可能作出的合理棋步作出考量,并沿著(zhù)每種棋步探索以分析未來(lái)的局勢變化。在這樣的前瞻性分析之下,計算結果很快形成一種千變萬(wàn)化的巨大決策樹(shù)。在此之后,深藍會(huì )沿著(zhù)樹(shù)狀結構返回原點(diǎn),觀(guān)察哪些棋步最可能帶來(lái)積極的結果。然而,何謂“積極的結果”?事實(shí)上,眾多優(yōu)秀的國際象棋棋手為深藍精心設計出了國際象棋策略,旨在幫助其作出更好的決策——舉例來(lái)說(shuō),是決定保護國王,還是在盤(pán)面的其它位置獲得優(yōu)勢?他們針對此類(lèi)目的構建起特定的“評估算法”,從而比較不同盤(pán)面位置的優(yōu)勢或劣勢權重(IBM公司將專(zhuān)家們的象棋策略以硬編碼形式引入該評估函數)。最終,深藍會(huì )據此選擇出經(jīng)過(guò)精心計算的棋步。在接下來(lái)的回合中,整個(gè)過(guò)程再次重復。
這意味著(zhù),深藍在每一步之前都會(huì )考量數百萬(wàn)個(gè)理論位置。因此,深藍最令人印象深刻的表現并不在于人工智能軟件層面,而體現在其硬件之上——IBM公司宣稱(chēng),深藍是當時(shí)市場(chǎng)上最為強大的計算機之一。其每秒能夠計算2億個(gè)盤(pán)面位置。
現在讓我們回到圍棋方面。圍棋顯然更為開(kāi)放,因此如果在這里重復深藍的戰略,將根本無(wú)法獲得理想效果。由于每個(gè)棋步都擁有過(guò)多可選擇的位置,因此計算機根本無(wú)法涵蓋這么多潛在的可能性。舉例來(lái)說(shuō),在國際象棋的開(kāi)局當中,只有20種可能的下法; 但在圍棋方面,先手選手將擁有361個(gè)可能的落子點(diǎn)——而且這種選擇范圍在整個(gè)對弈過(guò)程中一直非常廣泛。
這就是所謂“巨大搜索空間”。而且在圍棋當中,判斷某個(gè)特定盤(pán)面位置的有利或不利權重并沒(méi)那么容易——在官子階段,雙方甚至還需要再排布一陣才能最終確定誰(shuí)才是勝利者。但有沒(méi)有一種神奇的方法能夠讓計算機在圍棋領(lǐng)域有所建樹(shù)?答案是肯定的,深度學(xué)習能夠完成這項艱巨的任務(wù)!
因此在本次研究當中,DeepMind方面利用神經(jīng)網(wǎng)絡(luò )來(lái)完成以下兩項任務(wù)。他們訓練了一套“策略神經(jīng)網(wǎng)絡(luò )(policy neural network)”以決定哪些才是特定盤(pán)面位置當中最為明智的選項(這類(lèi)似于遵循某種直觀(guān)策略選擇移動(dòng)位置)。此外,他們還訓練了一套“估值神經(jīng)網(wǎng)絡(luò )(value neural network)”以估算特定盤(pán)面布局對選手的有利程度(或者說(shuō),下在這個(gè)位置對贏(yíng)得游戲這一目標的實(shí)際影響)。他們首先使用人類(lèi)棋譜對這些神經(jīng)網(wǎng)絡(luò )進(jìn)行訓練(也就是最傳統但也非常有效的監督式學(xué)習方法)。經(jīng)歷了這樣的訓練,我們的人工智能已經(jīng)可以在一定程度上模仿人類(lèi)的下棋方式——這時(shí)的它,就像一位菜鳥(niǎo)級人類(lèi)選手。而后,為了進(jìn)一步訓練神經(jīng)網(wǎng)絡(luò ),DeepMind方面讓AI與自己進(jìn)行數百萬(wàn)次對弈(也就是“強化學(xué)習”的部分)。如此一來(lái),憑借著(zhù)更為充分的練習,AI的棋力得到了極大提升。
憑借這兩套網(wǎng)絡(luò ),DeepMind的人工智能方案就足以擁有等同于此前最先進(jìn)的圍棋程序的棋藝水平。二者的區別在于,原有程序使用了此前更為流行的預置游戲算法,即“蒙特卡洛樹(shù)搜索(Monte Carlo Tree Search,簡(jiǎn)稱(chēng)MCTS)”,我們將在稍后具體進(jìn)行介紹。
不過(guò)很明顯,到這里我們還沒(méi)有談到真正的核心。DeepMind的人工智能方案絕不僅僅依賴(lài)于策略與估值網(wǎng)絡(luò )——其并非利用這兩套網(wǎng)絡(luò )來(lái)替代蒙特卡洛樹(shù)搜索; 相反,其使用神經(jīng)網(wǎng)絡(luò )以進(jìn)一步提升MCTS算法的成效。實(shí)際結果也確實(shí)令人滿(mǎn)意——MCTS的表現達到了超人的高度。這種經(jīng)過(guò)改進(jìn)的MCTS變種正是“AlphaGo”,其成功擊敗了李世石,并成為人工智能發(fā)展歷史上最大的突破之一。
下面讓我們回想一下本文的第一段內容。上述提到,深藍計算機是如何在國際象棋的每一步當中構建起包含數以百萬(wàn)計盤(pán)面位置與棋步的決策樹(shù)——計算機需要進(jìn)行模擬、觀(guān)察并比較每一種可能的落點(diǎn)——這是一種簡(jiǎn)單且非常直接的方法,如果一般的軟件工程師必須要設計出一種棋類(lèi)程序,那么他們很可能會(huì )選擇類(lèi)似的解決方案。
但讓我們想想,人類(lèi)是怎樣下棋的?假設目前您身處比賽中的特定階段。根據游戲規則,你可以作出十幾種不同的選擇——在此處移動(dòng)棋子或者在那里移動(dòng)皇后等等。然而,你真的會(huì )在腦袋里列出所有能走的棋步,并從這份長(cháng)長(cháng)的清單中作出選擇嗎?不不,你會(huì )“直觀(guān)地”將可行范圍縮小至少數幾種關(guān)鍵性棋步(這里假定您提出了3種明智的棋步),而后思考如果選擇其中某一種,那么棋盤(pán)上的局勢將發(fā)生怎樣的轉變。對于其中每一種棋步,你可能需要15到20秒的時(shí)間進(jìn)行考量——但請注意,在這15秒內,我們并不是在非常精確地推衍接下來(lái)的交鋒與變化。事實(shí)上,人類(lèi)往往會(huì )在未經(jīng)太多思考的情況下“拋出”一些由直覺(jué)引導的選擇結果(當然,優(yōu)秀的選手會(huì )比普通選手想得更遠更深)。之所以這樣做,是因為你的時(shí)間有限,而且無(wú)法準確預測你的對手會(huì )勾勒出怎樣的后續應對策略。因此,你只能讓直覺(jué)引導自己。我將這一部分思考過(guò)程稱(chēng)為“鋪展”,請大家在后文中注意這一點(diǎn)。
在完成了對幾種明智棋步的“鋪展”之后,你最終決定放棄這種令人頭痛的思考,直接下出你認為最科學(xué)的一步。
在此之后,對手也會(huì )作出對應的回應。這一步可能早在你的預料當中,這意味著(zhù)你對于下一步要做的事情更具信心——換言之,不必耗費太多時(shí)間進(jìn)行后續“鋪展”?;蛘?,也可能你的對手下出了一手妙招,導致你被迫回防并不得不更謹慎地思考下一步選擇。
游戲就這樣持續進(jìn)行,而隨著(zhù)局勢的推進(jìn),你將能夠更輕松地預測每步棋的結果,鋪展耗時(shí)也將相應縮短。
之所以說(shuō)了這么多,是希望以較為淺顯的方式為大家講述MCTS算法的作用——它通過(guò)反復構建棋步與位置“搜索樹(shù)”以模擬上述思考過(guò)程。但其創(chuàng )新之處在于,MCTS算法不會(huì )在每個(gè)位置(與深藍有所不同)都進(jìn)行潛在棋步推衍; 相反,其會(huì )更智能地選擇一小組合理棋步并加以探索。在探索過(guò)程中,它會(huì )“鋪展”這些棋步引發(fā)的局勢變化,并根據計算出的結果對其加以比較。
(好了,只要理解了以上內容,本文的閱讀就算基本達標。)
現在,讓我們回到論文本身。圍棋是一種“完美信息游戲”。也就是說(shuō),從理論層面講,無(wú)論您身處這類(lèi)游戲的哪個(gè)階段(即使剛剛走出一、兩步),大家都有可能準確猜出最終誰(shuí)輸誰(shuí)贏(yíng)(假定兩位選手都會(huì )以‘完美’的方式下完整盤(pán))。我不知道是誰(shuí)提出了這項基本理論,但作為本次研究項目的前提性假設,其確實(shí)非常重要。
換句話(huà)來(lái)說(shuō),在游戲狀態(tài)下,我們將可通過(guò)一條函數v*(s)來(lái)預測最終結果——例如你贏(yíng)得這盤(pán)對弈的概率,區間為0到1。DeepMind的研究人員將其稱(chēng)為“最優(yōu)估值函數”。由于某些盤(pán)面位置比其它盤(pán)面位置更有可能帶來(lái)獲勝結果,因此前者可能比其它位置擁有“更高估值”。讓我再強調一次,估值=贏(yíng)得比賽的0到1間概率值。
但先別急——假設一位名叫Foma的女孩坐在您的身邊,在每下一步棋時(shí),她都會(huì )告訴您這次決定會(huì )導致您勝利還是失敗。“你贏(yíng)了……你辦理了……不,還是辦理了……”我認為這樣的提示對您的棋步選擇并沒(méi)有多大幫助,而且非常煩人。相反,真正能夠幫得上忙的其實(shí)應該是勾勒出所有可能的棋步樹(shù),以及這些棋步將會(huì )引發(fā)的狀態(tài)——而后,Foma會(huì )告訴你在整個(gè)樹(shù)狀結構中,哪些狀態(tài)會(huì )將你推向勝利,而哪些會(huì )招致失敗。突然之間,Foma就成了您的完美伙伴——而非討厭的插嘴者。在這里,Foma將作為您的最優(yōu)估值函數v*(s)。此前,人們一直認為像圍棋這樣的游戲,不可能擁有Foma這樣的準確估值函數——因為其中存在著(zhù)太多不確定性。
然而,即使您真的擁有了Foma,她對所有可能盤(pán)面位置的估算在現實(shí)對弈當中恐怕也無(wú)法奏效。因為在國際象棋或圍棋這樣的游戲當中,正如之前所提到,即使是想要預測七到八步之后的整體局勢,過(guò)多的可能性選擇也會(huì )令Foma需要耗費大量時(shí)間才能得出分析結果。
也就是說(shuō),單憑Foma還遠遠不夠。大家還需要進(jìn)一步縮小明智棋步的具體范圍,并據此推衍接下來(lái)的局勢走向。那么我們的程序該如何做到這一點(diǎn)?Lusha在這里閃亮登場(chǎng)。Lusha是一位擁有相當技巧的國際象棋選手加熱心人,她曾花費數十年時(shí)間觀(guān)看國際象棋大師賽。她可以觀(guān)看你的盤(pán)面位置,快速思考您所能做出的全部合理選擇,并告訴你專(zhuān)業(yè)選手作出各種判斷的可能性。因此,如果您在某一特定時(shí)間點(diǎn)上擁有50種可能的棋步選項,Lusha會(huì )告訴你職業(yè)棋手選擇每種選項的具體概率。當然,其中一些明智的棋步會(huì )擁有更高的概率,而其它無(wú)意義的棋步則概率極低。她就是你的策略函數,p(as)。對于給定狀態(tài)s,她能夠為您提供專(zhuān)業(yè)選手可能作出的全部選擇的對應概率。
接下來(lái),你可以在Lusha的幫助下尋找更為合理的棋步選項,而Foma則會(huì )告訴我們這些棋步對對弈結果的實(shí)際影響。在這種情況下,大家可以選擇由Foma與Lusha協(xié)商給出落子建議,或者也可以先由Lusha提供建議,再由Foma對結果作出評估。接下來(lái),挑選其中一些選項進(jìn)行后續影響分析,再由Foma與Lusha繼續進(jìn)行預測指導——通過(guò)這種方式,我們將能夠更為高效地掌握盤(pán)面局勢走向。而這,正是所謂“減少搜索空間”的實(shí)際意義所在。利用估值函數(Foma)預測結果,利用策略函數(Lusha)提供棋藝層面的概率取舍以縮小值得進(jìn)一步探索的落子范圍。這套體系就是所謂“蒙特卡洛鋪展(Monte Carlo rollouts)”。接下來(lái),當重新回到當前棋步時(shí),你將能夠得到各種選項所對應的平均估值結論,并據此找到最適合的落子位置。不過(guò)到這里,其在圍棋水平方面仍然表現不佳——因為這兩種函數的實(shí)際指導能力還比較孱弱。
不過(guò)沒(méi)關(guān)系。
首先進(jìn)行具體解釋。在MCTS當中,起步階段的Foma與Lusha的功能還不夠精熟。但對弈數量越多,二者在預測可靠結果與落子位置方面就越強大。論文指出,“縮小高可能性棋步的具體范圍”其實(shí)是種較為復雜的表達,“Lusha實(shí)際上是通過(guò)提供專(zhuān)業(yè)棋手的落子概率幫助縮小需要考量的選項。以往的工作主要利用這種技術(shù)在策略函數較為簡(jiǎn)單的情況下,提供強大且成熟的AI選手解決方案。
是的,卷積神經(jīng)網(wǎng)絡(luò )非常適合圖像處理類(lèi)任務(wù)。而且由于神經(jīng)網(wǎng)絡(luò )需要特定輸入內容并給出對應的輸出結果,所以其在本質(zhì)上其實(shí)也相當于一條函數。這意味著(zhù)大家可以利用神經(jīng)網(wǎng)絡(luò )來(lái)充當一種高度復雜的函數。從這個(gè)思路出發(fā),大家可以將其傳遞一份盤(pán)面位置圖像,并由神經(jīng)網(wǎng)絡(luò )自行判斷當前局勢。如此一來(lái),創(chuàng )建出的神經(jīng)網(wǎng)絡(luò )將擁有非常準確的策略與估值能力。
下面,我們將討論Foma與Luha的具體訓練方式。為了訓練策略網(wǎng)絡(luò )(負責預測專(zhuān)業(yè)棋手的落子位置判斷),我們只需要將人類(lèi)對弈棋譜作為素材,并利用其進(jìn)行傳統的監督式學(xué)習即可。
另外,我們還希望能夠構建起一套略有不同的策略網(wǎng)絡(luò )版本; 其應該更小巧且速度更快??梢韵胂?,如果Lusha的經(jīng)驗非常豐富,那么其用于處理每個(gè)位置的時(shí)間也將相應延長(cháng)。在這種情況下,雖然她能夠更好地縮小合理落子范圍,但由于整個(gè)過(guò)程會(huì )不斷重復,因此耗費時(shí)間可能會(huì )過(guò)長(cháng)。所以,我們需要為這項工作訓練出一套速度更快的策略網(wǎng)絡(luò )(我們將其稱(chēng)為……Lusha的弟弟,Jerry?姑且就這么稱(chēng)呼吧)。接下來(lái),一旦利用人類(lèi)選手的數據訓練出滿(mǎn)足需求的策略網(wǎng)絡(luò ),我們就可以讓Lusha在圍棋棋盤(pán)上進(jìn)行自我對抗以獲得更多練習機會(huì )。這正是強化學(xué)習的體現——構建起更強大的策略網(wǎng)絡(luò )版本。
此后,我們需要訓練Foma進(jìn)行估值:確定獲勝的概率。人工智能將在模擬環(huán)境當中反復進(jìn)行自我練習,每一次觀(guān)察其最終綶,并從錯誤當中學(xué)習到更好、更先進(jìn)的經(jīng)驗。
受到篇幅所限,這里我就不具體介紹網(wǎng)絡(luò )的訓練方式了。您可以在本文末尾提供的論文鏈接中(參閱‘方法’部分)了解更多細節信息。事實(shí)上,這篇論文的主要目的并非說(shuō)明研究人員如何在這些神經(jīng)網(wǎng)絡(luò )之上進(jìn)行強化學(xué)習。DeepMind在之前發(fā)表的一篇文章中,已經(jīng)談到過(guò)他們如何利用強化學(xué)習技術(shù)教會(huì )AI掌握雅達利游戲。因此在本文當中,我只在內容摘要部分稍微提到一點(diǎn)相關(guān)內容。這里再次強調,AlphaGo的最大創(chuàng )新在于DeepMind研究人員們利用強化學(xué)習加神經(jīng)網(wǎng)絡(luò )來(lái)改進(jìn)已經(jīng)廣泛流行的游戲算法MCTS。強化學(xué)習確實(shí)是一種很酷的工具,研究人員們在常規監督式訓練之后利用強化學(xué)習實(shí)現策略與估值函數神經(jīng)網(wǎng)絡(luò )的微調。但是,這篇研究論文的主要作用在于證明這款工具的功能多樣性與優(yōu)秀性,而非教導大家如何實(shí)際使用。
好了,現在大家對AlphaGo應該已經(jīng)建立起比較完整的印象。下面,我們會(huì )進(jìn)一步深入探討之前提到的各個(gè)議題。當然,其中不可避免要涉及一些看似“危險”的數學(xué)公式及表達式,但相信我,它們都很簡(jiǎn)單(我會(huì )作出詳盡解釋)。因此,請放松心態(tài)。
所以,第一步就是訓練我們的策略神經(jīng)網(wǎng)絡(luò )(Lusha),其負責預測專(zhuān)業(yè)棋手可能作出的判斷。神經(jīng)網(wǎng)絡(luò )的目標是讓人工智能發(fā)揮類(lèi)似于人類(lèi)專(zhuān)家的作用。這套卷積神經(jīng)網(wǎng)絡(luò )(正如之前提到,這種特殊的神經(jīng)網(wǎng)絡(luò )非常擅長(cháng)圖像處理)采用電路板式布局以簡(jiǎn)化圖像內容。我們可以向該網(wǎng)絡(luò )架構的各個(gè)層中添加“整流器非線(xiàn)性”,其將賦予整體網(wǎng)絡(luò )學(xué)習更復雜技能的能力。如果大家以前曾經(jīng)訓練過(guò)神經(jīng)網(wǎng)絡(luò ),可能對“ReLU”層不會(huì )感到陌生。這里我們同樣使用ReLU層。
這里的訓練數據以隨機盤(pán)面位置對的形式存在,而標簽則為人類(lèi)所作出的落子選擇。這部分訓練采用常規的監督式學(xué)習。
在這里,DeepMind使用了“隨機梯度ASCENT”。這是一種反向傳播算法。通過(guò)這種方式,我們希望最大程度發(fā)揮獎勵函數的作用。獎勵函數代表的是人類(lèi)專(zhuān)家作出不同行動(dòng)預測的概率; 我們的目標則是盡可能提升這一概率。但是,在實(shí)際網(wǎng)絡(luò )訓練當中,我們一般只需要讓丟失函數盡可能降低即可——這在實(shí)質(zhì)上是縮小預測結果與實(shí)際標簽之間的誤差/差異,也就是所謂梯度下降。在研究論文的實(shí)際實(shí)現部分,他們確實(shí)使用了常規的梯度下降方法。大家可以輕松找到與獎勵函數相對的丟失函數,并通過(guò)盡可能降低后者最大程度提升前者。
這套策略網(wǎng)絡(luò )擁有13層,我們將其稱(chēng)為“SL策略(SL policy)”網(wǎng)絡(luò )(SL代表監督式學(xué)習)。其使用的數據來(lái)自某個(gè)高人氣網(wǎng)站,有數百萬(wàn)用戶(hù)在這里進(jìn)行圍棋對弈。那么,SL策略網(wǎng)絡(luò )的實(shí)際表現如何?
首先,其圍棋水平要高于其他研究人員的早期開(kāi)發(fā)成果。至于“鋪展策略”方面,大家可能還記得之前我們曾提到,研究人員們訓練出一套速度更快的Lusha版本——我們稱(chēng)其為Jerry。在這里,Jerry負責發(fā)揮作用。如大家所看到,Jerry的準確度只有Lusha的一半,但速度卻快了數千倍!當我們應用MCTS算法時(shí),Jerry將幫助我們更快地完成對后續局勢變化的模擬。
要理解下一節的內容,大家可以不了解強化學(xué)習,但需要認同一項前提——即我所作出的闡述真實(shí)有效。如果您希望探究更多細節并加以嘗試,可能需要首先閱讀一些關(guān)于強化學(xué)習的背景信息。
一旦擁有了這套SL網(wǎng)絡(luò ),接下來(lái)要做的就是利用人類(lèi)選手的判斷數據以監督式方式對其進(jìn)行訓練。在此之后,就是由其自我對弈以不斷磨練判斷能力。具體實(shí)現方法也很簡(jiǎn)單——選擇SL策略網(wǎng)絡(luò ),將其保存在一個(gè)文件中,而后再復制一份副本。
然后,你可以利用強化學(xué)習對其進(jìn)行微調。如此一來(lái),這套網(wǎng)絡(luò )就能夠自我對抗并從結果中學(xué)習經(jīng)驗。
不過(guò)這樣的訓練方式其實(shí)存在一個(gè)問(wèn)題。
如果其只在練習中對抗同一個(gè)對手,且該對手也一直貫穿訓練始終,那么可能無(wú)法獲得新的學(xué)習經(jīng)驗。換言之,該網(wǎng)絡(luò )所學(xué)到的只是如何擊敗對方,而非真正掌握圍棋的奧秘。沒(méi)錯,這就是過(guò)度擬合問(wèn)題:你在對抗某一特定對手時(shí)表現出色,但卻未必擁有對付各類(lèi)選手的能力。那么,我們該如何解決這個(gè)問(wèn)題?
答案很簡(jiǎn)單,當我們對一套神經(jīng)網(wǎng)絡(luò )進(jìn)行微調時(shí),其就會(huì )變成另一個(gè)風(fēng)格上略有不同的選手。如此一來(lái),我們可以將各個(gè)版本的神經(jīng)網(wǎng)絡(luò )保存在一份“選手”列表當中,并確保每位選手的表現都有所區別。很好,在接下來(lái)的神經(jīng)網(wǎng)絡(luò )訓練過(guò)程中,我們可以從列表中隨機選擇不同的版本作為對抗對象。它們雖然源自同一套神經(jīng)網(wǎng)絡(luò ),但表現卻略有區別。而且訓練得越多,選手的版本也就越多。問(wèn)題就此解決!
在這樣的訓練過(guò)程中,惟一指導訓練過(guò)程的只有最終目標 ——即贏(yíng)得比賽。到這里,我們已經(jīng)不再需要對網(wǎng)絡(luò )進(jìn)行針對性訓練,例如捕捉盤(pán)面上的更多位置等。我們只需要為其提供所有可能的合理選項,并下面目標“你必須獲勝”。也正因為如此,強化學(xué)習才如此強大——其能夠被用于訓練任何游戲策略或估值網(wǎng)絡(luò ),而絕不僅限于圍棋。
到這里,DeepMind的研究人員們測試了這套RL策略網(wǎng)絡(luò )的準確性——不使用任何MCTS算法。之前我們曾經(jīng)提到,這套網(wǎng)絡(luò )能夠直接獲取盤(pán)面位置并思考專(zhuān)業(yè)棋手的判斷概率。到這里,它已經(jīng)能夠獨立進(jìn)行對弈了。結果是,強化學(xué)習微調后的網(wǎng)絡(luò )戰勝了僅利用人類(lèi)棋譜進(jìn)行訓練的監督學(xué)習網(wǎng)絡(luò )。不僅如此,它還能夠戰勝其它強大的圍棋程序。
必須強調的是,即使是在訓練這套強化學(xué)習策略網(wǎng)絡(luò )之前,監督學(xué)習策略網(wǎng)絡(luò )也已經(jīng)擁有了超越現有技術(shù)的對弈水平——而如今我們又更進(jìn)一步!更重要的是,我們甚至不需要使用估值網(wǎng)絡(luò )這類(lèi)其它輔助方案。
到這里,我們終于完成了對Lusha的訓練。接下來(lái)重新回到Foma這邊,它代表的是最優(yōu)估值函數v*(s)——即只有兩位選手皆完美執行其預期內的落子判斷時(shí),她才能提供在目前盤(pán)面局勢下獲得優(yōu)勝的可能性。很明顯,為了訓練神經(jīng)網(wǎng)絡(luò )充當我們的估值函數,這里需要一位完美的對手……遺憾的是,目前我們還沒(méi)有這樣一位對手。因此,我們派出了最強大的選手——RL策略網(wǎng)絡(luò )。
其會(huì )提取當前盤(pán)面狀態(tài)state_s,而后輸出您贏(yíng)得本場(chǎng)對弈的概率。每一項游戲狀態(tài)都將充當數據樣本,并以標簽的形式用于注釋游戲結果。因此,在經(jīng)過(guò) 50次落子之后,我們就獲得了50份估值預測樣本。
但這種作法實(shí)際上非常幼稚——畢竟我們不可能也不應該將對弈中的全部50次落子全部添加到數據集當中。
換言之,我們必須認真選擇訓練數據集以避免過(guò)度擬合的發(fā)生。由于每次落子都會(huì )與一個(gè)新位置對應,因此圍棋中的每一次落子都非常相似。如果將所有落子選擇的狀態(tài)都添加到具有相同標簽的訓練數據當中,那么其內容將存在大量“重復”,并必然導致過(guò)度擬合。為了防止這種情況的發(fā)生,我們只能選擇那些更具代表性的游戲狀態(tài)。舉例來(lái)說(shuō),我們可以只選擇對弈過(guò)程中的五個(gè)狀態(tài)——而非全部50個(gè)狀態(tài)——添加到訓練數據集內。DeepMind從3000萬(wàn)盤(pán)不同對弈過(guò)程中提取了3000萬(wàn)種狀態(tài),從而減少重復數據的出現可能性。事實(shí)證明,這種作法效果極佳!
現在,我們談?wù)劯拍睿?我們可以通過(guò)兩種方法評估盤(pán)面位置的價(jià)值。第一是選擇最佳估值函數(即之前訓練完成的函數)。另一種則是使用現有策略(Lusha)直接推導盤(pán)面局勢,并預測本次落子帶來(lái)的最終結果。很明顯,真正的對弈很少會(huì )完全按照我們的計劃推進(jìn)。但DeepMind仍然比較了這兩種方法的實(shí)際效果。此外,大家也可以將這兩種選項混合使用。稍后,我們將了解這一“混合參數”,請各位記住這個(gè)重要概念。
在這里,我們的一套神經(jīng)網(wǎng)絡(luò )會(huì )嘗試給出最近似的最優(yōu)估值函數,其效果甚至優(yōu)于經(jīng)過(guò)數千次模擬而得出的鋪展策略!Foma在這里的表現真的超贊。在另一方面,DeepMind方面也嘗試使用了準確度翻倍但速度極慢的Lusha RL策略,其需要進(jìn)行成千上萬(wàn)次模擬以得出結論——最終效果略好于Foma。但也只是略好,而速度卻慢了太多。因此,Foma在這場(chǎng)比拼中勝出,她證明自己擁有著(zhù)不可替代的價(jià)值。
現在,我們已經(jīng)完成了策略與估值函數的訓練,接下來(lái)可以將其與MCTS結合起來(lái),從而帶來(lái)我們的前任世界冠軍、大師中的大量、一個(gè)世代的突破、體重268磅的……Alphaaaa GO!
在本節中,大家應該對MCTS算法的工作原理?yè)碛懈鼮樯钊氲睦斫?。請別擔心,迄今為止提到的全部?jì)热輵撟阋灾С帜樌莆障嚓P(guān)內容。惟一需要注意的是我們如何使用策略概率與估值方法。我們在鋪展過(guò)程中將二者結合在一起,從而縮小每次落子時(shí)需要探索的具體范圍。Q(s,a)表示估值函數,u(s,a)則代表該位置的已保存概率。下面我將具體作出解釋。
另外需要注意的是,策略網(wǎng)絡(luò )是使用監督學(xué)習來(lái)預測專(zhuān)業(yè)棋手落子判斷的。其不僅能夠提供概率最高的落子選項,同時(shí)也會(huì )提供各個(gè)選項的具體概率。這一概率可被存儲在各個(gè)落子判斷當中。在這里,DeepMind方面將其稱(chēng)為“先驗概率”,并利用其選擇有必要進(jìn)行探索的落子選項?;旧?,要決定是否需要對某一特定落子選項進(jìn)行探索,我們需要考慮以下兩點(diǎn):首先,通過(guò)這步棋,我們有多大概率獲勝?是的,我們已經(jīng)擁有了能夠回答這個(gè)問(wèn)題的“估值網(wǎng)絡(luò )”。第二個(gè)問(wèn)題是,專(zhuān)業(yè)棋手有多大概率會(huì )考慮這一棋步?(如果專(zhuān)業(yè)棋手不太可能考慮這步棋,那么我們?yōu)槭裁匆速M時(shí)間進(jìn)行探索?這部分結論由策略網(wǎng)絡(luò )負責提供。)
接下來(lái),讓我們聊聊“混合參數”。如前文所述,為了評估各個(gè)盤(pán)面位置,我們有兩種選擇:其一,直接利用一直用于評估盤(pán)面狀態(tài)的估值網(wǎng)絡(luò )。第二,我們也可以使用現有策略網(wǎng)絡(luò )快速推導對弈情況(假定對方選手也采取符合預測的下法),從而判斷我們是輸還是贏(yíng)。一般來(lái)講,估值函數的效果要比常規鋪展更好。在這里,將二者結合將能夠提供每項預測的權重估值,例如五五開(kāi)、四六開(kāi)等等。如果大家以百分比形式對估值X進(jìn)行處理,則另一項就是(100-X)%。這就是混合參數的意義所在。后文中將對其實(shí)際效果進(jìn)行說(shuō)明。
在每一次鋪展之后,大家都可以利用在模擬當中獲得的任何信息對搜索樹(shù)進(jìn)行更新,從而進(jìn)一步提升未來(lái)模擬的明智度。在所有模擬結束之后,您從中選擇最佳落子選項即可。
下面來(lái)看有趣的結論!
大家應該還記得,RL微調策略神經(jīng)網(wǎng)絡(luò )擁有比SL人力訓練策略神經(jīng)網(wǎng)絡(luò )更好的判斷效果。但在將其添加至AlphaGo的MCTS算法中時(shí),使用人工訓練的神經(jīng)網(wǎng)絡(luò )反過(guò)來(lái)超越了微調神經(jīng)網(wǎng)絡(luò )。與此同時(shí),在估值函數(可以理解成以無(wú)限趨近方式提供完美判斷)方面,利用RL策略進(jìn)行Foma訓練能夠帶來(lái)超越使用SL策略的實(shí)際效果。
“執行上述評估需要耗費大量計算資源,我們必須拿出壓箱底的硬貨才能搞定這些該死的程序。”
但DeepMind的言下之意其實(shí)是……
“吼吼,跟我們的程序相比,以前的那些圍棋程序簡(jiǎn)直就是唐氏兒童級別。”
這里再說(shuō)回“混合參數(mixing parameter)”。在評估位置時(shí),對估值函數及鋪展二者的重視程度要高于其中任意一者。其余部分是DeepMind方面的深入解釋?zhuān)梢钥吹狡渲姓咽玖艘豁椨腥さ慕Y論!
請再讀一次標有紅色下劃線(xiàn)的句子。相信大家已經(jīng)能夠理解,這句話(huà)基本就是對整個(gè)研究項目的全面總結。
評論