文献编号:6
文献著作信息:
Training data-efficient image transformers & distillation through attention
https://github.com/facebookresearch/deit/blob/main/README_deit.md
https://arxiv.org/pdf/2012.12877.pdf
2021
我的收获:
最好使用较低的训练分辨率,并以更大的分辨率微调网络Fixing the train-test resolution discrepancy
我的问题:
找出
DeiT[34]证明了ViT不需要大型数据集,甚至可以获得更好的结果,但必须使用知识蒸馏[13]进行训练。的原文【似乎没找到】本文略读
ViT,使用预训练的DeiT权重,是我们提出的快速高效STR(称为ViTSTR【文献编号5】)的基础
研究主题:
vision transformers
convolution-free transformers
teacher-student transformers
研究问题:
使用师生模型蒸馏
把大型transformer变成小型且准确度高的模型
研究原因:
大模型的vision transformer 显示了使用
研究设计:
只用Imagenet训练,单机不多于三天。86M参数的模型
研究结论:
DeiT,它是一种不需要大量数据进行训练的图像转换器,得益于改进的培训,尤其是一种新的蒸馏程序。
在近十年的时间里,卷积神经网络在架构和优化方面都进行了优化,包括通过广泛的架构搜索,这很容易出现过拟合,例如对于EfficientNets[2003.08237] Fixing the train-test resolution discrepancy: FixEfficientNet (arxiv.org)
来说就是如此
带问题看论文:
研究发现:
知识蒸馏
由Hinton等人提出的知识蒸馏(KD)是指学生模型利用来自强大教师网络的“软”标签的训练范式。这是教师的softmax函数的输出向量,而不仅仅是分数的最大值,它给出了一个“硬”标签。这样的训练提高了学生模型的表现(或者,它可以被看作是一种将教师模型压缩成一个更小的模型-学生)
一方面,教师的软标签会产生类似于标签平滑的效果
另一方面,如Wei et al.[54]所示,教师的监督考虑了数据增强的影响,有时会导致真实标签与图像之间的错位。例如,让我们考虑一个带有“猫”标签的图像,它代表一个大的风景和角落里的一只小猫。如果猫不再在数据增强的作物上,它会隐式地改变图像的标签。
[归纳偏置可参考]Relational inductive biases, deep learning, and graph network - 知乎 (zhihu.com)
CNN的归纳偏置是空间不变性(卷积核范围内的在一起计算),卷积核权重共享
RNN的归纳偏置是序列顺序相关,RNN参数权重共享
KD可以将归纳偏差[1]以一种温和的方式转移到学生模型中,使用教师模型,其中它们将以一种艰难的方式合并。例如,通过使用卷积模型作为教师,在转换器模型中诱导由于卷积而产生的偏差可能是有用的。在我们的论文中,我们研究了一个变压器学生或变压器教师的蒸馏。介绍了一种新的变压器蒸馏工艺,并说明了该工艺的优越性。
在作者的论文中,作者研究一个变压器学生的蒸馏或卷积或变压器教师。介绍了一种新的变压器蒸馏工艺,并说明了其优越性
多头自注意力
注意机制是基于可训练的联想记忆与(键,值)向量对
查询向量q∈Rd使用内积匹配k个关键向量集合(打包成一个矩阵k∈Rk×d)。
这些内积被缩放用softmax函数归一化,得到k个权值。注意力的输出是一组k值向量(打包成V∈Rk×d)的加权和。对于一个包含N个查询向量的序列(打包到Q∈RN ×d),它产生一个输出矩阵(大小为N ×d)
其中Softmax函数应用于输入矩阵的每一行,√d项提供了适当的标准化。
在[attention is all you need]中,提出了一个Self-attention层。查询,键和值矩阵本身是由N个输入向量序列计算出来的(打包到x∈RN ×D): Q = XWq, K = XWk, V = XWv,使用线性变换Wq, Wk, Wv与约束k = N,这意味着注意力位于所有输入向量之间。
最后,通过考虑h个注意“头”,即应用于输入的自我注意函数,定义了多头注意层。每个头部提供大小为N×d的序列。这些h序列被重新排列成×dh序列,该序列由线性层重新投影到N×D
参考代码(多头)自注意力机制的PyTorch实现_I am zzxn的博客-CSDN博客_pytorch 多头自注意力
参考图片(多头自注意力)Multi-headed Self-attention- 知乎 (zhihu.com)
图像transformer
为了让变压器处理图像,我们的工作建立在VIT模型[15]之上。它是一个简单而优雅的架构,可以处理输入图像,就像它们是一系列输入令牌一样。将固定大小的输入RGB图像分解成一批16×16像素(N=14×14)的固定大小的N个块。每个面片都投影有一个保持其总尺寸3×16×16=768的线性层
上述变换块不随块嵌入的顺序而改变,因此不考虑它们的相对位置。位置信息被合并为固定的[52]或可训练的[18]位置编码。它们被添加到第一个变压器块之前的补丁令牌,然后被馈送到变压器块的堆栈。
类令牌The class token
The class token是一个可训练的向量,附加到第一层之前的补丁令牌上,穿过变换器层,然后与线性层一起投影以预测类别。这个类标记继承自NLP[BERT],并且不同于计算机视觉中用来预测类的典型池层。因此,转换器处理一批维度为D的(N+1)个令牌,其中只使用类向量来预测输出。这种结构迫使自我注意在补丁标记和类标记之间传播信息:在训练时,监督信号仅来自类嵌入,而补丁标记是模型的唯一变量输入
固定跨分辨率的位置编码
Touvron等人[50]表明,最好使用较低的训练分辨率,并以更大的分辨率微调网络。这加快了完整的训练,并提高了流行的数据增强方案下的准确性。在增加输入图像的分辨率时,我们保持补丁大小相同,因此输入补丁的数量 N 确实发生了变化。由于变压器块和类令牌的架构,不需要修改模型和分类器来处理更多的令牌。相比之下,需要调整位置嵌入,因为其中 N 个,每个补丁一个。Dosovitskiy等人[15]在改变分辨率时插值位置编码,并证明该方法适用于后续的微调阶段