
PMLR-2021
github:https://github.com/facebookresearch/deit
文章目录
- 1、Background and Motivation
- 2、Related Work
- 3、Advantages / Contributions
- 4、Method
-
- 4.1、Vision transformer: overview
- 4.2、Distillation through attention
- 5、Experiments
-
- 5.1、Datasets and Metrics
- 5.2、Distillation
- 5.3、Transfer learning: Performance on downstream tasks
- 5.4、Training details & ablation
- 6、Conclusion(own) / Future work
- 7、label smoothing VS soft distillation
-
- 1. Label Smoothing
- 2. Soft Distillation
- 3. 数值例子
-
- Label Smoothing 目标
- 教师的 Soft Distillation 目标
- 核心区别
1、Background and Motivation
Data-efficient image Transformers (DeiT)

Background
Motivation
核心动机:让 ViT 从“依赖海量数据和算力”变成普通研究条件下也能训练的实用视觉模型。
2、Related Work
- 从 AlexNet 开始,CNN 一直是 ImageNet 分类的主流。
- 分类模型的进步也推动了检测、分割等视觉任务。
- SE、Selective Kernel、Split-Attention 等 CNN 引入了类似注意力的动态特征加权。
- CNN 与 Transformer 的混合架构已应用于分类、检测、视频和图文任务。
- ViT 证明了不使用卷积也能达到优秀性能。
- 但原始 ViT 严重依赖 JFT-300M 等大规模预训练数据,在 ImageNet-1K 上的数据效率不足。
- 教师模型通过软标签或预测结果监督学生,可实现模型压缩并改善泛化。
- 蒸馏还能传递教师的归纳偏置,例如利用 CNN 教师把局部性等视觉先验传给 Transformer。
DeiT 的研究定位
CNN 性能强但依赖卷积先验;ViT 结构通用但依赖海量数据。DeiT 希望通过数据高效训练和 Transformer 专用蒸馏,在仅使用 ImageNet-1K 的条件下缩小二者差距。
3、Advantages / Contributions
DeiT 的核心并非重新设计 ViT,而是通过更合适的训练策略和专用知识蒸馏,让纯 Transformer 不依赖海量外部数据,也能高效训练并取得强性能。
主要贡献
- 仅使用 ImageNet-1K,不使用 JFT-300M 等外部数据。
- 单机数天即可训练出具有竞争力的纯 Transformer。
- Class Token 学习真实标签。
- Distillation Token 学习教师模型的预测。
- 两者通过自注意力与图像 Patch 交互,推理时融合两个分类头。
- 组合强数据增强、Mixup、CutMix、Repeated Augmentation、Stochastic Depth、AdamW 等策略。
- 提供 DeiT-Ti、DeiT-S、DeiT-B 三种规模,并验证迁移学习效果。
主要优势
- 数据需求低:摆脱 ViT 对数亿规模预训练数据的依赖。
- 训练成本低:普通单机多 GPU 即可完成训练。
- 精度高:DeiT-B 在 384 分辨率达到 83.1%;蒸馏版在论文设置下最高达到 85.2%。
- 蒸馏有效:CNN 教师能够把局部性等视觉归纳偏置传递给 Transformer。
- 部署灵活:具有 5M、22M、86M 参数等不同规模;教师模型只在训练时需要。
- 迁移能力较好:在 CIFAR、Flowers、Cars、iNaturalist 等下游任务上具有竞争力。
本质上:DeiT = ViT 主干 + 数据高效训练配方 + Distillation Token。
4、Method
4.1、Vision transformer: overview
- Multi-head Self Attention layers (MSA)
- Transformer block for images(FFN)
- The class token
- Fixing the positional encoding across resolutions
4.2、Distillation through attention
(1)Soft distillation

