谷歌和OpenAI新研究:如何使用達(dá)爾文進(jìn)化論輔助設(shè)計(jì)人工智能算法?
現(xiàn)代機(jī)器智能建立在模仿自然的基礎(chǔ)之上——這一領(lǐng)域的主要目的是在計(jì)算機(jī)中復(fù)制人類通過(guò)生物方式具備的強(qiáng)大決策能力。
30 年的發(fā)展取得了一些優(yōu)秀成果,大多數(shù)腦啟發(fā)人工智能技術(shù)的進(jìn)展都圍繞著「神經(jīng)網(wǎng)絡(luò)」,這一術(shù)語(yǔ)借用自神經(jīng)生物學(xué),其把機(jī)器思考描述為被稱作「神經(jīng)元」的互相連接的數(shù)學(xué)函數(shù)中的數(shù)據(jù)流動(dòng)。但是自然界也有其他好想法:現(xiàn)在計(jì)算機(jī)科學(xué)家正再次踏入生物進(jìn)化這一研究領(lǐng)域,希望通過(guò)在人工智能中植入生物進(jìn)化元素的方式開(kāi)發(fā)出更智能更有效的算法,恰如數(shù)十億年來(lái)生物進(jìn)化塑造了人類大腦一樣。
但是,首先讓我們回到中學(xué)的生物課本上。簡(jiǎn)單地說(shuō),進(jìn)化(evolution)這一概念表述了有機(jī)體基因組中的隨機(jī)變化會(huì)為其生存帶來(lái)了優(yōu)勢(shì)或劣勢(shì)的結(jié)果,該思想最早由查爾斯·達(dá)爾文據(jù)此提出,后人又對(duì)其進(jìn)行了不斷的完善。如果有機(jī)體的基因突變使其獲得了生存和繁殖的機(jī)會(huì),則該突變一直傳遞下去;如果沒(méi)有,則該突變會(huì)隨有機(jī)體一起消亡。在算法的世界,這被稱為神經(jīng)進(jìn)化(neuroevolution)。人工神經(jīng)網(wǎng)絡(luò)是為了復(fù)制生物學(xué)習(xí)單個(gè)概念的過(guò)程,而神經(jīng)進(jìn)化則是試圖再現(xiàn)構(gòu)建大腦的部分過(guò)程——即適者(強(qiáng)大的或聰明的)生存的過(guò)程。
盡管神經(jīng)進(jìn)化在 20 世紀(jì) 80 年代左右就已被提出,但隨著研究者在機(jī)器學(xué)習(xí)的不同視角上對(duì)其進(jìn)行研究,它也正獲得新的關(guān)注。上個(gè)月,谷歌大腦和非營(yíng)利性組織 OpenAI 分別就神經(jīng)進(jìn)化這一主題發(fā)表了還未經(jīng)評(píng)議的論文,谷歌的論文是關(guān)于神經(jīng)進(jìn)化原理在圖像識(shí)別上的應(yīng)用,而 OpenAI 的論文則是關(guān)于使用工作器(worker)算法讓一個(gè)主算法學(xué)會(huì)實(shí)現(xiàn)一個(gè)任務(wù)的***方法。
為本已復(fù)雜的人工智能研究領(lǐng)域引入生物進(jìn)化的思想不免使人困惑。因此,如果想解決困惑,就把算法看作馬吧。馬一生之中都在學(xué)習(xí),但是它們只在幾個(gè)不同的指標(biāo)上進(jìn)化,例如奔跑的速度。圖像識(shí)別的精確度不難獲得,只是一個(gè)數(shù)字而已,馬跑一圈所需要的時(shí)間量也是如此。但是真正使馬跑得更快的東西卻極為復(fù)雜——這是一個(gè)基于 DNA 的巨大網(wǎng)絡(luò),它能賦予馬生長(zhǎng)肌肉、持久奔跑甚至思考的能力。這種復(fù)雜性是算法底層參數(shù)的真實(shí)寫(xiě)照——即一個(gè)圖像識(shí)別算法究竟是如何表現(xiàn)得好(或壞)的。如果你在本文之中的某處卡住了,做個(gè)深呼吸并想象一下馬吧(這也是一個(gè)好的人生建議)。
為了這一研究,谷歌團(tuán)隊(duì)生成了 1000 個(gè)圖像識(shí)別算法,這些算法使用了現(xiàn)代深度神經(jīng)網(wǎng)絡(luò)來(lái)訓(xùn)練以識(shí)別一組特殊的圖像;接著,250 臺(tái)計(jì)算機(jī)中的每一臺(tái)選擇 2 個(gè)算法,并通過(guò)一張圖像的識(shí)別任務(wù)來(lái)測(cè)試算法的精確度。具有更高精確度的算法會(huì)被保留,表現(xiàn)欠佳的算法則被刪除。接著保留的算法被復(fù)制,并生成稍作改變的克隆算法(或「孩子」),就像人類 DNA 在生育期間隨機(jī)改變一樣。但是這次突變改變的不再是藍(lán)眼睛或是紅頭發(fā),而是新算法解讀訓(xùn)練數(shù)據(jù)的方式。接著,把訓(xùn)練親代算法的相同數(shù)據(jù)用來(lái)訓(xùn)練克隆算法并將克隆算法放回到那 1000 個(gè)算法之中,并再一次開(kāi)始這一過(guò)程。
谷歌的研究者通過(guò)神經(jīng)進(jìn)化培育出了一個(gè)精度高達(dá) 94.6% 的算法,并且在 4 次重復(fù)實(shí)驗(yàn)中都取得了類似的結(jié)果(盡管并不完全等同)。能夠提升該算法的圖像識(shí)別技能的突變被保留(即這些算法存活),而引起了算法性能降低的突變則會(huì)被清除。正如自然界的情況一樣。
谷歌進(jìn)行的 5 次實(shí)驗(yàn)之間的不同也表明了一個(gè)持續(xù)存在的問(wèn)題。谷歌研究者及該論文合作者 Esteban Real 說(shuō),該算法常常會(huì)在運(yùn)行到一半時(shí)卡住,似乎不確定是要繼續(xù)進(jìn)化還是停止突變重新開(kāi)始。Real 說(shuō)自然界里翅膀的進(jìn)化是這種情況的一個(gè)類比:一只翅膀不會(huì)帶來(lái)太多幫助,但是一對(duì)翅膀可以使你飛翔。
現(xiàn)在谷歌的團(tuán)隊(duì)正致力于使進(jìn)化模型更全面地(為了打造一對(duì)翅膀)探索不同的突變。但是這有點(diǎn)棘手。這個(gè)團(tuán)隊(duì)只想要算法以一種限定的方式突變,這樣能使該算法不會(huì)獲得一大堆無(wú)用的額外代碼。Real 解釋說(shuō):「最壞的情況是我們得到很多的單只翅膀。」
通過(guò)主要聚焦于圖像識(shí)別,谷歌不僅測(cè)試了神經(jīng)進(jìn)化解決那些生物大腦所擅長(zhǎng)事情的能力,還測(cè)試了其解決現(xiàn)代問(wèn)題的能力。另一方面,OpenAI 則使用了一種更純粹的進(jìn)化形式來(lái)承擔(dān)一個(gè)不同的任務(wù)。
OpenAI 沒(méi)有訓(xùn)練數(shù)以千計(jì)的算法以更好地解決一件事情,而是希望使用「工作器」算法來(lái)訓(xùn)練一個(gè)主算法以完成一項(xiàng)未知的任務(wù),比如玩一個(gè)視頻游戲或在一個(gè) 3D 模擬器中行走。這一技術(shù)并非教機(jī)器如何做決策的主要方式,但卻是一種教機(jī)器更有效地學(xué)習(xí)特定知識(shí)的方式,OpenAI 研究者和論文合作者 Tim Salimans 解釋說(shuō)。這種進(jìn)化算法能夠監(jiān)控工作器的學(xué)習(xí)方式,并且從根本上學(xué)會(huì)學(xué)習(xí)——即,從相同量的數(shù)據(jù)中提取更多的知識(shí)。
為了進(jìn)行研究,該 OpenAI 團(tuán)隊(duì)設(shè)定了 1440 種工作器算法來(lái)玩 Atari 游戲。這些工作器會(huì)一直玩下去直到 Game Over,結(jié)束后這些工作器算法會(huì)向主算法報(bào)告各自的得分。生成***得分的算法被復(fù)制下來(lái)(和谷歌的研究一樣),復(fù)制版本隨機(jī)進(jìn)行突變。突變后的工作器然后繼續(xù)重復(fù)上述過(guò)程——有益的突變被獎(jiǎng)勵(lì),壞的突變被淘汰。
這種方法也有自己的局限性,最主要的是工作器算法只返回一個(gè)數(shù)值(高分)到主算法。有***得分的算法保留下來(lái),但要讓主算法意識(shí)到任何明確的成功行為(move)將需要大量的計(jì)算能力。(可以類比為生物上的蟻群:工蟻出去尋找***的解決方案,蟻后是信息中心。)換言之,OpenAI 學(xué)習(xí)的東西大都是關(guān)于成功的,零碎的其它東西則學(xué)得很少。
時(shí)間倒回到上世紀(jì) 80 年代,那時(shí)候神經(jīng)進(jìn)化和神經(jīng)網(wǎng)絡(luò)研究領(lǐng)域的大小還差不多。中加州大學(xué)的副教授兼 Uber 人工智能團(tuán)隊(duì)的成員(Uber 收購(gòu)了他聯(lián)合創(chuàng)立的 Geometric Intelligence)Kenneth Stanley 說(shuō):
很少有人思考過(guò)大腦是如何出現(xiàn)在世界上的,而大腦是智能在自然界中唯一的概念證明。一些人認(rèn)為也許創(chuàng)造智能的最直接方式應(yīng)該是在計(jì)算機(jī)中創(chuàng)造一種可以進(jìn)化的、達(dá)爾文式的過(guò)程,使其成為小型的人工大腦。 |
神經(jīng)網(wǎng)絡(luò)的騰飛始于三位計(jì)算機(jī)科學(xué)家。1986 年,David Rumelhart、Geoffrey Hinton 和 Ronald Williams 發(fā)表的一篇論文《Learning representations by back-propagating errors》描述了一種可以增強(qiáng)網(wǎng)絡(luò)從其錯(cuò)誤中進(jìn)行學(xué)習(xí)的能力的算法——反向傳播(backpropagation)。這個(gè)研究成果極大地提升了人工設(shè)計(jì)的神經(jīng)網(wǎng)絡(luò)的效率,但一次即將到來(lái)的人工智能冬天抑制了其進(jìn)一步的發(fā)展——那時(shí)候因?yàn)槿斯ぶ悄芗夹g(shù)缺乏進(jìn)展,研究資金被削減了。直到后來(lái) Hinton 等人發(fā)表的論文使神經(jīng)網(wǎng)絡(luò)變得太有誘惑力之后,更廣泛的計(jì)算機(jī)科學(xué)社區(qū)才放棄抵抗。他們的研究表明反向傳播能讓神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)極大的增長(zhǎng),反過(guò)來(lái)又使得這樣的神經(jīng)網(wǎng)絡(luò)能理解遠(yuǎn)遠(yuǎn)更加復(fù)雜的概念。這種網(wǎng)絡(luò)被冠以「深度」之名——即「深度神經(jīng)網(wǎng)絡(luò)(deep neural networks)」,且已經(jīng)發(fā)展成了目前***的人工智能技術(shù)。
Stanley 說(shuō):「因此,對(duì)于類比大腦進(jìn)化的神經(jīng)進(jìn)化這條線,人們的了解就出現(xiàn)了一些缺失?!?/p>
2002 年的時(shí)候,Stanley 的事業(yè)剛剛開(kāi)始,他就寫(xiě)出了 NEAT 算法,該算法可以讓神經(jīng)網(wǎng)絡(luò)隨時(shí)間進(jìn)化成更大和更復(fù)雜的版本。根據(jù)谷歌學(xué)術(shù)的數(shù)據(jù),他的對(duì)應(yīng)性論文《Evolving neural networks through augmenting topologies》已經(jīng)被引用了至少 1600 次,而且自發(fā)表以來(lái),就一直不斷地被深度神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)和神經(jīng)進(jìn)化方面的研究所引用。在 2006 年,Stanley 發(fā)表了一種可以實(shí)現(xiàn)更大規(guī)模的神經(jīng)進(jìn)化的算法 Hyper-NEAT,該算法的靈感來(lái)自于 DNA 的編碼能力——DNA 僅需大約 30000 個(gè)基因就能編碼帶有數(shù)萬(wàn)億個(gè)連接的數(shù)十億個(gè)生物神經(jīng)元。(Hyper-NEAT 的全稱是 Hybercube-based NeuroEvolution of Augmenting Topologies。)今天,Stanley 說(shuō)他很欣喜地看到自己的研究又回歸成為了時(shí)代的思潮。
和 Stanley 一樣,OpenAI 和谷歌也正在研究來(lái)自這個(gè)領(lǐng)域的兩種不同的思想。谷歌的混合方法將經(jīng)典的神經(jīng)進(jìn)化和反向傳播等技術(shù)結(jié)合到了一起,從而實(shí)現(xiàn)了現(xiàn)在非常強(qiáng)大的深度學(xué)習(xí):教一個(gè)算法如何在世界中采取行動(dòng),讓其進(jìn)化,而該算法的「孩子」將具有大多數(shù)積累的知識(shí)。OpenAI 的方法更類似于生物的進(jìn)化方式。該團(tuán)隊(duì)在每一代僅允許隨機(jī)突變來(lái)主宰該網(wǎng)絡(luò)提升或失敗的方式,也就是說(shuō)其提升是完全通過(guò)隨機(jī)進(jìn)化創(chuàng)造的。這兩項(xiàng)研究都有非常明確的目標(biāo)——識(shí)別圖像或在游戲中獲得高分(即使馬跑得更快)。該算法將如何實(shí)現(xiàn)目標(biāo)就要看造化了。
以下是對(duì)谷歌和 OpenAI 的這兩項(xiàng)研究的摘要介紹:
谷歌論文:圖像分類器的大規(guī)模進(jìn)化(Large-Scale Evolution of Image Classifiers)
鏈接:https://arxiv.org/abs/1703.01041
神經(jīng)網(wǎng)絡(luò)已被證明能有效地解決困難問(wèn)題,但它們的架構(gòu)的設(shè)計(jì)難度可能非常大,甚至只是對(duì)單獨(dú)的圖像分類問(wèn)題也是如此。進(jìn)化算法(evolutionary algorithm)是一種能用于自動(dòng)發(fā)現(xiàn)這些網(wǎng)絡(luò)的技術(shù)。盡管進(jìn)化模型(evolving model)有顯著的計(jì)算要求,但我們的研究表明今天已經(jīng)可以使用進(jìn)化模型實(shí)現(xiàn)媲美大型的人工設(shè)計(jì)的架構(gòu)了。我們?cè)?**的規(guī)模上使用了簡(jiǎn)單的進(jìn)化技術(shù)來(lái)發(fā)現(xiàn)用于 CIFAR-10 和 CIFAR-100 數(shù)據(jù)集的模型,并且是從簡(jiǎn)單平常的初始條件開(kāi)始的。為了實(shí)現(xiàn)目標(biāo),我們使用了全新的和直觀的突變算子(mutation operator),其可以在大型搜索空間中尋找方向。我們要強(qiáng)調(diào):一旦進(jìn)化開(kāi)始,其就不再需要人類的參與了,然后其會(huì)輸出一個(gè)完全訓(xùn)練好的模型。在這項(xiàng)研究中,我們特別強(qiáng)調(diào)了結(jié)果的可重復(fù)性、輸出結(jié)果的可變性和對(duì)計(jì)算的要求。
OpenAI 論文:用作強(qiáng)化學(xué)習(xí)的可擴(kuò)展替代的進(jìn)化策略(Evolution Strategies as a Scalable Alternative to Reinforcement Learning)
鏈接:https://arxiv.org/abs/1703.03864
我們探索了進(jìn)化策略(Evolution Strategies/ES)的使用,這是一類黑箱的優(yōu)化算法,可作為 Q-學(xué)習(xí)和策略梯度等流行的強(qiáng)化學(xué)習(xí)方法的替代。在 MuJoCo 和 Atari 上的實(shí)驗(yàn)表明 ES 是一種可行的解決策略,其可以很好地?cái)U(kuò)展到多個(gè)可用的 CPU 上:通過(guò)使用數(shù)百到數(shù)千個(gè)并行的工作器(worker),ES 可以在 10 分鐘內(nèi)解決 3D 人形行走的問(wèn)題,而且在一小時(shí)的訓(xùn)練之后可以在大多數(shù) Atari 游戲上實(shí)現(xiàn)很有競(jìng)爭(zhēng)力的結(jié)果。此外,我們還突出強(qiáng)調(diào)了作為一種黑箱優(yōu)化技術(shù)的 ES 的幾個(gè)優(yōu)勢(shì):動(dòng)作頻率和延遲的獎(jiǎng)勵(lì)對(duì)其不會(huì)產(chǎn)生影響、能包容非常長(zhǎng)的時(shí)間、不需要時(shí)間貼現(xiàn)(temporal discounting)或價(jià)值函數(shù)近似(value function approximation)。
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】