DeiT(2021):训练数据高效的图像Transformer & 通过注意力机制进行蒸馏,ViT的典型创新

DeiT(2021):训练数据高效的图像Transformer & 通过注意力机制进行蒸馏,ViT的典型创新

导出时间:2025/11/23 20:24:03

1、研究背景

  1. 卷积神经网络(CNN)的统治地位 在深度学习图像任务中,卷积神经网络(CNN)一直是“王者”,比如 ResNet、EfficientNet。CNN 的优势是能很好地捕捉局部特征,但它的建模能力受限于卷积操作的局部性,很难直接捕捉全局依赖关系。
  2. Transformer 的跨界尝试 Transformer 在自然语言处理(NLP)中一炮而红(BERT、GPT)。后来 ViT(Vision Transformer)把这个思想引入图像领域:把图片切成一个个“小块”(patch),像处理句子里的词一样交给 Transformer。这种方法能天然捕捉全局特征,在大规模数据上性能超过 CNN。
  3. ViT 的瓶颈 但是,ViT 需要海量数据和超大算力才能训练好。原始的 ViT 是在 JFT-300M(3亿张图像) 这种超大私有数据集上训练的,这对大多数科研人员和普通实验室来说是不现实的。如果只用 ImageNet 1k 这样规模的数据集,ViT 的泛化能力就很差,效果远不如 CNN。
  4. PVT 的思路 PVT(Pyramid Vision Transformer)尝试借鉴 CNN 的“金字塔特征金字塔”设计,让 Transformer 更适合下游密集预测任务(如检测和分割)。但 PVT 主要改进了网络结构,对训练数据依赖的问题并没有彻底解决

2、研究动机

DeiT 的出发点很直接: 👉 如何让普通研究者在有限数据(如 ImageNet 1k)和有限算力(单机多卡)条件下,也能成功训练高性能的 Transformer?
  1. 数据效率 不依赖超大规模数据集,只用 ImageNet 这样的公开数据集,也能训练出和 CNN 一样好,甚至更好的 Transformer。
  2. 训练效率 原始 ViT 要几周才能训练完,DeiT 的目标是:在单机(8 GPU)上,2~3天就能训好一个大模型
  3. 知识蒸馏的新玩法 传统知识蒸馏是“教师教学生”,但主要传递输出概率。DeiT 提出了 “蒸馏标记(distillation token)”:把“老师的知识”直接作为一个新的 token 输入网络,让 Transformer 自己通过注意力机制来学习。这种方法让数据利用效率更高,特别是当“老师”是 CNN 时,学生(DeiT)能学到 CNN 的强归纳偏置,效果更好。
  4. 实际价值
    • 让 Transformer 不再只是“大厂的奢侈品”,科研小白和普通实验室也能用。
    • 证明了 Transformer 在图像任务中,不仅能超越 CNN,而且能做到 高效、实用、可迁移

✅ 总结一句话: DeiT 的动机就是要解决 ViT “又饿又挑食”的问题,让 Transformer 既能吃小数据,也能训得快,还能学得好,从而真正成为 CNN 的平替甚至超越者。
特点
ViT (Vision Transformer)
PVT (Pyramid Vision Transformer)
DeiT (Data-efficient Image Transformer)
提出时间
2020 (Dosovitskiy)
2021 (Wang 等)
2021 (Touvron 等)
主要目标
将 NLP Transformer 直接应用到图像分类
改进 ViT,使其适合密集预测任务(检测、分割)
解决 ViT 的数据和算力依赖问题,让 Transformer 更高效可用
输入方式
将整张图像切分为固定大小的 patch(如 16×16)
引入 金字塔结构,分层处理特征,类似 CNN 的多尺度特征
输入同 ViT,但在训练方法上引入蒸馏标记和数据增强
关键设计
- Class token 预测类别- 大量数据训练(JFT-300M)
- 金字塔层次结构- 可变分辨率特征- 更适合检测/分割任务
- 蒸馏标记(Distillation Token)- CNN 作为教师模型- 强力数据增强与优化策略
对数据依赖
极度依赖海量数据
比 ViT 略好,但仍需较多数据
数据高效,只需 ImageNet-1k 即可达到 SOTA 水平
计算资源需求
超算级别(TPU,数周训练)
相对较低,但仍不轻量
单机 8 GPU,2–3 天可完成
性能表现
大数据下能超过 CNN
在检测/分割等下游任务优于 ViT
在分类上超越 CNN(ResNet、EfficientNet),迁移性强
代表性实验结果
ViT-B/16 在 ImageNet 上 ~77.9%(小数据时效果差)
在 COCO 检测/分割任务上显著优于 ViT
DeiT-B 在 ImageNet 上 85.2% top-1 准确率(仅用 ImageNet 训练)
适用场景
大厂 + 大数据 + 超算
目标检测、分割等密集预测任务
科研小白、实验室环境、快速上手分类/迁移任务

