【神經網絡結構搜索】DNA: Block-wisely Supervised NAS with KD

【GiantPandaCV導語】知識蒸餾結合NAS的一篇工作,提出了DNA,讓教師網絡來指導超網的學習。這個工作將知識蒸餾非常深入的融合在一起,有很強的創新性,已被CVPR20接收。

1. 背景介紹

知識蒸餾通常作爲One-Shot NAS中的一個訓練技巧,但是他起到非常大的作用。

簡便起見,知識蒸餾在這裏被分爲四類:

  • 基於softmax輸出層的知識蒸餾

  • 基於中間層的知識蒸餾

  • 基於相關性知識的知識蒸餾

  • 基於GAN的知識蒸餾

第一個基於softmax輸出層的知識蒸餾是最傳統的,Hinton提出來的蒸餾方法可以視爲soft label蒸餾。

\[q_{k}=\frac{e^{z_{k} / T}}{\sum_{i=1}^{n} e^{z_{i} / T}} \]

\[L_{k d}=L_{c e}\left(\mathrm{y}_{\text {true }}, \hat{p}\right)+\lambda T^{2} L_{\mathrm{ce}}(\hat{p}, \hat{q}) \]

第二個基於中間層的知識蒸餾一般使用教師網絡特徵圖作爲指導層,指導對應學生網絡的特徵圖。

  • OFA中蒸餾操作

OFA中使用了Progressive Shrinking的策略,先訓練好最大的網絡,結合inplace distillation策略進行訓練。所謂inplace distillation指沒有使用hard label,僅使用教師網絡提供的soft label進行訓練。

  • BigNAS中蒸餾操作

爲了簡便性,和OFA中蒸餾操作一致,但是使用了三明治法則進行訓練。

  • Cream of the Crop中的蒸餾操作

在知識蒸餾中,如果教師網絡和學生網絡相差比較大,那學生可能很難學習到合適的知識。基於這個Motivation,Cream of the Crop探索了爲學生找到合適教師的方法:

  • 提出了優先路徑board用於保存優先路徑,其中維護了一組最優路徑。

  • Meta Network則用於根據學生網絡從優先路徑board中匹配合適的教師網絡。

本文介紹的DNA實際上屬於“基於中間層的知識蒸餾”,使用教師網絡的中間層輸出對學生網絡的中間輸出進行監督,細粒度引導學生網絡的學習過程。本文貢獻如下:

  • 提出將NAS搜索空間模塊化,搜索對象是不同的block。確保所有潛在候選架構能夠被平等地訓練,降低兩階段單次神經網絡結構搜索中排序失序問題(本文稱其爲表徵遷移問題)

  • 提出網絡模型的知識不僅僅體現在網絡參數中,還體現於網絡結構中。

  • 性能 超過了SCARLETNAS和ProxylessNAS,取得了SOTA。

2. DNA

2.1 蒸餾訓練過程

一般情況下,基於中間層的知識蒸餾中,學生模型的每個block輸入是來自自身上一個block的輸出。但是DNA受RNN順序訓練帶來的低效性的啓發,提出並行化訓練block。

Student SuperNet設計思路:

block-wise 的設計引用了一篇1985年的老論文,認爲視覺皮層對應幾個部分。所以DNA將SuperNet劃分爲相互獨立的幾個block。

蒸餾方法設計思路:

如上圖所示,Student Supernet有幾個block組成,值得注意的是,每個block的輸入是教師網絡的上一層輸出,這樣就可以獨立訓練Supernet每個block。

每個block的輸出將教師網絡中對應block的輸出作爲監督,這部分loss使用的是MSE,或者也可以使用KLConsineSimilarity的方法計算相似度。

Student Supernet和teacher的網絡配置,其中教師網絡使用的是efficientnet-b7, 學生網絡基於MobileNetv2的SPOS-Like搜索空間。

2.2 搜索過程

在使用蒸餾方法將Student SuperNet訓練完成後,需要完成對搜索子網絡,找到相對性能最好的模型。

在DNA中,不使用傳統的acc作爲評價模型間相對性能的指標,而是通過計算學生網絡模型輸出和教師網絡模型輸出特徵圖間差距值作爲評價標準。

但是由於不同層特徵圖大小不同,單純使用MSE會導致不公平,所以引入了歸一化參數,使用relative L1 loss:

\[\mathcal{L}_{\mathrm{val}}\left(\mathcal{W}_{i}, \mathcal{A}_{i} ; \mathcal{Y}_{i-1}, \mathcal{Y}_{i}\right)=\frac{\left\|\mathcal{Y}_{i}-\hat{\mathcal{Y}}_{i}(\mathcal{X})\right\|_{1}}{K \cdot \sigma\left(\mathcal{Y}_{i}\right)} \]

具體採用的方法是深度優先搜索DFS:

在有約束情況下的搜索採用以下遍歷搜索算法:

值得注意的是,使用DFS的過程中,樹的每個中間結點的特徵圖會保存下來,從而可以加快評估過程。

3. 實驗部分

與SOTA的NAS模型比較(在224x224限制下已經效果不錯了):

Accuracy vs Params 和 Accuracy vs FLOPS:

評估排序一致性:

可以看出,使用這種評估標準得到的性能排序一致性更加可靠,除了MnasNet其他幾種算法的排序一致性都很差。

4. 結論

本文是將NAS和知識蒸餾結合非常深入的工作,基於經典的SPOS架構,並使用block級別蒸餾方式,搜索得到的網絡可以超過教師網絡。同時本文拋棄了經典SPOS中將準確率作爲評估指標的做法,通過衡量子圖特徵與教師網絡特徵的接近程度作爲評判指標,有效提升了模型的排序一致性。

5. 參考文獻

https://dblp.uni-trier.de/db/conf/cvpr/cvpr2020.html#LiPYWLLC20

https://www.cnblogs.com/chenbong/p/14476748.html

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