DeiT:使用Attention蒸馏Transformer

news/2024/7/19 9:13:21 标签: transformer, 深度学习, 神经网络

题目:Training data-efficient image transformers & distillation through attention

【GiantPandaCV导语】Deit是一个全Transformer的架构,没有使用任何的卷及操作。其核心是将蒸馏方法引入VIT的训练,引入了一种教师-学生的训练策略,提出了token-based distillation。有趣的是,这种训练策略使用卷积网络作为教师网络进行蒸馏,能够比使用transformer架构的网络作为教师取得更好的效果。

简介

之前的ViT需要现在JFT-300M大型数据集上预训练,然后在ImageNet-1K上训练才能得到出色的结果,但这借助了额外的数据。

ViT文中也表示:“do not generalize well when trained on insufficient amounts of data”数据量不足会导致ViT效果变差。

针对以上问题,Deit核心共享是使用了蒸馏策略,能够仅使用ImageNet-1K数据集就就可以达到83.1%的Top1。

文章贡献如下:

  • 仅使用Transformer,不引入Conv的情况下也能达到SOTA效果。

  • 提出了基于token蒸馏的策略,这种针对transformer的蒸馏方法可以超越原始的蒸馏方法。

  • Deit发现使用Convnet作为教师网络能够比使用Transformer架构取得更好的效果。

知识蒸馏

Knowledge Distillation(KD)最初被Hinton提出,与Label smoothing动机类似,但是KD生成soft label的方式是通过教师网络得到的。

KD可以视为将教师网络学到的信息压缩到学生网络中。还有一些工作“Circumventing outlier of autoaugment with knowledge distillation”则将KD视为数据增强方法的一种。

KD能够以soft的方式将归纳偏置传递给学生模型,Deit中使用Conv-Based架构作为教师网络,将局部性的假设通过蒸馏方式引入Transformer中,取得了不错的效果。

本文提出了两种KD:

  • Soft Distillation: 使用KL散度衡量教师网络和学生网络的输出,即Hinton提出的方法。

L global  = ( 1 − λ ) L C E ( ψ ( Z s ) , y ) + λ τ 2 K L ( ψ ( Z s / τ ) , ψ ( Z t / τ ) ) \mathcal{L}_{\text {global }}=(1-\lambda) \mathcal{L}_{\mathrm{CE}}\left(\psi\left(Z_{\mathrm{s}}\right), y\right)+\lambda \tau^{2} \mathrm{KL}\left(\psi\left(Z_{\mathrm{s}} / \tau\right), \psi\left(Z_{\mathrm{t}} / \tau\right)\right) Lglobal =(1λ)LCE(ψ(Zs),y)+λτ2KL(ψ(Zs/τ),ψ(Zt/τ))

其中 Z s , Z t Z_s,Z_t ZsZt分别代表学生网络的logits输出和教师网络的logits输出。

  • Hard-label Distillation: 本文提出的一个KD变体,将教师网络得到的hard输出作为label,即 y t = a r g m a x c Z t ( c ) y_t=argmax_cZ_t(c) yt=argmaxcZt(c),该方法是无需调参的。

L global  hardDistill  = 1 2 L C E ( ψ ( Z s ) , y ) + 1 2 L C E ( ψ ( Z s ) , y t ) \mathcal{L}_{\text {global }}^{\text {hardDistill }}=\frac{1}{2} \mathcal{L}_{\mathrm{CE}}\left(\psi\left(Z_{s}\right), y\right)+\frac{1}{2} \mathcal{L}_{\mathrm{CE}}\left(\psi\left(Z_{s}\right), y_{\mathrm{t}}\right) Lglobal hardDistill =21LCE(ψ(Zs),y)+21LCE(ψ(Zs),yt)

Deit蒸馏过程

在ViT架构基础上引入了Distillation token,其地位与Class token相等,并且参与了整体信息的交互过程。

Distillation token让模型从教师模型输出中学习,文章发现:

  • 最初class token和distillation token区别很大,余弦相似度为0.06

  • 随着class 和 distillation embedding互相传播和学习,通过网络逐渐变得相似,到最后一层,余弦相似度为0.93

实验

Deit模型follow了Vision Transformer的设置,训练策略有所不同,仅使用Linear classifier,而不是用MLP head。

本文提出了Deit的系列模型:

  • Deit-B:代表与ViT-B有相同架构的模型

  • Deit-B|384 : 代表对Deit-B进行finetune,分辨率提升到384

  • Deit-S/Deit-Ti:更小的模型,修改了head数量。

