Knowledge Distillation
簡介
知識蒸餾(Knowledge Distillation)是一種模型壓縮技術,用於將一個大型且複雜的模型的知識傳遞給一個小型且簡單的模型中。這種技術基於一個假設,即大型模型的預測能力可以轉化為一組較小、較簡單的特徵,從而傳遞給小型模型。知識蒸餾技術通常使用一個大型的教師模型來指導一個小型的學生模型,教師模型通過在大型資料集上進行訓練而得到高精度,而學生模型則通過將教師模型的預測轉化為學生模型的訓練目標來學習。由於小型模型比大型模型更容易部署和運行,因此知識蒸餾技術已成為現代機器學習和深度學習中一個非常受歡迎的技術手段。
定義
知識蒸餾主要包含以下幾個步驟:
首先,使用一個複雜的教師模型對訓練資料進行訓練。
接著,將教師模型的輸出(通常是軟目標)作為學生模型的輸入,並以學生模型的預測值和教師模型的預測值之間的差異(即教師模型的輸出和學生模型的輸出之間的距離)作為損失函數進行反向傳播。
最後,通過調整學生模型的參數,使學生模型進一步逼近教師模型的預測結果。
知識蒸餾的主要優點是可以在不損失過多準確度的情況下減少模型的大小和計算量,從而實現在資源受限的設備上進行高效推理的目的。此外,知識蒸餾還可以在保持模型準確性的同時,提高模型的泛化能力,從而更好地應對真實場景下的應用。
分類
這三種蒸餾方法(Offline, Online, Self-distillation)是知識蒸餾(Knowledge Distillation, KD)技術中的主要分類。
知識蒸餾的核心概念是讓一個較小的模型(Student)學習一個較大的模型(Teacher)的知識,從而在保持輕量化的同時提升性能。
以下是這三種蒸餾方式的詳細介紹與比較:
離線蒸餾 (Offline Distillation)
這是最傳統、最常見的知識蒸餾形式。整個過程分為兩個獨立的階段。
核心概念
Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531.
核心流程:
- 預訓練 Teacher: 先在資料集上訓練一個龐大、性能強的 Teacher 模型,直到其收斂並達到高準確率。
- 凍結 Teacher: 固定 Teacher 的權重,不再更新。
- 訓練 Student: 初始化一個較小的 Student 模型,利用 Teacher 輸出的「軟標籤(Soft Targets)」或中間層特徵來指導 Student 的訓練。
步驟
知識蒸餾(Knowledge Distillation,簡稱KD)是一種模型壓縮技術,通過將一個複雜模型的知識傳遞給一個簡單模型,以實現模型壓縮的目的。知識蒸餾的基本思想是,利用一個複雜模型的預測結果和特徵,指導一個簡單模型的訓練,使其具有複雜模型相似的預測能力。知識蒸餾的主要步驟包括:
- 訓練一個複雜模型,如一個深度神經網絡,將其訓練到收斂。
- 用複雜模型對一個大型的標籤資料集進行預測。
- 將標籤資料集與複雜模型的預測輸出組成一個新的資料集,稱為“蒸餾資料集”。
- 設計一個較小的模型,如一個簡單的線性回歸模型或者一個小型神經網路。
- 用蒸餾資料集訓練簡單模型,使其盡可能地重現複雜模型的預測結果和特徵。
- 通過在複雜模型和簡單模型之間進行交叉驗證或者比較預測準確性,確定簡單模型的最佳超參數設置。
- 在實際應用中,使用簡單模型進行推理,以實現模型壓縮和運算速度的提升。
知識蒸餾技術有助於減少模型的大小和計算量,提高模型的泛化能力,從而更好地應對真實場景下的應用。知識蒸餾還可以在深度學習中解決一些問題,如梯度消失和過擬合等。因此,知識蒸餾在深度學習中得到了廣泛的應用。
損失函數 (Loss Function):
通常由兩部分組成:
其中是蒸餾損失(如 KL 散度), 是標準的交叉熵損失, 是平衡係數。 優點:
- 簡單直觀: Teacher 已經訓練好,可以直接提取知識。
- Teacher 強大: 可以花大量時間訓練一個超強的 Teacher(甚至是多個模型的集成 Ensemble),保證知識庫的質量。
缺點:
- 兩階段耗時: 必須先訓練完 Teacher 才能訓練 Student。
- 容量差距問題: 如果 Teacher 過於強大(容量遠大於 Student),Student 可能無法模仿 Teacher 的複雜分佈,導致效果反而變差(這種現象稱為 Capacity Gap)。
在線蒸餾 (Online Distillation)
為了解決離線蒸餾必須「先訓練 Teacher」的耗時問題,提出了在線蒸餾。在這種模式下,Teacher 和 Student 是同時訓練的。
核心概念
Chen, D., Mei, J. P., Wang, C., Feng, Y., & Chen, C. (2020, April). Online knowledge distillation with diverse peers. In Proceedings of the AAAI conference on artificial intelligence (Vol. 34, No. 04, pp. 3430-3437).
核心流程:
- 沒有預先訓練好的靜態 Teacher。
- 通常是兩個或多個模型(可以是同構的,也可以是異構的)同時進行端到端(End-to-End)的訓練。
- 模型之間互相學習(Mutual Learning),每一步更新時,每個模型既是 Student 也是 Teacher。
常見形式:
- Deep Mutual Learning (DML): 多個小模型互相學習,彼此的輸出概率分佈作為對方的軟標籤。
- On-the-fly Native Ensemble: 使用多個分支網絡,將其集成的預測結果作為 Teacher 來指導單個分支。
優點:
- 效率高: 一階段訓練,省去了預訓練 Teacher 的時間。
- 共同進步: 即使沒有一個強大的預訓練模型,多個弱模型互相激勵也能達到優於單獨訓練的效果。
缺點:
- 缺少強指導: 因為沒有一個已經收斂的強大 Teacher,訓練初期的指導信號可能不夠準確或不穩定。
- 硬件需求: 同時訓練多個模型對 GPU 顯存要求較高。
自蒸餾 (Self-distillation)
自蒸餾是一種特殊的蒸餾方式,Teacher 和 Student 是同一個模型(或者說是同一個模型的不同階段/部分)。也就是說,模型自己教自己。
核心概念
Furlanello, T., Lipton, Z., Tschannen, M., Itti, L., & Anandkumar, A. (2018, July). Born again neural networks. In International conference on machine learning (pp. 1607-1616). PMLR.
核心流程:
- 方式 A(快照式): 先訓練模型
的早期版本作為 Teacher,教導後期的 (或者將上一個 Epoch 的模型作為 Teacher)。 - 方式 B(層級式): 在模型的不同深度(深層與淺層)之間進行蒸餾。通常認為深層網絡提取的特徵更抽象、語義更強,因此可以讓網絡的深層部分(Deep layers)作為 Teacher,去指導淺層部分(Shallow layers)。
- 方式 C(多代訓練): 訓練好一個模型
,然後用 作為 Teacher 來重新初始化並訓練結構完全相同的 (Born-Again Neural Networks)。
- 方式 A(快照式): 先訓練模型
為什麼有效?
- 這聽起來像是「左腳踩右腳上天」,但實際上,軟標籤(Soft Targets)包含了比硬標籤(Hard Labels, 如 One-hot)更多的信息(類別間的相似度)。
- 這種過程起到了一種正則化(Regularization)的作用,防止模型對硬標籤過擬合,從而使決策邊界更平滑。
優點:
- 無需額外模型: 不需要設計或尋找一個單獨的 Teacher 模型。
- 提升自身性能: 可以讓單個模型在不增加參數量的情況下提升精度。
缺點:
- 訓練時間增加: 如果採用多代訓練(Born-Again),總訓練時間會成倍增加。
- 提升上限有限: 因為知識來源僅限於自身,可能不如從一個超大 Teacher 那裡學到的多。
總結對比表
| 特性 | 離線蒸餾 (Offline) | 在線蒸餾 (Online) | 自蒸餾 (Self-distillation) |
|---|---|---|---|
| Teacher 狀態 | 預先訓練好並凍結 | 與 Student 同時訓練 | 模型自身(不同階段或層級) |
| 訓練階段 | 兩階段 (先 T 後 S) | 單階段 (端到端) | 視具體方法而定 (通常單階段或多代) |
| 計算成本 | 高 (需訓練大 Teacher) | 中高 (同時跑多個模型) | 低 (僅需跑單個模型架構) |
| 知識來源 | 強大的靜態 Teacher | 同伴模型 (Peer models) | 模型自身的歷史或深層特徵 |
| 適用場景 | 有現成的高性能大模型時 | 無法獲得大模型,或追求訓練效率時 | 資源受限,僅希望優化單一模型時 |
應用
知識蒸餾技術在許多人工智慧應用中都得到了廣泛的應用,包括:
語音識別
在語音識別方面,通常使用大型神經網絡作為教師模型,並將其知識傳遞給小型神經網絡作為學生模型,從而實現更快速和更精確的語音識別。影像識別
在影像識別方面,知識蒸餾技術通常用於最佳化現有的影像識別模型,以提高其精度和泛化性能。此外,知識蒸餾技術還可用於在訓練期間增加模型的穩健性,以提高模型對影像噪聲和變形的抵抗能力。自然語言處理
在自然語言處理方面,知識蒸餾技術通常用於縮小大型語言模型的大小,以提高其運行效率。同時,知識蒸餾還可用於最佳化語言模型,以提高其對於自然語言生成和理解的能力。推薦系統
在推薦系統方面,知識蒸餾技術通常用於最佳化現有的推薦算法,以提高其推薦效果和個性化程度。
Reference
- Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531.
- Sau, B. B., & Balasubramanian, V. N. (2016). Deep model compression: Distilling knowledge from noisy teachers. arXiv preprint arXiv:1610.09650.
- Chen, D., Mei, J. P., Wang, C., Feng, Y., & Chen, C. (2020, April). Online knowledge distillation with diverse peers. In Proceedings of the AAAI conference on artificial intelligence (Vol. 34, No. 04, pp. 3430-3437).
- Gou, J., Yu, B., Maybank, S. J., & Tao, D. (2021). Knowledge distillation: A survey. International journal of computer vision, 129(6), 1789-1819.
- Zhang, L., Bao, C., & Ma, K. (2021). Self-distillation: Towards efficient and compact neural networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 44(8), 4388-4403.
- Moslemi, A., Briskina, A., Dang, Z., & Li, J. (2024). A survey on knowledge distillation: Recent advancements. Machine Learning with Applications, 18, 100605.
- Cao, Y., Ni, Q., Jia, M., Zhao, X., & Yan, X. (2024). Online knowledge distillation for machine health prognosis considering edge deployment. IEEE Internet of Things Journal, 11(16), 27828-27839.
- Mansourian, A. M., Ahmadi, R., Ghafouri, M., Babaei, A. M., Golezani, E. B., Ghamchi, Z. Y., … & Kasaei, S. (2025). A Comprehensive Survey on Knowledge Distillation. arXiv preprint arXiv:2503.12067.
- Fang, L., Yu, X., Cai, J., Chen, Y., Wu, S., Liu, Z., … & Ma, P. (2026). Knowledge distillation and dataset distillation of large language models: Emerging trends, challenges, and future directions. Artificial Intelligence Review, 59(1), 17.