EAS:基於網路轉換的神經網路結構搜尋 | AAAI 2018

曉飛的演算法工程筆記發表於2020-06-11

論文提出經濟實惠且高效的神經網路結構搜尋演算法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.

相關文章