实验1: 选取不同教师网络的效果

可以发现使用RegNet作为教师网络可以取得更好的性能表现,Transformer可以通过蒸馏来继承归纳偏差。

同时还可以发现,学生网络可以取得超越老师的性能,能够在准确率和吞吐量权衡方面做的更好。

PS:不太明白这里对比的时候为何不选取ViT-H(88.5%top1)作为教师模型?

实验2: 测试不同蒸馏方法

实验证明:hard-label distillation能够取得更好的结果。

实验3: 与SOTA模型进行比较

训练细节

  • 使用truncated normal distribution来进行初始化

  • soft蒸馏参数: τ = 3 , λ = 0.1 \tau=3,\lambda=0.1 τ=3,λ=0.1

  • 数据增强:Autoaugment,Rand-augment,random erasing,Cutmix,Mixup,Label Smoothing等

  • 训练300个epoch需要花费37个小时,使用两个GPU

回顾

问: 为什么不同架构之间也可以蒸馏?蒸馏能够将局部性引入transformer架构吗?

答:教师模型能够将归纳偏置以soft的方式传递给学生模型。

问: 性能增强归功于蒸馏 or 复杂度数据增强方法?

答:蒸馏策略是有效的,但是相比ViT,Deit确实引入了非常多的数据增强方法,直接与ViT比较还是不够公平的。Deit测试了多种数据增强方法,发现大部分数据增强方法能够提高性能,这还是可以理解为Transformer缺少归纳偏置,所以需要大量数据+数据增强。


http://www.niftyadmin.cn/n/1003215.html

相关文章

Oracle经典教程

2019独角兽企业重金招聘Python工程师标准>>> Oracle经典教程 Oracle数据库是Oracle公司的核心产品&#xff0c;Oracle数据库是一个适合于大中型企业的数据库管理系统。在所有的数据库管理系统中&#xff0c;Oracle 的主要用户涉及面非常广...更多<< 转载于…

利用access对中控考勤系统的二次开发

公司的中控指纹考勤机使用多年了&#xff0c;天天签到签出&#xff0c;从未想过它与IT何干&#xff08;可能不喜欢被考勤机约制&#xff1f;&#xff09;&#xff0c;这天负责考勤的小伙说&#xff1a;可否用USB线将其8楼的电脑与一楼的考勤机连接&#xff0c;以便随时掌握考勤…

Android permission 访问权限大全

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在 checkin数据库中&#xff0c;改值可以修改上传( Allows read/write access to the “properties” t…

yii中关于CFormModel中的enableClientValidation,设置客户端验证

经常像你注册页面,你可能非常希望只需要Ajax去验证用户名和Email,而不需要使用Ajax再去验证密码,默认如果你使用Yii 内置的ajax验证Form,例如:$form$this->beginWidget(CActiveForm, array( id>usuario-form, enableClientValidation>true, enab…

【神经网络架构搜索】DNA: Block-wisely Supervised NAS with KD

【GiantPandaCV导语】知识蒸馏结合NAS的一篇工作&#xff0c;提出了DNA&#xff0c;让教师网络来指导超网的学习。这个工作将知识蒸馏非常深入的融合在一起&#xff0c;有很强的创新性&#xff0c;已被CVPR20接收。 1. 背景介绍 知识蒸馏通常作为One-Shot NAS中的一个训练技巧…

本可循环显示图像的Android Gallery组件

Gallery 组件主要用于横向显示图像列表&#xff0c;不过按常规做法。 Gallery 组件只能有限地显示指定的图像。也就是说&#xff0c;如果为 Gallery 组件指定了 10 张图像&#xff0c;那么当 Gallery 组件显示到第 10 张时&#xff0c;就不会再继续显示了。这虽然在大多数时候没…

Android UI框架深度解析

UI界面&#xff0c;对于每个应用而言&#xff0c;是它与用户进行交互的门脸。好的门脸&#xff0c;不只是是要亮丽可人&#xff0c;最好还能秀色可餐过目不忘&#xff0c;甚至还应该有涵养有气质&#xff0c;彬彬有理温柔耐心。 对于开发者来说&#xff0c;锻造这样的面容&…

Tmux科研利器-更方便地管理实验

1. 概念解释 基础部件是session(会话) 每个会话可以创建多个window(窗口) 每个窗口可以划分多个pane(窗格) 2. 常用命令解释 tmux的退出 : ctrl d 或者 exit命令 tmux前缀键&#xff1a;Ctrlbx - x? 的时候是帮助信息&#xff08;按q退出&#xff09; - xd 分离当前ses…