煉丹術的終結二——可遷移結構學習

本文首發於我的知乎專欄深度學習與計算機視覺, 歡迎關注,最新內容搶先看。

上一文中介紹瞭如何用控制器(LSTM)搜索CNN網絡和LSTM網絡結構,從而生成出不遜於人類手工設計的網絡結構。方法雖然已經work了,但是由於需要生成的參數很多,導致最後的網絡結構的搜索空間非常的大,以至於非常耗時,在一個小的數據集上仍然需要800個GPU並行運算數天乃至一週之多。爲了解決這個問題,文獻[1]中提出了一種降低搜索空間的方法,使控制器能夠更快的學到最優的網絡結構。

需要注意的是,本文所探討的要生成的神經網絡是卷積神經網絡。LSTM的網絡設計並不在討論範疇中,當然,LSTM仍然被用作控制器。

想法來源

在網絡結構手工設計的時代,AlexNet,VGG,ResNet和Inception系列紛紛被設計出來,這些網絡結構有一個共同的特點,那就是網絡結構是層次性的,每層的結構都具有一定的相似性。因而,在這個基礎上,自動學習的網絡結構也可以是基於層的,設計出一個特定的結構來作爲一層,然後將這個結構重複多遍,就得到一個完整的網絡結構。

實現細節

基於上述的想法,首先,對之前的網絡結構進行彙總分析可得,卷積神經網絡的結構分爲兩個大類,一類是將輸入的feature map等大小輸出,即Normal Cell,另一類是將輸入的feature map長寬各降低一半輸出,即Reduction Cell。

有了這兩個Cell之後,就可以得到一個完整的神經網絡。如下圖所示:

更具體的,每個Cell有更細緻的微結構。從大的層面來看,Normal Cell和Reduction Cell都接受兩個輸入hi和hi-1。從小的層面看,Normal Cell和Reduction Cell中的子結構也是類似的,兩個輸入得到一個輸出。但子結構的輸入不一定是Cell的輸入,也可能是中間狀態。

在生成Cell結構的過程中,論文巧妙的將其遞歸的分成幾步,每一步的操作都是一樣的。具體的,生成Normal Cell和Reduction Cell的過程,就是將下面的過程重複B次,先驗條件下,B=5。步驟如下:

  1. 從hi和hi-1或上一步中得到的隱含狀態中選擇一個作爲輸入一。
  2. 從從hi和hi-1或上一步中得到的隱含狀態中選擇一個作爲輸入二。(可以與第一個一樣)
  3. 從操作集合中選擇一個操作應用在輸入一上。
  4. 從操作集合中選擇一個操作應用在輸入二上。
  5. 選擇一個方法將第三步和第四步的結果合併。

其中,第三步和第四步的操作集合如下:

第五步的操作有兩個:

  • element-wise addition
  • concatenation

將上述步驟重複B次,其中每次稱之爲一個Block。每次生成的子結構如下:

每一個Block的生成如下:

在生成Cell最後的輸出的時候,將所有沒有用到的Hidden states拼接到一起,作爲輸出。

在生成最後的神經網絡的時候,需要注意:

  • 由之前的經驗,每次使用Reduction Cell時,將filter數目翻倍。
  • 由兩個參數需要自己調整,一個是Normal Cell重複的次數N,還有一個是初始第一層的filter數目。

實驗

經過學習,得到的最終的Normal Cell和Reduction Cell的結構如下:

實驗結果

在cifar10上的實驗結果如下:

在ImageNet數據集上的實驗結果如下:

參考文獻

[1]. Zoph B, Vasudevan V, Shlens J, et al. Learning transferable architectures for scalable image recognition[J]. arXiv preprint arXiv:1707.07012, 2017.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章