L
global
=
(
1
−
λ
)
L
CE
(
ψ
(
Z
s
)
,
y
)
+
λ
τ
2
K
L
(
ψ
(
Z
s
/
τ
)
,
ψ
(
Z
t
/
τ
)
)
L_{\\text{global}}=(1-\\lambda)L_{\\text{CE}}(\\psi(Z_s),y)+\\lambda\\tau^2 KL\\big(\\psi(Z_s/\\tau),\\psi(Z_t/\\tau)\\big)
Lglobal=(1−λ)LCE(ψ(Zs),y)+λτ2KL(ψ(Zs/τ),ψ(Zt/τ))
Kullback–Leibler divergence loss (KL) and the cross-entropy (LCE)
符号含义
-
Z
s
Z_s
Zs:学生模型输出的 logits。 -
Z
t
Z_t
Zt:教师模型输出的 logits。 -
ψ
\\psi
ψ:Softmax,将 logits 转成类别概率。 -
y
y
y:真实标签。 -
λ
\\lambda
λ:控制“学习真实标签”和“模仿教师”的比例。 -
τ
\\tau
τ:温度系数,用于软化概率分布。
两个关键参数
-
λ
\\lambda
λ 越大:越重视模仿教师;λ
=
0
\\lambda=0
λ=0 就是普通监督训练。 -
τ
\\tau
τ 越大:概率分布越平缓,非正确类别的信息更容易显现。 -
τ
2
\\tau^2
τ2:补偿温度缩放造成的梯度减小,使损失尺度更稳定。
核心理解:公式让学生一边学习标准答案,一边学习教师对各类别的完整判断。
(2)Hard-label distillation
第一项:学习真实标签
y
y
y
- 学生按照数据集提供的标准答案训练。
第二项:学习教师标签
y
t
y_t
yt
- 取教师模型概率最大的类别作为一个新的“硬标签”,让学生模仿教师的最终判断。
此外,教师预测会随数据增强后的图像变化,相当于为每个增强样本动态生成伪标签。
核心理解:公式(3)把教师预测的第一名当作另一个标准答案,让学生同时学习真实标签和教师标签。
(3)Distillation token

输入序列由三部分组成:
[Class Token] + [Patch Tokens] + [Distillation Token]
两个输出头
Class Token 分支
Class Token → 分类头 → 与真实标签计算交叉熵
Distillation Token 分支
Distillation Token → 分类头 → 与教师预测计算蒸馏损失
在 DeiT 的主要方案中,教师概率最大的类别被作为硬标签。
让 Class Token 专门学习真实标签,让 Distillation Token 专门学习教师知识,同时通过 Self-Attention 相互交流。
(4)Fine-tuning with distillation
高分辨率的 fine-tuning 阶段也用了 distillation
微调流程,以从
224
×
224
224\\times224
224×224 微调到
384
×
384
384\\times384
384×384 为例:
- Patch 数 不变,但 Patch 数量增加。
- 对位置编码进行插值,使其适应 $高分辨率。
- 教师模型也要适配到
384
×
384
384\\times384
384×384。 - 教师必须基于高分辨率输入产生预测,而不是继续使用低分辨率结果。
高分辨率 Teacher 不是从头训练,也不是简单地把
224
×
224
224\\times224
224×224 Teacher 直接输入
384
×
384
384\\times384
384×384 图像,而是利用文献 [50] 的 FixRes 方法,在目标分辨率上做一次低成本微调。
Teacher-224 → 切换到 384 输入 → 高分辨率微调/校准 → Teacher-384
本质上:Teacher-384 = Teacher-224 的权重 + 384 分辨率下的 FixRes 微调与统计校准。
Q:为什么微调时还要蒸馏?
A:如果高分辨率微调阶段只使用真实标签:
- Distillation Token 不再持续学习教师知识;
- 预训练阶段获得的蒸馏优势会被削弱;
- 论文实验表明最终精度会下降下降。
(5)Classification with our approach: joint classifiers
add the softmax output by the two classifiers to make the prediction
两个分类头都能单独完成分类,但 DeiT 默认采用 Late Fusion(后期融合):
p
final
=
p
class
+
p
distill
2
p_{\\text{final}}=\\frac{p_{\\text{class}}+p_{\\text{distill}}}{2}
pfinal=2pclass+pdistill
例如:
- Class Head:猫 0.7、狗 0.2、汽车 0.1
- Distillation Head:猫 0.5、狗 0.4、汽车 0.1
- 融合结果:猫 0.6、狗 0.3、汽车 0.1
5、Experiments
ViT-B (and therefore of DeiT-B) are fixed as D = 768, h = 12 and d = D / h = 64
two smaller models(减小 head h,d = 64 是 fixed)
- DeiT-S
- DeiT-Ti

192 = 64 x 3
384 = 64 x 6
768 = 64 x 12


5.1、Datasets and Metrics
ImageNet,CIFAR-10, CIFAR-100, Oxford-102 flowers, Stanford Cars and iNaturalist-18/19

top-1 accuracy
5.2、Distillation
(1)Convnets teachers

