DL-Paper精读:DeiT

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来指导卷积网络训练地工作,这可能对目前阶段的实际应用更有帮助。

你可能感兴趣的:(DL-Paper精读:DeiT)