神經進化:一種不一樣的深度學習——通過進化演算法來探求神經網路的進化
「把人工智慧在機構中用起來」
——OReilly人工智慧大會正在徵集講師議題,查看具體要求請點擊這裡,截止日期11月7日。
編者註:想進一步了解神經進化,可以查看舊金山人工智慧大會上Kenneth Stanley的演講《通過神經進化去完成神經網路的進化》。
神經進化正在復興。主要的人工智慧實驗室和研究人員正在試驗它,一絲新的成功點燃了更多的熱情,能對於深度學習產生影響的新機遇正在出現。也許你在深度學習所有的激動人心的時刻並沒有聽到過神經進化,但它只是潛行於表面之下,作為一個小的熱情的研究社區的課題存在了幾十年。現在它正伴隨著大眾對於它的潛力的了解而開始獲得更多的關注。
簡單來說,神經進化是人工智慧和機器學習領域的一個分支。它力圖觸發一個和產生我們人類大腦類似的進化過程,只不過這個過程是在計算機里實現的。換句話說,神經進化試圖開發通過進化演算法去尋找進化神經網路的方法。
當我在上世紀九十年代末期第一次開始人工智慧的研究的時候,關於可以在計算機里去進化大腦的想法和我想冒險的感覺產生了共鳴。在當時這還是一個不尋常的、甚至是很含糊的領域。但我對這個思想非常好奇而且也很有親切感。結果就是我生命里的20多年都在思考這個主題,並和傑出的同事一起開發出了一系列的演算法,比如NEAT、HyperNEAT和新穎性搜索(novelty search)。在本博文里,我希望能帶給你神經進化的一些激動人心的部分,並對這個主題給出一些洞見,但不會有科學文獻里那些讓人頭暈的術語。我也會部分採用自傳回顧的視角來把我在這個領域裡摸爬滾打的經歷講述一下。我希望我自己的故事能為更多的讀者打開一扇探索在計算機里進化大腦的窗戶。
深度學習的成功
如果你最近一直在跟蹤人工智慧或是機器學習領域,你可以已經聽說了深度學習。要感謝深度學習,計算機已經在諸如圖像識別和控制無人駕駛汽車(甚至是控制電子遊戲的角色)這樣的任務上接近或是有時超越人類的表現。這些成就已經幫助深度學習和人工智慧從默默無聞的學術期刊里一躍出現在大眾傳媒上,並激發了公眾的想像力。那麼在深度學習的背後是什麼使這一成功成為可能?
實際上,在深度學習的表面下是一個已經有幾十年歷史的技術的最新形式,它就是人工神經網路(ANN)。與很多AI領域裡的思想一樣,ANN也是來自生物學的靈感。對ANN來說,它是模擬人類的大腦。我們之所以選擇大腦作為AI的靈感來源,是因為大腦是迄今為止唯一明確的智能載體。當我們想實現人工智慧時,在某種程度上,模仿大腦應該是一個講得通的思路。大腦的一個關鍵組件就是神經元。它是一個很小的細胞,可以通過連接想其他的神經元發送信號。當非常多的神經元彼此連接形成一個網路(正如大腦里就是這樣),我們稱之為一個神經網路。因此,一個ANN就是試圖模仿類似神經元這樣可以相互間發送信號的組件的集合。這就是在深度學習裡面的「深度網路」背後的機理。
ANN的研究人員通過程序來模擬這些神經元以及在他們中間傳輸的信號,獲得了一個比較模糊的模擬大腦里發生的事情的過程。當然,這兩者間是有著非常多的不同的。但真正的挑戰是,僅僅只是簡單地把一堆類似神經元的元素彼此相連並讓他們相互間共享信號並不能產生智慧。相反的,智慧是精確地來源於神經元是如何連接的。
例如,一個神經元強烈地影響著另外一個神經元被稱為有一個很大的權重連接到它的夥伴。在這裡,這個連接的權重決定了神經元是如何彼此影響的,從而產生了一個神經網路里神經激活的特定模式,來響應到達神經網路的輸入(比如,來自眼睛的輸入)。要想得到一個智能的網路,相應的挑戰就變成了如何決定網路連接的權重的問題。
通常,沒人會通過手工計算得出連接的權重(考慮到現代的ANN一般都有上百萬個連接,你就能明白為什麼手工的方法不現實了)。相反的,為某個任務找到正確的連接權重就被看成了一個學習的問題。換句話說,就是研究人員花費了大量的精力去發明讓ANN自己去為特定的任務學習最佳權重的方法。最常見的學習權重的方法就是把ANN的輸出(比如,那個看著像是條狗)和標準答案去比較,然後通過特定原則里的數學公式來改變權重,從而使下一次輸出正確的可能性更大。
在經過這樣無數次的比對樣例(可能會有上百萬個)的訓練後,神經網路就開始能夠分配正確的權重來準確地回答各種各樣的問題了。經常性的,神經網路的能力甚至能泛化到可以回答它沒有碰到過的問題,只要這些問題和之前訓練里看到的問題差別不那麼大。到此為止,ANN基本上學會了去應對特定的問題了。一種常見的調整權重的方法就是隨機梯度下降法,它是之前提到的深度學習裡面非常流行的一個組件。最近幾年的深度學習的實現基本上是對由非常多層的神經元(這就是為什麼叫「深度」的原因)構成的ANN進行海量的訓練。這也得益於近年來出現的強大的計算硬體的幫助。
但這裡有一個我還沒提到的問題,即我們首先如何決定誰連接到誰?換句話說,就是我們的大腦不只是由連接權重決定的,它還是由大腦內部的結構決定的。隨機梯度下降甚至都沒法去解決這個問題,而只是儘力去優化給它的連接。
這些連接是怎麼來的?在深度學習里,答案就是:它們基本是由研究人員基於一定程度的經驗來決定整個網路的架構是什麼樣的。與之相對的,自然界的大腦的結構則是通過進化形成的。我們人類大腦里的100萬億個連接的架構是來自於數百萬年的優勝劣汰的自然選擇過程後進化來的。
我們大腦的架構是超級無敵。畢竟毫不誇張地說,人類的智慧都集中在那裡。這實際上就意味著自然界里的大腦的進化是迄今為止唯一已知的產生強智慧的過程。神經進化學的目標就是在計算機里觸發一個類似的進化過程。從這個方面講,神經進化學是人工智慧專業里唯一的一個有著實際的概念證明(大腦確實是進化來的)的分支。我們知道這是一條可以產生智慧的道路。
說的更清楚點,深度學習傳統上關注於對ANN編程來學習,而神經進化則側重於大腦網路自身的原始架構。它可以包括誰和誰來連接、連接的權重以及(有時)這些連接如何允許被改變。當然,這兩個領域是有一些交叉的。比如ANN依然需要為特定任務進行學習,無論是否進化過。有可能進化得到的ANN可以利用深度學習里的方法(比如隨機梯度下降)來獲得恰當的權重。實際上,深度學習甚至可以被認為是神經進化的一個兄弟。它研究的是如何對於一個ANN(無論是進化來的還是預先定義)的架構來學習連接的權重。
但是,學習機制自身是可以進化的觀點也是可能的,從而讓神經進化有著能超越或是更詳細地說明傳統的深度學習的潛力。簡而言之,大腦(包括它的架構和如何學習)是自然選擇的產物。而神經進化可以探索大腦出現的所有因素,或是借鑒深度學習的某些方面而讓進化來決定其他的部分。
神經進化是怎麼工作的
現在我們對於什麼是神經進化已經有了初步的概念,現在可以聊一聊它是怎麼工作的。第一代的神經進化演算法出現在上世紀80年代。在那個時候,一小批研究人員認為對於傳統ANN里的訓練演算法(反向傳播,隨機梯度下降的一種形式)的一個可替代方案就是神經進化。在早期的系統里,神經進化研究人員會(就如今日的深度學習里那樣)決定神經網路的架構,即哪個神經元連哪個。然後簡單地讓進化而不是隨機梯度下降來決定權重的大小。因為整體的網路架構不能由進化來改變,這種方法被叫做定拓撲神經進化。
這樣的系統和自然界里的神經系統有一些不一樣,因為定拓撲神經進化里的ANN的基因已經編碼了它們的權重,從一「出生」就固定了。用這種方法,ANN一出生就知道了它們將會知道的事情,而不能在隨後的「生涯」里進一步學習。這個場景有一點讓人困惑,因為我們通常認為我們會在生命過程里學習一些新的東西。但是如果你仔細想想,在這些系統里的繁衍過程其實就是在學習。因為當父母在生育能更好適應一個任務的後代時,在一代一代的繁衍過程中學習就在發生。
類似這樣的系統是如何真正地被設定的?如何進化一個人工的大腦來解決一個問題?實際上,這些都非常像動物的繁衍過程。設想你想進化一個神經網路來控制一個機器人行走。對於這種類型的任務,我們通常已經有了很多的模擬器,因為神經進化會進行非常多的嘗試,進行模擬會快很多且風險更小。因此我們將從一個物理模擬器里的機器人開始。
現在我們需要一些ANN來開始。在剛開始,我們並不知道如何解決這個任務。因此我們就先產生一個隨機ANN的群體(比如100個)。就定拓撲ANN而言,這個100個預先定義的神經網路個體的每個的權重的都是隨機的。現在我們僅僅是需要進行選擇。這意味著選擇更好的個體來繁衍後代。
為了進化我們的群體,我們首先取一個ANN,並讓它來控制模擬的機器人身體。我們讓ANN來指揮身體如何移動,這就是網路的輸出。這個ANN也可能接收來自身體的反饋輸入,比如感知到哪只腳觸地了。然後計算機就僅僅是觀察ANN的控制的表現。群體里的每個ANN都被用這種方法測試過,並基於它們各自的表現,給一個叫「適應」的分值。
很清楚的是,初始群體里這些隨機產生的網路是不大可能有好的表現。他們可能像其他東西一樣更喜歡打來打去(畢竟它們的大腦是隨機產生的)。這也沒什麼,因為這裡的關鍵不是讓一個ANN非常好,而是發現一些比其他的要好,甚至只是好那麼一點點即可。也許某個網路能比其他網路讓機器人往前多挪一點。驅動神經進化進步的引擎就是選擇那些比其他的稍微強一點的網路作為繁衍下一代的父母。演算法將會通過稍微地修改這些ANN(比如稍微改變它們連接的權重)來產生它們的後代。雖然有一些後代會比它們的父母表現要差,但某些將會再稍微好點(比如晃的少一點)。那麼這些就又成為產生下一代的父母,並按這個邏輯持續下去。用這個方法,整體的策略就是持續的選擇更合適的個體作為父母。實際上,這個神經進化的過程是一個ANN自動繁衍的農場,計算機基於它們的適應性選擇父母來產生後代。
整個神經進化的核心思想是很簡單的:它就是繁衍後代。但基於此之上的事情就變的有趣得多了。在第一代定拓撲神經進化演算法出現後的幾十年間,研究人員不斷地被現實所打擊。儘管這些演算法可以產生新的可能性,它們進化出來的大腦與自然進化的相比還差的非常遠。這個差距的原因有很多,但是這個領域令人著迷的一面就是經常會出現對自然進化的新洞察,並帶來神經進化演算法的大幅度提升。很常見的是這些洞察一般是反直覺的,推翻了之前的一些假定並展現了自然界的神奇之處。伴隨逐步地揭開這些秘密,我們發現了如何為進化大腦來設計更厲害的演算法。
複雜性增加
在神經進化學裡取得進步意味著什麼呢?一般而言,是意識到可進化的ANN的複雜性的局限,然後發明一個新的方法來客服這個局限。例如,上世紀八九十年代里的定拓撲演算法的一個清晰的局限就是它與自然里的情況明顯不一致:這些演算法進化的ANN永遠不能變大。相反的,自然界里的大腦在尺寸和複雜性上都可以沿多個譜系來增大。我們祖先大腦的神經元數量比我們現有的100萬億個神經元要少非常多個數量級。很明顯,如果ANN的拓撲在一開始就固定了,這樣的複雜度是不可能進化出來的。
因此,研究人員開始試驗讓ANN的拓撲和權重都進化(TWEANN,拓撲權重全進化人工神經網路)。在這個更靈活的變形版本里,父母ANN的架構(拓撲)可以在它們的後代上被稍微地改變,比如新增一個連接或是一個新的神經元。儘管這個思想是很簡單的,但它帶來的意義是巨大的,因為這意味著大腦可以進化的更大了。多種TWEANN演算法在上世紀九十年代出現,儘管它所試圖去解決的問題依然相對簡單,比如對簡單的數學或是控制問題給出正確的答案。但這個時代的令人興奮之處並不是它解決的問題本身,而是發現人工進化類似大腦的架構和權重的無限潛力。這種系統的局限當時尚未被發現,因此一切看起來皆有可能。
下面給出一些這個時代的ANN試圖去進化並解決的問題。一個流行的基準問題就是所謂的桿平衡問題。這個問題是要控制一個模擬出來只能往兩個方向運行的小車。小車上通過鉸鏈和一個杆子相連。由ANN控制的小車能越長時間的控制杆子不倒,它的適應得分就越高。這個問題就類似於試圖去平衡一個豎在你手掌里上的鉛筆,它需要仔細地協調和快速的反應速度。隨著學習方法的不斷進步,ANN已經可以解決更加困難版本的桿平衡問題,比如同時平衡兩個杆子。解決這樣問題的成果標誌著這這個領域的進步。研究人員可以宣稱他們的演算法是首個解決了一種或另外一種變形的桿平衡的方法。
如果你對這一時期的演算法的技術細節感興趣,Xin Yao的這篇精彩的1999年神經進化演算法的回顧論文是好的文獻。大部分這個時期的創新工作都來自Stefano Nolfi和Dario Floreano。他們在2000年的經典著作《Evolutionary Robotics》(進化的機器人)里介紹了其中大部分的最佳思想。在世紀之交的另外一本讓進化神經網路流行的著作是由Fogel寫的經典:《Blondie24: Playing at the Edge of AI》,Morgan Kaufmann出版發行。其中講述了神經進化演算法通過和人類比賽西洋棋來學到大師級水平的故事。
在1999年,作為德州大學Austin分校的Risto Miikkulainen教授的研究組裡的一個低年級博士生,我開始嚴肅地思考研究神經進化這個課題。幾個重要的定拓撲演算法已經在這個研究組裡被發明出來,比如David Moriaty和Faustino Gomez與Risto Miikkulainen發表的SANE和ESP。這些演算法都已經很聰明了,已經在探索網路里的單個神經元可以在它們自己的子群體里和其他的神經元合作並進化,然後和其他子群體里的神經元共同形成一個更大的有用的網路。這個想法通常被稱為「合作協同進化」。
當時我正是處在這些思想發展的中間,我被大腦的進化可以在計算機里發生這個想法深深地吸引。我非常欣賞和理解通過進化ANN來解決問題的重要性,但是我真正的興趣是在用進化可以增加複雜性這個想法上的。我希望能開發出一種演算法,它能讓ANN在計算機內部探索複雜性,就如同自然界里的大腦所發生的進化那樣。因為某些原因,甚至是已有的TWEANN演算法也能通過對ANN的進化來改變架構。不過它們看起來還是缺乏我想得到的讓複雜性顯著增加的能力。
我用了很多時間來研究已有的TWEANN演算法,並思考為什麼它們並沒有達到如它們可能有的表現。一些問題是已知的。比如競爭協定問題。它是指很難合併兩個父輩ANN來產生一個後代,這個操作叫「交叉」。更具體一點,不同連接權重組合出來的網路可能有著相同的功能,這使得很難了解如何合併父輩ANN才能獲得好的後代。
我很快就碰到了另外一個問題,但當時並沒有被發現。比如在一個群體里,新架構在尚未發現它的潛能之前就趨向滅絕。這種情況下,從上一代改變架構得到下一代所帶來最初的影響通常可能是負面的,雖然可能在經過多代的進化後,最終進化的結果是可以利用新得到的權重的。
在我的博士導師Risto Miikkulainen的幫助下,我搜尋一個更好的TWEANN演算法的結果就是一個叫增強拓撲的神經進化演算法(NeuroEvolution of Augmenting Topologies,NEAT)。這個演算法很快就在神經進化界得到了認同並被廣泛採用。NEAT演算法吸引人的地方就在於它通過一系列的創新迴避了TWEANN演算法的一些問題,並能通過進化來提升ANN的複雜性。一些早期的演算法(比如Inman Harvey的SAGA演算法)已經提供了複雜性是可以進化的線索。而NEAT演算法的亮點就是它給當時的神經進化所碰到的問題提供了明確的解決方案。例如,NEAT用一個叫「歷史標記」的東西來標註基因,來確保交叉後的結果一致。它還實現了一個專門為TWEANN演算法設計的特性,來讓創新性的新架構有更大的繁衍機會,從而對從群體里滅絕一些未成熟的架構進行了優化。
NEAT演算法獲得了破紀錄的桿平衡得分。但更重要的是它給出了通過進化在一代一代後獲得從簡單到複雜的潛力。這是這個演算法的商標,並激發了我遠超打破桿平衡紀錄的想像空間。儘管NEAT演算法是在「深度學習」這個詞出現之前就已經被發明了,但它有著吸引人的可以進化出越來越深的網路的能力。
NEAT演算法已經被我自己和其他人應用在了無數的應用里(包括控制機器人和控制電子遊戲代理)。它還被發現了在計算性創新里的一方天地。例如在中佛羅里達大學我自己實驗室里的例子,它進化出的網路變成了藝術品(比如這個Picbreeder)和音樂(比如這個MaestroGenesis)。對它創新性的應用還擴展到諸如Galactic Arms Race這樣的電子遊戲。它的存在迫使這個遊戲開發商去開發新的內容。
在它諸多重要的影響里,NEAT一個值得驕傲的應用就是被作為優化的方法來在Tevatron粒子加速器上去發現迄今為止最精確的夸克的質量估計(這裡可以查看主要結果,這裡是對NEAT應用的更多細節)。這個由YouTube明星Sethbling最近錄製的視頻幫助教育了超過四百萬觀眾。它通過進化一個超級瑪麗遊戲的控制器來介紹了NEAT的內部工作機制。
間接編碼
聽起來NEAT像是神經進化的最終結果了。但這個領域的魅力之一就是每次重大的突破經常會伴隨著發現之前不知道的局限或缺陷。而這些局限的發現相應地又帶來了新的問題並促成了新一代的演算法,這個循環一直在繼續。事實上,久而久之我們一步步地揭開了一些大自然的秘密——大腦是如何進化出來的。這一過程充滿了無盡的驚喜。
例如,逐步佔據我大腦的NEAT演算法的一個局限就是它使用了一種叫做直接編碼的「人工DNA」。這意味著ANN里的每個連接都被基因組裡的一個單獨的對應基因所描述。在你只有百這個數量級的連接的時候,這沒什麼事。但如果你想得到的是更大的大腦,它就開始變得不易操作了。舉個例子,人類大腦里有100萬億個連接,在NEAT里就需要有100萬億個基因來編碼。換句話說,儘管NEAT確實能通過進化增加連接和神經元數量來擴展ANN的尺寸,增加100萬億個連接意味著進行100萬億級別的變形。即使能想辦法來每秒進化一次增加一條連接(意味著每秒繁育一代),在100萬億級別的大腦可以被進化出來很久之前,太陽就已經湮滅了。因此,NEAT演算法必定是忽略了一些自然界里存在的特性。這些特性導致了能在相對短的時間裡進化出巨大的腦結構。
為了應對這個挑戰,神經進化研究人員已經探索了另外一類不同的基因編碼方法,叫做間接編碼(相對於直接編碼)。用這種方法,基因的數量可以比神經元和連接的數量少很多。換而言之,DNA是大腦的一種壓縮表現形式。由Josh Bongard、Greg Hornby和Jordan Pollack等開創的間接編碼(包括對ANN和實際大腦的編碼)工作幫助展示了間接編碼能進化出令人印象深刻的更像自然界中的大腦結構的威力。這些工作包括:進化出來的人工創造物展示了自然界有機體所有的規律響應性(Bongard的一些作品展示在這裡),以及一系列來自Brandeis大學的Hornby和Pollack創造(論文在這裡)的令人驚奇的進化出來的帶有有趣結構模式的桌子(那種帶有抬高的平面結構)。間接編碼里最能捕獲眼球的(在此之前是在神經進化領域得到關注)展示是Karl Sims的虛擬創造物。這裡是20年前拍攝的視頻,但依然極具震撼和令人難忘。
相比於NEAT演算法這種直接編碼,神經進化里的間接編碼(現在專註於編碼ANN)已經讓能進化出更大的ANN成為可能。最流行的間接編碼演算法之一是被叫做組合型模式生成網路(compositional pattern-producing networks ,CPPNs)。它是在我所在的實驗室——中佛羅里達大學的進化複雜性研究組發明的,用來應對類似NEAT這樣的直接編碼的局限。CPPN基本上是採用規則性和對稱性來把一個模式壓縮成相對小的一個基因集合的方法。這個想法是容易理解的,因為自然界里的大腦就有著大量的規則的模式(像重複的圖案),比如在視覺大腦皮層上的接收區域里。CPPN網路可以編碼相類似的連接模式。
使用CPPN來生成進化中的ANN的連接模式所用的演算法(也是來自我所在的實驗室)就叫做HyperNEAT(基於超立方的NEAT演算法,Hypercube-based NEAT,由我和David D』Ambrosio和Jason Gauci共同發明)。之所以叫超立方,是因為按照一種數學性的解釋,CPPN可以被理解為對於代表一個ANN的連接性的超立方的內部進行描繪。利用這一技術,我們開始可以進化具有幾十萬到幾百萬連接的ANN。經過間接編碼的ANN已經被證明是有用的,特別是對於進化機器人的步伐。因為他們的規則性的連接模式更容易去支持涉及走和跑的移動的規律性。其他實驗室也探索了神經進化領域的間接編碼技術,比如Jan Koutník、Giuseppe Cuccu、Jürgen Schmidhuber和Faustino Gomez研究的壓縮網路方法。
新穎性搜索
現在你已經開始看到神經進化思想發展的軌跡了。神經進化這個領域從定拓撲網路開始,走向了複雜化的網路,然後開始關注於間接編碼的網路。這些視角和能力的躍進將會伴隨著我們對複雜性的進化獲得更多的洞察而繼續下去。另外一個近年來具有影響的思想(同樣是來自於我們的實驗室,同時也從Jean-Baptiste Mouret和Stéphane Doncieux的有影響的研究中得到了響應)就是父母不應該總是按照它們的客觀表現來被選擇,而是應該基於它們的新穎性來被選擇。換一種說法,有時可能有些令人驚訝,僅僅只是基於父母當前的適應性來選擇對長遠的成果其實是有害的。例如,考慮進化一個ANN來用於機器人行走。你可能會認為為了得到最好的行走者,目前表現最好的行走者應該被選為產生下一代的父母。但是,事實上卻不是這樣的。
事實上,在早期進化行走能力時,控制行走者最好的ANN可能僅僅是依賴於不靠譜地向前一跳。可能其他的候選ANN幹了一些有趣的事情,比如規律性地擺動機器人的腿。但假設這些有趣的機器人都摔倒了,按照我們的設定規則,我們應該會更選擇那些走了更遠的候選ANN,而把能擺動腿的排除出後續考慮。但問題是:有可能是更有趣的概念(比如擺動腿)比目前最好的策略(比如前躍)更有可能發展出行走的機器人。但是適應性並不偏好擺動,僅僅是因為在當前階段它的表現不那麼好。換一種說法就是,目前使用的評估最佳行走者的進階石具有欺騙性。對上面的例子來說,從當前表現最好的裡面選擇父母ANN有可能把我們帶進死胡同。
這一洞察(與其他考慮結合在一起)引導我提出了新穎性搜索這個思想(和我的博士學生Joel Lehman一起發現的)。新穎性搜索是一個選擇模式,它選擇最具新穎性的ANN作為父母而不是基於最適應的這一思想。
這一思想一開始可能聽起來有些怪,因此我們先按下不表。在進化里,有兩種主要的影響進化效果的因素:一個就是表現或是編碼,這在自然界的對應物就是DNA。提升複雜性和間接編碼的工作都可以落入這一類別里。另外一個大的影響因素是系統如何決定誰繁衍後代,即自然選擇。幾乎所有的進化計算學的選擇的重點都放在基於適應性做選擇。但這並不意味著我們必須或是僅僅使用它來選擇,因為這會快速地榨乾群體的多樣性,但這也確實意味著更適應者比不太適應者有更多的機會獲得繁衍。
新穎性搜索直接扭轉了這個適應性驅動的範式,在它的選擇模式里完全放棄了常用的適應性的定義(例如行為的質量)。相反的,現在計算機關注每個候選者(例如行走機器人)的表現,然後比較它們的行為和上一代的行為。在新穎性搜索里,如果一個新的候選者的行為顯著地不同於它的前輩,它就有更多的機會被選來繁衍後代,而不管它的適應性如何。
這一思想帶來了一些爭議,因為大家更喜歡基於是否成功這個標準來選擇,這可以用適應性來衡量。但很難忽略新穎性有時也能有用這一事實。即有時候你可以通過選擇新穎的來比使用適應性在更短的時間裡獲得更好的解決方案。想一下行走機器人的例子。和基於適應性的進化不同,新穎性搜索更可能選擇擺腿但摔倒的那個作為父母,這僅僅是因為它做了一些新鮮的東西。而基於適應的搜索則幾乎一定會因為它很快摔倒而忽略它。但就如我們討論的,事實是擺腿是讓機器人能行走的一個本質的進階石。因此,儘管是反直覺地(因為適應性的欺騙性),最好還是忽視你的客觀而簡單地選擇新穎性而不是去提升客觀表現。
這一洞察又一次躍升了我們如何思考神經進化,並引領了一個全新的研究領域叫「質量多樣化」或者有時也叫「啟示演算法」。這一新類型的演算法通常是由新穎性搜素演化出。其主要目標不是要發現一個單一的最優解,而是闡明針對一個任務的可能性的所有高質量的變化所帶來的廣泛的交叉部分,就如那些對於一個四足機器人有效的所有的步態。這種演算法的其中一個(叫MAP-Elites,由Jean-Baptiste Mouret和Jeff Clune發明)出現在近期的《自然》雜誌的封面上。因為它發現了非常大量的這樣的機器人步態的集合。這些步態可以在機器人出現損壞的場景下被選擇性地使用。
如果你仔細地想想這一切,新穎性並不是要去解決一個特定的問題,而是去發現搜索空間里所有存在的有趣的可能性。事實是它能否給你一個最前沿的解決方案僅僅是這整個過程里的一個吸引人的副作用。質量多樣性演算法(超越新穎性搜索的下一步)把適應性的定義又引入回來,但用的是一個非常小心的方法,從而不會損害對新穎性的探求。其結果就是一類演算法,它們可以在搜索空間里發散開,同時還能找到可能最好的東西。
這個新方向對於神經進化很重要,但更有趣的是注意到這已經超越了神經進化、機器學習或甚至是計算機科學的範疇。思考一下:有時取得一些值得的東西的最佳方法是避免直接去獲得這它們。這個原則是如此通用,以至於它可以被應用到我們的生活和社會裡的很多方面。例如,最佳的提高學生成績的方法可能並不是給予持續的考試。事實是這一來自神經進化的洞察具有如此潛在廣泛的影響並不是偶然的——很自然(也很令人興奮)的,大家協調一致地試圖去增強演算法的能力來探索所有可能性將會帶來對於創新和進步的廣泛的洞察。
換句話說,當我們試圖去揭開神經進化的謎題的時候,我們不僅僅是學習到了計算機演算法,還了解到了這個世界是如何在深層次的基礎層面上運作的。這就是我和合作者Joel Lehman要寫《Why Greatness Cannot Be Planned: The Myth of the Objective》(為什麼偉大不能被計划出來:客觀的秘密)這本書的原因。我們希望通過這本書來和大眾分享我們這個領域發展所帶來的一些更廣泛的影響。我們相信這些影響確實是對計算機科學界以外那些關注發明和創新的領域非常重要的。
復興
我在這篇文章的開頭宣稱神經進化已經復興,但這確切是什麼意思?在現實里,這個領域從來沒有真正地消失,很多主力研究人員都一直奮戰在科研的第一線。然而,深度學習的興起必然會把之前很多流失的注意力又帶回了神經進化。現在這一切已經開始改變了。
深度學習取得成功的原因之一就是近幾年計算機硬體處理能力的提升。ANN已經從能力在近期取得爆炸性增長的並行計算(比如在GPU上)里獲益。很多人認為深度學習里ANN和強大的硬體的聯姻是唯一且偶然的。其實在神經進化領域的某些故事也是處於這種情況的尖端。這就是,和傳統的深度學習一樣神經進化也是可以從海量硬體投資里獲益,甚至是更多。與所有進化演算法一樣,神經進化的優點就是ANN的群體天然地可以被並行處理,而且很容易實現。如果你有100個ANN和100個處理器,你就可以同時評估所有100候選網路。所花的時間和評估一個是一樣的。這一速度的提升可以急劇地提升和擴展神經進化這一方法的潛力。
一種結果就是那些能夠使用大規模計算集群的實驗室發現他們可能正坐在神經進化的金礦上面。這會帶來新一代的研究人員和下一代的神經進化的試驗,可能卻是從在傳統的深度學習上進行了投資的實驗室里產生。實際上在這些實驗室里已經存在著對於可能會錯過一些重要的事情的擔憂存在了
例如,Google Brain(谷歌大腦,谷歌內部的人工智慧實驗室)已經發表了使用幾百個GPU去試圖進化深度網路架構的大規模試驗。其基本想法是神經進化可能可以進化出使用隨機梯度下降訓練法的最佳的網路架構。實際上,這個通過神經進化來進行架構搜索的想法已經在2016和2017年吸引了業界的主要企業的注意力,包括谷歌在內的Sentient Technologies、MIT Media實驗室、Johns Hopkins大學、卡耐基梅隆大學,這個名單還在變長。點這裡和這裡可以查看這一領域的一些初期的成果。
另外一個神經進化復興的領域就是增強學習。增強學習專註於控制問題和決策問題(比如讓計算機去玩Atari遊戲或是控制兩足機器人)。近期OpenAI的一個團隊報道了一個實驗,實驗對一系列的基準測試任務進行了比較,其中包括被廣為報道的谷歌DeepMind AI智庫最早用深度學習方法征服的Atari遊戲。結果顯示一個神經進化的變形方法取得了和基於傳統深度學習的增強學習一樣的表現。
神經進化領域也同樣沿著它自己獨特的路徑前進著。例如,過去幾年到現在的很多研究依然關注於如何進化可伸縮的ANN(Plastic ANN)。這些網路的連接權重可以在網路的生命周期里發生改變。即這種場景下的進化不僅決定架構和權重,還決定指導如何和何時權重發生改變的規則。這樣產生的網路理論上更像是隨著生命過程改變的生物大腦。我對於可伸縮神經網路的很多的想法都是受Dario Floreano的早期工作以及後來Andrea Soltoggio的神經調節思想的影響。神經調節允許一些神經元來調整其他神經元的伸縮性。
另外一個非常合適神經進化研究的有趣的也是我最愛的題目是開放式無結束的進化。即持續地進化來增加複雜性和有趣的行為而不結束。地球上很多有關的進化都是開放式無結束的,而從發生在計算機里的相似場景的視角去看則帶來了獨特的靈感。神經進化的一個偉大的挑戰就是通過真正的無結束過程所產生的逐步增加複雜性的大腦的產物。如這裡所述的,一個模糊但正在擴大的研究社區也正在推進無結束演算法的邊界。我感覺開放式無結束的進化將會和人工智慧一起成為計算機科學界的最偉大的挑戰之一。
電子遊戲依然是一個流行的應用,不僅僅只是為了控制遊戲里的角色,而是為了進化出新的內容。如果你思考地球上所有的生命的多樣性,你可以發現進化演算法能成為生成新的多樣內容的自然驅動力。Malta大學的Georgios Yannakakis和紐約大學的Julian Togelius都是他們自己領域的先鋒。在他們的新書《Artificial Intelligence and Games》(人工智慧和遊戲)里他們展示了很多應用神經進化(和其他人工智慧演算法)在遊戲界里的綜述。
參與進來
如果你有興趣進化神經網路,好消息是從神經進化開始相對容易一些。有大量的軟體可用(點這裡查看),而且對很多人而言不用很高深的專業知識。繁衍的基本概念是符合直覺的,從而讓掌握神經進化的主要思想比較容易。實際上,神經進化有著這樣的榮譽,可以讓很多業餘愛好者在自己家裡的電腦上成功地進行試驗。如果你在YouTube上搜索「neuroevolution」或「NEAT neural」,你能看到很多這樣的例子。另外一個例子,NEAT演算法的最流行和優雅的軟體包之一(「SharpNEAT」)就是由一個獨立的軟體工程師開發的。而他沒有什麼學術聯繫或是受過專業培訓。
考慮到進化是迄今為止我們唯一知道的真正能產生人類級別智能的方法,神經進化領域未來發展的潛力是巨大的。而伴隨著今日計算能力的增加,產生新洞察的潛力也是巨大的。
在這裡可以下一份免費的報告來探索深度學習、無監督學習和其他人工智慧的前沿成果。
This article originally appeared in English: "Neuroevolution: A different kind of deep learning".
Kenneth O. Stanley
Kenneth O. Stanley是中佛羅里達大學計算機科學的副教授。在這裡他領導著進化複雜性(EPlex)研究組。他也是Uber人工智慧實驗室的資深研究科學家。可以通過郵箱kenstanley001@gmail.com或是推特賬號@kenneth0stanley聯繫到他。
http://weixin.qq.com/r/MzuXj7DEse3OrfTs924h (二維碼自動識別)
推薦閱讀:
※汽車AI時代將至,商湯科技攜手本田卡位自動駕駛高地
※如何評價人工智慧公司GTI的AI晶元「光矛」?比寒武紀如何?
※AI的時代, 不親自來一發嗎?
TAG:AI初创 | 人工智能算法 | 深度学习DeepLearning |