第三列是 distillation pretrian 224,第四列是 distillation pretrain 224 + distillation finetune 384
default teacher is a RegNetY-16GF (84M parameters)
对 DeiT 来说,Teacher 与 Student 的知识互补性,比 Teacher 单纯具有更高准确率更重要;CNN 是比同类 Transformer 更有效的 Teacher。
青出于蓝而胜于蓝
(2)Comparison of distillation methods

上面三种方法没有 distillation token,Soft Distillation 称为 Usual Distillation
下面三种方法是 class token + distillation token,只改变推理时读取哪个输出,Late Fusion 最好
主要提升首先来自 Hard Distillation,Distillation Token 和双头融合在此基础上进一步增益。
(3)Agreement with the teacher & inductive bias?

D
(
A
,
B
)
=
A与B预测类别不同的样本数
总样本数
D(A,B)=\\frac{\\text{A与B预测类别不同的样本数}}{\\text{总样本数}}
D(A,B)=总样本数A与B预测类别不同的样本数
- 数值越小:两者判断越相似。
- 数值越大:两者差异越大。
- 矩阵对称,对角线都是 0。
表格是对称的,0.166 和 table3 83.4 可以对应上
看 RegNetY 的分歧率(第二行 or 第二列),普通 DeiT 与 CNN Teacher 有 13.3% 的预测不同;经过蒸馏后,Distillation Head 的分歧率降到 10.0%。
说明 Distillation Token 确实让学生的决策更接近 CNN Teacher。
Class Head 与 Distillation Head 的分歧率为:
D
(
Class
,
Distillation
)
=
0.050
D(\\text{Class},\\text{Distillation})=0.050
D(Class,Distillation)=0.050
即两个分类头在 5% 的图片上给出不同答案。这说明它们没有收敛成完全相同的分类器:
- Class Head 更侧重真实标签;
- Distillation Head 更侧重 Teacher 的判断。
融合结果更接近 Distillation Head
双头融合与两个 Head 的分歧率分别是:
- 与 Class Head:3.3%
- 与 Distillation Head:1.9%
因此,融合结果整体更接近 Distillation Head,但仍吸收了 Class Head 的部分判断,最终取得最高的 83.4% 准确率。
证明蒸馏确实改变了 DeiT 的决策,使其更接近 CNN Teacher;同时 Class Token 与 Distillation Token 保留了不同的判断,融合后得到更好的结果。
(4)Number of epochs
Soft Distillation 称为 Usual Distillation
蒸馏的方法训练的更久,效果可以进一步提升
5.3、Transfer learning: Performance on downstream tasks

ImageNet pre-training 下,ViT 的效果确实是 70+%,JFT-300M pre-training 才猛

可以看到,384 分辨率下,DeiT(ImageNet) 达到了 84.4,和 ViT(JFT-300M) 84.15 达到了相仿的水平,强
Comparison vs training from scratch
为了公平比较,作者进行了特殊处理:
- 最长训练约 7200 epochs,使模型看到的图片总次数接近 ImageNet 训练 300 epochs;
- 将 CIFAR-10 图像放大到
224
×
224
224\\times224
224×224;尽量保持与 ImageNet 相同的数据增强。
not as good as with Imagenet pre-training (98.5% vs 99.1%),
实验想阐述数据种类很少,但通过超长训练、强数据增强和蒸馏,DeiT 仍能获得较高精度。
5.4、Training details & ablation
蒸馏的参数

默认的 train recipe 
消融实验结果

(1)Initialization and hyper-parameters
Hanin B, Rolnick D. How to start training: The effect of initialization and architecture[J]. Advances in neural information processing systems, 2018, 31.
initialize the weights with a truncated normal distribution
什么是截断正态初始化?
普通正态初始化:
w
∼
N
(
0
,
σ
2
)
w\\sim\\mathcal N(0,\\sigma^2)
w∼N(0,σ2)
截断正态初始化则限制权重范围,例如:
w
∼
N
(
0
,
σ
2
)
,
∣
w
∣
≤
2
σ
w\\sim\\mathcal N(0,\\sigma^2),\\quad |w|\\leq2\\sigma
w∼N(0,σ2),∣w∣≤2σ
如果采样值超出范围,通常会重新采样,而不是简单裁剪到边界。
它的直观作用是:
- 保留大部分接近 0 的随机权重;
- 去除极端大权重;
- 降低初始激活、梯度或 Attention 分数突然过大的风险。
label smoothing
Class Token → Class Head → logits → 与平滑后的真实标签计算损失
(2)Data-Augmentation

