Training data-efficient image transformersa& distillation through attention
https://arxiv.org/abs/2012.12877
Background
Transformer在CV领域已呈席卷之势滚滚而来~
Related work and the limit
ViT(Vision Transformer)对二维图像进行切片并序列化作为输入,将NLP中的Transformer结构直接引入图像分类任务中,取得了SOTA的精度(可怕的88.7%~)。然而,ViT的训练却让大部分人只能望而却步。ViT选择采用超大数据集进行预训练,然后再迁移到下游任务的训练流程,对训练数据的大小,服务器等资源配比的要求极高。(在ViT中,直接在ImageNet上进行训练精度并不具备优势:”do not generalize well when trained on insufficient amounts of data”。)
Novel Points
本文针对于ViT不能直接在ImageNet上进行训练的问题进行了研究并解决了该问题(即data-efficient training)
同时,提出了一种对Transformer结构进行蒸馏的可行方案。
Methodology
1. Data-efficient training. 先/(ㄒoㄒ)/~~一个,没有改结构,没有新的trick,就是一模一样的ViT结构,通过各种超参的设置,数据增强的使用等实现了精度的提高,具体trick参考第6节。(深刻怀疑Google是真的没做出来直接在ImageNet上训练的方法还是为了凭借数据和硬件形成技术壁垒所以不公开。。。)对于DeiT的结构,可以参考ViT或Transformer原始论文进行更详细的研究。
2. 主要关注Distiller部分。知识蒸馏是一种利用高精度预训练模型的soft 输出作为参考,来训练student网络的模型压缩的一种方式,一些工作认为蒸馏有label smoothing 以及消除data augmentation中的不良影响的作用,有利于student网络的精度提高,具体可以参考Hinton的蒸馏原论文。DeiT旨在对ViT结构实现一种可行的蒸馏方式。本文引入了一个新的distillation token,与class token以及图像patchs进行cat作为整体的input,通过Encoder部分迭代的Attention及FFN操作,最终输出向teacher网络的软标签学习。示意图如下:
论文中设置了对比试验,对distillation token也与true label进行比较实现更新,最终结果低于与teacher模型进行比较,证明确实是蒸馏过程对模型的训练起到了作用,而不是因为单纯的class token叠加引起的。文中有意思的一点是,对于class token和distillation token,它们最终所学到的向量并不完全一致,余弦相似度随着层的加深逐渐变大,但最后一层也只能达到0.93而不是完全相同,这是可以预期的,毕竟两者所学习的分别是true label 和 teacher的软标签,本身便存在一定的差异。
此外,文中证明采用卷积网络作为transformer的teacher网络来进行蒸馏效果更好,文中猜测这是由于卷积网络的归纳偏差(inductive bias)在蒸馏过程中被Transformer所学习到了,因此能够实现更高的精度。
Evaluation(benchmark, experiments design)
结果如图所示,其中可以看到几点:
1. 直接对ImageNet进行训练,所得精度DeiT高于ViT。但需要注意ViT使用JFT预训练之后迁移到ImageNet上可以得到84的精度。
2. DeiT模型经过蒸馏之后,精度变高,teacher模型采用的RegNet。
3. 在accuracy – Latency的tradeoff中相比于EfficientNet更优。但需要说明的是,EfficientNet虽然精度高参数少,但其运行速率在卷积网络中并不占优。尤其是在一些特殊端侧,EfficientNet和Transformer的实际部署还是很大问题。
4. 对更大分辨率进行蒸馏,可以获得更好的精度。对更大分辨率的图像,位置编码需要额外处理,文中采用了bicubic插值,具体参考第6节。
Thoughts:
1. Describe what the authors of the paper aim to accomplish, or perhaps did achieve.
实现Transformer直接在ImageNet上的高精度训练;实现对Transformer结构的蒸馏。
2. If a new approach/ technique/ method was introduced in a paper, what are the key elements of the newly proposed approach?
a. 训练方面未加入额外的东西,就是大量的实验,找到了最优的trick及参数组合,,,
b. 加入distillational token来学习teacher网络的输出特征,实现了蒸馏的效果。
3. What content within the paper is useful to you?
a. JFT训练实在是玩不起,能够直接在ImageNet上训练Transformer确实是很有帮助;
a. 蒸馏的实现也是非常易于使用;
4. Which parts are not perfect, or need to be improved or researched further?
a. 虽然给出了推荐的训练trick和参数组合,但过于复杂和敏感的训练,依旧不适合更广泛地使用;
b. 目前实验来看,蒸馏过程过于耗时;
c. 不知是否有关于Transformer做teacher来指导卷积网络训练地工作,这可能对目前阶段的实际应用更有帮助。