Training data-efficient image transformersa& distillation through attention
https://arxiv.org/abs/2012.12877
Background
Transformer在CV領(lǐng)域已呈席卷之勢(shì)滾滾而來(lái)~
Related work and the limit
ViT(Vision Transformer)對(duì)二維圖像進(jìn)行切片并序列化作為輸入,將NLP中的Transformer結(jié)構(gòu)直接引入圖像分類任務(wù)中,取得了SOTA的精度(可怕的88.7%~)。然而,ViT的訓(xùn)練卻讓大部分人只能望而卻步。ViT選擇采用超大數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,然后再遷移到下游任務(wù)的訓(xùn)練流程,對(duì)訓(xùn)練數(shù)據(jù)的大小,服務(wù)器等資源配比的要求極高。(在ViT中,直接在ImageNet上進(jìn)行訓(xùn)練精度并不具備優(yōu)勢(shì):”do not generalize well when trained on insufficient amounts of data”。)
Novel Points
本文針對(duì)于ViT不能直接在ImageNet上進(jìn)行訓(xùn)練的問(wèn)題進(jìn)行了研究并解決了該問(wèn)題(即data-efficient training)
同時(shí),提出了一種對(duì)Transformer結(jié)構(gòu)進(jìn)行蒸餾的可行方案。
Methodology
1. Data-efficient training. 先/(ㄒoㄒ)/~~一個(gè),沒(méi)有改結(jié)構(gòu),沒(méi)有新的trick,就是一模一樣的ViT結(jié)構(gòu),通過(guò)各種超參的設(shè)置,數(shù)據(jù)增強(qiáng)的使用等實(shí)現(xiàn)了精度的提高,具體trick參考第6節(jié)。(深刻懷疑Google是真的沒(méi)做出來(lái)直接在ImageNet上訓(xùn)練的方法還是為了憑借數(shù)據(jù)和硬件形成技術(shù)壁壘所以不公開(kāi)。。。)對(duì)于DeiT的結(jié)構(gòu),可以參考ViT或Transformer原始論文進(jìn)行更詳細(xì)的研究。
2. 主要關(guān)注Distiller部分。知識(shí)蒸餾是一種利用高精度預(yù)訓(xùn)練模型的soft 輸出作為參考,來(lái)訓(xùn)練student網(wǎng)絡(luò)的模型壓縮的一種方式,一些工作認(rèn)為蒸餾有l(wèi)abel smoothing 以及消除data augmentation中的不良影響的作用,有利于student網(wǎng)絡(luò)的精度提高,具體可以參考Hinton的蒸餾原論文。DeiT旨在對(duì)ViT結(jié)構(gòu)實(shí)現(xiàn)一種可行的蒸餾方式。本文引入了一個(gè)新的distillation token,與class token以及圖像patchs進(jìn)行cat作為整體的input,通過(guò)Encoder部分迭代的Attention及FFN操作,最終輸出向teacher網(wǎng)絡(luò)的軟標(biāo)簽學(xué)習(xí)。示意圖如下:
論文中設(shè)置了對(duì)比試驗(yàn),對(duì)distillation token也與true label進(jìn)行比較實(shí)現(xiàn)更新,最終結(jié)果低于與teacher模型進(jìn)行比較,證明確實(shí)是蒸餾過(guò)程對(duì)模型的訓(xùn)練起到了作用,而不是因?yàn)閱渭兊腸lass token疊加引起的。文中有意思的一點(diǎn)是,對(duì)于class token和distillation token,它們最終所學(xué)到的向量并不完全一致,余弦相似度隨著層的加深逐漸變大,但最后一層也只能達(dá)到0.93而不是完全相同,這是可以預(yù)期的,畢竟兩者所學(xué)習(xí)的分別是true label 和 teacher的軟標(biāo)簽,本身便存在一定的差異。
此外,文中證明采用卷積網(wǎng)絡(luò)作為transformer的teacher網(wǎng)絡(luò)來(lái)進(jìn)行蒸餾效果更好,文中猜測(cè)這是由于卷積網(wǎng)絡(luò)的歸納偏差(inductive bias)在蒸餾過(guò)程中被Transformer所學(xué)習(xí)到了,因此能夠?qū)崿F(xiàn)更高的精度。
Evaluation(benchmark, experiments design)
結(jié)果如圖所示,其中可以看到幾點(diǎn):

1. 直接對(duì)ImageNet進(jìn)行訓(xùn)練,所得精度DeiT高于ViT。但需要注意ViT使用JFT預(yù)訓(xùn)練之后遷移到ImageNet上可以得到84的精度。
2. DeiT模型經(jīng)過(guò)蒸餾之后,精度變高,teacher模型采用的RegNet。
3. 在accuracy – Latency的tradeoff中相比于EfficientNet更優(yōu)。但需要說(shuō)明的是,EfficientNet雖然精度高參數(shù)少,但其運(yùn)行速率在卷積網(wǎng)絡(luò)中并不占優(yōu)。尤其是在一些特殊端側(cè),EfficientNet和Transformer的實(shí)際部署還是很大問(wèn)題。
4. 對(duì)更大分辨率進(jìn)行蒸餾,可以獲得更好的精度。對(duì)更大分辨率的圖像,位置編碼需要額外處理,文中采用了bicubic插值,具體參考第6節(jié)。
Thoughts:
1. Describe what the authors of the paper aim to accomplish, or perhaps did achieve.
????實(shí)現(xiàn)Transformer直接在ImageNet上的高精度訓(xùn)練;實(shí)現(xiàn)對(duì)Transformer結(jié)構(gòu)的蒸餾。
2. If a new approach/ technique/ method was introduced in a paper, what are the key elements of the newly proposed approach?
? ?a. 訓(xùn)練方面未加入額外的東西,就是大量的實(shí)驗(yàn),找到了最優(yōu)的trick及參數(shù)組合,,,
? ? b. 加入distillational token來(lái)學(xué)習(xí)teacher網(wǎng)絡(luò)的輸出特征,實(shí)現(xiàn)了蒸餾的效果。
3. What content within the paper is useful to you?
? ? a. JFT訓(xùn)練實(shí)在是玩不起,能夠直接在ImageNet上訓(xùn)練Transformer確實(shí)是很有幫助;
? ? a. 蒸餾的實(shí)現(xiàn)也是非常易于使用;
4. Which parts are not perfect, or need to be improved or researched further?
????a. 雖然給出了推薦的訓(xùn)練trick和參數(shù)組合,但過(guò)于復(fù)雜和敏感的訓(xùn)練,依舊不適合更廣泛地使用;
? ? b. 目前實(shí)驗(yàn)來(lái)看,蒸餾過(guò)程過(guò)于耗時(shí);
? ? c. 不知是否有關(guān)于Transformer做teacher來(lái)指導(dǎo)卷積網(wǎng)絡(luò)訓(xùn)練地工作,這可能對(duì)目前階段的實(shí)際應(yīng)用更有幫助。