27

Tf-KD 簡介 - Revisit Knowledge Distillation a Teacher-free Framework

 4 years ago
source link: https://www.tuicool.com/articles/7FFZVv
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ArXiv preprint, Submitted on 25 Sep 2019.

Paper link: https://arxiv.org/abs/1909.11723

Github(Pytorch): https://github.com/yuanli2333/Teacher-free-Knowledge-Distillation

簡介

本文對於 Knowledge Distillation(KD) 進行一些實驗,

以往 KD 是使用較為複雜的模型(Teacher)去訓練較為簡單的模型(Student),

其想法是希望 Student 可以去擬合 Teacher 的各個類別的預測機率,

藉此學得比原本只使用 Supervised 訓練的方式來的更好。

而本文提出兩個有趣的實驗

  • 若使用 Student 來訓練 Teacher,這樣 Teacher 是否會改善 => Teacher 會變好
  • 若使用很爛的 Teacher 來訓練 Student,這樣 Student 是否會改善 => Student 會變好
    Teacher 準確度約為 10%。
    

這兩個結果都讓人意外。

作者對於實驗結果探討並解釋 KD 是一種 Label smoothing regularization(LSR) 的變形,

並探討 KD 與 LSR 之間的關聯性,

認為 KD 其實也是一種 Regularization。

本文藉由上述的結果提出 2 種 Teacher free disillation(Tf-KD) 的方法來增進模型效能,

而 Teacher free 的應用場景可以針對本身就已經是很龐大的模型(Resnet-101)進行優化,

如果照著以往 Teacher-student 的訓練方式的話,

我們的 Student 已經是很龐大的模型了 - Resnet 101,

這時候若在找一個更龐大的 Teacher 模型,事實上是有難度的。

透過此方法在 ImageNet 資料集提升了 0.65 %,且此方法優於 LSR。

實驗探討

EbuMb2q.png!web

umyaInJ.png!web

上面兩張圖是表達相同的事情

  • Normal KD:以往 Teacher-Student 的設定,會有個較為龐大並且準確度高的模型(Teacher)去教較為輕量且準確度中上的模型(Student),期望可以藉由 Teacher 將 Student 的準確度再往上提升一點。
  • Reversed KD(Re-KD):使用較為輕量且準確度中上的模型(Student)去教導較為龐大並且準確度高的模型(Teacher),實驗1。
  • Defective KD(De-KD):使用較為龐大並且準確度極差(10%)的模型(Teacher)去教導較為輕量且準確度中上的模型(Student),實驗2。

照邏輯來看經過 Reversed KD 以及 Defective KD 訓練後,

準確度應該會變低,

但是實驗的結果卻是相反。

Reversed KD(Re-KD)

透過 Student 來教導 Teacher,

竟然出乎意料的改善了 Teacher 的準確度!!

eaaERjY.png!web

e6rUb2N.png!web

m2AN7zJ.png!web

Defective KD(De-KD)

透過比 Student 還爛很多的 Teacher 來教導 Student,

竟然也出乎意料的改善了 Student 的準確度!!

ABFJraq.png!web

我們可以看到下圖,

紅線為 Baseline,即為單純使用該 Model 進行 Supervised 訓練的準確度,

x 軸為 Poor teacher 的準確度,

y 軸為透過 Poor teacher 進行 De-KD 所獲得的準確度,

可以發現不管 Poor teacher 多爛都還是會比原本只使用 Supervised 的方式好。

BZJ7RvJ.png!web

基於上方兩個實驗,

作者推測 KD 其實是一種 Regularization,

並且加以解釋它與 Label smoothing regularization(LSR) 的關係。

LSR:

u 通常為 1/K(類別數) 的常數。

Jju6Nr2.png!web

對於下面這步驟不知道怎麼從 Cross-entropy 轉換成 KL-divergence 的可以看 Cross Entropy, KL Divergence, and Maximum Likelihood Estimation

ABBRRbV.png!web

那因為 H(u) 的 u 為常數,因此我們可以將式子簡化成下方這樣。

yaaMju6.png!web

而 KD 的想法是針對 Teacher 以及 Student 的各個類別的輸出機率進行 KL-divergence,

希望他們越相近越好。

2uEraiR.png!web

所以這邊這樣一看,還真有點像啊~

只是 LSR 是使用了常數 u 當作 Regularization,

而 KD 是使用了 Teacher 模型的預測機率,

希望兩個模型的輸出類別機率要相像(Similarity between categories),

因此作者認為 KD 是一種可學習的 LSR 方法,而 LSR 則是一種特殊形式的 KD。

以及針對 KD 給了這番解釋:

Dark knowledge does not just include the similarity between categories, but also imposes regularization on the student training.

上方有興趣的自己去看論文,其實還有一些細節沒詳述。

方法

基於上面 Reversed KD 以及 Defective KD 的實驗,

作者推測不可靠的模型或是 T 和 S 間的類別相似度完全不同的情況下,

KD 都還是會改善模型準確度。

作者並提出了兩個簡單的想法來實現 Teacher-free KD。

  • Self-training
  • Virtual teacher(100% 準確度)

VfIvIby.png!web

Self-training(Tf-KD_self)

首先我們會使用 Supervised 的方式訓練好一個模型 - Pretrained model,

把 Pretrained model 當作 Teacher => pt,

接著再透過 KD 的方式訓練,如下:

ZRJ3QbA.png!web

2A3QriR.png!web

fMjaM32.png!web

Virtual teacher(Tf-KD_reg)

這邊挺有趣的,

我們可以使用一個 100 % 準確度的 Teacher model,

因為是訓練資料,

所以我們會知道 GT,

因此我們可以結合 LSR 的方法,

確保正解 Yi 的類別機率永遠都是比其他類別高,

也是進行一個 Regularization 的概念。

nMjMBjj.png!web

式子就會長成這樣

iqyURzy.png!web

rIVvee2.png!web

Y36vi2y.png!web

其他實驗

與 Baseline、正常的 KD 以及與 LSR 方法比較

JbqYRfF.png!web

3qqem2q.png!web

Njm2Eru.png!web

未來展望

現在都只是在 Image classification 做實驗,

對於其他更複雜的任務還需要確認它是否可行。

參考資料:

Revisit Knowledge Distillation: a Teacher-free Framework

Cross Entropy, KL Divergence, and Maximum Likelihood Estimation

Github - Teacher-free-Knowledge-Distillation


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK