當前位置:
首頁 > 最新 > 深度進化網路結構表示:利用進化計算自動設計人工神經網路

深度進化網路結構表示:利用進化計算自動設計人工神經網路

AiTechYun

編輯:Yining

深度進化網路結構表示(DENSER)是一種利用進化計算自動設計人工神經網路(ANNs)的新方法。該演算法不僅搜索最優的網路拓撲(network topology),而且還對超參數(如學習或數據擴充參數)進行調優。自動設計是通過一個具有兩個不同層次的表示來實現的,外部層對網路的一般結構進行編碼,內部層編碼與每個層相關聯的參數。被認可的層和超參數值範圍是由人類可讀的上下文無關文法(Context-Free Grammar)定義的。這項工作的主要貢獻是:

深度進化網路結構表示是一個基於進化原理的通用框架,它自動搜索有不同層類型和/或層目標的大型深度網路的適當結構;

一個自動生成的、沒有任何先驗知識的卷積神經網路(CNN)對於CIFAR-10數據集的分類是有效的,平均準確率為94.27%;

這是人工神經網路的進化過程變得更加密集的一種證明。在具體的情況下,CIFAR-10數據集的平均準確率為78.75%,這個數據是通過一個進化成CIFAR-10數據集的網路拓撲獲得的。據我們所知,這是通過自動設計卷積神經網路的方法報告了CIFAR-10數據集的最佳結果。

受過最好訓練的模型可以在右邊鏈接中找到:https://git.io/vntyv


為了促進結構和參數的進化,我們提出了深度進化網路結構表示。它聚集了遺傳演算法(GA)和動態結構語法進化(DSGE)的基本思想。

表示(representation)

每個解決方案通過一組有序的前饋層和各自的參數對人工神經網路進行編碼;其他任何超參數都可以被編碼到每個個體的編碼中。候選解決方案的表示是在兩個不同的級別上進行的:

GA級別:對網路的宏觀結構進行編碼,並負責表示層的序列,這些層隨後作為語法起始符號的指示符。它需要對網路允許的結構進行定義,即:層的有效序列。

DSGE級別:編碼與一個層相關的參數。參數及其允許的值或範圍被編碼到必須由用戶定義的語法中。

交叉(crossover)

根據不同的基因水平,提出了兩種交叉運算元(crossover operator)。在當前的工作環境中,一個模塊不支持一組可以多次複製的層,而是屬於同一GA結構索引的一組層。

考慮到所有的個體都有相同的模塊(可能有不同的層數),第一個交叉運算元是一個單點交叉,它在同一個模塊內改變了兩個個體之間的層。

第二個交叉運算元是一個統一的交叉,它改變了兩個個體之間的整個模塊。

突變(Mutation)

我們開發了一組突變運算元,專門用於促進人工神經網路的進化。在GA級別上,突變的目標是操縱網路的結構:

添加層:一個新的層是根據被放置層的模塊的起始符可能性而生成的

複製層:一個層被隨機選擇,並複製到模塊的另一個有效位置。副本由引用(reference)製成,即:如果一個參數在層中被改變,所有的副本都會被修改

移除圖層:從指定的模塊中選擇和刪除一個圖層

上述突變運算元僅在網路的一般結構上起作用;為了改變這些層的參數,以下的DSGE突變被使用:

語法突變:一個擴展可能性被另一個取代

整數突變:生成一個新的整數值(在允許範圍內)

浮動突變:在給定的float value中應用高斯攝動


為了測試這種方法,我們對卷積神經網路的生成進行了實驗,以進行CIFAR-10數據集基準的分類。CIFAR-10數據集是由60000個實例組成的,每一個實例都是32×32 RGB的彩色圖像。深度進化網路結構表示的解決方案被映射到keras模型,這樣它們的性能就可以被度量。任務的目標是對目標識別任務的準確性進行最大化。

為了分析進化的拓撲結構的普遍化和可伸縮性能力,我們採用了最好的卷積神經網路拓撲,並在CIFAR-10基準的分類上對它們進行了測試。

卷積神經網路在CIFAR-10數據集上的進化

