人工智能又一應(yīng)用:把80年前黑白照變成彩色
這篇文章的主角是AlphaGo,谷歌DeepMind團(tuán)隊(duì)開(kāi)發(fā)出的圍棋AI。其憑借著2016年擊敗全球頂尖棋手李世石的壯舉而廣受矚目。圍棋是一種古老的棋類(lèi)游戲,每一步都存在諸多選擇,因此接下來(lái)的落子位置很參議會(huì)預(yù)測(cè)——要求對(duì)弈棋手擁有強(qiáng)大的直覺(jué)與抽象思維能力。正因?yàn)槿绱耍藗冮L(zhǎng)久以來(lái)一直認(rèn)為只有人類(lèi)擅長(zhǎng)下圍棋。大多數(shù)研究人員甚至認(rèn)定,還需要數(shù)十年才會(huì)出現(xiàn)真正具備這種思考能力的AI。但如今距離AlphaGo對(duì)李世石的比賽已經(jīng)過(guò)去了兩年(3月8日至3月15日),而本篇文章正是為了紀(jì)念這個(gè)偉大的日子!
不過(guò)更可怕的是,AlphaGo并沒(méi)有停止自己的前進(jìn)腳步。8個(gè)月之后,它在某圍棋網(wǎng)站上以“Master”為名與全球各地的冠軍棋手進(jìn)行了60盤(pán)職業(yè)對(duì)弈,且拿下全勝成績(jī)。
這當(dāng)然是人工智能領(lǐng)域的一項(xiàng)巨大成就,并在全球引起了一股新的討論熱潮——我們到底該對(duì)人工智能的發(fā)展速度感到興奮,還是擔(dān)心?
今天,我們將以DeepMind在《自然》雜志上發(fā)表的原始研究論文作為基礎(chǔ),逐段對(duì)其內(nèi)容進(jìn)行簡(jiǎn)單清晰的解讀,詳細(xì)介紹AlphaGo是什么以及它的工作原理。我也希望大家能夠在閱讀本文之后,不再被媒體頭條拋出的聳人聽(tīng)聞的標(biāo)題所恐嚇,而真正對(duì)關(guān)于人工智能的發(fā)展感到振奮。
當(dāng)然,你不需要掌握圍棋技巧,也同樣可以理解本文的觀點(diǎn)。事實(shí)上,我本人只讀過(guò)網(wǎng)絡(luò)百科上的一丁點(diǎn)圍棋說(shuō)明。相反,我其實(shí)會(huì)使用基礎(chǔ)的國(guó)際象棋示例來(lái)解釋相關(guān)算法。大家只需要了解雙人棋類(lèi)游戲的基本規(guī)則即可——每位選手輪流行動(dòng),最后將產(chǎn)生一位贏家。除此之外,你不需要了解任何物理學(xué)或高數(shù)知識(shí)。
這樣盡可能降低入門(mén)門(mén)檻,是為了能讓剛剛接觸機(jī)器學(xué)習(xí)或者神經(jīng)網(wǎng)絡(luò)的朋友更容易接受。本文也刻意降低了表述復(fù)雜度,也是希望大家能把注意力盡量集中在內(nèi)容本身。
眾所周知,AlphaGo項(xiàng)目的目標(biāo)在于建立一款A(yù)I程序,并保證其能夠與世界頂級(jí)人類(lèi)選手在圍棋領(lǐng)域一較高下。
為了理解圍棋帶來(lái)的挑戰(zhàn),我們首先聊聊與之類(lèi)似的另一種棋類(lèi)運(yùn)動(dòng)——國(guó)際象棋。早在上世紀(jì)九十年代初,IBM公司出打造出深藍(lán)計(jì)算機(jī),其在國(guó)際象棋比賽中擊敗了偉大的世界冠軍加里·卡斯帕羅夫。那么,深藍(lán)是如何做到這一點(diǎn)的?
事實(shí)上,深藍(lán)使用了一種非常“暴力”的作法。在游戲的每一步,深藍(lán)都會(huì)對(duì)所有可能作出的合理棋步作出考量,并沿著每種棋步探索以分析未來(lái)的局勢(shì)變化。在這樣的前瞻性分析之下,計(jì)算結(jié)果很快形成一種千變?nèi)f化的巨大決策樹(shù)。在此之后,深藍(lán)會(huì)沿著樹(shù)狀結(jié)構(gòu)返回原點(diǎn),觀察哪些棋步最可能帶來(lái)積極的結(jié)果。然而,何謂“積極的結(jié)果”?事實(shí)上,眾多優(yōu)秀的國(guó)際象棋棋手為深藍(lán)精心設(shè)計(jì)出了國(guó)際象棋策略,旨在幫助其作出更好的決策——舉例來(lái)說(shuō),是決定保護(hù)國(guó)王,還是在盤(pán)面的其它位置獲得優(yōu)勢(shì)?他們針對(duì)此類(lèi)目的構(gòu)建起特定的“評(píng)估算法”,從而比較不同盤(pán)面位置的優(yōu)勢(shì)或劣勢(shì)權(quán)重(IBM公司將專(zhuān)家們的象棋策略以硬編碼形式引入該評(píng)估函數(shù))。最終,深藍(lán)會(huì)據(jù)此選擇出經(jīng)過(guò)精心計(jì)算的棋步。在接下來(lái)的回合中,整個(gè)過(guò)程再次重復(fù)。
這意味著,深藍(lán)在每一步之前都會(huì)考量數(shù)百萬(wàn)個(gè)理論位置。因此,深藍(lán)最令人印象深刻的表現(xiàn)并不在于人工智能軟件層面,而體現(xiàn)在其硬件之上——IBM公司宣稱(chēng),深藍(lán)是當(dāng)時(shí)市場(chǎng)上最為強(qiáng)大的計(jì)算機(jī)之一。其每秒能夠計(jì)算2億個(gè)盤(pán)面位置。
現(xiàn)在讓我們回到圍棋方面。圍棋顯然更為開(kāi)放,因此如果在這里重復(fù)深藍(lán)的戰(zhàn)略,將根本無(wú)法獲得理想效果。由于每個(gè)棋步都擁有過(guò)多可選擇的位置,因此計(jì)算機(jī)根本無(wú)法涵蓋這么多潛在的可能性。舉例來(lái)說(shuō),在國(guó)際象棋的開(kāi)局當(dāng)中,只有20種可能的下法; 但在圍棋方面,先手選手將擁有361個(gè)可能的落子點(diǎn)——而且這種選擇范圍在整個(gè)對(duì)弈過(guò)程中一直非常廣泛。
這就是所謂“巨大搜索空間”。而且在圍棋當(dāng)中,判斷某個(gè)特定盤(pán)面位置的有利或不利權(quán)重并沒(méi)那么容易——在官子階段,雙方甚至還需要再排布一陣才能最終確定誰(shuí)才是勝利者。但有沒(méi)有一種神奇的方法能夠讓計(jì)算機(jī)在圍棋領(lǐng)域有所建樹(shù)?答案是肯定的,深度學(xué)習(xí)能夠完成這項(xiàng)艱巨的任務(wù)!
因此在本次研究當(dāng)中,DeepMind方面利用神經(jīng)網(wǎng)絡(luò)來(lái)完成以下兩項(xiàng)任務(wù)。他們訓(xùn)練了一套“策略神經(jīng)網(wǎng)絡(luò)(policy neural network)”以決定哪些才是特定盤(pán)面位置當(dāng)中最為明智的選項(xiàng)(這類(lèi)似于遵循某種直觀策略選擇移動(dòng)位置)。此外,他們還訓(xùn)練了一套“估值神經(jīng)網(wǎng)絡(luò)(value neural network)”以估算特定盤(pán)面布局對(duì)選手的有利程度(或者說(shuō),下在這個(gè)位置對(duì)贏得游戲這一目標(biāo)的實(shí)際影響)。他們首先使用人類(lèi)棋譜對(duì)這些神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練(也就是最傳統(tǒng)但也非常有效的監(jiān)督式學(xué)習(xí)方法)。經(jīng)歷了這樣的訓(xùn)練,我們的人工智能已經(jīng)可以在一定程度上模仿人類(lèi)的下棋方式——這時(shí)的它,就像一位菜鳥(niǎo)級(jí)人類(lèi)選手。而后,為了進(jìn)一步訓(xùn)練神經(jīng)網(wǎng)絡(luò),DeepMind方面讓AI與自己進(jìn)行數(shù)百萬(wàn)次對(duì)弈(也就是“強(qiáng)化學(xué)習(xí)”的部分)。如此一來(lái),憑借著更為充分的練習(xí),AI的棋力得到了極大提升。
憑借這兩套網(wǎng)絡(luò),DeepMind的人工智能方案就足以擁有等同于此前最先進(jìn)的圍棋程序的棋藝水平。二者的區(qū)別在于,原有程序使用了此前更為流行的預(yù)置游戲算法,即“蒙特卡洛樹(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í)際結(jié)果也確實(shí)令人滿意——MCTS的表現(xiàn)達(dá)到了超人的高度。這種經(jīng)過(guò)改進(jìn)的MCTS變種正是“AlphaGo”,其成功擊敗了李世石,并成為人工智能發(fā)展歷史上最大的突破之一。
下面讓我們回想一下本文的第一段內(nèi)容。上述提到,深藍(lán)計(jì)算機(jī)是如何在國(guó)際象棋的每一步當(dāng)中構(gòu)建起包含數(shù)以百萬(wàn)計(jì)盤(pán)面位置與棋步的決策樹(shù)——計(jì)算機(jī)需要進(jìn)行模擬、觀察并比較每一種可能的落點(diǎn)——這是一種簡(jiǎn)單且非常直接的方法,如果一般的軟件工程師必須要設(shè)計(jì)出一種棋類(lèi)程序,那么他們很可能會(huì)選擇類(lèi)似的解決方案。
但讓我們想想,人類(lèi)是怎樣下棋的?假設(shè)目前您身處比賽中的特定階段。根據(jù)游戲規(guī)則,你可以作出十幾種不同的選擇——在此處移動(dòng)棋子或者在那里移動(dòng)皇后等等。然而,你真的會(huì)在腦袋里列出所有能走的棋步,并從這份長(zhǎng)長(zhǎng)的清單中作出選擇嗎?不不,你會(huì)“直觀地”將可行范圍縮小至少數(shù)幾種關(guān)鍵性棋步(這里假定您提出了3種明智的棋步),而后思考如果選擇其中某一種,那么棋盤(pán)上的局勢(shì)將發(fā)生怎樣的轉(zhuǎn)變。對(duì)于其中每一種棋步,你可能需要15到20秒的時(shí)間進(jìn)行考量——但請(qǐng)注意,在這15秒內(nèi),我們并不是在非常精確地推衍接下來(lái)的交鋒與變化。事實(shí)上,人類(lèi)往往會(huì)在未經(jīng)太多思考的情況下“拋出”一些由直覺(jué)引導(dǎo)的選擇結(jié)果(當(dāng)然,優(yōu)秀的選手會(huì)比普通選手想得更遠(yuǎn)更深)。之所以這樣做,是因?yàn)槟愕臅r(shí)間有限,而且無(wú)法準(zhǔn)確預(yù)測(cè)你的對(duì)手會(huì)勾勒出怎樣的后續(xù)應(yīng)對(duì)策略。因此,你只能讓直覺(jué)引導(dǎo)自己。我將這一部分思考過(guò)程稱(chēng)為“鋪展”,請(qǐng)大家在后文中注意這一點(diǎn)。
在完成了對(duì)幾種明智棋步的“鋪展”之后,你最終決定放棄這種令人頭痛的思考,直接下出你認(rèn)為最科學(xué)的一步。
在此之后,對(duì)手也會(huì)作出對(duì)應(yīng)的回應(yīng)。這一步可能早在你的預(yù)料當(dāng)中,這意味著你對(duì)于下一步要做的事情更具信心——換言之,不必耗費(fèi)太多時(shí)間進(jìn)行后續(xù)“鋪展”?;蛘?,也可能你的對(duì)手下出了一手妙招,導(dǎo)致你被迫回防并不得不更謹(jǐn)慎地思考下一步選擇。
游戲就這樣持續(xù)進(jìn)行,而隨著局勢(shì)的推進(jìn),你將能夠更輕松地預(yù)測(cè)每步棋的結(jié)果,鋪展耗時(shí)也將相應(yīng)縮短。
之所以說(shuō)了這么多,是希望以較為淺顯的方式為大家講述MCTS算法的作用——它通過(guò)反復(fù)構(gòu)建棋步與位置“搜索樹(shù)”以模擬上述思考過(guò)程。但其創(chuàng)新之處在于,MCTS算法不會(huì)在每個(gè)位置(與深藍(lán)有所不同)都進(jìn)行潛在棋步推衍; 相反,其會(huì)更智能地選擇一小組合理棋步并加以探索。在探索過(guò)程中,它會(huì)“鋪展”這些棋步引發(fā)的局勢(shì)變化,并根據(jù)計(jì)算出的結(jié)果對(duì)其加以比較。
(好了,只要理解了以上內(nèi)容,本文的閱讀就算基本達(dá)標(biāo)。)
現(xiàn)在,讓我們回到論文本身。圍棋是一種“完美信息游戲”。也就是說(shuō),從理論層面講,無(wú)論您身處這類(lèi)游戲的哪個(gè)階段(即使剛剛走出一、兩步),大家都有可能準(zhǔn)確猜出最終誰(shuí)輸誰(shuí)贏(假定兩位選手都會(huì)以‘完美’的方式下完整盤(pán))。我不知道是誰(shuí)提出了這項(xiàng)基本理論,但作為本次研究項(xiàng)目的前提性假設(shè),其確實(shí)非常重要。