知識(shí)蒸餾綜述: 知識(shí)的類型

【GiantPandCV引言】簡(jiǎn)單總結(jié)一篇綜述《Knowledge Distillation A Survey》中的內(nèi)容,提取關(guān)鍵部分以及感興趣部分進(jìn)行匯總。這篇是知識(shí)蒸餾綜述的第一篇,主要內(nèi)容為知識(shí)蒸餾中知識(shí)的分類,包括基于響應(yīng)的知識(shí)、基于特征的知識(shí)和基于關(guān)系的知識(shí)。

知識(shí)蒸餾簡(jiǎn)介

定義:知識(shí)蒸餾代表將知識(shí)從大模型向小模型傳輸?shù)倪^(guò)程。

作用:可以用于模型壓縮和訓(xùn)練加速 手段。

綜述梳理思路:

  • 知識(shí)蒸餾的種類

  • 訓(xùn)練機(jī)制

  • 教師-學(xué)生 架構(gòu)

  • 蒸餾算法

  • 性能比較

  • 實(shí)際應(yīng)用

典型的知識(shí)蒸餾KD是Hinton于15年發(fā)表的paper,明確了知識(shí)蒸餾的想法是讓學(xué)生模型通過(guò)模仿教師模型來(lái)取得具有競(jìng)爭(zhēng)性的性能,甚至可以取得超越教師網(wǎng)絡(luò)的性能。

知識(shí)蒸餾的核心研究:如何將知識(shí)從大模型傳遞給小模型。

知識(shí)蒸餾系統(tǒng)的三個(gè)核心組件:

  • 知識(shí) knowledge

  • 蒸餾算法 distillation algorithm

  • 教師學(xué)生架構(gòu) teacher-student architecture

image

知識(shí)蒸餾相關(guān)的擴(kuò)展方向:

  • teacher - student learning

  • mutual learning

  • assistant teaching

  • life long learning

  • self learning

在知識(shí)蒸餾中,我們主要關(guān)心:知識(shí)種類、蒸餾策略、教師學(xué)生架構(gòu)

最原始的蒸餾方法是使用大模型的logits層作為教師網(wǎng)絡(luò)的知識(shí)進(jìn)行蒸餾,但知識(shí)的形式還可以是:激活、神經(jīng)元、中間層特征、教師網(wǎng)絡(luò)參數(shù)等。可以將其歸類為下圖中三種類型。

image

基于響應(yīng)的知識(shí)(Response-Based Knowledge)

image

基于響應(yīng)的知識(shí)一般指的是神經(jīng)元的響應(yīng),即教師模型的最后一層邏輯輸出。

響應(yīng)知識(shí)的loss:

L_{R e s D}\left(z_{t}, z_{s}\right)=\mathcal{L}_{R}\left(z_{t}, z_{s}\right)

其核心想法是讓學(xué)生模型模仿教師網(wǎng)絡(luò)的輸出,這是最經(jīng)典、最簡(jiǎn)單、也最有效的處理方法

Hinton提出的KD是將teacher的logits層作為soft label.

p\left(z_{i}, T\right)=\frac{\exp \left(z_{i} / T\right)}{\sum_{j} \exp \left(z_{j} / T\right)}

T是用于控制soft target重要程度的超參數(shù)。

那么整體蒸餾loss可以寫作:

L_{\operatorname{Res} D}\left(p\left(z_{t}, T\right), p\left(z_{s}, T\right)\right)=\mathcal{L}_{R}\left(p\left(z_{t}, T\right), p\left(z_{s}, T\right)\right)

一般來(lái)講使用KL散度來(lái)衡量?jī)烧叻植疾町悾ㄟ^(guò)優(yōu)化以上loss可以使得學(xué)生網(wǎng)絡(luò)的logits輸出盡可能和教師網(wǎng)絡(luò)的logits輸出相似,從而達(dá)到學(xué)習(xí)的目的。

image

KD中除了蒸餾的一項(xiàng)通常還會(huì)使用交叉熵?fù)p失函數(shù)令學(xué)生網(wǎng)絡(luò)學(xué)習(xí)真實(shí)標(biāo)簽(也稱hard label),兩項(xiàng)聯(lián)合起來(lái)進(jìn)行訓(xùn)練。

KD通常的解釋是學(xué)生網(wǎng)絡(luò)可以從教師網(wǎng)絡(luò)中學(xué)習(xí)到額外的隱形知識(shí)(dark knowledge), 而這種知識(shí)要比通過(guò)標(biāo)簽學(xué)習(xí)的知識(shí)更容易理解。

