神經進化:一種不一樣的深度學習

2020-12-04 雷鋒網

雷鋒網編者按:近年來,神經網絡借鑑了生物學策略的相關理論知識,實現了大飛躍,完成了之前無法完成的任務。神經進化作為人工智慧的一個研究領域,試圖通過進化算法而非隨機梯度下降來設計和構建神經網絡。本文作者Paul Pauls,作為機器學習GDE和開源愛好者,他在Medium上寫了一篇關於神經進化算法的文章,詳細介紹了神經進化算法的基本概念,以及這幾年重要的研究成果。雷鋒網 AI科技評論作了有刪改的編譯,請欣賞~

神經進化是人工智慧和機器學習領域的一個分支,它能夠改進了人工神經網絡,並且試圖通過進化算法去尋找最優神經網絡。具體而言,就像大自然通過突變、交叉或移除一些潛在的遺傳密碼來提高大腦的功能一樣,人工神經網絡通過進化算法能夠產生越來越好的拓撲、權重和超參數。簡單的說就是將進化的思想使用到神經網絡參數優化的更迭中。

神經進化

神經進化是一種機器學習技術,它使用基於群體的優化方法能夠不斷提高群體中每個神經網絡的質量,從而根據其要解決的問題生成越來越好的神經網絡。該種群中的每個個體的存儲方式並不是複雜的神經網絡,而是存儲為基因組。基因組是一種簡化的遺傳表示,可以映射到神經網絡。

神經進化首先需要初始化一組上述基因組,然後將它們應用於具體的問題環境中,然後根據神經網絡解決應用問題的能力為每個基因組分配一個適應度分數。例如,該適應度分數可以是圖像識別任務中實現的準確度以及機械臂移動實際軌跡和預期軌跡的差別等等。

一旦初始種群被創建,優化循環開始,種群不斷地變異、重組、評估和經歷自然選擇。

如果這些步驟是迭代進行的,而整個種群一次只進行一個步驟,那麼所進行的就是代際神經進化(generational neuroevolution)。

競爭性共同進化(competitive coevolution)則意味著神經進化算法的設計允許異步性,並且優化循環在每個基因組的基礎上執行。在代際神經進化和競爭性共同進化兩種情況下,其優化過程都是不間斷的進行引入創新、評估創新、然後對創新進行分類,直到產生一個最佳實用性神經網絡。

圖1:典型的代際神經進化過程圖解

神經進化過程也是一個「黑盒」,雖然它自己的進化過程需要參數,但卻不為生成的神經網絡規定任何特定超參數,而是根據實際問題的解決設計神經網絡。這便為神經網絡的權重、超參數等的選擇提供了範圍,此範圍也稱為搜索空間。雖然「黑盒」性提供了非常廣泛的搜索空間,但是為了提高遍歷搜索空間的速度,明智的做法是限制搜索空間的粒度。通過限制基因組編碼的複雜性,將基因組映射到搜索空間的粒度的能力也被稱為遺傳編碼。綜上所述,為了使搜索空間具有適當的粒度,根據實際問題的要求,設計遺傳編碼和相應的神經進化算法非常重要。因此,我們我們先來回顧一下遺傳編碼的概念。

遺傳編碼

有效的神經網絡是能夠進行有效的變異和重組人工神經網絡的前提。擁有強大表示能力的神經網絡不用分析高度複雜的數據結構就能夠快速的處理緊湊的遺傳密碼(compact genetic codes)。

換句話說,神經進化算法只在遺傳編碼上操作,而不是在機器學習框架中複雜的數據結構上操作。當然,基因編碼允許這兩種表示之間存在映射關係。基因組的這些有效的遺傳表示被稱為基因型(genotypes),而相應映射的神經網絡被稱為顯型(phenotypes)。這兩個術語是從遺傳進化學科中化用的。畢竟神經進化也稱的上是遺傳進化。另外注意,這裡將所有顯型都限制為神經網絡。

圖2:直接遺傳編碼

基因編碼一般可分為兩個子類:直接編碼和間接編碼。雖然還有第三類發展性編碼,但這種編碼我們先忽略不計,畢竟這兩年也沒啥進展。直接編碼表示神經網絡的各個方面,它們在遺傳表示中顯式編碼(如上圖2所示)。直接編碼直接在基因型中編碼每個連接及其相應的權重,但通過排除神經網絡中的偏差和激活函數的可能性來限制搜索空間。

