微软提出MiniViT | 把DeiT压缩9倍,性能依旧超越ResNet等卷积网络(一)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 微软提出MiniViT | 把DeiT压缩9倍,性能依旧超越ResNet等卷积网络(一)

1简介


大规模预训练的Vision TRansformer,如ViT, CvTSwin,由于其高性能和下游任务的优越性能,最近引起了极大的关注。然而,它们通常涉及巨大的模型尺寸和大量的训练数据。例如,ViT需要使用3亿张图像来训练一个带有6.32亿参数的巨大模型,才实现了图像分类的最先进性能。同时,Swin使用2-3亿个参数,并在ImageNet-22K上进行了预训练,以在下游检测和分割任务上取得良好的性能。

数以亿计的参数消耗了相当大的存储和内存,这使得这些模型不适合涉及有限计算资源的应用程序,如边缘和物联网设备,或者需要实时预测的任务。最近的研究表明,大规模的预训练模型是过度参数化的。因此,在不影响这些预训练模型性能的情况下,消除冗余参数和计算开销是必要的。

权重共享是一种简单且有效的减少模型尺寸的技术。神经网络中权重共享的最初想法是在20世纪90年代由LeCun和Hinton提出的,最近被重新发明用于自然语言处理(NLP)中的Transformer模型压缩。最具代表性的工作是ALBERT,它引入了一种跨层权重共享的方法,以防止参数的数量随着网络深度的增加而增长。该技术可以在不严重影响模型性能的情况下显著降低模型尺寸,从而提高参数效率。然而,Weight sharingVision Transformer压缩中的有效性尚未得到很好的探索。

为了验证这一点,作者在DeiT-SSwin-B Transformer上执行跨层权重共享。出乎意料的是,这种直接使用权重共享带来了2个严重的问题:

  1. 训练不稳定:作者观察到,Weight sharing across transformer layers使训练变得不稳定,甚至随着共享层数量的增加,导致训练坍塌;
  2. 性能下降:权重共享Vision Transformer的性能与Vision Transformer相比有明显下降。例如,虽然权重共享可以将模型参数的数量减少4倍,但是它还是带来了Swin-s Transformer精度下降5.6%,。

为了调查这些结果的潜在原因,作者分析了训练过程中梯度的ℓ2-范数以及模型权重前后的中间特征表征之间的相似性。作者发现,在不同层上完全相同的权重是问题的主要原因。特别是,在权重共享过程中,不同Transformer Block中的层归一化不应该完全相同,因为不同层的特征具有不同的尺度和统计量。同时,梯度的ℓ2-范数变大,并在不同层间波动,导致训练不稳定。

最后,Central Kernel Alignment(CKA)值(一个流行的相似性度量)在最后几层显著下降,表明模型在权重共享前后生成的特征图相关性较小,这可能是性能下降的原因。

在本文中提出了一种新的技术,称为Weight Multiplexing,来解决上述问题。Weight MultiplexingWeight TransformationWeight Distillation两个组件组成,共同压缩预训练好的Vision Transformer

image.png图2

Weight Transformation的关键思想是对共享的权值进行转换,使不同层的权值略有不同,如图2所示。该操作不仅可以促进参数的多样性,而且还可以提高训练的稳定性。

更具体地说,对每个权重共享Transformer Layer多头自注意力(MSA)模块和多层感知器(MLP)模块进行了简单的线性变换。每一层都包含单独的变换矩阵,因此MLP对应的注意力权重和输出在不同层间是不同的。与共享相同的参数相比,不同层的层归一化也是分开的。因此,可以让Weight Sharing Transformer网络的优化变得更加稳定。

为了防止性能下降,作者进一步用Weight Distillation设计了Weight Multiplexing,这样嵌入在预训练的模型中的信息可以转移到权重共享的小模型中,这就可以产生更紧凑和更轻的模型。与之前仅依赖于Prediction-Level蒸馏的工作相比,本文的方法同时考虑了Attention-LevelHidden-State蒸馏,允许较小的模型更好地模拟原始预训练的大型教师模型的行为。

image.png图1

实验表明,Weight Multiplexing方法在Baseline上实现了明显的精度提高,并将预训练好的Vision Transformer压缩了2倍。例如,通过提出的Weight Multiplexing,12层的Mini-Swin-B模型比24层Swin-B高0.8%。此外,具有9M参数的MiniDeiT-B在ImageNet上达到了79.8%的Top-1位精度,比DeiT-B小9.7倍。用本文的方法压缩得到的12M微型模型可以很好地迁移到下游目标检测,在COCO验证集上实现了48.6的AP,这与使用28M参数的原始Swin-T相当。

主要贡献

  1. 系统地研究了权重共享Vision Transformer中的有效性,并分析了权重共享带来问题的原因;
  2. 提出了一种新的通用Vision Transformer压缩框架MiniViT。实验结果表明,MiniViT可以在不损失精度的前提下获得较大的压缩比。此外,MiniViT的性能也可以很好地迁移到下游任务。

2师从何处?


2.1 Vision Transformer

Transformer虽然最初是为NLP设计的,但最近在计算机视觉方面也显示出了巨大的潜力。Vision Transformer首先将输入图像分割成一系列被称为Token2D Patch。然后,使用线性投影或堆叠的CNN层将这些Patch展开并转换为d维向量(也称为Patch Embeddings)。为了保留位置信息,Positional Embeddings被添加到Patch Embeddings中。然后将组合的Embeddings输入到Transformer编码器。最后,使用一个线性层来产生最终的分类。

Transformer编码器由MSAMLP的交替组成。在每个块前后分别应用层归一化(LN)和残差连接。详细说明MSA和MLP块如下。

1、MSA

设M为Head的数量,也称为自注意力模块。给定输入序列,在第k个Head中,通过线性投影生成QueryKeyValue,分别用、和表示,其中N是Token的数量。D和d分别是Patch EmbeddingsQ-K-V矩阵的维数。然后,计算序列中每个位置的所有值的加权和。这些权重被称为注意力权重,用表示,是基于序列中2个元素之间的成对相似性,即

image.png

其中,对输入矩阵的每一行进行softmax(·)操作。最后,将一个全连接层应用于所有Head的输出的连接。

2、MLP

MLP块由2个FC层组成,其激活函数用σ(·)表示,通常为GELU。设为MLP的输入。MLP的输出可以表示为

image.png

其中,、、、分别为第1层和第2层的权重和偏差。通常设置d'>d。

2.2 Weight Sharing

image.png权重共享是一种简单而有效的提高参数效率的方法。其核心思想是跨层共享参数,如图2(a)所示从数学上讲,权重共享可以表述为一个Transformer Block f(即一个共享层)的递归更新:

image.png

其中为序列在第i层中嵌入的特征,L为层总数,θ为各层间Transformer Block的共享权值。

很多研究工作在自然语言Transformer模型中探索并验证了权重共享的有效性。它可以防止参数的数量随着网络深度的增加而增加,而不会严重影响性能,从而提高参数的效率。

相关文章
|
7天前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
31 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
130 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
2月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
349 55
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
42 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
11天前
|
机器学习/深度学习 编解码 自动驾驶
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
39 16
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
11天前
|
机器学习/深度学习 存储
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
37 15
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
9天前
|
机器学习/深度学习
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
40 8
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
|
7天前
|
机器学习/深度学习 编解码 移动开发
RT-DETR改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
RT-DETR改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
26 5
RT-DETR改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
|
11天前
|
机器学习/深度学习 编解码 移动开发
YOLOv11改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
YOLOv11改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
23 7
YOLOv11改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
|
7天前
|
机器学习/深度学习
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
35 11

热门文章

最新文章