3、DeiT 的核心创新点

1. 纯 Transformer 也能行,不靠卷积

  • 以前的问题: 想让 Transformer 学会看图,需要给它看 几亿张图,像个“只会刷题的学霸”,没题就不会做。对普通实验室来说,这是根本做不到的。
  • DeiT 的改进: 作者找到了一套“高效学习方法”:用数据增强、正则化、优化器调优,就像帮学生总结错题本、合理安排作息,结果只用 ImageNet 100 万张图 + 一台普通电脑,几天就能学好。
  • 通俗理解: 👉 ViT 是“海量题海战术的学霸”,DeiT 是“聪明用方法的学霸”,少刷题也能拿第一。

2. 蒸馏 token:让学生多一个学习窗口

  • 以前的蒸馏: 学生(Transformer)只模仿老师最后给出的答案(比如概率分布),像是背老师的作业答案。
  • DeiT 的新招: 在 Transformer 里加了一个 新的学习位置——蒸馏 token
    • 类别 token = 正常学习课本知识(真实标签);
    • 蒸馏 token = 专门学习老师的解题思路(教师模型的预测)。
  • 通俗理解: 👉 就像学生在课堂上,一只耳朵听老师讲课(class token),另一只耳朵还戴着耳机听家教老师讲解(distill token)。这样学得更快更全面。

3. 请 CNN 当老师,比请 Transformer 当老师更靠谱

  • 实验发现: 如果老师还是 Transformer,本来就缺乏“直觉”,教出来的学生进步有限。 但如果老师换成 CNN,效果更好。因为 CNN 天生有“直觉”:
    • 能快速发现局部模式(比如眼睛、鼻子、边缘);
    • 还能自动具备平移不变性(猫挪到左边还是猫)。
  • DeiT 的妙处: 学生(Transformer)通过蒸馏 token,从 CNN 老师那“偷学”这些直觉,从而补上自己的短板。
  • 通俗理解: 👉 Transformer 是“理论派学生”,CNN 是“经验派老师”。理论派跟着经验派学,就能又懂公式又会解题。


4、DeiT 的模型网络结构

image.png

1. 输入部分

  • Patch Tokens(方形小格子) 输入图像会被切分成多个小块(patch),每个小块经过线性投影后形成一个 token,整体就是一串 patch tokens。
  • Class Token(左边圆形带C的标记) 这是从 ViT 继承来的特殊 token,用来收集全局信息,最终用于分类。
  • Distillation Token(右边圆形带D的标记) 这是 DeiT 的创新点!
    • 额外引入的一个 token,用来学习“教师模型”的知识。
    • 它和 class token 一样,会和所有 patch tokens 一起进入 Transformer 编码器。
👉 输入序列 = [class token] + [patch tokens] + [distillation token]