這種直接編碼可以表示任意的前饋和遞歸拓撲,也能夠產生最優的拓撲。但「拓撲」太靈活的話,粒度的搜索空間就會變得非常龐大。因此需要設計良好的神經進化算法才能快速遍歷該搜索空間。

圖3:間接遺傳編碼

間接編碼的功能是規定那些無法直接「翻譯」成人工神經網絡的自定義編碼。也就是說為了將基因型映射到神經網絡,需要一個由間接編碼規定單獨的「翻譯」能力。如果間接編碼設計得當,那麼即使神經網絡非常複雜,也可以通過搜索空間實現有意義且快速的遍歷。

雖然可以從直接編碼快速創建人工神經網絡,但是缺少間接編碼的翻譯能力卻會減慢處理速度,並且可能導致「粗粒度」。所以在決定使用哪種編碼之前,必須考慮兩種編碼的優缺點。

但是兩種遺傳編碼都證明了遺傳編碼如何確定搜索空間的大小,例如。例如通過控制激活函數或某些層類型確定搜索空間。

繁殖方法與解決方式探索

有種遍歷搜索空間的方法被稱為繁殖的過程(the process of reproduction),這種方法與神經進化所使用的遺傳編碼密切相關。通常通過突變或重組基因組來創造新的基因組,新的基因組也繼承了舊的基因組。突變讓後代基因組探索人工神經網絡新的結構、權重和超參數。重組基因組本質上是將兩個基因組及其獨特的特徵合併。

突變與遺傳編碼緊密相關,因為神經網絡的參數只能突變到以遺傳編碼表示的程度。因此,為神經進化算法定義突變有以下三種情況。1、遺傳編碼的哪一部分會發生突變?是拓撲、權重、還是超參數?2、基因組中選定的部分會發生多大程度的突變?例如,神經進化算法可以對低適應度基因組使用較大的突變,對高性能基因組使用微小的突變。3、突變採用何種方式。是定向?還是隨機?

圖4:競合公約問題圖解

重組並不會突變基因組,擁有創新可以通過將兩個親本基因組( parent-genomes)及其獨特特徵結合,並產生「新穎」的後代基因組。如果重組方法設計得當,並且可以無損地融合兩個親本基因組的有益特徵,將其在整個群體中傳播,提高所有現有基因組的適用性。

設計重組方法的核心在於「無損融合」,即不丟失任何基因特性的情況下融合。

例如在神經進化算法之前,NEAT算法(通過增強拓撲的進化神經網絡(Evolving Neural Networks through Augmenting Topologies))利用直接編碼在進行修改網絡的拓撲結構,包括新增節點和刪除節點等操作時會產生交叉損失。

如上圖競合公約問題( competing-conventions problem)所示。隨後,NEAT算法提出了一種「歷史標記」的方法,該方法為每個突變提供了唯一的標識符,從而最終實現了基因組的無損重組,使其為神經進化算法提供了基準。

評估方法

在總體優化循環中,基於問題評估基因組似乎是最簡單的。但這一步驟確是非常重要,不僅是能夠指出潛在的改進和進步。評估方法從根本上說是一個過程,即將基因組映射到由其遺傳編碼規定的神經網絡,並將其應用於問題環境,然後根據神經網絡的表現計算適應值。一些神經進化算法的評估過程還包括將神經網絡加權訓練的附加步驟,雖然這種方法非常明智,但只有當實際環境能夠清晰反映基本信息才有用。在整個評估過程中,儘管確定適應度的方式完全取決於實際問題的具體情況,但可以進行合理的修改。例如在圖像識別中可以設置為準確度,遊戲中可以設置為點數。在確定適應度計算時,新穎性搜索也是一個需要考慮的重要概念。因為這個概念涉及用新的方法獎勵基因組,能夠使其具有更高的適應值。例如,在實際的電子遊戲環境中的智能體如果進入一個未知的區域會獲得體能提升,儘管總體上獲得的分數較少,但也能促進了基因庫的創新,從而促進更有希望的進化。

自然選擇與親本選擇

