知識蒸餾綜述:網絡結構搜索應用

【GiantPandaCV導語】知識蒸餾將教師網絡中的知識遷移到學生網絡,而NAS中天然的存在大量的網絡,使用KD有助於提升超網整體性能。兩者結合出現了許多工作,本文收集了部分代表性工作,並進行總結。

1. 引言

知識蒸餾可以看做教師網絡通過提供soft label的方式將知識傳遞到學生網絡中,可以被視爲一種更高級的label smooth方法。soft label與hard label相比具有以下優點:

  • 模型泛化能力更強
  • 降低過擬合的風險
  • 一定程度上降低了學生網絡學習的難度。
  • 對噪聲更加魯棒。
  • 具有更多的信息量。

那麼知識蒸餾在網絡結構搜索中有什麼作用呢?總結如下:

  • 降低子網絡收斂難度 ,在權重共享的NAS中,子網之間參數耦合,如果單純用hard label訓練,會導致互相沖突,導致子網絡訓練不足的情況。
  • 如果引入額外的教師網絡,可以帶來更多的監督信息,加快網絡的收斂速度
  • 一些工作通過知識蒸餾引入評判子網的指標 ,比如與教師網絡越接近的,認爲其性能越好。

知識蒸餾在很多工作中作爲訓練技巧來使用,比如OFA中使用漸進收縮訓練策略,使用最大的網絡指導小網絡的學習,採用inplace distillation進行蒸餾。BigNAS中則使用三明治法則,讓最大的網絡指導剩下網絡的蒸餾。

2. KD+NAS

目標:解決教師網絡和學生網絡的匹配問題(知識蒸餾中教師網絡和學生網絡匹配的情況下效果更好)。

在知識蒸餾中,選擇不同的教師網絡、不同的學生網絡的情況下,最終學生網絡的性能千差萬別。如果學生網絡和教師網絡的容量相差過多,會導致學生難以學習的情況。Cream這篇文章就是爲了解決兩者匹配問題。

普通的SPOS方法如左圖所示,通過採樣單路徑子網絡進行訓練。右圖則是結合了知識蒸餾的方法,Cream提出了兩個模塊:

  • Prioritized Path Board : 這個模塊中維護了一組優先路徑,所謂優先路徑就是性能表現較好的子網絡,Cream將優先路徑Board中的網絡作爲教師網絡,引導知識的蒸餾。
  • Meta Network: 這個模塊是一個匹配模塊,每當採樣一個子網絡,就會從優先路徑Board中計算一個最匹配的網絡作爲教師網絡,完成蒸餾的過程。

Cream中心思想是,子網絡可以在整個訓練過程中協作學習並相互教導,目的是提高單個模型的收斂性。

消融實驗如下:

2.2 DNA : Block-wisely Supervised Neural Architecture Search with Knowledge Distillation

目標:通過教師引導各個block特徵層的學習,根據loss大小評判各子網的性能。

這是一篇將NAS和KD融合的非常深的一個工作,被CVPR20接收。之前寫過一篇文章進行講解,這裏簡單回顧一下。

DNA是兩階段的one-shot NAS方法,因此其引入蒸餾也是爲了取代普通的acc指標,提出了使用子網絡與教師網絡接近程度作爲衡量子網性能的指標。

在訓練的過程中,進行了分塊蒸餾,學生網絡某一層的輸入來自教師網絡上一層的輸出,並強制學生網絡這一層的輸出與教師網絡輸出一致(使用MSELoss)。在搜索過程結束後,通過計算各子網絡與教師網絡的接近程度來衡量子網絡。

2.3 AlphaNet :Improved Training of Supernet with Alpha-Divergence

目標:通過改進KL divergence防止學生over estimate或者under estimate教師網絡。

