一.知識蒸餾的定義
1. 量化VS蒸餾
- 量化:減小精度 例如參數float32—>float16
- 蒸餾:Student model模仿Teacher model,在保持較高性能的同時,減少模型大小和計算復雜度的技術。
二.知識蒸餾步驟
1.教師模型訓練:
- 訓練一個大型且復雜的神經網絡(教師模型),使其在特定任務上達到高精度。
2.生成軟標簽:
- 使用教師模型對訓練數據進行推理,生成軟標簽(即每個類別的概率分布),這些軟標簽比硬標簽(即直接分類結果)包含更豐富的信息。
舉例子:假如有三個分類對象a,b,c,硬標簽的結果可能為:a:100% ,b:0% , c:0%;而軟標簽的結果可能為:a : 75% , b:15% , c:10%。軟標簽的結果就會包含更多豐富的信息。
蒸餾溫度T
為了使其他概率的值可以更大,可以適當修改一下蒸餾溫度T的值,此時影響的是Softmax,如:
3.學生模型訓練:
- 訓練一個較小且簡單的神經網絡(學生模型),使其不僅預測原始標簽(硬目標),還要模仿教師模型的輸出概率分布(軟目標)。
4.知識蒸餾的模型架構
Distillation Loss 與 Student Loss的計算:
參考:https://www.bilibili.com/video/BV1gS4y1k7vj/?spm_id_from=333.337.search-card.all.click&vd_source=5cd9b442f08018f3dc856d0a91e9cab0