KD其他角度的解釋還包括:KD可以生成類似label smooth的soft target;KD可以視為一種正則化方法;

基于響應(yīng)的知識(shí)只用到了模型最后一層logits中包含的知識(shí),而并沒(méi)有用到中間層的監(jiān)督,而中間層的監(jiān)督信息在表征學(xué)習(xí)中非常有用。

基于特征的知識(shí)(Feature-Based Knowledge)

在深度卷積神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)學(xué)習(xí)到的知識(shí)是分層的,從淺到深層對(duì)應(yīng)的知識(shí)抽象程度越來(lái)越高。因此中間層的特征也可以作為知識(shí)的載體,供學(xué)生網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)。

基于特征的知識(shí)可以視為基于響應(yīng)的知識(shí)的一個(gè)擴(kuò)展。

FitNets是第一個(gè)引入中間層表征的,教師網(wǎng)絡(luò)的中間層可以作為學(xué)生網(wǎng)絡(luò)對(duì)應(yīng)層的提示(Hints層)從而提升學(xué)生網(wǎng)絡(luò)模型的性能。其核心是期望學(xué)生能夠直接模仿教師網(wǎng)絡(luò)的特征激活值。

以FitNets為基礎(chǔ)擴(kuò)展出幾篇工作:

  • Paying more attention to attention: 提出去學(xué)習(xí)從原先特征圖中派生得到的注意力圖(Attention map)

  • Like what you like: Knowledge distill via neuron selectivity transfer: 認(rèn)為神經(jīng)元是有選擇性的,而這種選擇性與任務(wù)是相關(guān)的,提出神經(jīng)元選擇性遷移,將教師與學(xué)生這種神經(jīng)元的選擇模式分布對(duì)齊。通過(guò)引入了MMD Matching Loss進(jìn)行實(shí)現(xiàn)。

  • Learning deep representation with probabilistic knowledge transfer: 通過(guò)匹配特征空間的概率分布遷移知識(shí)。

  • paraphrasing complex network: Network Compression via factor transfer:引入factor作為一種中間層表征的可理解形式。

  • Knowledge distillation via route constrained optimization: 致力于降低教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的gap,提出使用路線約束的暗示學(xué)習(xí)(Hints learning)。

  • Knowledge transfer via distillation of activation boundaries formed by hidden neurons: 提出使用隱層神經(jīng)元的激活邊界進(jìn)行知識(shí)遷移。

  • Cross-Layer Distillation with Sematic Calibration: 為了匹配教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的語(yǔ)義信息,提出通過(guò)attention allocation自適應(yīng)為學(xué)生層分配合適的教師層, 實(shí)現(xiàn)跨層的知識(shí)蒸餾。

image

基于特征的知識(shí)遷移可以建模為:

L_{F e a D}\left(f_{t}(x), f_{s}(x)\right)=\mathcal{L}_{F}\left(\Phi_{t}\left(f_{t}(x)\right), \Phi_{s}\left(f_{s}(x)\right)\right)

其中\Phi表示一個(gè)轉(zhuǎn)換函數(shù),因?yàn)榻處熅W(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的特征層可能出現(xiàn)尺寸不匹配的情況,所以需要轉(zhuǎn)換。\mathcal{L}_F表示用于匹配教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的相似度計(jì)算函數(shù)。

下圖總結(jié)了各個(gè)基于特征的知識(shí)的匹配類型:

image

一般而言,在基于特征的知識(shí)遷移中,研究的對(duì)象包括了:

  • 如何需選擇知識(shí)類型?特征圖、注意力圖、gram矩陣或其他

  • 如何選擇教師層和學(xué)生層?簡(jiǎn)單的一對(duì)一匹配,自適應(yīng)通過(guò)注意力匹配。

  • 如何彌補(bǔ)教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)之間的GAP?如果容量相差過(guò)大,可能會(huì)導(dǎo)致學(xué)習(xí)效果變差。

基于關(guān)系的知識(shí)(Relation-Based Knowledge)

基于關(guān)系的知識(shí)進(jìn)一步擴(kuò)展了基于響應(yīng)的知識(shí)以及基于特征的知識(shí),更全面深入的探索了不同層、不同數(shù)據(jù)樣本之間的關(guān)系。

