EAS:基于網絡轉換的神經網絡結構搜索 | AAAI 2018

論文提出經濟實惠且高效的神經網絡結構搜索算法EAS,使用RL agent作為meta-controller,學習通過網絡變換進行結構空間探索。從指定的網絡開始,通過function-preserving transformation不斷重用其權重,EAS能夠重用之前學習到的知識進行高效地探索新的結構,僅需要10 GPU days即可
?
來源:曉飛的算法工程筆記 公眾號

論文: Efficient Architecture Search by Network Transformation

Introduction


? 為了加速神經網絡搜索過程,論文提出EAS(Efficient Architecture Search),meta-controller通過網絡轉化(network transformation)操作進行結構空間探索,操作包含拓寬層,插入層,增加skip-connections等。為了繼續使用學習到的權重,基于function-preserving transformation來初始化新的不同參數的網絡,再進一步訓練來提高性能,能夠顯著地加速訓練過程。對于meta-controller,則結合了最近的強化學習方法

Architecture Search by Net Transformation


? 整體算法邏輯如圖1,meta-controller學習如何對當前網絡中進行網絡轉換,為了學習多種網絡轉換操作以及不增加meta-contreoller復雜性,使用encoder network來學習當前網絡的低維表達,然后傳到actor netowrk來生成一個確定的模型轉換動作。為了處理不定長的網絡結構輸入以及考慮整體網絡結構,使用bidrectional recurrent network以及input embedding layer

Actor Networks

? 給予輸入結構的低維表達,每個actor network給予特定的網絡轉換動作,共有兩種actor network,分別是Net2Wider actor和Net2Depper

  • Net2Wider Actor

? Net2Wider在保持網絡功能下替換網絡的某一層為更寬的層,例如對于全連接層是增加unit數,對于卷積層是增加卷積核數。對于卷積層的卷積核$K_l$,shape為$(k_wl,k_hl,f_il,f_ol)$,分別代表卷積核寬高以及輸入和輸出的維度數,將當前層替換成更寬的層即$\hat {f}_ol>f_ol$

? 首先介紹隨機映射函數$G_l$,可以獲得新卷積核$\hat{K}_l[k_wl,k_hl,f_il,f_jl]$,第一個$f_ol$直接從$K_l$中獲得,剩余的$\hat{f}_ol-f_o^l$維根據$G_l$從$K_l$中隨機選擇一維,因此,更寬的新層的輸出特征$\hat{O}_l=O_l(G_l(j))$

? 為了保持原有的功能,由于輸入多了復制的部分,下一層的卷積核$K_{l+1}$需要修改,新卷積核$\hat{K}_{l+1}$的shap維$(k_w{l+1},k_h{l+1},\hat{f}_i{l+1}=\hat{f}_ol,f_o^{l+1})$,公式3的意思大概是,權重要除以前一層對應維度復制的次數,以保證$l+1$層輸出跟之前一樣

? 為了方便,論文使用的Net2Wider actor同時決定處理的層,對于encoder netowrk輸出的每一層對應的hidden state使用shared sigmoid分類器,另外將卷積的核數或全連接的unit數進行分區,直接將決定的層的對應參數升至下一個區間,例如$32\to 64$

  • Net2Deeper Actor

? Net2DeeperNet操作向網絡中插入新的層,然后將其初始化成跟插入identity mapping一樣,保持其原來的功能。對于新的卷積層,將其卷積核設為identity卷積核,對于全連接層,則將權重矩陣設為identiy矩陣,因此,新層必須與前一層有一樣的核數或unit。另外,想要保持原來網絡的性能,對于激活函數$\phi$,必須滿足$\phi(I\phi(v))=\phi(v)$,ReLU能滿足,而Sigmoid和thnh不能,但仍然可以重用帶sigmoid或tanh激活的網絡的權重,畢竟這樣總比隨機初始化要好。另外,當使用BN時,要設置其scale和bias為undo normalization,而不是初始化為1和0

? Net2Deeper actor的結構如圖3,為一個循環神經網絡,hidden state初始化為encoder network的最后一個hidden state。將CNN結構根據pooling的位置分成多個block,首先確定插入的block,然后再確定插入層的下標,對于新的卷積網絡,agent還需要確定卷積核大小和步長,而對于全連接層則不需要。在卷積網絡中,全連接層需要在網絡的頂層,如果插入位置在全局池化或全連接后面,新層則指定為全連接層

Function-preserving Transformation for DenseNet

