進化算法

神經進化正在復興。主要的人工智能實驗室和研究人員正在試驗它,一絲新的成功點燃了更多的熱情,能對於深度學習產生影響的新機遇正在出現。也許你在深度學習全部的激動人心的時刻並無聽到過神經進化,但它只是潛行於表面之下,做爲一個小的熱情的研究社區的課題存在了幾十年。如今它正伴隨着大衆對於它的潛力的瞭解而開始得到更多的關注。html

簡單來講,神經進化是人工智能和機器學習領域的一個分支。它力圖觸發一個和產生咱們人類大腦相似的進化過程,只不過這個過程是在計算機裏實現的。換句話說,神經進化試圖開發經過進化算法去尋找進化神經網絡的方法。ios

當我在上世紀九十年代末期第一次開始人工智能的研究的時候,關於能夠在計算機裏去進化大腦的想法和我想冒險的感受產生了共鳴。在當時這仍是一個不尋常的、甚至是很含糊的領域。但我對這個思想很是好奇並且也頗有親切感。結果就是我生命裏的20多年都在思考這個主題,並和傑出的同事一塊兒開發出了一系列的算法,好比NEAT、HyperNEAT和新穎性搜索(novelty search)。在本博文裏,我但願能帶給你神經進化的一些激動人心的部分,並對這個主題給出一些洞見,但不會有科學文獻裏那些讓人頭暈的術語。我也會部分採用自傳回顧的視角來把我在這個領域裏摸爬滾打的經歷講述一下。我但願我本身的故事能爲更多的讀者打開一扇探索在計算機裏進化大腦的窗戶。算法

深度學習的成功

若是你最近一直在跟蹤人工智能或是機器學習領域,你能夠已經據說了深度學習。要感謝深度學習,計算機已經在諸如圖像識別和控制無人駕駛汽車(甚至是控制電子遊戲的角色)這樣的任務上接近或是有時超越人類的表現。這些成就已經幫助深度學習和人工智能從默默無聞的學術期刊裏一躍出如今大衆傳媒上,並激發了公衆的想象力。那麼在深度學習的背後是什麼使這一成功成爲可能?編程

實際上,在深度學習的表面下是一個已經有幾十年歷史的技術的最新形式,它就是人工神經網絡(ANN)。與不少AI領域裏的思想同樣,ANN也是來自生物學的靈感。對ANN來講,它是模擬人類的大腦。咱們之因此選擇大腦做爲AI的靈感來源,是由於大腦是迄今爲止惟一明確的智能載體。當咱們想實現人工智能時,在某種程度上,模仿大腦應該是一個講得通的思路。大腦的一個關鍵組件就是神經元。它是一個很小的細胞,能夠經過鏈接想其餘的神經元發送信號。當很是多的神經元彼此鏈接造成一個網絡(正如大腦裏就是這樣),咱們稱之爲一個神經網絡。所以,一個ANN就是試圖模仿相似神經元這樣能夠相互間發送信號的組件的集合。這就是在深度學習裏面的「深度網絡」背後的機理。網絡

ANN的研究人員經過程序來模擬這些神經元以及在他們中間傳輸的信號,得到了一個比較模糊的模擬大腦裏發生的事情的過程。固然,這二者間是有着很是多的不一樣的。但真正的挑戰是,僅僅只是簡單地把一堆相似神經元的元素彼此相連並讓他們相互間共享信號並不能產生智慧。相反的,智慧是精確地來源於神經元是如何鏈接的。架構

例如,一個神經元強烈地影響着另一個神經元被稱爲有一個很大的權重鏈接到它的夥伴。在這裏,這個鏈接的權重決定了神經元是如何彼此影響的,從而產生了一個神經網絡裏神經激活的特定模式,來響應到達神經網絡的輸入(好比,來自眼睛的輸入)。要想獲得一個智能的網絡,相應的挑戰就變成了如何決定網絡鏈接的權重的問題。app

一般,沒人會經過手工計算得出鏈接的權重(考慮到現代的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聯繫到他。

轉自:一個方向——進化算法   網址爲: https://blog.csdn.net/yzxnuaa/article/details/79723737

此方向跟本人研究領域有關,本博客僅僅保存筆記,供往後研讀,如有侵權,聯繫刪除,謝謝

相關文章
相關標籤/搜索