Auto-Augment / Rand-Augment / random erasing
transformers require a strong data augmentation
(3)Regularization & Optimizers

Transformers are sensitive to the setting of optimization hyper-parameters

repeated augmentation
简单例子
假设 Batch Size 为 12,重复次数
m
=
3
m=3
m=3:
- 普通采样:12 张不同原图,各增强一次;
- RA:4 张不同原图,每张产生 3 个不同增强版本。
定义的 epoch 只覆盖约三分之一的不同原图,但处理的增强样本总量与普通 epoch 接近(with 3 repetitions, we only see one third of the images during a single epoch)。

这些增强版本可以使用不同的:
- RandomResizedCrop;
- RandAugment;
- Random Erasing;
- Mixup/CutMix 等。
RA 只规定“同一图片重复采样多次”,不规定具体采用哪种增强操作。
(4)Exponential Moving Average (EMA)
训练模型经过第
t
t
t 次优化后,参数为
θ
t
\\theta_t
θt,EMA 参数更新为:
θ
ˉ
t
=
β
θ
ˉ
t
−
1
+
(
1
−
β
)
θ
t
\\bar{\\theta}t=\\beta\\bar{\\theta}{t-1}+(1-\\beta)\\theta_t
θˉt=βθˉt−1+(1−β)θt
其中:
-
θ
t
\\theta_t
θt:AdamW 正常更新的当前模型; -
θ
ˉ
t
\\bar{\\theta}_t
θˉt:EMA 模型; -
β
\\beta
β:衰减系数,DeiT 官方代码默认使用 0.99996。
small gains
vanish after fine-tuning
(5)Fine-tuning at different resolution