(雷鋒網(公眾號:雷鋒網))雖然繁殖方法定義了探索搜索空間的方式。但選擇哪些基因組將作為後代的「父母」?哪些基因組將從基因庫中移除?也是神經進化計劃的另一個非常重要的方面。

神經進化算法的種類決定了哪種基因能夠作為父母基因。在一代人的神經進化中,選擇適合下一代的基因組通常歸結為選擇當前表現最好的基因組。選擇作為父母的基因組不一定與移除的基因組互補。基因組的選擇要足夠有希望保證創新突變的潛力,儘管在下一代可能會被移除。

神經進化算法的一個標準配置是選擇利用前20%的基因組作為父母,另外在下一次迭代中會去除90%表現最差的基因組。另外根據代際神經進化算法是否採用物種形成,親本選擇或基因組移除選擇也會發生了顯著變化。物種形成是一種代際神經進化的工具,它根據顯型中的拓撲相似性等明顯特徵將群體中的個體聚集在一起;或根據或在實際環境中達到的特定狀態等隱藏特徵聚集。

聚集後產生的集群被認為是物種,物種的產生取決於物種的選擇方法,具體來說得繁殖過程可以通過將更多的後代分配給平均適應度更高的物種來控制進化,從而產生「優秀」的後代。然而,設計得當的物種形成也保護了基因庫中的創新,因為這些物種會將一些後代基因分配下去。因此,設計一種適當的、基因問題解決的物種形成方法將種群中的個體分離到不同的物種中,可以成為神經進化方法中非常強大的工具,這種方法既可以引導進化進入有益的方向,也可以保護創新的新路徑。

另一方面,在競爭的共同進化方案(competitive coevolution scheme)中,基因組通常是隨機配對,其中更合適或更有創新的一個被選為「父母」,另一個從基因庫中移除。由於競爭共同進化的異步性,不可能同時對種群中的所有基因組進行分類和分類,從而極大地限制了用物種形成等方法指導進化的可能性。

關於神經進化的總結

(雷鋒網)神經進化是優化人工神經網絡的一種方法,是一個多功能的工具,不僅限於機器學習方面,還可以應用於改進計算機視覺、自然語言處理。創建神經進化算法時需要考慮很多東西,但最重要的是最有效地利用實際問題環境。

神經進化中具有裡程碑意義的研究

該算法不同於我們之前討論的傳統神經網絡,它不僅會訓練和修改網絡的權值,同時會修改網絡的拓撲結構,包括新增節點和刪除節點等操作。

NEAT通過突變和無損重組直接編碼,同時通過物種形成保護創新。由於其簡單性和同步能力,NEAT可以被認為是典型的神經進化算法。

1、A Hypercube-Based Encoding for Evolving Large-Scale Neural Networks, 2009

HyperNEAT是NEAT的變體,和NEAT具有相同的原理,但其所使用的是間接編碼,稱為組合模式產生網絡(CPPNs)。CPPNs允許神經網絡對稱和重複,這不僅更準確地反映了人類大腦的組成,而且還通過將其映射到網絡拓撲,從而利用應用問題中固有的幾何和結構。

2、Evolving the Placement and Density of Neurons in the HyperNEAT Substrate, 2010

ES-HyperNEAT進一步擴展了HyperNEAT,在信息量較高的區域允許在CPPN編碼模式中使用更密集的基底(denser substrate)。雖然HyperNEAT將隱藏神經元放置在何處的決定權留給了用戶(user),但ES-HyperNEAT採用四叉樹狀結構來確定那些隱藏節點的密度和位置。ES-HyperNEAT在主要基準測試中能夠勝過傳統的HyperNEAT。

3、A Neuroevolution Approach to General Atari Game Playing, 2014

通過使用CNE、CMA-ES、NEAT和HyperNEAT算法來解決61個Atari2600視頻遊戲,展示了神經進化在通用視頻遊戲(GVGP)中的潛力。雖然神經進化在這項研究之前已經在GVGPI中進行了部署。結果與預期不謀而合,因為它們表明直接編碼方法在緊湊的狀態表示效果最好,間接編碼允許縮放到更高維的表示。

4、DLNE: A hybridization of deep learning and neuroevolution for visual control, 2017