不同層之間的關(guān)系建模

  • A gift from knowledgedistillation:fast optimization, network minimization and transfer learning: (FSP) 提出了Flow of solution process(FSP)的方法,定義了兩個(gè)層之間的Gram矩陣,從而可以總結(jié)特征圖不同對(duì)之間的關(guān)系。https://github.com/yoshitomo-matsubara/torchdistill/blob/5377be466c9460e0125892aa0d92aeb86418c752/torchdistill/losses/single.py L110行有具體實(shí)現(xiàn)。

  • self-supervised knowledge distillation using singular value decompostion: 提出利用特征圖之間的相關(guān)性進(jìn)行蒸餾,使用奇異值分解的方式來(lái)提取特征圖中關(guān)鍵信息。

  • Better and faster: knowledge transfer from multiple self-supervieds learning tasks via graph distillation for video classification: 為了使用多個(gè)教師網(wǎng)絡(luò)的知識(shí),構(gòu)建了使用logits層和特征圖作為節(jié)點(diǎn)的兩個(gè)graph。

  • Graph-based knowledge distillation by multi-head attention network: 提出使用Multi head graph-based 知識(shí)蒸餾方法,通過(guò)使用graph建模兩兩feature map之間的關(guān)系。

  • Heterogeneous Knowledge Distillation using information flow modeling: 提出讓學(xué)生模仿教師網(wǎng)絡(luò)信息流動(dòng)過(guò)程來(lái)得到知識(shí)。

基于關(guān)系的知識(shí)通常可以建模為:

L_{\operatorname{RelD}}\left(f_{t}, f_{s}\right)=\mathcal{L}_{R^{1}}\left(\Psi_{t}\left(\hat{f}_{t}, \check{f}_{t}\right), \Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right)\right)

\Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right)表示學(xué)生網(wǎng)絡(luò)內(nèi)成對(duì)的特征圖,\Psi_{s},\Psi_{t}代表相似度函數(shù),\mathcal{L}_{R^{1}}代表教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)的關(guān)聯(lián)函數(shù)。

不同樣本之間的關(guān)系建模

傳統(tǒng)的知識(shí)遷移通常只關(guān)心個(gè)體知識(shí)蒸餾,但是通常知識(shí)不僅包括特征的信息,還包括數(shù)據(jù)樣本之間的互作用關(guān)系。

  • Knowledge distillation via instance relationship graph提出了通過(guò)個(gè)體及關(guān)系圖進(jìn)行知識(shí)蒸餾的方法,遷移的知識(shí)包括個(gè)體級(jí)別特征。

  • Relational knowledge distillation提出關(guān)系知識(shí)蒸餾,從個(gè)體關(guān)系中進(jìn)行知識(shí)遷移

  • Learning student networks via feature embedding結(jié)合流型學(xué)習(xí),學(xué)生網(wǎng)絡(luò)可以通過(guò)特征嵌入進(jìn)行學(xué)習(xí),從而保證教師網(wǎng)絡(luò)中間層特征的樣本相似度。

  • Probabilistic Knowledge Transfer for Lightweight Deep Representation Learning使用概率分布來(lái)建模教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的關(guān)系。

  • Similarity-preserving knowledge distillation提出相似性保留的知識(shí),使得教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)根據(jù)相同的樣本對(duì)產(chǎn)生相似的激活。

  • Correlation congruence for knowledge distillation提出基于關(guān)系一致的知識(shí)蒸餾方法,可以同時(shí)蒸餾instance-level的信息以及between instance的信息。

image

instance relation的建模如下:

L_{R e l D}\left(F_{t}, F_{s}\right)=\mathcal{L}_{R^{2}}\left(\psi_{t}\left(t_{i}, t_{j}\right), \psi_{s}\left(s_{i}, s_{j}\right)\right)

與不同層之間建模不同的是,上邊的公式衡量的對(duì)象是層與層的關(guān)系即:\Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right), 而此處衡量的是樣本與樣本之間的關(guān)系(如上圖所示),即\psi_{t}\left(t_{i}, t_{j}\right)

下表對(duì)蒸餾知識(shí)從不同角度進(jìn)行分類,比如數(shù)據(jù)的結(jié)構(gòu)化知識(shí)、輸入特征的專有知識(shí)等。

image

參考

Gou, J., Yu, B., Maybank, S.J., & Tao, D. (2021). Knowledge Distillation: A Survey. ArXiv, abs/2006.05525.

https://arxiv.org/pdf/2006.05525.pdf

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容