DeiT:使用Attention蒸餾Transformer
題目:Training data-efficient image transformers & distillation through attention
【GiantPandaCV導(dǎo)語】Deit是一個全Transformer的架構(gòu),沒有使用任何的卷積操作。其核心是將蒸餾方法引入VIT的訓(xùn)練,引入了一種教師-學(xué)生的訓(xùn)練策略,提出了token-based distillation。有趣的是,這種訓(xùn)練策略使用卷積網(wǎng)絡(luò)作為教師網(wǎng)絡(luò)進(jìn)行蒸餾,能夠比使用transformer架構(gòu)的網(wǎng)絡(luò)作為教師取得更好的效果。

1簡介
之前的ViT需要現(xiàn)在JFT-300M大型數(shù)據(jù)集上預(yù)訓(xùn)練,然后在ImageNet-1K上訓(xùn)練才能得到出色的結(jié)果,但這借助了額外的數(shù)據(jù)。
ViT文中也表示:“do not generalize well when trained on insufficient amounts of data”數(shù)據(jù)量不足會導(dǎo)致ViT效果變差。
針對以上問題,Deit核心共享是使用了蒸餾策略,能夠僅使用ImageNet-1K數(shù)據(jù)集就就可以達(dá)到83.1%的Top1。
文章貢獻(xiàn)如下:
僅使用Transformer,不引入Conv的情況下也能達(dá)到SOTA效果。
提出了基于token蒸餾的策略,這種針對transformer的蒸餾方法可以超越原始的蒸餾方法。
Deit發(fā)現(xiàn)使用Convnet作為教師網(wǎng)絡(luò)能夠比使用Transformer架構(gòu)取得更好的效果。
2知識蒸餾
Knowledge Distillation(KD)最初被Hinton提出,與Label smoothing動機類似,但是KD生成soft label的方式是通過教師網(wǎng)絡(luò)得到的。
KD可以視為將教師網(wǎng)絡(luò)學(xué)到的信息壓縮到學(xué)生網(wǎng)絡(luò)中。還有一些工作“Circumventing outlier of autoaugment with knowledge distillation”則將KD視為數(shù)據(jù)增強方法的一種。
KD能夠以soft的方式將歸納偏置傳遞給學(xué)生模型,Deit中使用Conv-Based架構(gòu)作為教師網(wǎng)絡(luò),將局部性的假設(shè)通過蒸餾方式引入Transformer中,取得了不錯的效果。
本文提出了兩種KD:
Soft Distillation: 使用KL散度衡量教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的輸出,即Hinton提出的方法。
其中分別代表學(xué)生網(wǎng)絡(luò)的logits輸出和教師網(wǎng)絡(luò)的logits輸出。
Hard-label Distillation: 本文提出的一個KD變體,將教師網(wǎng)絡(luò)得到的hard輸出作為label,即,該方法是無需調(diào)參的。
3Deit蒸餾過程

在ViT架構(gòu)基礎(chǔ)上引入了Distillation token,其地位與Class token相等,并且參與了整體信息的交互過程。
Distillation token讓模型從教師模型輸出中學(xué)習(xí),文章發(fā)現(xiàn):
最初class token和distillation token區(qū)別很大,余弦相似度為0.06
隨著class 和 distillation embedding互相傳播和學(xué)習(xí),通過網(wǎng)絡(luò)逐漸變得相似,到最后一層,余弦相似度為0.93
4實驗
Deit模型follow了Vision Transformer的設(shè)置,訓(xùn)練策略有所不同,僅使用Linear classifier,而不是用MLP head。
本文提出了Deit的系列模型:
Deit-B:代表與ViT-B有相同架構(gòu)的模型
Deit-B|384 : 代表對Deit-B進(jìn)行finetune,分辨率提升到384
Deit-S/Deit-Ti:更小的模型,修改了head數(shù)量。

實驗1: 選取不同教師網(wǎng)絡(luò)的效果

可以發(fā)現(xiàn)使用RegNet作為教師網(wǎng)絡(luò)可以取得更好的性能表現(xiàn),Transformer可以通過蒸餾來繼承歸納偏差。
同時還可以發(fā)現(xiàn),學(xué)生網(wǎng)絡(luò)可以取得超越老師的性能,能夠在準(zhǔn)確率和吞吐量權(quán)衡方面做的更好。
PS:不太明白這里對比的時候為何不選取ViT-H(88.5%top1)作為教師模型?
實驗2: 測試不同蒸餾方法

實驗證明:hard-label distillation能夠取得更好的結(jié)果。

實驗3: 與SOTA模型進(jìn)行比較

5訓(xùn)練細(xì)節(jié)
使用truncated normal distribution來進(jìn)行初始化
soft蒸餾參數(shù):
數(shù)據(jù)增強:Autoaugment,Rand-augment,random erasing,Cutmix,Mixup,Label Smoothing等
訓(xùn)練300個epoch需要花費37個小時,使用兩個GPU

6回顧
問: 為什么不同架構(gòu)之間也可以蒸餾?蒸餾能夠?qū)⒕植啃砸雝ransformer架構(gòu)嗎?
答:教師模型能夠?qū)w納偏置以soft的方式傳遞給學(xué)生模型。
問: 性能增強歸功于蒸餾 or 復(fù)雜度數(shù)據(jù)增強方法?
答:蒸餾策略是有效的,但是相比ViT,Deit確實引入了非常多的數(shù)據(jù)增強方法,直接與ViT比較還是不夠公平的。Deit測試了多種數(shù)據(jù)增強方法,發(fā)現(xiàn)大部分?jǐn)?shù)據(jù)增強方法能夠提高性能,這還是可以理解為Transformer缺少歸納偏置,所以需要大量數(shù)據(jù)+數(shù)據(jù)增強。

