每天給你送來NLP技術(shù)干貨!
來自:GiantPandaCV
作者:pprp
這篇是知識(shí)蒸餾綜述的第一篇,主要內(nèi)容為知識(shí)蒸餾中知識(shí)的分類,包括基于響應(yīng)的知識(shí)、基于特征的知識(shí)和基于關(guān)系的知識(shí)。
定義:知識(shí)蒸餾代表將知識(shí)從大模型向小模型傳輸?shù)倪^程。
作用:可以用于模型壓縮和訓(xùn)練加速 手段。
綜述梳理思路:
知識(shí)蒸餾的種類
訓(xùn)練機(jī)制
教師-學(xué)生 架構(gòu)
蒸餾算法
性能比較
實(shí)際應(yīng)用
典型的知識(shí)蒸餾KD是Hinton于15年發(fā)表的paper,明確了知識(shí)蒸餾的想法是讓學(xué)生模型通過模仿教師模型來取得具有競(jìng)爭(zhēng)性的性能,甚至可以取得超越教師網(wǎng)絡(luò)的性能。
知識(shí)蒸餾的核心研究:如何將知識(shí)從大模型傳遞給小模型。
知識(shí)蒸餾系統(tǒng)的三個(gè)核心組件:
知識(shí) knowledge
蒸餾算法 distillation algorithm
教師學(xué)生架構(gòu) teacher-student architecture
知識(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ù)等。可以將其歸類為下圖中三種類型。
基于響應(yīng)的知識(shí)一般指的是神經(jīng)元的響應(yīng),即教師模型的最后一層邏輯輸出。
響應(yīng)知識(shí)的loss:
其核心想法是讓學(xué)生模型模仿教師網(wǎng)絡(luò)的輸出,這是最經(jīng)典、最簡(jiǎn)單、也最有效的處理方法
Hinton提出的KD是將teacher的logits層作為soft label.
T是用于控制soft target重要程度的超參數(shù)。
那么整體蒸餾loss可以寫作:
一般來講使用KL散度來衡量?jī)烧叻植疾町悾ㄟ^優(yōu)化以上loss可以使得學(xué)生網(wǎng)絡(luò)的logits輸出盡可能和教師網(wǎng)絡(luò)的logits輸出相似,從而達(dá)到學(xué)習(xí)的目的。
KD中除了蒸餾的一項(xiàng)通常還會(huì)使用交叉熵?fù)p失函數(shù)令學(xué)生網(wǎng)絡(luò)學(xué)習(xí)真實(shí)標(biāo)簽(也稱hard label),兩項(xiàng)聯(lián)合起來進(jìn)行訓(xùn)練。
KD通常的解釋是學(xué)生網(wǎng)絡(luò)可以從教師網(wǎng)絡(luò)中學(xué)習(xí)到額外的隱形知識(shí)(dark knowledge), 而這種知識(shí)要比通過標(biāo)簽學(xué)習(xí)的知識(shí)更容易理解。
KD其他角度的解釋還包括:KD可以生成類似label smooth的soft target;KD可以視為一種正則化方法;
基于響應(yīng)的知識(shí)只用到了模型最后一層logits中包含的知識(shí),而并沒有用到中間層的監(jiān)督,而中間層的監(jiān)督信息在表征學(xué)習(xí)中非常有用。
在深度卷積神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)學(xué)習(xí)到的知識(shí)是分層的,從淺到深層對(duì)應(yīng)的知識(shí)抽象程度越來越高。因此中間層的特征也可以作為知識(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ì)齊。通過引入了MMD Matching Loss進(jìn)行實(shí)現(xiàn)。
Learning deep representation with probabilistic knowledge transfer: 通過匹配特征空間的概率分布遷移知識(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ò)的語義信息,提出通過attention allocation自適應(yīng)為學(xué)生層分配合適的教師層, 實(shí)現(xiàn)跨層的知識(shí)蒸餾。
基于特征的知識(shí)遷移可以建模為:
其中表示一個(gè)轉(zhuǎn)換函數(shù),因?yàn)榻處熅W(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的特征層可能出現(xiàn)尺寸不匹配的情況,所以需要轉(zhuǎn)換。表示用于匹配教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的相似度計(jì)算函數(shù)。
下圖總結(jié)了各個(gè)基于特征的知識(shí)的匹配類型:
一般而言,在基于特征的知識(shí)遷移中,研究的對(duì)象包括了:
如何需選擇知識(shí)類型?特征圖、注意力圖、gram矩陣或其他
如何選擇教師層和學(xué)生層?簡(jiǎn)單的一對(duì)一匹配,自適應(yīng)通過注意力匹配。
如何彌補(bǔ)教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)之間的GAP?如果容量相差過大,可能會(huì)導(dǎo)致學(xué)習(xí)效果變差。
基于關(guān)系的知識(shí)進(jìn)一步擴(kuò)展了基于響應(yīng)的知識(shí)以及基于特征的知識(shí),更全面深入的探索了不同層、不同數(shù)據(jù)樣本之間的關(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)行蒸餾,使用奇異值分解的方式來提取特征圖中關(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í)蒸餾方法,通過使用graph建模兩兩feature map之間的關(guān)系。
Heterogeneous Knowledge Distillation using information flow modeling: 提出讓學(xué)生模仿教師網(wǎng)絡(luò)信息流動(dòng)過程來得到知識(shí)。
基于關(guān)系的知識(shí)通常可以建模為:
表示學(xué)生網(wǎng)絡(luò)內(nèi)成對(duì)的特征圖,代表相似度函數(shù),代表教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)的關(guān)聯(lián)函數(shù)。
傳統(tǒng)的知識(shí)遷移通常只關(guān)心個(gè)體知識(shí)蒸餾,但是通常知識(shí)不僅包括特征的信息,還包括數(shù)據(jù)樣本之間的互作用關(guān)系。
Knowledge distillation via instance relationship graph
提出了通過個(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ò)可以通過特征嵌入進(jìn)行學(xué)習(xí),從而保證教師網(wǎng)絡(luò)中間層特征的樣本相似度。
Probabilistic Knowledge Transfer for Lightweight Deep Representation Learning
使用概率分布來建模教師網(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的信息。
instance relation的建模如下:
與不同層之間建模不同的是,上邊的公式衡量的對(duì)象是層與層的關(guān)系即:, 而此處衡量的是樣本與樣本之間的關(guān)系(如上圖所示),即
下表對(duì)蒸餾知識(shí)從不同角度進(jìn)行分類,比如數(shù)據(jù)的結(jié)構(gòu)化知識(shí)、輸入特征的專有知識(shí)等。
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
投稿或交流學(xué)習(xí),備注:昵稱-學(xué)校(公司)-方向,進(jìn)入DL&NLP交流群。
方向有很多:機(jī)器學(xué)習(xí)、深度學(xué)習(xí),python,情感分析、意見挖掘、句法分析、機(jī)器翻譯、人機(jī)對(duì)話、知識(shí)圖譜、語音識(shí)別等。
記得備注呦
整理不易,還望給個(gè)在看!
聯(lián)系客服