模型蒸餾

讓小模型繼承大模型的「智慧」,而不只是複製它的「答案」。

先說結論

讀完這篇文章,你會理解:


從類比開始

想像一個剛開始學廚的新手,跟著米其林主廚學做菜。

如果主廚只給新手一張食譜(正確答案),新手可能記住步驟,但不知道「為什麼要先炒香蔥蒜」、「為什麼火候要在這個時機調小」——那些在主廚腦袋裡積累幾十年的直覺,食譜裡根本寫不進去。

但如果新手能站在旁邊看主廚做菜,觀察他每個動作的「信心程度」——哪裡他很果斷、哪裡他稍微猶豫——新手就能學到遠比食譜更豐富的東西。

模型蒸餾做的,就是後者。


核心概念

硬標籤 vs. 軟標籤

傳統訓練給模型看的是硬標籤(Hard Labels)

這張圖 → 貓:1,狗:0,鳥:0

這告訴模型「正確答案是貓」,但什麼資訊都沒有了。

大型教師模型輸出的是軟標籤(Soft Labels)

這張圖 → 貓:0.85,狗:0.12,鳥:0.03

這告訴學生:「這張圖很像貓,但也有一點像狗。」這個機率分佈裡藏著的,是教師對各類別相似度的微妙判斷,遠比一個「1」更豐富——Hinton 稱之為暗知識(Dark Knowledge)

溫度參數(Temperature)

有時候教師模型太確定了,輸出變成:

貓:0.9999,狗:0.0001,鳥:0.00001

這跟硬標籤差不多,學生什麼都學不到。

所以引入了溫度參數 T

softmax(logits / T)

訓練時用高溫讓分佈平滑,推理時恢復 T=1 保持正常預測。 像是把知識從高濃度慢慢稀釋,讓學生更容易吸收。

損失函數

學生模型同時接受兩個目標的訓練:

Total Loss = α × CrossEntropy(學生輸出, 真實標籤)
           + (1-α) × KL散度(學生軟輸出, 教師軟輸出)

三種蒸餾方式

類型學什麼適合情境
回應蒸餾(Response-based)模仿教師的最終輸出分類、生成任務
特徵蒸餾(Feature-based)模仿教師的中間層表示需要深度理解的任務
關係蒸餾(Relation-based)模仿教師如何看待「樣本間關係」複雜推理任務

流程圖


常見誤解

誤解一:「學生只是縮小版的教師」

不對。 學生的架構可以和教師完全不同——可以是不同類型的神經網路,甚至可以跨模態(用語言模型的知識蒸餾到視覺模型)。蒸餾傳遞的是知識,不是結構。

誤解二:「蒸餾後的小模型一定比教師差」

不一定。 DeepSeek-R1 的 7B 蒸餾版本在推理任務上打敗了未蒸餾的 32B 模型。當教師的軟標籤比隨機標籤更有信息量時,學生的訓練效率遠高於從零開始——這被稱為弱到強的泛化(Weak-to-Strong Generalization)

誤解三:「溫度越高越好」

不對。 溫度太高,所有類別的機率趨於一致,暗知識被「過度稀釋」,反而失去意義。溫度是個需要調校的超參數,通常落在 T = 2 到 T = 10 之間。


延伸思考

  1. DistilBERT 與 TinyBERT — 同樣的 BERT 模型,蒸餾出的小模型為什麼在某些任務上表現差異這麼大?了解特徵蒸餾如何影響語言理解能力。

  2. DeepSeek-R1 的蒸餾爭議 — DeepSeek 用 OpenAI 模型的輸出訓練學生,引發了關於「用競爭對手的知識蒸餾」的法律與倫理討論——這條線在哪裡?

  3. Speculative Decoding 與蒸餾的結合 — 新研究讓小學生模型與大教師模型在推理時協作,而非只在訓練時。這開啟了完全不同的部署架構。

  4. 資料驅動蒸餾 vs. 無資料蒸餾 — 當原始訓練資料不可用(如隱私限制),如何用 GAN 合成資料進行蒸餾?這在醫療 AI 領域特別重要。

  5. 蒸餾的縮放定律 — Apple 與牛津大學的研究顯示,教師與學生的大小差距有個甜蜜點:太小的學生學不了太強的教師。這如何影響 LLM 的商業決策?


參考來源


分享
模型蒸餾 - Nigel Lee Digest