通過將神經進化與CNN的圖像識別相結合,介紹了神經進化最有趣的用途之一。通過CNN進行圖像識別,將識別出的圖像轉換為特徵表示,然後將識別出的圖像送入神經進化優化的神經網絡。雖然這種方法的有效性在很大程度上取決於特徵表示的質量,但即使採用簡單的方法也能有一個很有前途的研究方向。

5、Large-Scale Evolution of Image Classifiers, 2017

這篇論文對進化算法進行了改動,使其可以用於NAS(神經網絡架構搜索),算法對於計算資源要求較高。算法一開始從沒有任何卷積的最簡單的模型開始進化,與之前看過的論文不同的是,神經網絡架構沒有固定的網絡深度(意味著搜索空間進一步擴大,算法運行時間長)。

利用這篇的自動化方法得出的深度網絡結構,已經能在CIFAR-10上取得可以跟人工設計的網絡相媲美的結果。

6、Evolving Deep Neural Networks, 2018

CoDeepNEAT算法是近年來興起NEAT算法的擴展。這篇論文首先定義了DeepNEAT,即以緊湊形式表示整個深層神經網絡的層間接編碼(包括超參數等)。然後,這些DeepNEAT基因組被看做模塊,並與由多個重複模塊組成的藍圖共同進化,這些藍圖是由數個節點組成的,節點指向表徵了神經網絡的特定模塊。另外該網絡在CIFAR-10數據集上進行了基準測試,產生了比較好的結果。

7、Regularized Evolution for Image Classifier Architecture Search, 2018

這篇論文中所用進化算法的一大重要特徵是採用了一種正則化形式:相比於移除最差的神經網絡,他們移除了最老的神經網絡(無論它有多好)。這提升了對任務優化時所發生變化的穩健性,並最終更可能得到更加準確的網絡。其中一個原因可能是由於不允許權重繼承,所有的網絡必須都從頭開始訓練。因此,這種形式的正則化選擇重新訓練後依舊較好的網絡。也就是說,得到更加準確的模型只是偶然的,訓練過程中存在的噪聲意味著即使完全相同的架構準確率也可能不同。

8、Designing Neural Networks Through Neuroevolution, 2019

這篇文章是對現代神經進化的一個極好的回顧,由該領域四位最著名的研究人員合作成文。它即使它沒有引入新的概念,但總結和說明了神經進化的每一個重要方面。

9、Evolutionary Neural AutoML for Deep Learning, 2019

該論文介紹了功能強大的進化AutoML框架LEAF,該框架利用了進化算法CoDeepNEAT。雖然在論文中作者沒有透露他們的原始碼,但他們對其設計進行了廣泛的討論,並提供了有價值的意見。

