【GiantPandaCV導語】知識蒸餾將教師網絡中的知識遷移到學生網絡,而NAS中天然的存在大量的網絡,使用KD有助於提升超網整體性能。兩者結合出現了許多工作,本文收集了部分代表性工作,並進行總結。
1. 引言
知識蒸餾可以看做教師網絡通過提供soft label的方式將知識傳遞到學生網絡中,可以被視為一種更高級的label smooth方法。soft label與hard label相比具有以下優點:
- 模型泛化能力更強
- 降低過擬合的風險
- 一定程度上降低了學生網絡學習的難度。
- 對噪聲更加魯棒。
- 具有更多的信息量。
那么知識蒸餾在網絡結構搜索中有什么作用呢?總結如下:
- 降低子網絡收斂難度 ,在權重共享的NAS中,子網之間參數耦合,如果單純用hard label訓練,會導致互相沖突,導致子網絡訓練不足的情況。
- 如果引入額外的教師網絡,可以帶來更多的監督信息,加快網絡的收斂速度 。
- 一些工作通過知識蒸餾引入評判子網的指標 ,比如與教師網絡越接近的,認為其性能越好。
知識蒸餾在很多工作中作為訓練技巧來使用,比如OFA中使用漸進收縮訓練策略,使用最大的網絡指導小網絡的學習,采用inplace distillation進行蒸餾。BigNAS中則使用三明治法則,讓最大的網絡指導剩下網絡的蒸餾。
2. KD+NAS
2.1 Cream of the Crop Distilling Prioritized Paths For One-Shot Neural Architecture Search
目標:解決教師網絡和學生網絡的匹配問題(知識蒸餾中教師網絡和學生網絡匹配的情況下效果更好)。
在知識蒸餾中,選擇不同的教師網絡、不同的學生網絡的情況下,最終學生網絡的性能千差萬別。如果學生網絡和教師網絡的容量相差過多,會導致學生難以學習的情況。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是學生邏輯層輸出。
- 避零性: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\)。
其中\(\alpha\)不為0或者1,這樣如下圖所示:
藍色線對應example 2表示,當\(\alpha\)為負值,如果q過估計了p中的不確定性,\(D_\alpha(p||q)\)的值會變大。
紫色線對應example 1表示,當$\alpha
\(為正數,如果q低估了p中的不確定性,\)D_\alpha(p||q)$的值會變大
同時考慮兩種情況,取兩者中最大值作為散度:
2.4 TGSA: Teacher guided architecture search
目標:提出了衡量學生網絡和教師網絡內部激活相似度 衡量指標,通過表征匹配可以用來加速網絡結構搜索。
這部分其實是屬於知識蒸餾分類中基於關系的知識,構建的知識由不同樣本之間的互作用構成。
具體的指標構成如上圖所示,是一個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約束。
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)
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這個工作)