上圖展示了OFA,BigNAS等搜索算法中常用到的蒸餾方法,子網使用的是KL divergence進行衡量,文中分析了KL 散度存在的侷限性:即避零性以及零強制性。如下公式所示,p是教師的邏輯層輸出,q是學生邏輯層輸出。

\[\mathrm{KL}(p \| q)=\mathbb{E}_{p}[\log (p / q)] \]

  • 避零性:zero avoiding 當p>0的時候,爲了保證KL爲正,q必須大於0。如果p=0的時候,q大於0也不會被懲罰。會導致下圖所示的過估計問題over estimate。

  • 零強制性:zero forcing 當p=0的時候,會強制q=0,因爲如果q>0會導致KL divergence趨於無窮。會導致下圖所示的低估問題under-estimate

AlphaNet提出了一個新的散度衡量損失函數,防止出現過估計或者低估的問題。如下所示,引入了\(\alpha\)

\[D_{\alpha}(p \| q)=\frac{1}{\alpha(\alpha-1)} \sum_{i=1}^{m} q_{i}\left[\left(\frac{p_{i}}{q_{i}}\right)^{\alpha}-1\right] \]

其中\(\alpha\)不爲0或者1,這樣如下圖所示:

藍色線對應example 2表示,當\(\alpha\)爲負值,如果q過估計了p中的不確定性,\(D_\alpha(p||q)\)的值會變大。

紫色線對應example 1表示,當$\alpha
\(爲正數,如果q低估了p中的不確定性,\)D_\alpha(p||q)$的值會變大

同時考慮兩種情況,取兩者中最大值作爲散度:

\[D_{\alpha_{+}, \alpha_{-}}(p \| q)=\max \{\underbrace{D_{\alpha_{-}}(p \| q)}_{\begin{array}{c} \text { penalizing } \\ \text { over-estimation } \end{array}}, \underbrace{D_{\alpha_{+}}(p \| q)}_{\begin{array}{c} \text { penalizing } \\ \text { under-estimation } \end{array}}\} \]

目標:提出了衡量學生網絡和教師網絡內部激活相似度 衡量指標,通過表徵匹配可以用來加速網絡結構搜索。

這部分其實是屬於知識蒸餾分類中基於關係的知識,構建的知識由不同樣本之間的互作用構成。

具體的指標構成如上圖所示,是一個bsxbs大小的矩陣,這個在文中被稱爲Representational Dissmilarity Matrix,其功能是構建了激活層內部的表徵,可以通過評估RDM的相似度通過計算上三角矩陣的關係係數,比如皮爾遜係數。

該文章實際上也是構建了一個指標P+TG來衡量子網的性能,挑選出最優子網絡。

  • TG代表Teacher Guidance 計算的對象時所有RDM的均值。
  • P代表Performance 也就是傳統的準確率

如上圖所示,RDM的計算是通過衡量教師網絡的feature以及學生網絡的feature的相似度,並選擇選取其中最高的RDM相似度。通過構建了一組指標,隨着epoch的進行,排序一致性很快就可以提高。

2.5 Search for Better Students to Learn Distilled Knowledge

目標:固定教師網絡,搜索最合適的學生網絡。

對於相同的教師網絡來說,不同的架構的學生網絡,即便具有相同的flops或者參數,其泛化能力也有所區別。在這個工作中選擇固定教師網絡,通過網絡搜索的方法找到最優的學生網絡,使用L1 Norm優化基礎上,選擇出與教師網絡KL散度差距最小的學生網絡。

  • 學生網絡結構搜索 :類似模型剪枝的方法,優化scale factor,然後剪枝的時候將該值較小的通道刪除。
  • 損失函數構建 :下面與KD的區別是增加了對scale factor g的L1 Norm約束。

\[\min _{\mathbf{w}, \mathbf{g}} \frac{1}{N} \sum_{i=1}^{N} K L\left(f_{s}\left(\mathbf{x}_{\mathbf{i}}, \mathbf{w}, \mathbf{g}\right), f_{t}\left(\mathbf{x}_{\mathbf{i}}\right)\right)+\lambda_{1}\|\mathbf{w}\|_{2}+\lambda_{2} \sum_{j=1}^{M} \alpha_{j}\left\|g_{j}\right\|_{1} \]

