進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

 2017-10-07 23:11:00.0

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

雷鋒網 AI 科技評論按:進化算法和生成式對抗性網絡GANs類似,提出時大家都覺得是很好的想法,可以幫人類極大地拓展行爲和想象空間,然而找到好的、可控的實現方法卻沒那麼簡單。GANs方面現在已經有了許多的成果,但是進化算法仍然停留在較爲初期的狀態,無法生成大規模、複雜的網絡,需要的計算資源也是在計算集羣的級別上。

不過,進化算法的研究也是一步步在「進化」的,最近這項來自南非開普敦大學的研究就帶來了新的發現,只用單塊GPU的資源就進化出了理想的網絡結構,還刷新了三項測試的結果。雷鋒網(公衆號:雷鋒網) AI 科技評論把背景和這篇論文的成果簡單介紹如下。

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

深度神經網絡是強大但是反直覺的野獸,要有豐富的經驗、反覆試錯,才能駕馭它們得到好的表現。也有許多例子證明,神經網絡的表現會隨着深度的增加不斷提高。這些特性加上深度學習在各個領域內越來越強的影響力都表明,能自動找到最優或者接近最優的網絡結構和超參數的方法越來越重要。

不過顯然,網絡中每一層的特性、層與層的順序、激活函數、全連接層裏的單元數量、卷積層裏卷積核的數量等等建立深度學習網絡需要的參數,挑選的時候每一項都不算容易。不過現在有一個好處是,我們有豐富的計算資源,一般來說都可以嘗試許多種不同的組合,找到效果比較好的。那有沒有可能只用非常有限的計算資源,比如一塊GPU,就取得不錯的結果呢?

這篇論文就討論了一種思路,通過進化算法,發展出優秀的神經網絡。這樣的神經進化算法並不是新鮮事物,大概三十年前就有人提出過,最開始是在一項跟神經網絡中的連接權重相關的研究中。

神經進化算法的近期成果

下面介紹一下神經進化算法方面的近期相關工作,跟這篇論文中的成果相比,它們都用到了很多的計算資源。E. Real 等在「Large-scale evolution of image classifiers」(arXiv:1703.01041, 2017)中提出了一種神經進化的方法,優化用於圖像分類的神經網絡,其中用到了含有250臺計算機的並行計算集羣,而在CIFAR圖像數據集任務中取得了可觀的成果。B. Zoph 和 Q. V. Le 則在「Neural architecture search with reinforcementlearning」(arXiv:1611.01578, 2016)中用了一個綜合了強化學習的循環神經網絡,用來學習優秀的架構,他們一共在800個GPU上訓練了800個網絡。

R. Miikkulainen 等人提出了CoDeepNEAT(「Evolving deep neural networks」,arXiv:1703.00548, 2017),其中產生了一大批模型和藍圖。這些藍圖是由數個節點組成的,節點指向表徵了神經網絡的特定模塊。這樣一來,他們所提的方法就讓重複結構的進化變得可能,因爲藍圖可以重複使用進化後的模塊。T. Desell 提出了 EXACT(「Large scale evolution of convolutional neural networks usingvolunteer computing」 ,arXiv:1703.05422, 2017),這是一種用來部署在分佈式計算集羣上的神經進化算法,他們當時使用了4500臺志願參與者的計算機,進化出了12萬個網絡用來搞定MNIST數據集。他們的方法中沒有使用池化層,也僅限於使用2維的輸入和濾波器。

作者們還發現,近期有研究中只用一個GPU就可以進化出能夠準確判斷出監督學習任務中需要的是迴歸模型還是分類模型的深度神經網絡,在一系列不同的任務中獲得了96%的平均準確率。(E. Dufourq 和 B. A. Bassett, 「Automated problem identification:Regression vs classification via evolutionary deep networks」,Annual Conference of the South African Institute ofComputer Scientists and Information Technologists, ACM, 2017)這項成果是作者們的這篇論文的直接先驅,而且只要有足夠的計算資源就可以無縫銜接到這篇論文中的網絡優化過程中來。

基因算法