? 原始的Net2Net設定網絡是layer-to-layer的,沒有并行層,但目前的網絡大都將單層的輸入應用到多個后續的多個層中,直接應用Net2Net會出現問題,因此論文對其進行了改進。對于DenseNet,$l{th}$層會將所有前面的層concatenate成輸入$[O_0,O_1,...,O_{l-1}]$,標記$l{th}$層的卷積核為$K_l$,shape為$(k_wl,k_hl,f_il,f_ol)$
? 假設需要拓寬層并保持其功能,首先根據Net2WiderNet操作按公式1和公式2生成新層$\hat{K}_l$,這樣新輸出為$\hat{O}_l=O_l(G_l(j))$,由于$l^{th}$的輸出會傳遞到多層,$\hat{O}_l$的復制會傳遞到后面的所有層,所以要修改所有后續的層

? 對于$m{th}>l$層,輸入變為$[O_0,...,O_{l-1},\hat{O}_l,O_{l+1},...,O_{m-1}]$,將隨機映射函數改為公式4,$f_o{0:l}=\sum_{v=0}{l-1}f_ov$為$l^{th}$層的所有輸入數量,公式4的第一部分為$[O_0,...,O_{l-1}]$,第二部分為$\hat{O}l$,第三部分為$[O{l+1},...,O_{m-1}]$

? $\hat{G}m$的簡單示意如上,前面的為新層的index,后面為對應的舊的維度index,然后$m^{th}$層的新權重直接使用替換成$\hat{G}m$的公式3獲得
? 假設要在DenseNet的$l{th}$層插入新層,新層輸入為$O_{new}$,輸出為$[O_0,O_1,...,O_l]$。因此,對于$m{th}>l$層,插入后的輸入為$[O_0,...,O
{l},O
{new},O_{l+1},...,O_{m-1}]$,為了按照類似Net2WiderNet那樣保持性能,$O_{new}$應該為$[O_0,O_1,...,O_l]$中的一個復制

? 新層的每個卷積核可以表示為tensor$\hat{F}$,shape為$(k_w{new},k_h{new},f_i{new}=f_o{0:l+1})$,第三項為輸入channel數。為了讓$\hat{F}$的輸入為$[O_0,O_1,...,O_l]$的$n^{th}$項,按照類似公式5的方式進行設置(假設卷積寬高為3),其它卷積核設為0,當新層的的輸出設定好后。建立一個特定的隨機映射(這里是按照層建立映射,前面是按照映射建立層),然后按照公式4和公式3來修改后續的層的卷積核

Experiments and Results


? EAS使用5 GPU進行搜索,有兩種設定,第一種為普通卷積網絡空間,僅包含卷積、池化和全連接,第二種為DenseNet結構空間

Training Details

? meta-controller為單層雙向LSTM,50個hidden units,embedding size為16,使用ADAM進行訓練。每輪通過網絡轉換采樣10個模型,由于重用了特征,每個模型只訓練20輪(原來為50輪),初始學習率調低為0.02,使用SGD訓練,對準確率$acc$進行線性變化來放大高準確率的收益,例如$tanh(acc_v\times \pi/2)$,另外,每個卷積和全連接后面接ReLU和BN

Explore Plain CNN Architecture Space

  • Start with Small Network

? 初始網絡如表1,卷積核大小為${1,3,5 {}}$,卷積核數量為${16,32,64,96,128,192,256,320,384,448,512 }$,全卷積的unit數為${64,128,256,384,512,640,768,896,1024 }$

? 訓練分為兩階段,第一階段每輪將起始網絡進行5次Net2Deeper和4次Net2Wider,采樣夠300個網絡后,選取表現最好的網絡訓練100輪作為下階段的輸入。第二階段也是進行5次Net2Deeper和4次Net2Wider,采樣150個網絡后停止,取最好模型進行300輪迭代。結果如表2的depth=16,整體需要10 GPU days,共450個網絡

  • Further Explore Larger Architecture Space

? 將上一個實驗的最好模型作為這次實驗的起點,結果如表2的depth=20,另外與SOTA進行了對比,結果如表3

Explore DenseNet Architecture Space

? 將DenseNet-BC(L=40,k=40)作為起點,結果如表4

CONCLUSION


? 論文提出經濟實惠且高效的神經網絡結構搜索算法EAS,使用RL agent作為meta-controller,學習通過網絡變換進行結構空間探索。從指定的網絡開始,通過function-preserving transformation不斷重用其權重,EAS能夠重用之前學習到的知識進行高效地探索新的結構,僅需要10 GPU days即可

?
?
?

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

work-life balance.

posted @ 2020-06-11 14:32  曉飛的算法工程筆記  閱讀(88)  評論(0編輯  收藏
最新chease0ldman老人