2.6 Search to Distill: Pearls are Everywhere but not the Eyes

目標:在給定教師網絡情況下,搜索最合適的學生網絡。

神經網絡中的知識不僅蘊含於參數,還受到網絡結構影響。KD普遍方法是將教師網絡知識提煉到學生網絡中,本文提出了一種架構感知的知識蒸餾方法Architecture-Aware KD (AKD),能夠找到最合適提煉給特定教師模型的學生網絡。

Motivation: 先做了一組實驗,發現不同的教師網絡會傾向於不同的學生網絡,因此在NAS中,使用不同的教師網絡會導致模型傾向於選擇不同的網絡結構。

AKD做法是選擇使用強化學習的方法指導搜索過程, 使用的是ENAS那種通過RNN採樣的方法。

2.7 Towards Oracle Knowledge Distillation with NAS

目標:從集成的教師網絡中學習,並使用NAS調整學生網絡模型的容量。NAS+KD+集成。

這篇文章之前也進行了講解,是網絡結構搜索,知識蒸餾,模型集成的大雜燴。

  • 網絡結構搜索 可以說佔非常小的比重,因爲搜索空間幾乎屬於微調,並不是從頭搜索,而是大部分的結構都固定下來,只調整某些層的參數,用於控制模型容量。
  • 知識蒸餾+模型集成 :提出了動態選擇待集成的模型,選擇對應的教師網絡進行蒸餾。

詳見: https://blog.csdn.net/DD_PP_JJ/article/details/121268840

2.8 AdaNAS: Improving neural architecture search image classifiers via ensemble learning

這篇文章比較有意思,使用上一步中得到的多個子網絡進行集成,可以得到教師網絡,然後使用知識蒸餾的方法來引導新的子網絡的學習。關注重點在於:

  • 使用集成的模型性能是否會提升
  • 通過先前集成的模型指導模型蒸餾能否生效
  • 能否得到一種自動化的集成模型的方式。

AdaNAS受Born Again Network(BAN)啓發, 提出Adaptive Knowledge Distillation(AKD)的方法以輔助子網絡的訓練。

集成模型選擇

從左到右代表四次迭代,每個迭代中從搜索空間中選擇三個模型。綠色線框出的模型代表每個迭代中最優的模型,AdaNAS選擇將每個迭代中最優subnet作爲集成的對象。

最終集成的時候還添加了額外的weight參數w1-w4:

最終輸出邏輯層如下所示:(這個w權重也會被訓練,此時各個集成網絡的權重是固定的,只優化w)

\[f_{i}=\sum_{k=1}^{i} w_{k} \cdot h_{k} \]

2.9 Differentiable Feature Aggregation Search for

Knowledge Distillation

目標:解決知識蒸餾的效率和有效性,通過使用特徵聚合來引導教師網絡與學生網絡的學習,網絡結構搜索則是體現在特徵聚合的過程,使用了類似darts的方法進行自適應調整放縮係數。ECCV20

文章總結了幾種蒸餾範式:

最後一種是本文提出的方法,普通的特徵蒸餾都是每個block的最後feature map進行互相蒸餾,本文認爲可以讓教師網絡的整個block都引導學生網絡。

具體如何將教師網絡整個block中所有feature map進行聚合,本文使用的是darts的方法進行動態聚合信息。(a) 圖展示的是對group i進行的可微分搜索過程。(b)表示從教師到學生的路徑loss構建,使用的是CE loss。(c)表示從學生到教師網絡的路徑loss構建,使用的是L2 Loss。其中connector實際上是一個1x1 卷積層。

(ps: connector讓人想到VID這個工作)

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