DistilBERT
DistilBERT
Sanh et al., HuggingFace, 2019 — arXiv:1910.01108
前身:BERT — 同期平行演進,與 ALBERT 解決不同問題
動機
BERT 在生產環境太慢、太大:
- 110M 參數、推論延遲高
- 邊緣裝置 / 低延遲場景無法部署
目標:不改訓練資料或任務,用 Knowledge Distillation 壓縮 BERT
方法:Knowledge Distillation
用 BERT-base(teacher)蒸餾出 6 層的 DistilBERT(student)
損失函數三合一:
L = α · L_ce(soft labels) # 學 teacher 的機率分布
+ β · L_mlm # 原本的 MLM 損失
+ γ · L_cos # 對齊 hidden state 方向
架構簡化:
- 移除 token-type embedding(segment embedding)
- 移除 pooler layer
- 層數 12 → 6,用 teacher 的偶數層初始化
效果
| 指標 | BERT-base | DistilBERT |
|---|---|---|
| 參數量 | 110M | 66M(-40%) |
| 推論速度 | 1x | 1.6x(+60%) |
| GLUE 分數 | 100% | 97% |
優點 / 缺點
| 說明 | |
|---|---|
| ✅ | 推論快、模型小,適合部署 |
| ✅ | 不需要大量預訓練資料,只需要蒸餾 |
| ✅ | HuggingFace 直接支援,使用門檻低 |
| ❌ | 仍有 3% 性能損失 |
| ❌ | 蒸餾需要 teacher 模型已存在 |
| ❌ | 壓縮比不如量化(Quantization)極端 |
下一個演進
→ ELECTRA:更根本地提高預訓練效率,小模型也能表現好