前言:最近朋友圈再一次被Google Deepmind刷屏。他們推出了一個新的圍棋程序AlphaGo Zero [1],改進(jìn)了之前打敗世界冠軍的程序AlphaGo [2]。AlphaGo Zero號稱完全不需要人類先驗知識,可以以較短的時間和較少的計算資源通過強(qiáng)化學(xué)習(xí)的方法,從零開始,學(xué)習(xí)出一個新的圍棋界“獨(dú)孤求敗”,再次震驚了學(xué)界和大眾。 作為人工智能領(lǐng)域的同行,雖然我不屬于深度學(xué)習(xí)領(lǐng)域,但仍然為他們?nèi)〉玫某煽兏械綒g欣鼓舞。同時,我也希望從人工智能其他領(lǐng)域科研人員的視角,解讀一下AlphaGo Zero的前世、今生及未來。
本文主要作用是給非計算機(jī)專業(yè)的讀者們科普,非常歡迎專家們批評指正。 作者 | 周熠 為什么圍棋對人工智能很重要? 自人工智能誕生以來,讓機(jī)器自動玩智力游戲并尋求戰(zhàn)勝人類,就一直是人工智能領(lǐng)域追求的重要目標(biāo)之一。因為智力游戲被公認(rèn)為是智能的一種具體表現(xiàn),而人工智能的終極目的就是用機(jī)器實現(xiàn)人類(部分)智能。人工智能正式誕生的元年,即1956年,阿瑟·薩繆爾(Arthur Samuel, 1901—1990)就編寫一個程序下西洋跳棋戰(zhàn)勝了他自己;1962年,這個程序擊敗了一個美國的西洋跳棋州冠軍;1994年,一個新的西洋跳棋程序Chinook戰(zhàn)勝了人類總冠軍 [3]。1997年,IBM開發(fā)的深藍(lán)擊敗了國際象棋世界冠軍卡斯帕羅夫,當(dāng)時也引起了巨大轟動 [4]。
圖1 阿瑟·薩繆爾 圖片來源:google 圖2 被Chinook打敗的人類冠軍Marion Tinsley 圖片來源:wikipedia 圖3 深藍(lán)與卡斯帕羅夫?qū)?zhàn)現(xiàn)場 圖片來源:google 為什么在已經(jīng)證明了機(jī)器下西洋跳棋和國際象棋比所有人類都要厲害的情況下,還要做圍棋?為什么圍棋最受關(guān)注,而不是其他智力游戲,比如五子棋呢?這里最關(guān)鍵的原因在于圍棋的復(fù)雜性。更確切來講,圍棋是所有大家熟知的智力游戲中,搜索空間最大的,所需要的計算量也是最大的。 簡單估算一下,從棋盤狀態(tài)來看,圍棋棋盤是有19*19=361的格子,每個格子有3種可能性(黑、白、空),所以總共有361^3,將近5千萬個狀態(tài);從下棋步驟角度來看,即使不算吃子和打劫,第n步有361-n種選擇,所以至少有361!——超過10^200種可能性,比宇宙原子的總量還要多,也遠(yuǎn)比其他智力游戲(諸如國際象棋、五子棋等)的搜索空間大很多。所以,圍棋被公認(rèn)為這類問題中的皇冠,很難被人工智能解決。 圖4 一個圍棋棋盤狀態(tài) 圖片來源:google AlphaGo Zero的前世 AlphaGo Zero并不是石頭里面蹦出來的孫悟空。在此之前,人工智能界做過很多努力,也總結(jié)出了很多有效的思路、經(jīng)驗和技術(shù)。用機(jī)器來玩智力游戲,首先的步驟是建模,即把這個游戲表示成一個機(jī)器可以處理的問題。同西洋跳棋和國際象棋一樣,圍棋可以被建模成一個搜索問題。更具體一點,下棋的步驟可以表示成一個搜索樹,其中每個節(jié)點代表一個棋盤狀態(tài)。根節(jié)點是空白棋盤,每個節(jié)點的子節(jié)點是在當(dāng)前的棋盤下采取一個行動,即再多下一個棋子,而每一個葉子節(jié)點是一個下滿了棋子的棋盤狀態(tài)。而機(jī)器要做的事情,就是從當(dāng)前節(jié)點中,盡量找到一條路徑,到達(dá)能夠使己方贏的一個葉子節(jié)點。 圖5 圖片來源:google 圖6 搜索樹模型 圖片來源:google 為了找到路徑,人工智能傳統(tǒng)的解決方案是“搜索”。所使用的技術(shù)包括經(jīng)典的深度優(yōu)先搜索、啟發(fā)式搜索、剪枝等等。這個方案能解決很多簡單智力游戲,如八皇后、數(shù)獨(dú)等,但由于計算量太大,并不能解決復(fù)雜問題比如國際象棋和圍棋。所以,只能退而求其次,在當(dāng)前節(jié)點(即棋盤狀態(tài))中,找到一個最優(yōu)或較優(yōu)的子節(jié)點。因此,研究者們提出一個新的方案——“評價”。在這個方案里面,不再苛求搜索到一條最佳路徑到達(dá)贏的葉子節(jié)點,而是對每一個節(jié)點,估算出一個最佳的子節(jié)點。也就是說,對每一個當(dāng)前的棋盤狀態(tài),評價出最佳的下一步行動。
評價的對象主要有兩種:一是棋盤狀態(tài)的“策略”,即遇到當(dāng)前狀態(tài),高手(包括人類和電腦)都是怎么下的,選擇每一個子節(jié)點的概率分布如何。其輸入是一個棋盤狀態(tài)外加一個可選的行動,而其輸出是在當(dāng)前狀態(tài)下選擇該行動的概率;二是棋盤狀態(tài)的“贏面估算”,即每個子節(jié)點贏的概率有多大。其輸入是一個棋盤狀態(tài),而其輸出是這個狀態(tài)能贏的可能性。在理想的情況下,這兩者應(yīng)該是一致的,即選擇概率高的子節(jié)點贏面就大,反之亦然。然而,實際上這兩者往往有些差別。
評價的方法就五花八門了,啟發(fā)式函數(shù)、貝葉斯、蒙特卡洛方法、深度學(xué)習(xí)等等,不一而足。這里簡略介紹一下蒙特卡洛樹搜索方法 [5]。在AlphaGo Zero中,該方法和深度學(xué)習(xí)至少同樣重要。蒙特卡洛樹搜索在每個節(jié)點上做很多次隨機(jī)游戲。每次隨機(jī)游戲隨機(jī)選取一條到達(dá)葉子節(jié)點的路徑,也就是每一步都隨機(jī)落一個子。最后,該節(jié)點的贏面就可以被估算為這么多次隨機(jī)游戲中贏的百分比。雖然簡單,但蒙特卡洛樹搜索方法卻相當(dāng)有效,一個基于該方法的圍棋程序能夠達(dá)到業(yè)余段位的水準(zhǔn),比大部分普通人強(qiáng)。
圖7 蒙特卡洛樹搜索方法 圖片來源:google 基于評價的方案對很多智力游戲都行之有效,包括西洋跳棋、五子棋、國際象棋等。事實上,這個方案也能完美解決5*5,7*7的圍棋。然而,正如前面提到的,19*19的正規(guī)圍棋搜索空間太大。所以,受限于計算能力,在AlphaGo Zero出來之前,基于評價的方案還無法摘取這個皇冠。大部分人都認(rèn)為19*19圍棋對現(xiàn)階段人工智能技術(shù)來說,基本不可能被解決。 AlphaGo Zero的今生 然而,AlphaGo Zero橫空出世,顛覆了人們的認(rèn)知。2015年10月,AlphaGo 5:0擊敗了歐洲圍棋冠軍樊麾。2016年3月,AlphaGo 4:1擊敗了前世界冠軍李世石。2017年5月,AlphaGo 3:0擊敗了世界排名第一的中國選手柯潔。在這段期間,一個AlphaGo的改版程序Master在各大圍棋平臺上以60:0不敗戰(zhàn)績橫掃各路圍棋英豪。然而,更驚奇的是,2017年10月,AlphaGo自我創(chuàng)新,提出了一個新的變種AlphaGo Zero。該程序完全不依賴人類專家的對局,從零開始,使用強(qiáng)化學(xué)習(xí)的方法;僅用一臺帶有4個TPU的機(jī)器,40天下了兩千九百萬局棋;從中自我進(jìn)化成了一個新的圍棋界的“獨(dú)孤求敗”;100:0吊打李世石版本AlphaGo,89:11痛毆Master。至此,基本可以論斷,在圍棋領(lǐng)域,機(jī)器已經(jīng)完勝人類了。
圖8 AlphaGo與柯潔對戰(zhàn)現(xiàn)場 圖片來源:google 從技術(shù)角度來看,AlphaGo Zero繼承并改進(jìn)了之前的框架。AlphaGo Zero依然把圍棋建模成一個搜索問題,依然采用基于評價的方案來做決策。其主要的學(xué)術(shù)貢獻(xiàn)在于提出了一套新的估算評價函數(shù)的方法,更好地融合并改善了已有的兩種重要的方法(即蒙特卡洛樹搜索方法和基于深度學(xué)習(xí)的方法),從而達(dá)到了驚人的效果。 大致上來說,AlphaGo的評價方法分成四步 [2]。第一,AlphaGo以大量人類專家對局為數(shù)據(jù),采用有監(jiān)督學(xué)習(xí)的方法學(xué)習(xí)了一個深度神經(jīng)網(wǎng)絡(luò)SL來估算策略;第二,在SL的基礎(chǔ)上,AlphaGo和自己左右互博,采用強(qiáng)化學(xué)習(xí)的方法把這個策略神經(jīng)網(wǎng)絡(luò)改進(jìn)成一個新的深度神經(jīng)網(wǎng)絡(luò)RL;第三,AlphaGo再在RL的基礎(chǔ)上,還是和自己左右互博,還是采用強(qiáng)化學(xué)習(xí)的方法學(xué)習(xí)了另一個深度神經(jīng)網(wǎng)絡(luò)V來估算每個棋盤狀態(tài)的贏面;第四,再使用基于蒙特卡洛樹搜索方法的算法,巧妙加權(quán)融合了策略網(wǎng)絡(luò)SL/RL和贏面估算網(wǎng)絡(luò)V,來做最終的決策。
同AlphaGo相比,AlphaGo Zero作出了很多重要的調(diào)整 [1]。簡而言之,去掉了第一步,而把剩下的三步合并成為一步“基于蒙特卡洛樹搜索的強(qiáng)化學(xué)習(xí)”。AlphaGo Zero把AlphaGo中間的策略網(wǎng)絡(luò)SL/RL和贏面估算網(wǎng)絡(luò)V合并成了一個深度神經(jīng)網(wǎng)絡(luò),減少了評價方法的復(fù)雜程度。同時,AlphaGo Zero改進(jìn)了蒙特卡洛樹搜索方法,在每一步隨機(jī)選取行動的時候,不再是完全隨機(jī),而是根據(jù)已經(jīng)學(xué)習(xí)到的神經(jīng)網(wǎng)絡(luò),盡量選取贏面大的行動。然后,強(qiáng)化學(xué)習(xí)又反過來使用了改進(jìn)版本的蒙特卡洛樹搜索方法得到的結(jié)果來調(diào)整自身參數(shù)。這樣,蒙特卡洛樹搜索和強(qiáng)化學(xué)習(xí)就很好地結(jié)合到了一起。
此外,由于去掉了AlphaGo中的第一步有監(jiān)督學(xué)習(xí),AlphaGo Zero完全不需要使用人類專家對局作為數(shù)據(jù)輸入。從而,某種意義上,AlphaGo Zero可以被認(rèn)為是完全從零開始學(xué)習(xí),從“白丁”到“鴻儒”,所需要的只是對其輸入圍棋基本規(guī)則,這一點,對于當(dāng)前機(jī)器學(xué)習(xí)和人工智能有非常重要的意義。
為了更好地弄明白這點,需要解釋一下機(jī)器學(xué)習(xí)中有監(jiān)督學(xué)習(xí)、強(qiáng)化學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的含義以及差別。 廣義上來講,所有的問題都可以表示成一個抽象函數(shù),有著輸入和輸出。比如圖像識別:輸入是一張張圖片,輸出是不同的識別物體;句子的句法分析:輸入是句子,輸出是句法分析樹;新聞分類:輸入是新聞,輸出是新聞之間的相似度;而下棋,輸入是棋盤狀態(tài),輸出是當(dāng)前狀態(tài)的最佳行動。機(jī)器學(xué)習(xí)的任務(wù)就是從數(shù)據(jù)中學(xué)出來這個函數(shù),至少越來越近似這個函數(shù)。 其中,最核心的問題就是數(shù)據(jù)是長什么樣的?在理想的情況下,我們期望這個數(shù)據(jù)是完整的<輸入,輸出>對,也就是說(近似)正確的輸出在數(shù)據(jù)中被“標(biāo)注”出來了。標(biāo)注就是所謂的監(jiān)督;而在這種情況下的學(xué)習(xí),就是有監(jiān)督學(xué)習(xí)。而在另外一種情況下,數(shù)據(jù)只包含輸入,而不包含輸出。也就是說完全沒有標(biāo)注,這種情況下的學(xué)習(xí),就是無監(jiān)督學(xué)習(xí)。 但還有一些情況介于這兩者之間,其中包括強(qiáng)化學(xué)習(xí)。強(qiáng)化學(xué)習(xí)和無監(jiān)督學(xué)習(xí)類似,數(shù)據(jù)中并不包含輸出。但是,和無監(jiān)督學(xué)習(xí)不同的是,強(qiáng)化學(xué)習(xí)中的數(shù)據(jù)也不只包含輸入,它還包括了一個數(shù)據(jù)迭代運(yùn)行多步之后的獎懲機(jī)制。比如踢足球,每一步的輸入是當(dāng)前狀態(tài),而輸出是可能選擇的行動,如傳球、射門等。然而,很多情況并不能夠直接給出在當(dāng)前狀態(tài)下最好的輸出是什么。但是,一旦進(jìn)球了,我們就能夠給出一個獎懲機(jī)制。進(jìn)球就是獎勵,被進(jìn)球就是懲罰。 又比如在下棋中,雖然每個棋盤狀態(tài)下的最佳行動很難給出,但下完之后的輸贏很容易判定。這就是獎懲機(jī)制,這就是一個典型的強(qiáng)化學(xué)習(xí)問題。注意,強(qiáng)化學(xué)習(xí)中的獎懲機(jī)制一般是在多步迭代后給出,如果只是一步的話,強(qiáng)化學(xué)習(xí)就變成了有監(jiān)督學(xué)習(xí)。所以,從數(shù)據(jù)的角度來看,可以大致認(rèn)為有監(jiān)督學(xué)習(xí)就是一步獎懲的強(qiáng)化學(xué)習(xí)。
對于某個具體的問題,該用哪種學(xué)習(xí)呢?答案是,都可以用,取決于有什么樣的數(shù)據(jù)。例如下圍棋,原則上應(yīng)該是一個強(qiáng)化學(xué)習(xí)問題,因為只有最后輸贏的獎懲機(jī)制才是無異議的。但是,(人類和電腦)高手們在遇到某個棋盤狀態(tài)時,會有自己的選擇。這些選擇雖然不一定是最佳的,但總歸大體上都是很好的選擇。所以,(人類和電腦)高手們的棋譜就提供了很多這樣的<輸入,輸出>對(即<棋盤狀態(tài),選擇>對)。這些,可以作為有監(jiān)督學(xué)習(xí)的數(shù)據(jù)。
直觀上,數(shù)據(jù)給的越好越多,那么學(xué)習(xí)的效果就應(yīng)該越好。所以有監(jiān)督學(xué)習(xí)應(yīng)該比強(qiáng)化學(xué)習(xí)奏效,而強(qiáng)化學(xué)習(xí)應(yīng)該比無監(jiān)督學(xué)習(xí)奏效。這點在實際上也得到了驗證。事實上,當(dāng)前在商業(yè)領(lǐng)域的機(jī)器學(xué)習(xí)應(yīng)用,包括語音識別、圖像識別、句法分析、機(jī)器翻譯等,絕大部分都采用的是有監(jiān)督學(xué)習(xí)。然而,有監(jiān)督學(xué)習(xí)需要用到的數(shù)據(jù)(即<輸入,輸出>對)從哪里來?輸入好辦,但是(近似)正確的輸出卻很難得到。為了得到正確的輸出,往往需要人工來“標(biāo)注”。機(jī)器學(xué)習(xí)在近十年內(nèi)取得的巨大成功,離不開相當(dāng)多在背后默默做標(biāo)注的人。高質(zhì)量大規(guī)模標(biāo)注好的數(shù)據(jù)集,比如圖像處理中的ImageNet [6],自然語言處理中的Treebank [7],極大地帶動了機(jī)器學(xué)習(xí)的發(fā)展和突破。但是,標(biāo)注往往極為耗時耗力耗財,很多時候只有大機(jī)構(gòu)長期投入才能完成。為了解決“數(shù)據(jù)”來源的問題,人工智能界主要提出了兩條思路。一條就是依靠機(jī)器某種方式自動生成和標(biāo)注數(shù)據(jù),如最近很流行的生成對抗網(wǎng)絡(luò)。另一條就是考慮有監(jiān)督學(xué)習(xí)之外的其他機(jī)器學(xué)習(xí)手段,比如強(qiáng)化學(xué)習(xí)。
圖9 ImageNet 圖片來源:google AlphaGo Zero證明了后者是完全可行的,至少在機(jī)器下圍棋這個領(lǐng)域。AlphaGo Zero甚至比AlphaGo還厲害,這是不是這意味著強(qiáng)化學(xué)習(xí)比有監(jiān)督學(xué)習(xí)厲害呢?并不是。除了算法上的改進(jìn)之外,AlphaGo所用到從高手棋譜中得到的數(shù)據(jù),即<輸入,輸出>對(<棋盤狀態(tài),選擇>對),并不一定是最優(yōu)解。這是關(guān)于數(shù)據(jù)質(zhì)量的問題。對于復(fù)雜問題(如圍棋)的標(biāo)注,人類的標(biāo)注有時并不一定是最佳選擇。很多時候,人類高手容易出現(xiàn)盲點。而強(qiáng)化學(xué)習(xí)算法,因為不依賴太多先驗知識,反而能夠跳出窠臼。所以, AlphaGo Zero的有些落子,出現(xiàn)了一些“神之一手”,人類頂級選手都想不到的招數(shù)。
除了為強(qiáng)化學(xué)習(xí)注了一劑強(qiáng)心針之外,Alpha Zero還號稱,通過這種從零開始的強(qiáng)化學(xué)習(xí),它可以學(xué)習(xí)到已有的和新的圍棋定式,也就是說學(xué)習(xí)到了新的知識。而定式是通過出現(xiàn)頻率來判斷的。這點也非常有意義,因為這再次表明了顯式的知識可以通過隱式的(學(xué)習(xí))過程來得到,而且這種過程能得到以前從未有過的知識。雖然這很振奮人心,但目前還需要持辯證的觀點。例如,基于出現(xiàn)頻率來判斷知識是不是靠譜(如有些頻率出現(xiàn)高的未必就能稱為知識)?以及這些新得到的定式是否真的很有用?這兩點在文章中并沒有詳細(xì)分析。
總而言之,AlphaGo Zero攻克了智力游戲中的皇冠——圍棋;提出了一個新的“基于蒙特卡洛樹搜索的強(qiáng)化學(xué)習(xí)”方法來估算搜索中的評價函數(shù);驗證了強(qiáng)化學(xué)習(xí)的有效性;進(jìn)一步表明用隱式的方法能夠獲取顯式的知識,當(dāng)之無愧是人工智能史上一個里程碑。 最后,在祝賀AlphaGo Zero團(tuán)隊成功的同時,嘗試分析一下其成功的原因。首先,不積跬步,無以至千里,AlphaGo Zero的主要成功在于長期的積累。其主要作者們長期致力于圍棋程序,并在蒙特卡洛樹搜索和深度學(xué)習(xí)下圍棋兩方面都有建樹,把這兩者結(jié)合起來是一個水到渠成的事情。其次,該團(tuán)隊敢想敢做,敢于去挑戰(zhàn)圍棋這個皇冠,這點非常值得學(xué)習(xí)和敬佩。因為這類工作往往風(fēng)險很大,至少從發(fā)文章的角度來講,遠(yuǎn)不如修修補(bǔ)補(bǔ)的改進(jìn)工作來的容易。再者,該團(tuán)隊工程能力相當(dāng)強(qiáng)大。對于這樣的工作,寫在文章里的只是背地里汗水的滄海一粟。在實現(xiàn)上,一定趟過了相當(dāng)多的坑。當(dāng)然,Google Deepmind的鼎力支持也是不可或缺的因素。 [1] Mastering the game of Go without human knowledge. D. Silver, J. Schrittwieser, K. Simonyan, I. Antonoglou, A. Huang, A. Guez, T. Hubert, L. Baker, M. Lai, A. Bolton, Y. Chen, T. Lillicrap, F. Hui, L. Sifre, G. van den Driessche, T. Graepel, and D. Hassabis. Nature 550 (7676): 354--359. 2017. [2] Mastering the game of Go with deep neural networks and tree search. D. Silver, A. Huang, C. J. Maddison, A. Guez, L. Sifre, G. van den Driessche, J. Schrittwieser, I. Antonoglou, V. Panneershelvam, M. Lanctot, S. Dieleman, D. Grewe, J. Nham, N.Kalchbrenner, I. Sutskever, Ti. P. Lillicrap, M. Leach, K. Kavukcuoglu, T. Graepel, D. Hassabis. Nature 529(7587): 484-489. 2016. [3] https://en./wiki/Chinook_(draughts_player). [4] https://en./wiki/Deep_Blue_(chess_computer) [5] Monte-Carlo tree search and rapid action value estimation in computer Go. S. Gelly, D. Silver. Artificial Intelligence. 175(11): 1856-1875. 2011. [6] http://www./ [7] https://catalog.ldc./ldc2012t13 墨子原創(chuàng) | 人工智能 作者介紹 周熠,現(xiàn)任澳大利亞西悉尼大學(xué)高級講師,天津大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院兼職教授。2001年、2006年分獲中國科技大學(xué)學(xué)士和博士學(xué)位。在人工智 能、特別是知識表示與推理領(lǐng)域做出了重要貢獻(xiàn)。是一階回答集程序設(shè)計的奠基人及主要推動人之一,提出了首個刻畫遺忘的公理系統(tǒng)等。在人工智能頂級期刊Artificial Intelligence上發(fā)表6篇長文。長期擔(dān)任人工智能頂級會議程序設(shè)計委員會委員,包括IJCAI、AAAI、KR等等。 |
|