Genetic CNN: 經典NAS算法,遺傳算法的標準套用

論文將標準的遺傳算法應用到神經網絡結構搜索中,首先對網絡進行編碼表示,然後進行遺傳操作,整體方法十分簡潔,搜索空間設計的十分簡單,基本相當於只搜索節點間的連接方式,但是效果還是挺不錯的,十分值得學習  


論文: Genetic CNN

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

  • 論文地址:https://arxiv.org/abs/1703.01513

Introduction


  為了進行神經網絡架構搜索,論文將網絡限制為有限的深度,每層為預設的操作,但仍然存在很多候選網絡,為了有效地在巨大的搜索空間中進行搜索,論文提出遺傳算法進行加速。首先構造初始種群,然後對種群內的個體進行遺傳操作,即選擇、交叉和變異,通過識別的準確率來判斷其適應性,最終獲得強大的種群

Our Approach


Binary Network Representation

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

  目前SOTA的網絡大都由多個階段構成,每個階段內的層具有相同的維度,而相鄰的階段則用池化進行連接。借鑑這種思想,定義網絡有個階段組成,-th階段()包含個節點,標記為,,節點按順序排列,僅允許低序號節點連接到高序號節點,對節點的所有輸入進行element-wise sum,每個節點代表卷積操作,卷積後都接BN+ReLU,網絡不加入全連接層   每個階段使用位來表示內部連接,第一位表示連接,第二位和第三位則表示連接和,以此類推,最後位則表示與其它節點的連接。對於,如果,則和有邊,將的輸出作為element-wise sum的一部分。編碼如圖1所示,但是Stage 2的編碼好像有點問題,按照圖片應該是0-10-000-0011

  • Technical Details

  每個階段默認有兩個節點,分別為輸入節點和輸出節點,輸入節點使用卷積將前一個階段的特徵進一步提取,然後傳遞給沒有輸入的節點中,輸出節點則element-wise sum所有沒被使用的節點的輸出,然後進行一次卷積再接池化層,這裡有兩種特殊的情況:

  • 如果節點被隔離了,沒有非默認輸入和輸出,則直接忽略,如圖1 B2節點
  • 如果當前階段沒有連接,全部為0,則只進行一次卷積(原本至少輸入輸出節點都會進行一次)
  • Examples and Limitations
Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

  這樣的編碼形式可以編碼目前的主流分類結構,但也有很多侷限性:

  • 目前的連接方式只有卷積和池化,不能使用其它比較tricky的模塊,例如Maxout
  • 每個階段的卷積核是固定的,阻礙了multi-scale特徵的融合

Genetic Operations

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

  遺傳算法過程如圖1所示,共進行代遺傳,每代包含3個操作,選擇、變異和交叉,適應值通過訓練後的模型在驗證集上獲得

  • Initialization

  初始化一個隨機模型集合,每個模型是長度為的二進制串,串上每位服從伯努利分佈,,然後訓練並測試每個模型的準確率,這裡的初始化策略影響不大

  • Selection

  在每一代種群生成前都會進行選擇操作,在-th代前,個體的適應性為,直接影響在選擇階段存活的概率。具體選擇使用俄羅斯輪盤選擇法(Russian roulette),每個個體選取的概率與成比例,為上一代的最低適應性。選擇後的保持種群總數不變,所以一個個體可能會被選擇多次

  • Mutation and Crossover

  變異的操作包含對二進制串每個位進行概率為的反轉,而交叉的操作則同時改變兩個個體,以概率對個體間的stage進行交換。個體變異的概率為,每組個體交叉的概率為,具體的操作看算法1,雖然這種方法很簡單,但是十分有效

  • Evaluation

  在上述操作後,對每個個體進行訓練以及測試來獲得適應值,如果該個體之前已經測試過了,則直接再測一遍然後求平均,這樣能移除訓練中的不確定性

Experiments


MNIST Experiments

  實驗配置,,,,種群初始,共一次,,,,,一共只產生個網絡,耗時2 GPU-day

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

CIFAR10 Experiments

  實驗配置,,,,種群初始,共一次,,,,,一共只產生個網絡,耗時17 GPU-day

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

CIFAR and SVHN Experiments

  將CIFAR-10中學習到的網絡直接在別的數據集上進行測試

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

ILSVRC2012 Experiments

  將圖5中的兩個網絡在ILSVRC2012上進行訓練,先用VFFNet的stem進行下采樣,再過圖5的網絡,最後接全連接進行分類

Genetic CNN: 經典NAS算法,遺傳算法的標準套用 | ICCV 2017

CONCLUSION


  論文將標準的遺傳算法應用到神經網絡結構搜索中,首先對網絡進行編碼表示,然後進行遺傳操作,整體方法十分簡潔,搜索空間設計的十分簡單,基本相當於只搜索節點間的連接方式,但是效果還是挺不錯的,十分值得學習

     

如果本文對你有幫助,麻煩點個贊或在看唄~ 更多內容請關注 微信公眾號【曉飛的算法工程筆記】


分享到:


相關文章: