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