部署與效率

知識蒸餾

一個又大又準的「教師」模型,所知遠多於它最終是/否答案所透露的。當它分類一張影像時,跨類別的完整機率分布編碼了哪些類別看起來相似——貓會在「狗」上得到一點機率,在「卡車」上幾乎沒有。知識蒸餾訓練一個小「學生」去複製這整個軟輸出,而不只是硬標籤,藉此轉移這份「暗知識」(dark knowledge),讓精簡模型最終比單靠標籤學習更準確。

在 Hinton 等人的表述中,你用溫度 T 來軟化 logits——softmax(z/T) 會把機率質量攤開,使錯誤類別之間的相對大小變得有資訊量——並訓練學生以 KL 散度去匹配教師軟化後的分布,同時搭配在真實標籤上的一般交叉熵。由於軟目標的梯度量級約為 1/T²,該項要相應地重新加權。更豐富的變體匹配的是中間訊號而不只是輸出:特徵/提示蒸餾(FitNets)、注意力轉移,以及關係式 KD;也有不需固定預訓練教師的線上/自蒸餾。

蒸餾撐起了許多精簡的已部署模型。DistilBERT 就是這樣縮小語言模型的;在視覺領域,DeiT 透過一個專用的蒸餾 token,從 CNN 教師蒸餾出 ViT,使資料高效的 transformer 訓練成為可能。教師-學生模式也是自監督學習的核心(DINO 訓練學生去匹配一個動量教師),並用於壓縮偵測與分割模型。它能與量化、剪枝乾淨地疊加使用。

教師太強反而有害:若容量落差過大,學生無法模仿教師的分布,準確率會下降。改用中介的「助教」(teacher-assistant)模型,或匹配中間特徵而非只匹配輸出,常能彌合這道落差。

又称
KDteacher-student教師-學生