基因算法(genetic algorithm,GA)是一種可以用來解決優化問題的進化算法。首先初始化一羣染色體,每個染色體都表徵了優化問題的一個解決方案。然後通過一個匹配度函數評價每個染色體,以確定哪個染色體可以解決這個問題。在迭代進化模型中,基因算法會迭代很多次,可以稱作「世代」(generations),一直迭代到預定義的條件達成爲止(比如最大世代數目)。每一個染色體由很多個基因組成,這些基因就可以用基因操作器進行替換。經過基因操作器操作之後的染色體,就可以稱爲原來染色體的子代(offspring)。根據染色體羣落數目的不同,可以產生多個子代。每個世代中,子代染色體都會代替現有的染色體羣落。

這篇論文中,作者們使用了傳統的基因算法。他們還額外增加了世代數目和網絡訓練中epoch的數目,用來探索最佳的epoch的數目。所用的基因算法如下圖。

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

作者們採用基因算法的原因是,染色體的複雜程度可以根據編碼的基因數目增大或者降低。基因算法相比其它進化算法還有一些好處:它們可以流暢地處理離散(比如層類型)和連續(比如學習速率)的連續空間,進行神經進化研究的時候這就是理想的選擇。

EDEN

在這篇論文中,作者們提出了進化性深度網絡(Evolutionary DEep Networks,EDEN),這算一種結合了基因算法和深度神經網絡的的神經進化算法,用來探索神經網絡架構、相關的超參數以及epoch數目的搜索空間。在這項研究中,作者們探索了例如嵌入層的優化這類的額外特徵,並且提高了現有研究的複雜度。作者們希望通過EDEN解答兩個問題:1,能否通過進化的方法得出總體來說較爲優秀的架構和超參數用來解決許多不同的問題(並不僅限於圖像識別)?2,與之前研究中使用的大規模計算集羣相反,他們能否用單個GPU就達到這一目標?

作者們將EDEN接入了TensorFlow,這樣新的層、函數以及其它的特徵都可以輕鬆地被EDEN集合、應用,因爲這些特徵的表徵函數都可以作爲TensorFlow函數調用。而且,EDEN也不侷限於TensorFlow,其它的現代深度神經網絡框架也可以用來實現EDEN。下圖就是一個EDEN的染色體在編碼後得到的神經網絡結構的例子。

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

每個EDEN染色體包含兩個基因,編碼學習速率和一個神經網絡。圖中展現的是一個用EDEN進化出的用於情緒分析的神經網絡。EDEN創造了一個輸出維度爲120的嵌入層,其後有3個一維卷積層。EDEN進化出了濾波器的數目、每個濾波器的維度,以及每個濾波器響應的激活函數。對於最後一個層,EDEN決定使用的激活函數是sigmoid。這個染色體上的學習速率是0.0023。

下面這個動圖展示了EDEN執行的過程中染色體進化的過程,要解決的問題是一個MNIST圖像分類問題。這個過程中神經元羣落向着一個高效的解決方案收斂,最終主要由二維卷積層組成。

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

實驗結果

運用EDEN,在10個世代和13個訓練epoch後,作者們在多項測試中分別得到的網絡結果如下。

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

對於不同的任務,網絡中進化出的學習速率和參數數目也不一樣。其中EMNIST-balanced、EMNIST-digits 和 Fashion-MNIST 三項任務中取得了最好的結果,刷新了目前的最好成績。對於CIFAR-10中低很多的表現,作者們認爲原因是,由於他們這項研究關注效率更多,所以對模型的深度做出了一定限制,也就限制了CIFAR-10任務中的表現。

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

這張圖是在MNIST任務中,網絡進化到不同世代的平均匹配度變化圖。其中的豎線標出的是整個羣落中5%到95%的匹配度值。在進化剛開始時,羣落中的匹配度有很大的不同,然後隨着解決方案變好、羣落收斂,匹配度的變化幅度開始減小。圖中也標出了自進化開始之後,最初、中間、最終三個世代時的網絡結構以及相關的超參數。

作者們表示,他們實驗中只使用了一塊GTX1070 GPU,訓練時間6到24小時,就可以取得這樣的成果,他們覺得非常滿意。他們的研究也首次嘗試了把神經進化用在一維卷積網絡的創造中,用來解決情感分析、包括嵌入層的優化問題。

更多詳情請參見原論文:https://arxiv.org/pdf/1709.09161.pdf ,雷鋒網 AI 科技評論編譯

進化算法可以不再需要計算集羣,開普敦大學的新方法用一塊GPU也能刷新MNIST記錄

文章來源:雷鋒網