0
雷鋒網(wǎng)編者按:近年來,神經(jīng)網(wǎng)絡(luò)借鑒了生物學(xué)策略的相關(guān)理論知識,實現(xiàn)了大飛躍,完成了之前無法完成的任務(wù)。神經(jīng)進化作為人工智能的一個研究領(lǐng)域,試圖通過進化算法而非隨機梯度下降來設(shè)計和構(gòu)建神經(jīng)網(wǎng)絡(luò)。本文作者Paul Pauls,作為機器學(xué)習(xí)GDE和開源愛好者,他在Medium上寫了一篇關(guān)于神經(jīng)進化算法的文章,詳細介紹了神經(jīng)進化算法的基本概念,以及這幾年重要的研究成果。雷鋒網(wǎng) AI科技評論作了有刪改的編譯,請欣賞~
神經(jīng)進化是人工智能和機器學(xué)習(xí)領(lǐng)域的一個分支,它能夠改進了人工神經(jīng)網(wǎng)絡(luò),并且試圖通過進化算法去尋找最優(yōu)神經(jīng)網(wǎng)絡(luò)。具體而言,就像大自然通過突變、交叉或移除一些潛在的遺傳密碼來提高大腦的功能一樣,人工神經(jīng)網(wǎng)絡(luò)通過進化算法能夠產(chǎn)生越來越好的拓撲、權(quán)重和超參數(shù)。簡單的說就是將進化的思想使用到神經(jīng)網(wǎng)絡(luò)參數(shù)優(yōu)化的更迭中。
神經(jīng)進化是一種機器學(xué)習(xí)技術(shù),它使用基于群體的優(yōu)化方法能夠不斷提高群體中每個神經(jīng)網(wǎng)絡(luò)的質(zhì)量,從而根據(jù)其要解決的問題生成越來越好的神經(jīng)網(wǎng)絡(luò)。該種群中的每個個體的存儲方式并不是復(fù)雜的神經(jīng)網(wǎng)絡(luò),而是存儲為基因組?;蚪M是一種簡化的遺傳表示,可以映射到神經(jīng)網(wǎng)絡(luò)。
神經(jīng)進化首先需要初始化一組上述基因組,然后將它們應(yīng)用于具體的問題環(huán)境中,然后根據(jù)神經(jīng)網(wǎng)絡(luò)解決應(yīng)用問題的能力為每個基因組分配一個適應(yīng)度分數(shù)。例如,該適應(yīng)度分數(shù)可以是圖像識別任務(wù)中實現(xiàn)的準確度以及機械臂移動實際軌跡和預(yù)期軌跡的差別等等。
一旦初始種群被創(chuàng)建,優(yōu)化循環(huán)開始,種群不斷地變異、重組、評估和經(jīng)歷自然選擇。
如果這些步驟是迭代進行的,而整個種群一次只進行一個步驟,那么所進行的就是代際神經(jīng)進化(generational neuroevolution)。
競爭性共同進化(competitive coevolution)則意味著神經(jīng)進化算法的設(shè)計允許異步性,并且優(yōu)化循環(huán)在每個基因組的基礎(chǔ)上執(zhí)行。在代際神經(jīng)進化和競爭性共同進化兩種情況下,其優(yōu)化過程都是不間斷的進行引入創(chuàng)新、評估創(chuàng)新、然后對創(chuàng)新進行分類,直到產(chǎn)生一個最佳實用性神經(jīng)網(wǎng)絡(luò)。
圖1:典型的代際神經(jīng)進化過程圖解
神經(jīng)進化過程也是一個“黑盒”,雖然它自己的進化過程需要參數(shù),但卻不為生成的神經(jīng)網(wǎng)絡(luò)規(guī)定任何特定超參數(shù),而是根據(jù)實際問題的解決設(shè)計神經(jīng)網(wǎng)絡(luò)。這便為神經(jīng)網(wǎng)絡(luò)的權(quán)重、超參數(shù)等的選擇提供了范圍,此范圍也稱為搜索空間。雖然“黑盒”性提供了非常廣泛的搜索空間,但是為了提高遍歷搜索空間的速度,明智的做法是限制搜索空間的粒度。通過限制基因組編碼的復(fù)雜性,將基因組映射到搜索空間的粒度的能力也被稱為遺傳編碼。綜上所述,為了使搜索空間具有適當(dāng)?shù)牧6龋鶕?jù)實際問題的要求,設(shè)計遺傳編碼和相應(yīng)的神經(jīng)進化算法非常重要。因此,我們我們先來回顧一下遺傳編碼的概念。
有效的神經(jīng)網(wǎng)絡(luò)是能夠進行有效的變異和重組人工神經(jīng)網(wǎng)絡(luò)的前提。擁有強大表示能力的神經(jīng)網(wǎng)絡(luò)不用分析高度復(fù)雜的數(shù)據(jù)結(jié)構(gòu)就能夠快速的處理緊湊的遺傳密碼(compact genetic codes)。
換句話說,神經(jīng)進化算法只在遺傳編碼上操作,而不是在機器學(xué)習(xí)框架中復(fù)雜的數(shù)據(jù)結(jié)構(gòu)上操作。當(dāng)然,基因編碼允許這兩種表示之間存在映射關(guān)系?;蚪M的這些有效的遺傳表示被稱為基因型(genotypes),而相應(yīng)映射的神經(jīng)網(wǎng)絡(luò)被稱為顯型(phenotypes)。這兩個術(shù)語是從遺傳進化學(xué)科中化用的。畢竟神經(jīng)進化也稱的上是遺傳進化。另外注意,這里將所有顯型都限制為神經(jīng)網(wǎng)絡(luò)。
圖2:直接遺傳編碼
基因編碼一般可分為兩個子類:直接編碼和間接編碼。雖然還有第三類發(fā)展性編碼,但這種編碼我們先忽略不計,畢竟這兩年也沒啥進展。直接編碼表示神經(jīng)網(wǎng)絡(luò)的各個方面,它們在遺傳表示中顯式編碼(如上圖2所示)。直接編碼直接在基因型中編碼每個連接及其相應(yīng)的權(quán)重,但通過排除神經(jīng)網(wǎng)絡(luò)中的偏差和激活函數(shù)的可能性來限制搜索空間。
這種直接編碼可以表示任意的前饋和遞歸拓撲,也能夠產(chǎn)生最優(yōu)的拓撲。但“拓撲”太靈活的話,粒度的搜索空間就會變得非常龐大。因此需要設(shè)計良好的神經(jīng)進化算法才能快速遍歷該搜索空間。
圖3:間接遺傳編碼
間接編碼的功能是規(guī)定那些無法直接“翻譯”成人工神經(jīng)網(wǎng)絡(luò)的自定義編碼。也就是說為了將基因型映射到神經(jīng)網(wǎng)絡(luò),需要一個由間接編碼規(guī)定單獨的“翻譯”能力。如果間接編碼設(shè)計得當(dāng),那么即使神經(jīng)網(wǎng)絡(luò)非常復(fù)雜,也可以通過搜索空間實現(xiàn)有意義且快速的遍歷。
雖然可以從直接編碼快速創(chuàng)建人工神經(jīng)網(wǎng)絡(luò),但是缺少間接編碼的翻譯能力卻會減慢處理速度,并且可能導(dǎo)致“粗粒度”。所以在決定使用哪種編碼之前,必須考慮兩種編碼的優(yōu)缺點。
但是兩種遺傳編碼都證明了遺傳編碼如何確定搜索空間的大小,例如。例如通過控制激活函數(shù)或某些層類型確定搜索空間。
有種遍歷搜索空間的方法被稱為繁殖的過程(the process of reproduction),這種方法與神經(jīng)進化所使用的遺傳編碼密切相關(guān)。通常通過突變或重組基因組來創(chuàng)造新的基因組,新的基因組也繼承了舊的基因組。突變讓后代基因組探索人工神經(jīng)網(wǎng)絡(luò)新的結(jié)構(gòu)、權(quán)重和超參數(shù)。重組基因組本質(zhì)上是將兩個基因組及其獨特的特征合并。
突變與遺傳編碼緊密相關(guān),因為神經(jīng)網(wǎng)絡(luò)的參數(shù)只能突變到以遺傳編碼表示的程度。因此,為神經(jīng)進化算法定義突變有以下三種情況。1、遺傳編碼的哪一部分會發(fā)生突變?是拓撲、權(quán)重、還是超參數(shù)?2、基因組中選定的部分會發(fā)生多大程度的突變?例如,神經(jīng)進化算法可以對低適應(yīng)度基因組使用較大的突變,對高性能基因組使用微小的突變。3、突變采用何種方式。是定向?還是隨機?
圖4:競合公約問題圖解
重組并不會突變基因組,擁有創(chuàng)新可以通過將兩個親本基因組( parent-genomes)及其獨特特征結(jié)合,并產(chǎn)生“新穎”的后代基因組。如果重組方法設(shè)計得當(dāng),并且可以無損地融合兩個親本基因組的有益特征,將其在整個群體中傳播,提高所有現(xiàn)有基因組的適用性。
設(shè)計重組方法的核心在于“無損融合”,即不丟失任何基因特性的情況下融合。
例如在神經(jīng)進化算法之前,NEAT算法(通過增強拓撲的進化神經(jīng)網(wǎng)絡(luò)(Evolving Neural Networks through Augmenting Topologies))利用直接編碼在進行修改網(wǎng)絡(luò)的拓撲結(jié)構(gòu),包括新增節(jié)點和刪除節(jié)點等操作時會產(chǎn)生交叉損失。
如上圖競合公約問題( competing-conventions problem)所示。隨后,NEAT算法提出了一種“歷史標記”的方法,該方法為每個突變提供了唯一的標識符,從而最終實現(xiàn)了基因組的無損重組,使其為神經(jīng)進化算法提供了基準。
在總體優(yōu)化循環(huán)中,基于問題評估基因組似乎是最簡單的。但這一步驟確是非常重要,不僅是能夠指出潛在的改進和進步。評估方法從根本上說是一個過程,即將基因組映射到由其遺傳編碼規(guī)定的神經(jīng)網(wǎng)絡(luò),并將其應(yīng)用于問題環(huán)境,然后根據(jù)神經(jīng)網(wǎng)絡(luò)的表現(xiàn)計算適應(yīng)值。一些神經(jīng)進化算法的評估過程還包括將神經(jīng)網(wǎng)絡(luò)加權(quán)訓(xùn)練的附加步驟,雖然這種方法非常明智,但只有當(dāng)實際環(huán)境能夠清晰反映基本信息才有用。在整個評估過程中,盡管確定適應(yīng)度的方式完全取決于實際問題的具體情況,但可以進行合理的修改。例如在圖像識別中可以設(shè)置為準確度,游戲中可以設(shè)置為點數(shù)。在確定適應(yīng)度計算時,新穎性搜索也是一個需要考慮的重要概念。因為這個概念涉及用新的方法獎勵基因組,能夠使其具有更高的適應(yīng)值。例如,在實際的電子游戲環(huán)境中的智能體如果進入一個未知的區(qū)域會獲得體能提升,盡管總體上獲得的分數(shù)較少,但也能促進了基因庫的創(chuàng)新,從而促進更有希望的進化。
(雷鋒網(wǎng))雖然繁殖方法定義了探索搜索空間的方式。但選擇哪些基因組將作為后代的“父母”?哪些基因組將從基因庫中移除?也是神經(jīng)進化計劃的另一個非常重要的方面。
神經(jīng)進化算法的種類決定了哪種基因能夠作為父母基因。在一代人的神經(jīng)進化中,選擇適合下一代的基因組通常歸結(jié)為選擇當(dāng)前表現(xiàn)最好的基因組。選擇作為父母的基因組不一定與移除的基因組互補。基因組的選擇要足夠有希望保證創(chuàng)新突變的潛力,盡管在下一代可能會被移除。
神經(jīng)進化算法的一個標準配置是選擇利用前20%的基因組作為父母,另外在下一次迭代中會去除90%表現(xiàn)最差的基因組。另外根據(jù)代際神經(jīng)進化算法是否采用物種形成,親本選擇或基因組移除選擇也會發(fā)生了顯著變化。物種形成是一種代際神經(jīng)進化的工具,它根據(jù)顯型中的拓撲相似性等明顯特征將群體中的個體聚集在一起;或根據(jù)或在實際環(huán)境中達到的特定狀態(tài)等隱藏特征聚集。
聚集后產(chǎn)生的集群被認為是物種,物種的產(chǎn)生取決于物種的選擇方法,具體來說得繁殖過程可以通過將更多的后代分配給平均適應(yīng)度更高的物種來控制進化,從而產(chǎn)生“優(yōu)秀”的后代。然而,設(shè)計得當(dāng)?shù)奈锓N形成也保護了基因庫中的創(chuàng)新,因為這些物種會將一些后代基因分配下去。因此,設(shè)計一種適當(dāng)?shù)摹⒒騿栴}解決的物種形成方法將種群中的個體分離到不同的物種中,可以成為神經(jīng)進化方法中非常強大的工具,這種方法既可以引導(dǎo)進化進入有益的方向,也可以保護創(chuàng)新的新路徑。
另一方面,在競爭的共同進化方案(competitive coevolution scheme)中,基因組通常是隨機配對,其中更合適或更有創(chuàng)新的一個被選為“父母”,另一個從基因庫中移除。由于競爭共同進化的異步性,不可能同時對種群中的所有基因組進行分類和分類,從而極大地限制了用物種形成等方法指導(dǎo)進化的可能性。
(雷鋒網(wǎng))神經(jīng)進化是優(yōu)化人工神經(jīng)網(wǎng)絡(luò)的一種方法,是一個多功能的工具,不僅限于機器學(xué)習(xí)方面,還可以應(yīng)用于改進計算機視覺、自然語言處理。創(chuàng)建神經(jīng)進化算法時需要考慮很多東西,但最重要的是最有效地利用實際問題環(huán)境。
該算法不同于我們之前討論的傳統(tǒng)神經(jīng)網(wǎng)絡(luò),它不僅會訓(xùn)練和修改網(wǎng)絡(luò)的權(quán)值,同時會修改網(wǎng)絡(luò)的拓撲結(jié)構(gòu),包括新增節(jié)點和刪除節(jié)點等操作。
NEAT通過突變和無損重組直接編碼,同時通過物種形成保護創(chuàng)新。由于其簡單性和同步能力,NEAT可以被認為是典型的神經(jīng)進化算法。
1、A Hypercube-Based Encoding for Evolving Large-Scale Neural Networks, 2009
HyperNEAT是NEAT的變體,和NEAT具有相同的原理,但其所使用的是間接編碼,稱為組合模式產(chǎn)生網(wǎng)絡(luò)(CPPNs)。CPPNs允許神經(jīng)網(wǎng)絡(luò)對稱和重復(fù),這不僅更準確地反映了人類大腦的組成,而且還通過將其映射到網(wǎng)絡(luò)拓撲,從而利用應(yīng)用問題中固有的幾何和結(jié)構(gòu)。
2、Evolving the Placement and Density of Neurons in the HyperNEAT Substrate, 2010
ES-HyperNEAT進一步擴展了HyperNEAT,在信息量較高的區(qū)域允許在CPPN編碼模式中使用更密集的基底(denser substrate)。雖然HyperNEAT將隱藏神經(jīng)元放置在何處的決定權(quán)留給了用戶(user),但ES-HyperNEAT采用四叉樹狀結(jié)構(gòu)來確定那些隱藏節(jié)點的密度和位置。ES-HyperNEAT在主要基準測試中能夠勝過傳統(tǒng)的HyperNEAT。
3、A Neuroevolution Approach to General Atari Game Playing, 2014
通過使用CNE、CMA-ES、NEAT和HyperNEAT算法來解決61個Atari2600視頻游戲,展示了神經(jīng)進化在通用視頻游戲(GVGP)中的潛力。雖然神經(jīng)進化在這項研究之前已經(jīng)在GVGPI中進行了部署。結(jié)果與預(yù)期不謀而合,因為它們表明直接編碼方法在緊湊的狀態(tài)表示效果最好,間接編碼允許縮放到更高維的表示。
4、DLNE: A hybridization of deep learning and neuroevolution for visual control, 2017
通過將神經(jīng)進化與CNN的圖像識別相結(jié)合,介紹了神經(jīng)進化最有趣的用途之一。通過CNN進行圖像識別,將識別出的圖像轉(zhuǎn)換為特征表示,然后將識別出的圖像送入神經(jīng)進化優(yōu)化的神經(jīng)網(wǎng)絡(luò)。雖然這種方法的有效性在很大程度上取決于特征表示的質(zhì)量,但即使采用簡單的方法也能有一個很有前途的研究方向。
5、Large-Scale Evolution of Image Classifiers, 2017
這篇論文對進化算法進行了改動,使其可以用于NAS(神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索),算法對于計算資源要求較高。算法一開始從沒有任何卷積的最簡單的模型開始進化,與之前看過的論文不同的是,神經(jīng)網(wǎng)絡(luò)架構(gòu)沒有固定的網(wǎng)絡(luò)深度(意味著搜索空間進一步擴大,算法運行時間長)。
利用這篇的自動化方法得出的深度網(wǎng)絡(luò)結(jié)構(gòu),已經(jīng)能在CIFAR-10上取得可以跟人工設(shè)計的網(wǎng)絡(luò)相媲美的結(jié)果。
6、Evolving Deep Neural Networks, 2018
CoDeepNEAT算法是近年來興起NEAT算法的擴展。這篇論文首先定義了DeepNEAT,即以緊湊形式表示整個深層神經(jīng)網(wǎng)絡(luò)的層間接編碼(包括超參數(shù)等)。然后,這些DeepNEAT基因組被看做模塊,并與由多個重復(fù)模塊組成的藍圖共同進化,這些藍圖是由數(shù)個節(jié)點組成的,節(jié)點指向表征了神經(jīng)網(wǎng)絡(luò)的特定模塊。另外該網(wǎng)絡(luò)在CIFAR-10數(shù)據(jù)集上進行了基準測試,產(chǎn)生了比較好的結(jié)果。
7、Regularized Evolution for Image Classifier Architecture Search, 2018
這篇論文中所用進化算法的一大重要特征是采用了一種正則化形式:相比于移除最差的神經(jīng)網(wǎng)絡(luò),他們移除了最老的神經(jīng)網(wǎng)絡(luò)(無論它有多好)。這提升了對任務(wù)優(yōu)化時所發(fā)生變化的穩(wěn)健性,并最終更可能得到更加準確的網(wǎng)絡(luò)。其中一個原因可能是由于不允許權(quán)重繼承,所有的網(wǎng)絡(luò)必須都從頭開始訓(xùn)練。因此,這種形式的正則化選擇重新訓(xùn)練后依舊較好的網(wǎng)絡(luò)。也就是說,得到更加準確的模型只是偶然的,訓(xùn)練過程中存在的噪聲意味著即使完全相同的架構(gòu)準確率也可能不同。
8、Designing Neural Networks Through Neuroevolution, 2019
這篇文章是對現(xiàn)代神經(jīng)進化的一個極好的回顧,由該領(lǐng)域四位最著名的研究人員合作成文。它即使它沒有引入新的概念,但總結(jié)和說明了神經(jīng)進化的每一個重要方面。
9、Evolutionary Neural AutoML for Deep Learning, 2019
該論文介紹了功能強大的進化AutoML框架LEAF,該框架利用了進化算法CoDeepNEAT。雖然在論文中作者沒有透露他們的源代碼,但他們對其設(shè)計進行了廣泛的討論,并提供了有價值的意見。
另外,在醫(yī)學(xué)圖像分類和自然語言分析任務(wù)中對進化AutoML框架的性能進行了評估,其結(jié)果超過了現(xiàn)有的最先進的AutoML系統(tǒng)和手工神經(jīng)網(wǎng)絡(luò)解決方案。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。