BlockQNN:NASNet同期,商湯提出block-wise版的MetaQNN | CVPR 2018

作為 NASNet 的同期論文,BlockQNN 同樣地將目光從整體網絡轉換到了 block-wise,整體思路大概是 MetaQNN 的 block 版,增加了一些細節地小修改。配合 Early Stop Strategy,計算資源十分少,但性能較同期的 NASNet 差點

來源:曉飛的算法工程筆記 公眾號

論文: Practical Block-wise Neural Network Architecture Generation

Introduction


  為了讓網絡搜索更高效,論文提出 block-wise 網絡生成方法 BlockQNN,整體的思想跟同期的 NasNet 十分類似,不同點在於這篇論文是基於 Q-learning 進行學習的,可以認為是 MetaQNN 的 block 版。BlockQNN 以 block 為單位進行搜索,每個 block 包含多層,然後再將 block 按預設的框架堆疊成完整的網絡,這樣不僅能提高搜索的效率,還可以提高搜索結果的泛化能力。
  BlockQNN 主要有以下有點:

  • Effective,自動生成的網絡的性能與人工設計的網絡相當。
  • Efficient,首個考慮 block-wise 的自動網絡生成方法,配合 Early Stop Strategy 僅需要 32GPU3 天。
  • Transferable,CIFAR 上搜索到的架構僅添加些許修改就能遷移到 ImageNet 上。

Methodology


Convolutional Neural Network Blocks

  現代卷積網絡大都可以看成是多個相似 block 的堆疊,只是每個 block 的超參數不同。因此,針對 block 的精心設計不僅可以達到更高的準確率,還可以有更好的泛化能力。為此,論文主要針對 block 結構的自動生成。

  CNN 網絡的前向推理可以看成一個有向無環圖,為了統一,使用網絡結構編碼(Network Structure Code,NSC)進行表示,如圖 2。每個 block 由一組 5-D NSC 向量表示,前 3 個值分別表示層序號,操作類型,核大小,後兩個值表示輸入對應的層序號,如層包含單個輸入,則第二個輸入序號為 0。如果層的輸出沒有作為其它層的輸入,則 conate 成最終的輸出。這裡的卷積操作指的是預激活卷積單元(a Pre-activation Convolutional Cell, PCC),包含 ReLU、卷積以及 BN,這樣的設定能減少搜索空間並保持較好的性能。

  基於以上搜索到的 block,將普通的網絡轉換成對應的 block 版本,CIFAR-10 和 ImageNet 數據機的堆疊網絡如圖 3 所示,block 內沒有下採樣模塊,下採樣直接使用池化層,每個 block 會重複 N 遍來滿足不同的要求。如果特徵圖大小下降了一半,則權重增加兩倍。

Designing Network Blocks With Q-Learning

  論文使用 Q-learning 加速搜索,Q-learning 是強化學習的其中一種,目的是選擇合適的 action 來最大化累計獎勵,包含 agent,states 和 actions。state s\in S代表當前層結構 NSC,action a\in A為後續層結構 NSC 的選擇,由於 NSC 合集是有限的,state 和 action 空間也是有限且離散的,保證了搜索空間相對較小。

  狀態轉移過程(s_t, a(s_t)) \to (s_{t+1})如圖 4a 所示,t代表當前層,而圖 4b 則是圖 4a 的狀態轉移構建的實際網絡。agent 的主要任務是選擇 block 的 NSC 結構,block 的結構可以認為是 action 的選擇軌跡\tau_{a_{1:T}},比如一連串 NSCs。論文將層選擇過程視為馬爾科夫決策,假定在某個 block 中表現好的層在別的 block 中也可以表現得不錯。

  為了找到最好的結構,agent 需要最大化所有可能路徑的回報期望R_{\tau}\mathbb{R}為累計回報。

  通常使用公式 2 的 Bellman』s Equation 進行公式 1 的優化,給予狀態s_t \in S以及後續的操作a \in A(s_t),定義最大的總期望回報為Q^*(s_t, a),即 state-action 對的 Q-value。

  由於期望很難直接求得,所以一般採取迭代式 Bellman』s Equation,以經驗假設的方式解決公式 2。\alpha為學習率,決定新舊狀態的佔比,\gamma為折扣率,決定後續回報的權重,r_t為當前狀態s_t得到的中間回報,s_T代表最終狀態,r_T為對應網絡收斂後的驗證準確率。

  由於r_t不能顯示地計算,這裡採用 reward shaping 的方法加速訓練,之前的方法比如 MetaQNN 都直接將中間獎勵設為零,這會導致 RL 耗時,因為在剛開始的階段,s_T的 Q-value 會明顯高於其它狀態(終止層 Q-value 無折扣率,直接是準確率?),導致網絡偏向於構建很少層的小 block(傾向於選擇終止層)。

  這裡對 reward shaping 進行了實驗,可以看到使用後能顯著提高收斂速度。
  完整的學習過程如圖 4c,agent 首先採用一系列結構編碼來構建 block 並構建完整的網絡,然後訓練生成的網絡,將驗證準確率作為 reward 來更新 Q-value,最後,agent 選擇另外的結構編碼來獲得更好 block 結構。

Early Stop Strategy

  儘管 block-wise 的生成方式能增加搜索速度,但仍然十分耗時,這裡採用 early stop strategy 來進一步加速。early stop strategy 可能帶來較低的準確率,如圖 6 所示,early stop strategy 的準確率明顯低於最終的準確率,意味着 early stop strategy 沒有完全體現 block 的效果。同時,論文注意到 FLOPs 以及 block 的 density 與最終準確率為負相關的

  基於上面的發現,論文重新定義了 reward 函數,\mu\rho為平衡因子,新的 reward 函數能更好地關聯最終準確率。基於 early stop strategy 和較小的搜索空間,僅需要 32 卡搜索 3 天。

Framework and Training Details


Distributed Asynchronous Framework

  論文使用分佈式異步框架進行搜索,如圖 7 所示,包含三部分:

  • master node: 採樣 batch block 結構。
  • controller node: 使用 block 構建完整網絡結構,分配給 compute node。
  • compute node: 訓練並返回網絡的驗證準確率。

Training Details

  • Epsilon-greedy Strategy,有\epsilon概率進行隨機 action 選取,1- \epsilon概率選擇最優 action,\epsilon隨訓練逐步下降,有助於 agent 平滑地從探索模式轉換為榨取模式。
  • Experience Replay,與 MetaQNN 一樣,保存結構和對應準確率,在一定區間內直接採樣存儲的結構進行 agent 訓練。

Results


Block Searching Analysis

  這裡展示了 Epsilon-greedy Strategy 的效果,在開始榨取模式後,準確率極速提升。

  這裡驗證 PCC 的作用,可以看到,PCC 的效果十分明顯。

Results on CIFAR

Transfer to ImageNet

CONCLUSION


  作為 NASNet 的同期論文,BlockQNN 同樣地將目光從整體網絡轉換到了 block-wise,整體思路大概是 MetaQNN 的 block 版,增加了一些細節地小修改。配合 Early Stop Strategy,計算資源十分少,但性能較同期的 NASNet 差點。



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

work-life balance.