知識蒸餾綜述: 知識的類型
【GiantPandCV引言】簡單總結一篇綜述《Knowledge Distillation A Survey》中的內容,提取關鍵部分以及感興趣部分進行彙總。這篇是知識蒸餾綜述的第一篇,主要內容爲知識蒸餾中知識的分類,包括基於響應的知識、基於特徵的知識和基於關係的知識。
知識蒸餾簡介
定義:知識蒸餾代表將知識從大模型向小模型傳輸的過程。
作用:可以用於模型壓縮和訓練加速 手段。
綜述梳理思路:
-
知識蒸餾的種類
-
訓練機制
-
教師-學生 架構
-
蒸餾算法
-
性能比較
-
實際應用
典型的知識蒸餾KD是Hinton於15年發表的paper,明確了知識蒸餾的想法是讓學生模型通過模仿教師模型來取得具有競爭性的性能,甚至可以取得超越教師網絡的性能。
知識蒸餾的核心研究:如何將知識從大模型傳遞給小模型。
知識蒸餾系統的三個核心組件:
-
知識 knowledge
-
蒸餾算法 distillation algorithm
-
教師學生架構 teacher-student architecture
知識蒸餾相關的擴展方向:
-
teacher - student learning
-
mutual learning
-
assistant teaching
-
life long learning
-
self learning
在知識蒸餾中,我們主要關心:知識種類、蒸餾策略、教師學生架構
最原始的蒸餾方法是使用大模型的logits層作爲教師網絡的知識進行蒸餾,但知識的形式還可以是:激活、神經元、中間層特徵、教師網絡參數等。可以將其歸類爲下圖中三種類型。
基於響應的知識(Response-Based Knowledge)
基於響應的知識一般指的是神經元的響應,即教師模型的最後一層邏輯輸出。
響應知識的loss:
其核心想法是讓學生模型模仿教師網絡的輸出,這是最經典、最簡單、也最有效的處理方法
Hinton提出的KD是將teacher的logits層作爲soft label.
T是用於控制soft target重要程度的超參數。
那麼整體蒸餾loss可以寫作:
一般來講使用KL散度來衡量兩者分佈差異,通過優化以上loss可以使得學生網絡的logits輸出儘可能和教師網絡的logits輸出相似,從而達到學習的目的。
KD中除了蒸餾的一項通常還會使用交叉熵損失函數令學生網絡學習真實標籤(也稱hard label),兩項聯合起來進行訓練。
KD通常的解釋是學生網絡可以從教師網絡中學習到額外的隱形知識(dark knowledge), 而這種知識要比通過標籤學習的知識更容易理解。
KD其他角度的解釋還包括:KD可以生成類似label smooth的soft target;KD可以視爲一種正則化方法;
基於響應的知識只用到了模型最後一層logits中包含的知識,而並沒有用到中間層的監督,而中間層的監督信息在表徵學習中非常有用。
基於特徵的知識(Feature-Based Knowledge)
在深度卷積神經網絡中,網絡學習到的知識是分層的,從淺到深層對應的知識抽象程度越來越高。因此中間層的特徵也可以作爲知識的載體,供學生網絡進行學習。
基於特徵的知識可以視爲基於響應的知識的一個擴展。
FitNets是第一個引入中間層表徵的,教師網絡的中間層可以作爲學生網絡對應層的提示(Hints層)從而提升學生網絡模型的性能。其核心是期望學生能夠直接模仿教師網絡的特徵激活值。
以FitNets爲基礎擴展出幾篇工作:
-
Paying more attention to attention: 提出去學習從原先特徵圖中派生得到的注意力圖(Attention map)
-
Like what you like: Knowledge distill via neuron selectivity transfer: 認爲神經元是有選擇性的,而這種選擇性與任務是相關的,提出神經元選擇性遷移,將教師與學生這種神經元的選擇模式分佈對齊。通過引入了MMD Matching Loss進行實現。
-
Learning deep representation with probabilistic knowledge transfer: 通過匹配特徵空間的概率分佈遷移知識。
-
paraphrasing complex network: Network Compression via factor transfer:引入factor作爲一種中間層表徵的可理解形式。
-
Knowledge distillation via route constrained optimization: 致力於降低教師網絡和學生網絡的gap,提出使用路線約束的暗示學習(Hints learning)。
-
Knowledge transfer via distillation of activation boundaries formed by hidden neurons: 提出使用隱層神經元的激活邊界進行知識遷移。
-
Cross-Layer Distillation with Sematic Calibration: 爲了匹配教師網絡和學生網絡的語義信息,提出通過attention allocation自適應爲學生層分配合適的教師層, 實現跨層的知識蒸餾。
基於特徵的知識遷移可以建模爲:
其中$\Phi \(表示一個轉換函數,因爲教師網絡和學生網絡的特徵層可能出現尺寸不匹配的情況,所以需要轉換。\)\mathcal{L}_F$表示用於匹配教師網絡和學生網絡的相似度計算函數。
下圖總結了各個基於特徵的知識的匹配類型:
一般而言,在基於特徵的知識遷移中,研究的對象包括了:
-
如何需選擇知識類型?特徵圖、注意力圖、gram矩陣或其他
-
如何選擇教師層和學生層?簡單的一對一匹配,自適應通過注意力匹配。
-
如何彌補教師網絡與學生網絡之間的GAP?如果容量相差過大,可能會導致學習效果變差。
基於關係的知識(Relation-Based Knowledge)
基於關係的知識進一步擴展了基於響應的知識以及基於特徵的知識,更全面深入的探索了不同層、不同數據樣本之間的關係。
不同層之間的關係建模
-
A gift from knowledgedistillation:fast optimization, network minimization and transfer learning: (FSP) 提出了Flow of solution process(FSP)的方法,定義了兩個層之間的Gram矩陣,從而可以總結特徵圖不同對之間的關係。https://github.com/yoshitomo-matsubara/torchdistill/blob/5377be466c9460e0125892aa0d92aeb86418c752/torchdistill/losses/single.py L110行有具體實現。
-
self-supervised knowledge distillation using singular value decompostion: 提出利用特徵圖之間的相關性進行蒸餾,使用奇異值分解的方式來提取特徵圖中關鍵信息。
-
Better and faster: knowledge transfer from multiple self-supervieds learning tasks via graph distillation for video classification: 爲了使用多個教師網絡的知識,構建了使用logits層和特徵圖作爲節點的兩個graph。
-
Graph-based knowledge distillation by multi-head attention network: 提出使用Multi head graph-based 知識蒸餾方法,通過使用graph建模兩兩feature map之間的關係。
-
Heterogeneous Knowledge Distillation using information flow modeling: 提出讓學生模仿教師網絡信息流動過程來得到知識。
基於關係的知識通常可以建模爲:
\(\Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right)\)表示學生網絡內成對的特徵圖,\(\Psi_{s},\Psi_{t}\)代表相似度函數,\(\mathcal{L}_{R^{1}}\)代表教師網絡與學生網絡的關聯函數。
不同樣本之間的關係建模
傳統的知識遷移通常只關心個體知識蒸餾,但是通常知識不僅包括特徵的信息,還包括數據樣本之間的互作用關係。
-
Knowledge distillation via instance relationship graph
提出了通過個體及關係圖進行知識蒸餾的方法,遷移的知識包括個體級別特徵。 -
Relational knowledge distillation
提出關係知識蒸餾,從個體關係中進行知識遷移 -
Learning student networks via feature embedding
結合流型學習,學生網絡可以通過特徵嵌入進行學習,從而保證教師網絡中間層特徵的樣本相似度。 -
Probabilistic Knowledge Transfer for Lightweight Deep Representation Learning
使用概率分佈來建模教師網絡和學生網絡的關係。 -
Similarity-preserving knowledge distillation
提出相似性保留的知識,使得教師網絡和學生網絡根據相同的樣本對產生相似的激活。 -
Correlation congruence for knowledge distillation
提出基於關係一致的知識蒸餾方法,可以同時蒸餾instance-level的信息以及between instance的信息。
instance relation的建模如下:
與不同層之間建模不同的是,上邊的公式衡量的對象是層與層的關係即:\(\Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right)\), 而此處衡量的是樣本與樣本之間的關係(如上圖所示),即\(\psi_{t}\left(t_{i}, t_{j}\right)\)
下表對蒸餾知識從不同角度進行分類,比如數據的結構化知識、輸入特徵的專有知識等。
參考
Gou, J., Yu, B., Maybank, S.J., & Tao, D. (2021). Knowledge Distillation: A Survey. ArXiv, abs/2006.05525.