知識蒸餾 帶你認識深度學習中的知識蒸餾(一)

2021-10-12 16:47:58 字數 2868 閱讀 9147

摘要:知識蒸餾(knowledge distillation)是模型壓縮的一種常用的方法

1.1 概念介紹

知識蒸餾(knowledge distillation)是模型壓縮的一種常用的方法,不同於模型壓縮中的剪枝和量化,知識蒸餾是通過構建乙個輕量化的小模型,利用效能更好的大模型的監督資訊,來訓練這個小模型,以期達到更好的效能和精度。最早是由hinton在2023年首次提出並應用在分類任務上面,這個大模型我們稱之為teacher(教師模型),小模型我們稱之為student(學生模型)。來自teacher模型輸出的監督資訊稱之為knowledge(知識),而student學習遷移來自teacher的監督資訊的過程稱之為distillation(蒸餾)。

1.2 知識蒸餾的種類

圖1 知識蒸餾的種類

1、 離線蒸餾

離線蒸餾方式即為傳統的知識蒸餾,如上圖(a)。使用者需要在已知資料集上面提前訓練好乙個teacher模型,然後在對student模型進行訓練的時候,利用所獲取的teacher模型進行監督訓練來達到蒸餾的目的,而且這個teacher的訓練精度要比student模型精度要高,差值越大,蒸餾效果也就越明顯。一般來講,teacher的模型引數在蒸餾訓練的過程中保持不變,達到訓練student模型的目的。蒸餾的損失函式distillation loss計算teacher和student之前輸出**值的差別,和student的loss加在一起作為整個訓練loss,來進行梯度更新,最終得到乙個更高效能和精度的student模型。

2、 半監督蒸餾

半監督方式的蒸餾利用了teacher模型的**資訊作為標籤,來對student網路進行監督學習,如上圖(b)。那麼不同於傳統離線蒸餾的方式,在對student模型訓練之前,先輸入部分的未標記的資料,利用teacher網路輸出標籤作為監督資訊再輸入到student網路中,來完成蒸餾過程,這樣就可以使用更少標註量的資料集,達到提公升模型精度的目的。

3、 自監督蒸餾

自監督蒸餾相比於傳統的離線蒸餾的方式是不需要提前訓練乙個teacher網路模型,而是student網路本身的訓練完成乙個蒸餾過程,如上圖(c)。具體實現方式 有多種,例如先開始訓練student模型,在整個訓練過程的最後幾個epoch的時候,利用前面訓練的student作為監督模型,在剩下的epoch中,對模型進行蒸餾。這樣做的好處是不需要提前訓練好teacher模型,就可以變訓練邊蒸餾,節省整個蒸餾過程的訓練時間。

1.3 知識蒸餾的功能

1、提公升模型精度

使用者如果對目前的網路模型a的精度不是很滿意,那麼可以先訓練乙個更高精度的teacher模型b(通常參數量更多,時延更大),然後用這個訓練好的teacher模型b對student模型a進行知識蒸餾,得到乙個更高精度的模型。

2、降低模型時延,壓縮網路引數

使用者如果對目前的網路模型a的時延不滿意,可以先找到乙個時延更低,參數量更小的模型b,通常來講,這種模型精度也會比較低,然後通過訓練乙個更高精度的teacher模型c來對這個參數量小的模型b進行知識蒸餾,使得該模型b的精度接近最原始的模型a,從而達到降低時延的目的。

3、標籤之間的域遷移

使用者使用狗和貓的資料集訓練了乙個teacher模型a,使用香蕉和蘋果訓練了乙個teacher模型b,那麼就可以用這兩個模型同時蒸餾出乙個可以識別狗,貓,香蕉以及蘋果的模型,將兩個不同與的資料集進行整合和遷移。

圖2 影象域遷移訓練

4、降低標註量

該功能可以通過半監督的蒸餾方式來實現,使用者利用訓練好的teacher網路模型來對未標註的資料集進行蒸餾,達到降低標註量的目的。

1.4 知識蒸餾的原理

圖3 知識蒸餾原理介紹

一般使用蒸餾的時候,往往會找乙個參數量更小的student網路,那麼相比於teacher來說,這個輕量級的網路不能很好的學習到資料集之前隱藏的潛在關係,如上圖所示,相比於one hot的輸出,teacher網路是將輸出的logits進行了softmax,更加平滑的處理了標籤,即將數字1輸出成了0.6(對1的**)和0.4(對0的**)然後輸入到student網路中,相比於1來說,這種softmax含有更多的資訊。好模型的目標不是擬合訓練資料,而是學習如何泛化到新的資料。所以蒸餾的目標是讓student學習到teacher的泛化能力,理論上得到的結果會比單純擬合訓練資料的student要好。另外,對於分類任務,如果soft targets的熵比hard targets高,那顯然student會學習到更多的資訊。最終student模型學習的是teacher模型的泛化能力,而不是「過擬合訓練資料」

[1]data distillation: towards omni-supervised learning

[2]on the efficacy of knowledge distillation

[3]knowledge distillation and student-teacher learning for visual intelligence: a review and new outlooks

[4]towards understanding knowledge distillation

[5]model compression via distillation and quantization

AI實戰 深度學習之知識蒸餾

知識蒸餾被廣泛用於模型壓縮和遷移學習。開山之作 distilling the knowledge in a neural network 文章提出一種方法,把多個模型的知識提煉給單個模型。知識蒸餾,可以將乙個網路的知識轉移到另乙個網路,兩個網路可以是同構或者異構。做法是先訓練乙個teacher網路,...

深度學習英文縮寫 小KE帶你認識機器學習和深度學習

這一次,小ke帶你了解幾個火爆的 人工智慧 名詞兒,這樣在擼串炸雞啤酒時,可以跟小夥伴吹噓吹噓,提高提高自己的人格檔次。機器學習 和 深度學習 這幾個名詞,經常會和人工智慧一同出現在不同場合,他們都是什麼意思呢?人工智慧 先來看看人工智慧。在1956年達特矛斯會議上,約翰 麥卡錫提出了 人工智慧 這...

帶你認識C 中的this指標

this指標的初步認識 this指標的由來 乙個學生可以有多本書一樣,而這些書都是屬於這個同學的 同理,如果有很多個同學在一起,那麼為了確定他們的書不要拿混淆了,最好的辦法我想應該就是每個同學都在自己的書上寫上名字,這樣肯定就不會拿錯了。同理,乙個物件的多個成員就可看作是這個物件所擁有的書 而在很多...