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

雷鋒網 發佈 2020-02-03T20:16:17+00:00

9、EvolutionaryNeural AutoML for Deep Learning, 2019該論文介紹了功能強大的進化AutoML框架LEAF,該框架利用了進化算法CoDeepNEAT。

雷鋒網編者按:近年來,神經網絡借鑑了生物學策略的相關理論知識,實現了大飛躍,完成了之前無法完成的任務。神經進化作為人工智慧的一個研究領域,試圖通過進化算法而非隨機梯度下降來設計和構建神經網絡。本文作者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系統和手工神經網絡解決方案。

關鍵字: