神經網絡架構搜索

架構搜索

神經網絡架構搜索

根據一個已有的效果比較好的神經網絡結構,找到更好的結構,例如將其中的某一層進行替換,增添一層或者減少一層,改變網絡的拓撲結構。

為什麼要基於已有的網絡?

因為在已有的神經網絡上更改拓撲結構可以利用已經訓練好的權重,在巨人的肩膀上進步,為了更快的得到更好的結果。

什麼是Path-Level?

鏈式結構如上圖,我們稱之為Layer-Level

Path-Level如下圖:

神經網絡架構搜索

Layer-Level的架構搜索

給定一個層的候選集(例如:卷積層3*3,卷積層1*1,池化層,identity),從候選集中選擇一個層進行替換。

identity指的是x->x,什麼都不做。

如何選擇?

1. 暴力搜索:遍歷每一種可能的選擇通過訓練後測試結果反饋來選擇結果最好的網絡結構。

2. 隨機搜索:隨機選擇一種層通過訓練後測試結果反饋來選擇結果最好的網絡結構。

3. 強化學習:在暴力搜索和隨機搜索的過程中,我們可能會發現當前層選擇卷積層3*3,無論網絡後面怎樣選擇,效果都比選擇卷積層1*1和池化層效果好,那麼我們此時就可以把這一層固定下來只使用卷積層3*3,但如果我們一直這麼貪心選擇的話,可能會錯過一些即使當前不選擇卷積層3*3也可能結果很好的機會,所以我們對此做一個折中,我們以x的概率選擇隨機搜索,以1-x的概率選擇貪心搜索,這樣我們搜索的效率就比暴力搜索和隨機搜索好了很多。

4. 強化學習 + RNN:

神經網絡架構搜索

在前面三種搜索策略中,我們都是隻考慮了當前的狀態,那我們可以試圖結合前幾層或後幾層一起對當前層做出決策,我們使用雙向RNN來解決這個問題,每一個節點的輸入是前一層的輸出和前一層的激活函數返回值,

輸出是當前層應該選擇哪一層,但利用雙向RNN解決架構搜索問題的過程中,我們發現沒有label用來訓練RNN,所以強化學習其實起到的是一個採樣的作用,採樣之後,RNN根據採樣的每一層的選擇和最後的結果一起來決定每一層選擇不同選擇的概率。

Path-Level的架構搜索

為什麼要做Path-Level的架構搜索?

因為已經有一些Multi-Brach Neural Networks取得了很好效果,我們需要提供一種方法可以改變舊網絡的拓撲結構,使得我們有機會生成表徵能力更強的類似Inception models, ResNets這樣優秀的網絡或更好的網絡。

定義如何拓寬網絡 Net2WiderNet

神經網絡架構搜索

我們定義兩種操作,Replication-Add和Split-Concat:

1. Replication-Add是指將x複製成2份,分別操作後把結果除以2再相加,保證輸入和輸出和之前的維度相同。

2. Split-Concat是指將x按照維度切成兩份,分別操作後再把結果相接,保證輸入和輸出和之前的維度相同。

定義如何加深網絡 Net2DeeperNet

利用Net2DeeperNet在當前層後面加一個identity層(實現細節可以看論文中的相關鏈接Net2Net)

定義Path-Level的架構搜索的數據結構

神經網絡架構搜索

如圖,a過程是Net2Wider的過程,b過程是Net2Deep後再Net2Wider的過程,c過程是對其中的層替換的過程,d過程是把c過程定義成了我們的樹結構,我們定義我們的樹結構中,節點:分配和合並策略,邊:層

由此,我們可以把整個過程看做是一個在樹上搜索的過程。

定義Path-Level的搜索策略

神經網絡架構搜索

s表示分配和合並策略

e表示連個兩個節點的邊(i.e conv層)

h, c表示從邊學到給節點的信息

h’, c’表示從節點學到給邊的信息

類似於Layer-Level的思想,但我們利用lstm來決定用哪一層,用Tree-lstm來決定我們該使用什麼分配合並策略,最終完成Layer-Level的搜索,我們不難發現Tree的結構是節點和邊交替出現的,所以Tree-lstm的輸入是前一個lstm的輸出,Tree-lstm的輸出是後一個lstm的輸入。

神經網絡架構搜索

在搜索過程當中一共有三種情況:

1. 當前節點沒有葉子節點時,我們考慮是否要把它利用Net2Deeper加深有一個葉子節點。

2. 當前節點只有一個葉子節點,我們考慮是否要把它擴寬並考慮擴多寬。

3. 考慮當前邊應該是什麼邊(層)。

神經網絡架構搜索

於是,利用如上操作,我們理論上可以生成任何網絡結構。

例子

下面這個結構是論文的作者在實驗cifar10時找到的一個結構

神經網絡架構搜索

總結

  1. 這篇論文的實驗效果顯示和主流的架構搜索算法相比,效果相當但GPU機時大大減少。#真想來了#
  2. 計算力更小可能是因為Net2Net可以基於已經效果很好的網絡去做, search的算法比較好可以更快的搜索到更好的結構。
  3. 效果相當可能是因為path-level可以生成multi-branch的網絡結構表徵能力更強所以效果也可以很好。
  4. 總的來說,這篇論文綜合現有的比較主流的技術,提出了最終比較好的解決方案。


分享到:


相關文章: