知識蒸餾:為什麼小模型能學會大模型
這個分布本身就攜帶了大量硬標籤沒有說明的資訊。Hinton 稱之為「暗知識」(dark knowledge)。它的價值在於:
打個比方:硬標籤像是只告訴你「這題答案是 B」,軟標籤則像是老師順帶說明「A 之所以不對是因為少了個條件、C 只是把數字抄反了」。後者顯然更能幫你建立真正的理解。
二、為什麼小模型能學會大模型?拆開背後的機制
很多人第一次接觸蒸餾時,心裡都會冒出一個疑問:學生模型參數那麼少,容量根本不夠,它怎麼可能學會老師的全部知識?這個質疑非常合理,而答案可以從三個層面來理解。
2.1 老師的輸出是「機率分布」,不是單一答案
關鍵在於:學生不需要複製老師的內部權重,也不需要複製老師的完整計算路徑,它只需要在「輸入→輸出」這個映射上逼近老師。
而這個映射,遠比我們想像的更「低維」。神經網路的訓練過程,本質上是在一個由資料決定的低維流形上做擬合。老師雖然有幾百億參數,但真正承載「這張圖是什麼」這個判斷的,其實是資料分布本身蘊含的結構。學生的任務不是去模擬老師的每一個神經元,而是去學習這個結構的「投影」。
換句話說,老師的輸出分布是一個經過充分壓縮的、資訊密度極高的訊號。它已經把龐大模型對這個世界的理解,濃縮成了一個機率向量。學生只要學會在各種輸入下產生相似的向量,就等於間接繼承了這份理解。
2.2 溫度參數 T:把暗知識「放大」
這是 Hinton 論文中最巧妙的設計。標準的 softmax 會把輸出差異拉得很大,導致非正確類別的機率幾乎為 0(例如 0.999 vs 0.0001),暗知識就被掩蓋了。為了解決這個問題,蒸餾引入了溫度參數 T:
p_i = exp(z_i / T) / Σ_j exp(z_j / T)
其中 z 是模型輸出的 logits,T 是溫度。當 T = 1 時就是標準 softmax;當 T > 1 時,分布會變得平滑,原本被壓到接近 0 的機率被「抬起來」,類別之間的相對關係就變得清晰可見。
舉例來說,某個樣本的老師輸出 logits 是 [10, 8, 1]:
T = 1 時:約為 [0.881, 0.119, 0.0003],幾乎只剩第一個類別。
T = 4 時:約為 [0.665, 0.245, 0.066],第二、第三名都浮現出來了。
學生學的就是這個被「柔化」後的分布。訓練完成後,學生在推論時仍使用 T = 1,但它已經學到了那些原本隱藏起來的類別關係。這就是為什麼蒸餾常常能讓學生在資料量有限或訓練輪數不多的情況下,仍然達到相當接近老師的準確率。
2.3 從函數逼近與正則化的角度看
如果把視角拉高一點,蒸餾其實可以被理解為一種帶有強先驗知識的正則化訓練。
學生模型的損失函數通常長這樣:
L = α · CE(y, p_student) + (1 − α) · T² · KL(p_teacher^T || p_student^T)
第一項是傳統的交叉熵,教學生「要對」,第二項是與老師分布的 KL 散度,教學生「要像老師」。這兩股力量共同塑造學生的解空間:它既要符合真實標籤,又不要偏離老師的判斷太遠。結果就是學生被限制在一個更「合理」的區域裡,不容易掉進那些只靠少量資料擬合出來的糟糕局部解。
此外,蒸餾還有一個隱含的好處:它允許學生使用沒有標籤的資料。只要老師能對資料產生輸出,學生就能學。這等於把老師當成了一個無限產出的「標註員」,在真實世界資料昂貴、標註成本高的場景裡,價值極大。
2.4 為什麼不是「直接讓小模型自己學就好」?
有人會問:既然資料一樣、目標一樣,為什麼不直接訓練小模型?答案在於難度不同。
直接訓練小模型,等於讓它從零開始,在一個巨大的假設空間裡獨自摸索最優解。而蒸餾則是把「搜尋路徑」也一併交給學生——老師的輸出不只告訴學生答案是什麼,還告訴它「邊界在哪裡」。對容量受限的模型來說,這種引導能顯著降低學習難度。
更現實的一點是,很多時候老師的知識來自海量無標註資料的預訓練,這份知識根本無法用一個小資料集的標籤重新學回來。蒸餾是唯一能把它「帶」出來的途徑。
三、知識蒸餾的技術譜系:不只模仿輸出
從 2015 年至今,蒸餾技術已經發展出一個相當完整的家族。依照「轉移什麼」來分類,大致可以分成三大流派。
3.1 響應式蒸餾(Response-based Distillation)
這是最原始、也最直觀的做法:學生只學老師的最終輸出層。前面的 logits 或機率分布就是全部的教材。
優點是簡單通用,不需要知道老師的內部結構,甚至連老師的架構都可以不一樣(例如用 BERT 教一個 CNN)。缺點是資訊量有限,因為最終輸出只是一個「壓縮過的摘要」,學生無法從中學到中間層次的特徵表示。
3.2 特徵式蒸餾(Feature-based Distillation)
2014 年 Romero 等人提出的 FitNets 是這個方向的代表。他們讓學生去模仿老師「中間層」的特徵圖(feature maps),而不只是最終輸出。
做法通常是在學生的某一層接上一個「適配層」(adapter/regressor),把學生的特徵維度轉換成與老師一致,然後計算兩者之間的均方誤差。對卷積網路與 Transformer 來說,這種做法特別有效,因為中間層承載了豐富的語義特徵——物件的邊緣、紋理、語意概念,這些都是輸出層看不到的。
相對地,特徵式蒸餾的難點在於:學生的架構必須與老師有一定對應關係,而且「該對齊哪一層」往往需要實驗。當老師是幾百億參數的模型、學生只有幾億參數時,中間層的維度差異可能大到難以直接對齊。
3.3 關係式蒸餾(Relation-based Distillation)
2019 年前後興起的關係式蒸餾,換了一個角度:不模仿單一樣本的特徵,而是模仿樣本之間、層與層之間的關係。
例如 RKD(Relational Knowledge Distillation)會計算一組樣本在特徵空間中的距離與角度結構,讓學生保持相同的相對關係。這種做法的好處是它對維度不敏感——學生特徵維度可以跟老師完全不同,但只要「誰跟誰靠近、誰跟誰遠離」的結構保持住,知識就被轉移了。
這個思路在後來的對比學習與大模型蒸餾中被大量借鑑,因為它天然適合跨架構、跨模態的遷移。
3.4 自蒸餾與線上蒸餾
還有一種很有意思的變體:自蒸餾(Self-Distillation)。它不需要獨立的老師,而是讓模型自己教自己——例如讓深層去教淺層,或讓已經訓練好的自己教重新訓練的自己。
Furlanello 等人在 2018 年提出的 Born-Again Networks 就展示了這個現象:學生在蒸餾訓練後,表現竟然能持平甚至超越老師。這說明蒸餾不只是壓縮,它本身就是一種有效的訓練正則化手段。
線上蒸餾(Online Distillation)則是讓多個模型同時訓練、互相學習(如 Deep Mutual Learning),彼此既是老師也是學生。這種方式在沒有預訓練大模型可用的場景中特別實用。
四、工程實作:那些論文不會明說但很關鍵的細節
理論講完,接下來是真正會讓人踩坑的地方。蒸餾在實作上有幾個參數與設計選擇,往往決定了成敗。
4.1 損失函數的權重與 T² 的意義
前面提到的損失函數中,有一個容易被忽略的細節:KL 散度那項為什麼要乘上 T²?
原因是當 T 變大時,軟標籤分布的梯度會按 1/T² 的比例縮小。如果不同時放大 T²,那麼調整溫度就會連帶改變兩項損失的相對比重,導致實驗結果難以比較。乘上 T² 之後,梯度的量級就與 T 無關,α 與 T 就可以獨立調整。
實務上,α 通常取 0.5 到 0.9 之間(偏向老師的訊號),T 則常在 2 到 10 之間。這些值沒有絕對標準,必須根據任務、資料量與師生差距來調。
4.2 容量差距(Capacity Gap)問題
這是最現實的難題。如果老師太強、學生太小,蒸餾效果可能反而不如直接訓練。原因在於學生的表達能力根本無法擬合老師那種細膩的分布,硬要模仿只會讓它學到一個「四不像」的中間狀態。
常見的應對方式包括:
4.3 資料的選擇比想像中重要
蒸餾資料的品質直接決定學生的上限。近年研究發現,如果使用老師自己生成的資料(self-generated data),可能導致「回音室效應」——學生只學到老師的偏誤,而非真實世界的分布。因此,混合原始資料、無標籤真實資料與老師生成資料,通常是比較穩妥的策略。
五、2024–2025 的真實戰場:蒸餾已經成為主流工程手段
如果說 2015 年的蒸餾還帶著一點學術色彩,那今天的蒸餾已經是 AI 工業化的核心環節之一。以下幾個方向特別值得關注。
5.1 端側部署:讓模型住進手機與車機
手機上的語音助理、相機的即時場景辨識、車機的語音指令理解,這些場景都要求模型在幾十毫秒內完成推論,且不能佔用太多記憶體與電量。以 DistilBERT 為例,它在保留 BERT 約 97% 表現的情況下,參數量減少 40%、推論速度提升約 60%。這類「輕量但夠用」的模型,幾乎都是蒸餾的產物。
在視覺領域也一樣。YOLO 系列、各類行動端骨幹網路(MobileNet、EfficientNet 的輕量版本)在訓練時大量使用特徵蒸餾,把大型教師的判別能力壓縮進小模型裡。
5.2 大語言模型的蒸餾:從 DeepSeek 到 Gemini
這是近兩年最熱門的話題。大語言模型的蒸餾不再只是「模仿 logits」,而是進入了更複雜的層次:
值得注意的是,這些技術讓「小模型」的定義不斷變化。今天所謂的小模型,可能已經是 7B 到 30B 參數的規模,它們在特定任務上已經能逼近甚至達到某些大型模型的水準。
5.3 多模態與推理模型的新挑戰
當模型開始處理圖像、音訊、影片與長文本,蒸餾的難度也隨之提升。不同模態的特徵空間差異巨大,如何設計跨模態的對齊損失,是當前研究的熱點。同時,推理型模型(如會做長鏈思考的模型)的蒸餾,還需要處理「推理軌跡」的品質問題——如果老師的推理過程本身有錯,學生會照單全收。
六、局限與未來:學生真的能超越老師嗎?
6.1 蒸餾的天花板在哪裡?
傳統觀點認為,蒸餾的本質是「知識轉移」,學生的上限受限於老師。但實際研究顯示,這件事沒有那麼絕對。
Born-Again Networks 的實驗就發現,學生在某些設定下可以超越老師。原因可能是:蒸餾提供了額外的正則化,讓學生避開了老師訓練時陷入的某些過擬合區域;或者學生使用了更適合任務的架構,效率更高。
不過我們也要客觀:在絕大多數情況下,尤其是在大語言模型的知識廣度上,小模型仍難以完全複製大模型的能力。蒸餾能做到的是「在特定任務、特定分布上逼近」,而不是「全面取代」。
6.2 未來幾個值得關注的方向
七、結語:濃縮,是為了更好地流動
回到最初的問題:為什麼小模型能學會大模型?
答案其實很樸素——因為「知識」並不等於「參數」。一個模型的能耐,最終體現在它對輸入輸出關係的刻畫能力上,而這份刻畫是可以被提取、被傳遞、被重新表達的。知識蒸餾之所以有效,正是因為它抓準了這一點:它不要求學生複製老師的規模,而是要求學生學會老師的「判斷方式」。
從 Hinton 2015 年的那篇論文,到今天 DeepSeek、Gemini 等模型家族的蒸餾實踐,這項技術已經走過了十年。它從一個學術上的小技巧,變成了支撐整個 AI 產業落地的關鍵基礎設施。下次當你在手機上順暢地使用語音助理、在車機上快速得到回應、或在本地端跑起一個聰明的語言模型時,不妨想想:這背後,可能就有一個曾經巨大無比的老師,正透過蒸餾,安靜地把知識交給它的學生。
而在雅寶社區 · 頂客論壇這樣的技術交流場域裡,這種「把複雜講清楚、把知識傳下去」的精神,其實和知識蒸餾本身,有著異曲同工之妙。願我們都能成為更好的學生,也成為願意分享的老師。
```