另外,在醫學圖像分類和自然語言分析任務中對進化AutoML框架的性能進行了評估,其結果超過了現有的最先進的AutoML系統和手工神經網絡解決方案。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 深度學習背後的基礎-神經網絡揭秘
    最近, 深度學習三傑獲得了計算機界最重要的圖靈獎, 它們的貢獻都集中在對深度學習的根據神經網絡的理論突破。 今天我們看到的所有和人工智慧有關的偉大成就, 從阿法狗到自動駕駛, 從海量人臉識別到對話機器人, 都可以歸功於人工神經網絡的迅速崛起。那麼對於不了解神經網絡的同學如何入門? 神經網絡的技術為什麼偉大, 又是什麼讓它們這麼多年才姍姍走來?
  • 前沿| 利用遺傳算法優化神經網絡:Uber提出深度學習訓練新方式
    但是,Uber 近日發布的五篇論文表明,神經進化(neuroevolution)這種利用遺傳算法的神經網絡優化策略,也是訓練深度神經網絡解決強化學習(RL)問題的有效方法。,以提高循環神經網絡和深度神經網絡的進化能力。
  • Uber論文5連發宣告神經演化新時代,深度強化學習訓練勝過SGD和策略...
    改進進化策略的探索能力深度神經演化方面的研究帶來一個非常討人喜歡的結果,那就是本來為神經演化開發的各種工具如今都可以用來增強深度神經網絡的訓練過程。Uber AI 的研究人員們開發了一種新算法,它可以把進化策略的優化能力和可拓展性與神經演化中獨有的方法結合起來,用一個鼓勵各自做出不同行為的智能體群落提升強化學習任務中的探索能力。
  • 深度學習之後,我們或許可以從進化論中找到新的突破口
    然而最近,研究者開始應用基於生物學進化機制的方法來構建模型。這種思路在深度學習時代之前就有了,但直到最近才發展到足以和反向傳播訓練的深度學習模型媲美的態勢。在這篇博客裡,我們會聊到一些進化方法,對比它們與生物進化和有機發育的異同,並推斷出他們最終將如何以甚至比傳統深度學習模型更強大和更高效的方式推動 AI 模型的發展。
  • 靠一種樣本學習多種氣味 神經擬態晶片拉近AI與人腦距離
    通過堆疊晶片形成的神經擬態系統似乎讓我們看到了「機器可以和人一樣聰明」的希望,那神經擬態晶片及大規模集成系統的就緒,是否意味著「強認知、小樣本學習」的神經擬態計算有了規模商用的可能?神經擬態訓練無需大量樣本目前深度學習算法作為實現人工智慧的重要技術手段,被廣泛應用於各類人工智慧成果中。對於以深度學習算法為支撐的人工智慧成果,數據可以說是研究的血液。
  • 神經網絡和深度學習簡史(全)
    讓我告訴你,說來話長——這不僅僅是一個有關神經網絡的故事,也不僅僅是一個有關一系列研究突破的故事,這些突破讓深度學習變得比「大型神經網絡」更加有趣,而是一個有關幾位不放棄的研究員如何熬過黑暗數十年,直至拯救神經網絡,實現深度學習夢想的故事。
  • 人工智慧系列(六) 深度學習中的神經網絡
    原力君在系列的第五篇《人工智慧系列(五) 深度學習簡介》中提到深度學習可以看作是一種更高級的函數擬合方法;人工神經網絡、激活函數、代價函數、梯度下降、反向傳播是深度學習的幾個關鍵點;常見的深度學習神經網絡結構有多層感知機、DNN、CNN、RNN等。
  • 人工智慧、機器學習、深度學習和神經網絡傻傻分不清?看這兒!
    人工智慧、機器學習、深度學習和神經網絡這些詞傻傻分不清?這四個都是非常熱門的詞彙,很多人甚至將四者看成是一種等價的關係,在很多報導中,會混雜使用。事實上,這四者之間既有一定的聯繫,但也有明顯的區別。可以簡單理解為:機器學習是人工智慧領域中的一個重要分支;深度學習是實現機器學習的一種重要方法;而深度學習通常都是基於多層神經網絡的。筆者之前畫了一張圖,比較形象一些。
  • 深度學習:神經網絡算法的昨天、今天和明天
    針對神經網絡輸出結果與真實結果之間的差異,神經網絡會通過梯度(Gradient)逐層調整相應的權重以縮小差異,從而達到深度學習的目的。二、深度學習的雛形其實,模擬動物的神經活動,並非深度學習的專利。早在1957年,Frank Rosenblatt就提出了感知機(Perceptron)的概念。這是一種只能分出兩類結果的單層神經網絡。
  • FPGA的應用領域主要是深度學習和神經網絡算法
    打開APP FPGA的應用領域主要是深度學習和神經網絡算法 中關村在線 發表於 2019-09-06 17:50:27 相比之下FPGA就不能向CPU一樣靈活的處理各種沒有見過的指令,只能根據一個固定的模式來處理輸入的數據然後輸出,這也是為什麼FPGA經常被看作一種行家專屬的架構。
  • 機器學習算法盤點:人工神經網絡、深度學習
    機器學習算法盤點:人工神經網絡、深度學習 佚名 發表於 2016-08-01 16:26:33   機器學習無疑是當前數據分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的算法。
  • 推薦| 九本不容錯過的深度學習和神經網絡書籍
    搭建你自己的神經網絡(Make Your Own Neural Network)價格:45 美元一步步讓你了解神經網絡的數學原理並用 Python 搭建自己的神經網絡。神經網絡是深度學習和人工智慧的關鍵元素。然而,幾乎很少有人真正了解神經網絡如何運作。本書從非常簡單的思想開始,讓你在趣味和從容不迫中,逐漸了解神經網絡的運作原理。2.
  • 【PPT下載】深度學習入門指南!六步構建深度神經網絡
    深度學習是通過對人工神經網絡的研究,使得機器學習的操作和執行變得更完善、更高效。因此,深度學習是機器學習的一個分支。從概念上理解,人工智慧包含機器學習,而機器學習包含深度學習。有方向就好辦,你可以選擇說這個方向我要跟,或者這個方向我不跟。但是深度學習不一樣,你不知道它的能力邊界在哪裡,更沒有明確的場景限制。幾乎在你可以想到的任何事情中,你都可以構造一個複雜的網絡,然後把數據灌進去開始學學,蠻不講理的就可能得到一個更好的結果。在競爭當中,這種武器是最可怕的,沒有固定的形態,放到哪裡都有可能弄出一個意外的大殺器。
  • 人工智慧、機器學習、神經網絡和深度學習之間是什麼樣的關係?
    ,深度學習之間的關係。神經網絡在之前有非常多的問題,層數無法深入過多,有太多的參數需要調節,樣本數據量過小等問題。總之,其之前是一門並不被看好的技術。直到2006年,Hinton在《Science》和相關期刊上發表了論文,首次提出了「深度信念網絡」的概念。  深度學習(DeepLearning)其實算是神經網絡的延伸,從概念被提出,逐漸的在人工智慧領域大顯身手。
  • 理解神經網絡:從神經元到RNN、CNN、深度學習
    隨著時間的推移,證明了神經網絡在精度和速度方面,比其他的算法性能更好。並且形成了很多種類,像CNN(卷積神經網絡),RNN,自編碼,深度學習等等。神經網絡對於數據科學和或者機器學習從業者,就像線性回歸對於統計學家一樣。因此,對神經網絡是什麼有一個基本的理解是有必要的,比如,它是怎麼構成的,它能處理問題的範圍以及它的局限性是什麼。
  • DeepMind綜述深度強化學習中的快與慢,智能體應該像人一樣學習
    也許結合了「快」與「慢」的強化學習,才是以後真正理想的強化學習。強大但慢速:第一波深度強化學習從這個角度來看,AI 研究中一個極具吸引力的領域是深度強化學習。深度強化學習將神經網絡建模和強化學習相結合。過去幾十年來,深度強化學習一直可望而不可及。
  • 人工智慧-深度學習-神經網絡結構MLP,CNN,RNN,LSTM
    人工神經網絡、激活函數、代價函數、梯度下降、反向傳播是深度學習的幾個關鍵點;常見的深度學習神經網絡結構有多層感知器MLP、CNN、RNN、LSTM等。函數是sigmoid函數的一種變體,它的取值範圍為,而不是sigmoid函數的DNN-可以理解為有很多隱藏層的神經網絡,有時也叫做多層感知機(Multi-Layer perceptron,MLP)CNN-Convolutional
  • 神經進化,可能使得人工智慧的火苗燒的更旺!
    當非常多的神經元彼此連接形成一個網絡,我們稱之為一個神經網絡。人工智慧之神經進化與神經網絡如果你最近一直在跟蹤人工智慧或是機器學習領域,你可能已經聽說了深度學習。我訂閱號的前幾篇文章裡也做過講解,計算機已經在諸如圖像識別和控制無人駕駛汽車(甚至是控制電子遊戲的角色)這樣的任務上接近或是有時超越人類的表現。那麼在深度學習的背後是什麼使這一成功成為可能?——神經網絡!
  • 機器學習算法匯總:人工神經網絡、深度學習及其它
    強化學習: 在這種學習模式下,輸入數據作為對模型的反饋,不像監督模型那樣,輸入數據僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入數據直接反饋到模型,模型必須對此立刻作出調整。
  • 初探神經網絡與深度學習 —— 感知器
    比如說你要決定今天出不出去看電影, 你要考慮3個因素, 一個是女朋友在不在, 一個是電影好不好看, 另一個是今天有沒有工作, 這三個因素每個人的權重都不同,有的人看重女朋友, 有的人看重工作,所以權重就不等, 最後每個人根據自己的權重做出0或1,去或不去, to be or not to be的決策。那麼你怎麼做呢?