我們在卷積神經網路的生成上進行了10次進化運行,以進行CIFAR-10數據集的分類。對於生成的網路,我們分析它們的適應性(例如:在分類任務上的準確性),以及隱藏層的數量。

圖1:適應度(fitness)的進化(上圖)和隱藏層的數量(下圖)

對結果的簡要分析表明,進化正在發生,而解決方案趨向於在第80代(generation)周圍聚集。兩種不同的、相互矛盾的行為是可以觀察到的。從進化的開始直到大約第60代的性能增加,層數會不斷地減少;從第60代到最後一代,在性能提升之後,最好的網路的隱藏層數量也在增加。這一分析揭示了一個明顯的矛盾,即在第一代隨機生成的解決方案中有大量的層,這些層的參數是隨機設置的。

圖2:深度進化網路結構表示找到的最好的網路拓撲結構

圖2展示了在進化過程中發現的最適當的網路(在驗證精度方面)。進化的網路最令人費解的特徵是在拓撲學結束時使用的密集層的重要性和數量。據我們所知,大量密集層的連續使用是前所未有的,並且人類永遠不會想到這樣的拓撲學(使進化的結果變得顯著)。

一旦進化過程完成,在每次運行中發現的最好的網路被重新訓練了5次。首先,我們用在進化過程中使用的相同的學習速率來訓練網路(lr=0.01),但在400個epoch(而不是10個)。這個設置讓我們在測試集上獲得了88.41%的分類精度。為了進一步加強網路的準確性,我們為每個實例的測試集產生100張增強圖像,並且預測是在100張增強圖像上提取的平均信任值的最大值。在進行了這種驗證方法之後,最好的進化網路的測試集的平均準確率提高到89.93%。

為了調查是否有可能提高最好的網路的性能,我們用同樣的CGP-CNN策略來重新訓練它們:一個從0.01開始變化的學習速率;在第5個epoch,它增加到0.1;到了第250個epoch,它降到了1.01;最後,在第37個epoch,它變成了0.001。在以往的訓練政策中,最適當的網路的平均準確率提高到93.38%。如果在測試集上執行數據擴充,那麼平均準確率將達到94.13%。平均誤差為5.87%。

圖3:CIFAR-10數據集產生的結果

圖3顯示了與其他方法報告的最佳結果的比較。結果表明深度進化網路結構表示是報告中精度最高的方法之一。在我們的方法中,可訓練參數的數量要高得多,因為我們允許在進化的卷積神經網路中放置完全連通的層。此外,在進化過程中,沒有先驗知識用於對搜索空間(search space)的偏見。

對CIFAR-100數據集一般化

為了測試進化網路的一般化和可伸縮性,我們採用了由CIFAR-100數據集生成的最好的網路,並將其應用到CIFAR-100數據集的分類中。為了讓網路在CIFAR-100數據集上工作,我們只改變了softmax層的100個輸出神經元,而不是10個。

每個網路的訓練都是隨機的;初始條件是不同的,並且它們由於數據擴充過程使用不同的數據集實例進行訓練。因此,為了進一步提高結果,我們研究了格雷厄姆(Graham)提出的方法,來測試分數的最大池化的性能是否提高了我們網路的性能。簡而言之,不是一個單一的網路,而是一個整體被使用,在這個網路中,每一個組成部分的網路都是獨立的網路訓練的結果。採用這種方法,同一網路的一個整體被訓練了5次,測試精度為77.51%,10次訓練的測試精度為77.89%,12次訓練的整體測試精度為78.14%。這些結果的表現超過了那些為卷積神經網路的進化而採用的數據擴充方法的文獻。

此外,代替相同的網路結構形成的集合體,我們還測試了構建一個由深度進化網路結構表示的兩個網路拓撲的整體性能,在使用這種方法後,精度提高到了78.75%。

圖4:CIFAR-100數據集產生的結果

圖4顯示了與其他方法相比,在CIFAR-100數據集通過深度進化網路結構表示獲得的結果。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 ATYUN訂閱號 的精彩文章:

TAG:ATYUN訂閱號 |