论文解读《ViTKD:practical guidelines for ViT feature knowledge distillation》

找寻点 : 基于Transformer的结构应该怎么将中间特征去蒸馏到CNN结构中,两者结构差异很大很大。

论文链接:2209.02432.pdf (arxiv.org)

ABSTRACT:

        传统的基于Logits的蒸馏方式,用于Transformer结构例如Vit是可以的,但是效率不够。基于中建特征的蒸馏方式应该怎么做呢?本文就是三种不同的方法,最后提出了一种基于中间特征的蒸馏方式:ViTKD,可以显著提高学生模型的效果。

INTRODUCTION

        使用ViT去做基于中间特征的这种蒸馏方式,最近2022-MiniViT使用自注意力蒸馏和隐藏状态蒸馏。相对于logits蒸馏的方式,这种方式很受限。

        作者进行了实验,使用DeiT-Small去蒸DeiT-Tiny,发现现在普遍使用的只是用最后一层去做损失,效果会下降。

        作者可视化了老师学生模型的每一层输出的特征图,如下图所示。从图中可以发现,对于浅层特征来说,老师和学生是比较相像的。对于深层特征来说,两者差异很大,说明在深层他们注意是在不同的tokens。说明要针对不同的层进行不同的处理。

        基于此,本文就是针对浅层深层分别处理,来提出了三种不同的特征蒸馏方式,最后提出了蒸馏模型ViTKD。

2 PRACTICAL GUIDELINES FOR VIT'S FEATURE DISTILLATION

基于中间特征有两种策略:mimicking 和 generation

mimicking:对齐老师和学生的维度(线性层、相关矩阵

generation:随机给学生token加掩码,再利用生成块去恢复(交叉注意力模块、自注意力模块、卷积投影

- 深层适合使用generation方式

- 浅层适合使用mimicking,而且correlation matrix方法更好

- 使用FFN输出的特征会比直接使用MHA输出的特征进行蒸馏效果好

3 METHODOLOGY

简单介绍了2中策略下的5种变换方式

ViTKD整个网络图如下图:

        使用的mimicking策略所使用的方式为:相关矩阵

        使用的generation策略所使用的方式为:卷积投影

网络的整个损失如下:

分别又KD损失、生成损失与模仿损失三部分组成。其中\alpha =3*10^{^{-5}}, \beta=3*10^{_{-6}} ,\lambda =0.5, KD损失中α=1 ,T= 1

4 EXPERIMENT

从实验结果来看,应用本文的蒸馏对于不同的模型都可以得到大大小小的效果提升。

5 MORE ANALYSES

浅层特征蒸馏是对效果提升最好的,这与基于CNN结构的蒸馏不同,两者之间可以互补。深层与浅层结合时,效果提高仅仅0.02%

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值