0

0

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能

WBOY

WBOY

发布时间:2023-09-09 22:37:01

|

1417人浏览过

|

来源于机器之心

转载

重新表达:研究动机


掩码建模(MIM, MAE)被证明是非常有效的自监督训练方法。然而,如图 1 所示,MIM 对于更大的模型效果相对更好。当模型很小的时候(比如 ViT-T 5M 参数,这样的模型对于现实世界非常重要),MIM 甚至可能一定程度上降低模型的效果。比如用 MAE 训练的 ViT-L 比普通监督训练的模型在 ImageNet 上的分类效果提升 3.3%,但是用 MAE 训练的 ViT-T 比普通监督训练的模型在 ImageNet 上的分类效果降低了 0.6%。

在这篇工作中我们提出了 TinyMIM,其在保持 ViT 结构不变并且不修改结构引入其他归纳偏置(inductive bias)的基础上、用蒸馏的方法迁移大模型上的知识到小模型。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



  • 论文地址:https://arxiv.org/pdf/2301.01296.pdf
  • 代码地址:https://github.com/OliverRensu/TinyMIM

我们系统性的研究了蒸馏目标、数据增强、正则化、辅助损失函数等对于蒸馏的影响。在严格的只用 ImageNet-1K 作为训练数据的情况下(包括 Teacher model 也只用 ImageNet-1K 训练)和 ViT-B 作为模型,我们的方法实现了当前最好的性能。如图所示:

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



把我们的方法(TinyMIM)和基于掩码重建的方法 MAE,以及监督式学习的方法从头开始训练的 DeiT 作比较。MAE 在模型比较大的时候有显著的性能提升,但是在模型比较小的时候提升幅度有限甚至会伤害模型的最终效果。我们的方法 TinyMIM 在不同模型的大小上都有大幅提升。

我们的贡献如下:

1. 蒸馏的目标(Distillation targets):1)蒸馏 token 之间的关系比单独蒸馏 class token 或者特征图(feature map)更有效;2)用中间层作为蒸馏的目标更有效。
2. 数据增强和模型正则化(Data and network regularization):1)用带掩码的图片效果更差;2)学生模型需要一点 drop path,但是 teacher 模型不需要。
3. 辅助损失函数(auxiliary losses):MIM 作为辅助损失函数没有意义。
4. 宏观蒸馏策略(Macro distillation strategy):我们发现序列化的蒸馏(ViT-B -> ViT-S -> ViT-T)效果最好。

二、方法

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



我们系统性的调研了蒸馏的目标,输入的图片,蒸馏目标模块。

2.1 影响蒸馏效果的因素

1)特征:

a. 中间 block 特征和输出特征

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



当 i=L 时,指的是 Transformer 输出层的特征。当 i

b. 注意力(Attention)特征和前馈层(FFN)层特征

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



Transformer 每一个 block 有 Attention 层和 FFN 层,蒸馏不同的层会带来不同的影响。

c.QKV 特征

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



在 Attention 层内会有 Q,K,V 特征,这些特征用于计算注意力机制,我们也调研了直接蒸馏这些特征。

2)关系

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



Q,K,V 用于计算注意力图,这些特征之间的关系也可以作为知识蒸馏的目标。

3)输入:是否带掩码

传统的知识蒸馏是直接输入完整的图片。我们的方法为了探索蒸馏掩码建模模型,所以我们也探索了带掩码的图片是否适合作为知识蒸馏时候的输入。

2.2 知识蒸馏方法对比

1)Class Token 蒸馏:

最简单的方法就是类似 DeiT 直接蒸馏 MAE 预训练模型的 class token:

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



其中微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能指学生模型的 class token,而 微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能指老师模型的 class token。

2)特征蒸馏:我们直接参考了 feature distillation [1] 作为对比

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能

AdMaker AI
AdMaker AI

从0到爆款高转化AI广告生成器

下载


微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能


3)关系蒸馏:我们提出了也是本文默认的蒸馏策略

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



三、实验

3.1 主要实验结果

我们的方法在 ImageNet-1K 上预训练,而且教师模型也是在 ImageNet-1K 预训练。然后我们将我们预训练的模型在下游任务(分类、语义分割)上进行了微调。模型表现如图:

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



我们的方法显著超过之前基于 MAE 的方法,尤其是小模型。具体来讲,对于超小的模型 ViT-T,我们的方法实现了 75.8% 的分类准确性,相比 MAE 基线模型实现了 4.2 的提升。对于小模型 ViT-S,我们实现了 83.0% 的分类准确性,比之前最好的方法提升了 1.4。对于 Base 尺寸的模型,我们的方法分别超过 MAE 基线模型和以前最好的模型 CAE 4.1 和 2.0。

同时我们也测试了模型的鲁棒性,如图所示:

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



TinyMIM-B 对比 MAE-B,在 ImageNet-A 和 ImageNet-R 分别提升了 + 6.4 和 +4.6。

3.2 消融实验

1)蒸馏不同关系

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



同时蒸馏 QK,VV 关系而且在计算关系的时候有 Softmax 实现了最好的效果。

2)不同的蒸馏策略

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



TinyMIM 这种蒸馏关系的方法实现了比 MAE 基线模型,class token 蒸馏,特征图蒸馏都更好的效果,在各种尺寸的模型上都是如此。

3)蒸馏中间层

微软亚洲研究院推出TinyMIM:通过知识蒸馏提升小型ViT的性能



我们发现蒸馏第十八层实现了最好的效果。

四、结论

在本文中,我们提出了 TinyMIM,它是第一个成功地使小模型受益于掩码重建建模(MIM)预训练的模型。我们没有采用掩码重建作为任务,而是通过以知识蒸馏的方式训练小模型模拟大模型的关系来预训练小模型。TinyMIM 的成功可以归功于对可能影响 TinyMIM 预训练的各种因素的全面研究,包括蒸馏目标、蒸馏输入和中间层。通过大量的实验,我们得出结论,关系蒸馏优于特征蒸馏和类标记蒸馏等。凭借其简单性和强大的性能,我们希望我们的方法能够为未来的研究提供坚实的基础。

[1] Wei, Y., Hu, H., Xie, Z., Zhang, Z., Cao, Y., Bao, J., ... & Guo, B. (2022). Contrastive learning rivals masked image modeling in fine-tuning via feature distillation. arXiv preprint arXiv:2205.14141.

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6087

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

805

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1062

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1233

2024.03.01

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

465

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

12

2025.12.06

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

32

2025.11.16

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.7万人学习

Django 教程
Django 教程

共28课时 | 3.1万人学习

MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号