作者 position embedding 插值的时候用的是 Bicubic,而不是 ViT 论文中的 Bilinear
为什么选择 Bicubic,而不是 Bilinear?
Bilinear Interpolation 使用附近四个位置向量的加权平均:
p
′
=
∑
i
α
i
p
i
,
α
i
≥
0
,
∑
i
α
i
=
1
p'=\\sum_i\\alpha_i p_i,\\qquad \\alpha_i\\geq0,\\quad\\sum_i\\alpha_i=1
p′=i∑αipi,αi≥0,i∑αi=1
如果相邻位置向量方向不同,平均时会相互抵消,使新向量的
L
2
L_2
L2 范数变小。
例如:
p
1
=
[
1
,
0
]
,
p
2
=
[
0
,
1
]
p_1=[1,0],\\qquad p_2=[0,1]
p1=[1,0],p2=[0,1]
线性平均得到:
p
′
=
[
0.5
,
0.5
]
p'=[0.5,0.5]
p′=[0.5,0.5]
原向量范数都是 1,而新向量范数为:
∣
p
′
∣
2
=
0.5
≈
0.707
|p'|_2=\\sqrt{0.5}\\approx0.707
∣p′∣2=0.5
≈0.707
预训练模型已经适应原位置编码的数值尺度。大量新位置向量范数突然变小,会造成输入分布偏移;
如果直接使用这种低范数位置编码而不充分适配,准确率会明显下降。
Bicubic 使用周围
4
×
4
4\\times4
4×4 的位置,并通过三次核计算权重。其权重不一定都是正数,因此不像 Bilinear 那样只做凸平均,经验上能够更好地保持位置编码的幅值和局部变化。
需要注意:Bicubic 并不从数学上严格保证范数不变;“近似保持范数”是 DeiT 作者在该场景下的经验性观察。
(6)Training time
DeiT-B 8 GPU
| 单节点 | 53 小时 |
| 两个节点 | 37 小时 |
小模型的训练成本
- DeiT-S:22M 参数;
- DeiT-Ti:5M 参数。
两者使用 4 张 GPU,均可在 3 天以内完成训练。
如果要将 DeiT-B 从 224 微调到 384:
- 微调 25 epochs;
- 单节点 8 张 GPU;
- 额外需要约 20 小时。
224预训练 53小时 + 384微调 20小时 ≈ 73小时
DeiT 使用 LayerNorm,不依赖 BatchNorm 的 Batch 统计量。
因此,高分辨率输入导致显存不足时,可以减小每张 GPU 的 Batch Size,而不必担心 BatchNorm 统计不稳定。
6、Conclusion(own) / Future work
Conclusion
Future Work
- DeiT 当前大量沿用了为 CNN 设计的数据增强和正则化方法;
- 未来可以研究专门适配 Transformer 的数据增强策略;
- 进一步探索自动学习的数据增强方法,可能继续提升视觉 Transformer 的数据效率和性能。
核心展望:DeiT 已证明 Transformer 可以追平 CNN;下一步应设计真正面向 Transformer 的训练与增强方法。
- Hard Distillation,Distillation Token,Late Fusion
- 截断正态初始化
- repeated augmentation
- position embedding 插值的时候用的是 Bicubic
- teacher 也是 imagenet-pretrained 的
- 用了 label smoothing 和 distillation
- teacher 是 CNN 不是 transformer
7、label smoothing VS soft distillation
两者都把监督信号从 one-hot 硬标签变成概率分布,因此看起来很像;但关键区别是:
Label Smoothing 的软分布是人工固定的;Soft Distillation 的软分布由教师针对每个样本动态产生。
1. Label Smoothing
设类别数为
K
K
K,真实类别为
y
y
y:
q
k
L
S
=
{
1
−
ϵ
,
k
=
y
ϵ
/
(
K
−
1
)
,
k
≠
y
q_k^{LS}= \\begin{cases} 1-\\epsilon, & k=y\\\\ \\epsilon/(K-1), & k\\neq y \\end{cases}
qkLS={1−ϵ,ϵ/(K−1),k=yk=y
损失为:
L
L
S
=
−
∑
k
=
1
K
q
k
L
S
log
p
k
s
L_{LS}=-\\sum_{k=1}^{K}q_k^{LS}\\log p_k^s
LLS=−k=1∑KqkLSlogpks
它把少量概率平均分给所有错误类别,主要目的是防止模型过度自信。
2. Soft Distillation
教师产生的软标签为:
q
k
T
=
softmax
(
Z
t
/
τ
)
k
q_k^{T}=\\operatorname{softmax}(Z_t/\\tau)_k
qkT=softmax(Zt/τ)k
DeiT 公式(2)的蒸馏部分利用 KL 散度,让学生的软化分布接近教师分布:
L
K
D
=
(
1
−
λ
)
L
C
E
+
λ
τ
2
K
L
(
q
T
,
p
τ
s
)
L_{KD}=(1-\\lambda)L_{CE}+\\lambda\\tau^2 KL(q^T,p_\\tau^s)
LKD=(1−λ)LCE+λτ2KL(qT,pτs)
这里的错误类别概率并不平均,而是反映教师学到的类别关系。
3. 数值例子
假设有三个类别:
- 猫
- 狗
- 汽车
真实标签是“猫”,取
ϵ
=
0.1
\\epsilon=0.1
ϵ=0.1。
Label Smoothing 目标
q
L
S
=
[
0.90
,
0.05
,
0.05
]
q^{LS}=[0.90,\\ 0.05,\\ 0.05]
qLS=[0.90, 0.05, 0.05]
“狗”和“汽车”被平均对待。
教师的 Soft Distillation 目标
假设教师输出:
q
T
=
[
0.60
,
0.35
,
0.05
]
q^T=[0.60,\\ 0.35,\\ 0.05]
qT=[0.60, 0.35, 0.05]
教师认为这张猫的图片与狗比较相似,而与汽车几乎无关。
假设学生当前输出为:
p
s
=
[
0.70
,
0.20
,
0.10
]
p^s=[0.70,\\ 0.20,\\ 0.10]
ps=[0.70, 0.20, 0.10]
对于交叉熵,学生 Logit 的梯度方向可表示为
p
s
−
q
p^s-q
ps−q:
| 猫 | 0.70 | 0.90 | -0.20 | 0.60 | +0.10 |
| 狗 | 0.20 | 0.05 | +0.15 | 0.35 | -0.15 |
| 汽车 | 0.10 | 0.05 | +0.05 | 0.05 | +0.05 |
梯度下降时:
- Label Smoothing:继续提高“猫”,同时压低“狗”和“汽车”。
- Soft Distillation:适当降低“猫”,提高“狗”,因为教师认为“猫”和“狗”存在相似性。
核心区别
| 人工构造目标分布 | 教师生成目标分布 |
| 所有错误类别通常平均分配 | 不同错误类别具有不同概率 |
| 所有样本采用相同平滑规则 | 每个样本的分布不同 |
| 主要抑制过度自信 | 同时传递类别关系和教师知识 |
| 不需要教师模型 | 训练时需要教师模型 |
Label Smoothing 只告诉学生“不要太自信”;Soft Distillation 还告诉学生“这个样本除了像猫,也有些像狗”。
更多论文解读,请参考 【Paper Reading】