2. Transformer 编码器堆叠

  • 中间黄色/蓝色叠加的模块,表示多个 Transformer Block
  • 每个 block 包含:
    • Self-Attention(自注意力):所有 token(class、patch、distill)彼此交互,互相交换信息;
    • FFN(前馈网络):对每个 token 独立进行非线性映射;
    • 残差连接 + LayerNorm,保证训练稳定。
  • 经过多层堆叠后:
    • Class token 会聚合全局图像信息;
    • Distill token 会聚合教师模型传递的知识;
    • Patch tokens 提供底层局部特征支持。

3. 输出部分

  • Class Token → 分类头 → LCEL_{CE}LCE
    • 这个输出对应真实标签(ground truth)。
    • Loss 函数是 交叉熵损失(Cross Entropy, LCEL_{CE}LCE)
  • Distillation Token → 蒸馏头 → LteacherL_{teacher}Lteacher
    • 这个输出对应教师模型的预测(teacher label)。
    • Loss 函数是 蒸馏损失(LteacherL_{teacher}Lteacher),可以是 soft label 蒸馏或 hard label 蒸馏。
👉 训练时: 两个 loss 一起优化,学生(DeiT)既学真实标签,也学教师知识。 👉 推理时: 可以选择两个头结果平均,得到最终预测。

5、DeiT 模型的重大缺陷

虽然 DeiT 解决了 ViT 对“大数据 + 超算”的依赖,但它依然有一些核心缺陷:

1. 缺乏卷积归纳偏置

  • DeiT 纯用 Transformer,没有 CNN 那种“局部性 + 平移不变性”的先验。
  • 结果:
    • 对小数据集或细粒度任务不够友好;
    • 收敛速度慢,容易过拟合。

2. 过度依赖数据增强

  • DeiT 的训练很大程度依赖 强力数据增强(RandAugment、Mixup、CutMix 等)。
  • 如果换到 医学影像、遥感等小众数据集,这些增强方式未必适用,性能容易下滑。

3. 蒸馏机制的局限

  • 蒸馏 token 是创新,但依赖 教师模型的质量
    • 教师如果是弱 CNN,学生(DeiT)也学不到好的归纳偏置;
    • 如果任务和教师差异大,蒸馏信息可能失效甚至误导。

4. 下游任务泛化不足

  • DeiT 在 分类 上很强,但在 检测、分割 等任务表现一般。
  • 原因:缺少 多尺度特征建模(CNN 的金字塔特征在这类任务中很重要)。

6、 基于 DeiT 的改进模型

很多后续工作针对上述问题进行了改进:

1. 增强归纳偏置

  • ConViT (2021) 在注意力中加入 卷积引导门控机制,让模型既能学全局,又保留 CNN 的局部先验。
  • LeViT (2021) 结合卷积和 Transformer 的优点,结构更轻量。

2. 多尺度建模

  • PVT (2021) 引入 金字塔结构,获得多尺度特征,更适合目标检测、分割。
  • Swin Transformer (2021) 提出 滑动窗口注意力,既保留局部性,又逐层扩大感受野,成为检测/分割新基线。

3. 高效轻量化

  • MobileViT (2022) 把 ViT 带到移动端,结合轻量卷积和 Transformer。
  • EfficientFormer (2022) 优化注意力计算,专注于速度和部署。

4. 改进蒸馏与训练方式

  • Self-Distillation Transformer 不依赖外部教师,靠自己不同层之间互相蒸馏;
  • Intermediate Feature Distillation 不只是学教师的输出,还学中间特征,让蒸馏更稳定。

🌟 总结

DeiT 的重大缺陷主要是:
  1. 缺乏卷积归纳偏置;
  2. 对数据增强依赖过大;
  3. 蒸馏效果依赖教师质量;
  4. 泛化到下游任务不足。
后续改进方向可以归纳为四类: 👉 结构改进(ConViT, LeViT) 👉 多尺度设计(PVT, Swin) 👉 轻量高效(MobileViT, EfficientFormer) 👉 蒸馏与训练策略优化(Self-Distillation 等)