计算机视觉论文速递(五)MiniViT:Compressing Vision Transformers with Weight Multiplexing 极致压缩视觉Transformer

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介:  Vision Transformer由于其较高的模型性能在计算机视觉领域受到广泛关注。然而,Vision Transformer受到大量参数的影响,限制了它们在内存有限的设备上的适用性。为了缓解这一问题,本文提出了一种新的压缩框架MiniViT,MiniViT能够在保持相同性能的同时实现了Vision Transformer的参数缩减。

577d5b46c938404d9cc90af8d247b2b1.png


YOLO-Pose论文:MiniViT:Compressing Vision Transformers with Weight Multiplexing


代码已开源https://github.com/microsoft/Cream

1. 摘要


 Vision Transformer由于其较高的模型性能在计算机视觉领域受到广泛关注。然而,Vision Transformer受到大量参数的影响,限制了它们在内存有限的设备上的适用性。为了缓解这一问题,本文提出了一种新的压缩框架MiniViT,MiniViT能够在保持相同性能的同时实现了Vision Transformer的参数缩减。


 MiniViT的核心思想是将连续Vision TRansformer Block的权重相乘。更具体地说,使权重跨层共享,同时对权重进行转换以增加多样性。Weight distillation也被应用于将知识从Large-scale ViT模型转移到权重复用的紧凑模型。


 综合实验证明了MiniViT的有效性,MiniViT可以将预训练的Swin-B Transformer的尺寸减少48%,同时在ImageNet上Top-1准确率提高了1.0%。此外,使用单层参数,MiniViT能够将DeiT-B压缩9.7倍,从86M到9M的参数,而不会严重影响性能。最后,通过MiniViT在下游基准上的性能来验证其可迁移性。


2. 引言


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


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


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


 为了验证这一点,作者在DeiT-S和Swin-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 Multiplexing由Weight Transformation和Weight Distillation两个组件组成,共同压缩预训练好的Vision Transformer。


4d5b417bd0624e23b7625f66f1dfc7be.png


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


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


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


5eb119836f844246b1085eb99c1121e7.png


 实验表明,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的性能也可以很好地迁移到下游任务。


3.相关工作


3.1 Vision Transformer


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


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


MSA


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


image.png


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


MLP


 MLP 块由 2 个 F C 层组成, 其激活函数用 σ ( ⋅ ) 表示, 通常为 GELU。设 Y ∈ R N × d 为 MLP 的输入。 MLP 的输出可以表示为


H = σ ( Y W ( 1 ) + b ( 1 ) ) W ( 2 ) + b ( 2 )


其中, W ( 1 ) ∈ R d × d ′ 、 b ( 1 ) ∈ R d ′ 、 W ( 2 ) ∈ R d × d ′ 、 b ( 2 ) ∈ R d ′ 分别为第1层和第2层的权重和偏 差。通常设置 d ′ > d 。


3.2 Weight Sharing


f8d763e2dc384c279e71c59c2b200491.png

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


36765611e16b4f818ac6379187de77d9.png


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


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


4. 方法


4.1 Weight Multiplexing


 权重共享的潜力已经在自然语言处理中得到了证实;然而,其在Vision Transformer中的作用尚不清楚。为了检验这一点,作者直接将跨层权重共享应用于DeiT-S和Swin-B模型,并观察2个问题:


  • 训练不稳定


  • 性能下降


bf592e13cea74747b7407b0d3db8ab34.png


 根据作者的实验分析,不同层之间权值的严格一致性是问题的主要原因。其中,权重共享后的梯度ℓ2-范数较大,在不同的Transformer Block内出现波动,如图4所示。


e4cffc17ef3e43db9d03777fb0673d90.png


 如图5所示,从CKA值可以看出,权重共享后模型生成的Feature map与原模型的相关性较小。为了解决这些问题,受到电信领域多路复用技术的启发,提出了一种新的Transformer Compression技术,Weight Multiplexing。它将多层权重组合为共享部分的单个权重,同时涉及转换和蒸馏,以增加权重的多样性。


 更具体地说,如图2(b)所示,本文提出的权重复用方法包括:


 在多个Transformer Block之间共享权重,可以认为在复用时是一个组合过程;


 在每一层引入转换来模拟解复用;


 运用知识蒸馏增加压缩前后模型之间特征表示的相似性。


 根据Eq.(4),可以将权重复用重新表述如下:


46af1cbbe7f6485c8e10e8f25be86ac0.png


 其中image.png表示第i个Transformer Layer中Transformer Block的权值。请注意,1684046472777.png中的参数数量远少于θ


4.1.1 Weight Transformation


 Weight Transformation是强加于注意力矩阵和前馈网络。这种转换允许每一层都是不同的,从而提高了参数多样性和模型表示能力。


e27f6f0371244717b7b7db6b08fed721.png


 如图所示,各层之间不共享Transformation Kernels的参数,而原始Transformer中除了LayerNorm以外的所有其他层都是共享的。由于共享层占据了模型参数的绝大部分,权重复用后模型大小仅略有增加。


4.1.2 Transformation for MSA


 为了提高参数的多样性,分别在Softmax模块前后插入了2个线性变换。


a81f7d0b4deb42b49e97a11b3dfaa629.png


 其中,分别为Softmax前后的线性变换。这种线性变换可以使每个注意力矩阵不同,同时结合注意力Head之间的信息来增加参数方差。


4.1.3 Transformation for MLP


 另一方面, 进一步对MLP进行了轻量级转换, 以提高参数的多样性。特别地, 设输入为Y = [ y 1 , … , y d ] , 其中 y l 表示所有 Token 的嵌入向量的第1个位置。然后引入线性变换将Y转

换为 Y ‘ = [ C ( 1 ) y 1 , … , C ( d ) ) y d ], 其中 C ( 1 ) , … , C ( d ) ∈ R N × N 是线性层的独立权重矩阵。然 后是等式3被重新表述为:


H = σ ( Y ′ W ( 1 ) + b ( 1 ) ) W ( 2 ) + b ( 2 )


 为了减少参数的数量并在变换中引入局域性, 本文采用 Depth-wise convolutional 来稀疏和 共享每个权重矩阵中的权值, 并且参数量只有 K 2 d 比 N 2 d (   K < < N )小得多, 其中 K是卷积的 kernel size。经过转换后, MLP的输出变得更加多样化, 提高了参数的性能。


 理论上, 通过这些转换, 权重共享 层可以恢复预训练模型的行为, 类似于 解复用过程 。这样 可以缓解训练不稳定性和性能下降问题, 因为这些问题在原始模型中没有观察到。类似的转换 也被应用于提高没有 权重共享 的 Transformer 的性能, 如 Talking-heads Attention 和 Cei T 。


4.2 Weight Distillation


 为了压缩大型预训练模型并解决 权重共享 导致的性能下降问题, 作者进一步采用 权重蒸馏法 将知识从大型模型转移到小型且紧凑的模型。考虑了 Transformer Block 的3种蒸馏方法:


  • Prediction-Logit Distillation


  • Self-Attention Distillation


  • Hidden-State Distillation


4.2.1 Prediction-Logit Distillation


 Hinton等人证明了深度学习模型可以通过模仿训练过程中表现良好的教师模型的输出行为来获得更好的表现。作者利用这个想法来引入一个预测损失,如下所示:


b09c759d409247dd85ff136588f69a35.png


 其中,Z s 和Z t 分别是学生模型和教师模型预测的对数,T是控制对数平滑度的温度值。在实验中,设置T=1。CE表示交叉熵损失。


4.2.2 Self-Attention Distillation


 最近有研究表明,利用Transformer Layer中的注意力图来指导学生模型的训练是有效。为了解决学生模型和教师模型之间由于Head num不同所导致的维度不一致问题,受Minilmv2启发,在MSA中对Query、Key和Value之间的关系应用了交叉熵损失。


 首先在所有的 Head 上附加矩阵。例如, 定义 Q = [ Q 1 , … , Q M ] ∈ R N × M d , 以同样的方式定 义 K , V ∈ R N × M d。为了简化符号, 分别用 S 1 、 S 2 和 S 3来分别表示 Q 、   K  、 v 。然后, 可以 生成由 R i j = softmax ⁡ ( image.png) 定义的 9 个不同的关系矩阵。注意, R 12 是注意力矩阵 a, Self-Attention Distillation 损失可以表示为:


ad01853acee647778f05002f4fbcb754.png


 其中, R i j , n 表示 R i j 的第 n  行。


4.2.3 Hidden-State Distillation


 类似地, 可以生成隐藏状态的关系矩阵, 即由MLP输出的特征。用 H ∈ R N × d表示 Transforme r rr Layer 的隐藏状态, 将基于关系矩阵的隐藏状态蒸馏损失定义为:


image.png


 其中 R H , n 表示第 n 行 R H , 计算公式为 R H = softmax ⁡ ( H H T  image.png


4.2.4 总的蒸馏损失


 根据作者的观察, 仅使用 prediction soft labels 比同时使用 prediction soft labels +  gr ound truth labels 能够产生更好的性能, 因此最终蒸馏目标函数表示为:


image.png


 其中, β 和 γ 分别为超参数, 默认值分别为 1 和 0.1。


4.2 Compression Pipeline


阶段1:通过权重转换生成紧凑的架构


 给定一个预训练的Vision Transformer模型,首先在共享每个相邻Transformer Layer中除了LayerNorm以外的参数。然后通过在Softmax层之前和之后插入一个线性层对每一层进行权值变换。此外,还为MLP引入了一个Depth-wise Convolutional。这些线性层和转换块的参数不共享。


阶段2:用Weight Distillation训练压缩后的模型


 在这一步中使用所提出的Weight Distillation方法,将知识从大的预训练模型转移到小的模型。Transformer Block内部的这种精馏使得学生网络能够再现教师网络的行为,从而从大规模的预训练模型中提取出更多有用的知识。


 请注意,只有当教师模型和学生模型都是Transformer架构时,才会执行此操作。在其他情况下,学生和教师的结构是异质的,只保留Prediction-Logit Distillation。


5. 实验


5.1 消融实验


5.1.1 Weight Sharing


3317776d53824f91ba6d07476c219ef4.png


 如图4所示,DeiT-S和Swin-B 权重共享后梯度的ℓ2-范数较大,说明权值大小变化较快。此外,权重共享还导致了不同层间的梯度范数的波动。这可能会导致不同的层的优化空间。特别是,一些层更新得很快,而其他部分几乎没有优化,这使得模型很可能收敛到一个糟糕的局部最优,甚至在训练中出现分歧。


 因此,不同层间共享的严格相同的权重会导致训练的不稳定性。然而,权值复用方法可以通过引入变换来提高参数多样性,从而降低梯度范数和提高层间的平滑度,促进更稳定的训练过程。


d764fbdb3a35403dbc44e7a4c070ab68.png


 在性能分析方面,在图5中对权值共享和权重复用之间的特征相似性与CKA进行了比较。CKA值越高,表示两个模型之间的特征表示越相似,从而获得相似的性能。可以观察到,DeiT和Swin在应用权重共享后都存在很大的特征表示偏差,特别是在最后几层,这可能是权重共享导致性能下降的原因之一。然而提出的权值复用方法可以提高相似性。


5.1.2 Component-wise


0a53e40fc096461a96e9dbb6c8badb5c.png


5.1.3 Number of Sharing Blocks


24d05a7eef424ecaa6a9ed51320efcaa.png


 在表2中,在Swin-T或DeiT-B的每个阶段共享2个Block可以显著将参数量从28M减少到16M,86M减少到44M,而Top-1的精度提高了1%。在极端情况下,每个阶段的所有块都共享,Mini-Swin-T仍然可以以43%的参数优于原始模型。Mini-DeiT-B可以实现90%的参数降低,性能仅下降2%。


 结果表明,Vision Transformer存在参数冗余,所提出的MiniViT可以有效地提高参数效率。此外,MiniViT是可配置的,以满足模型大小和性能的各种要求。


5.1.4 Distillation Losses


8aa119b51c964a699e00d7af26df22c3.png


 如表3所示,与仅使用预测损失相比,额外的GT标签导致Swin的性能下降了0.3%,这是由于权值共享导致学习能力下降。此外,还观察到,在应用Self-Attention Distillation和Hidden-State Distillation后,精确度提高了约0.2%,表明提出的Distillation方法是有效性的。


5.2 SoTA分类


29ed9833533149ae8b3ac549af6da805.png


5.3 迁移学习


dc4891e8b55e4130a0fa063cf4f101c1.png

目录
相关文章
|
6月前
|
机器学习/深度学习 自然语言处理 算法
2024年4月计算机视觉论文推荐
四月的计算机视觉研究涵盖多个子领域,包括扩散模型和视觉语言模型。在扩散模型中,Tango 2通过直接偏好优化改进了文本到音频生成,而Ctrl-Adapter提出了一种有效且通用的框架,用于在图像和视频扩散模型中添加多样控制。视觉语言模型的论文分析了CLIP模型在有限资源下的优化,并探讨了语言引导对低级视觉任务的鲁棒性。图像生成与编辑领域关注3D感知和高质量图像编辑,而视频理解与生成则涉及实时视频转游戏环境和文本引导的剪贴画动画。
140 0
|
2月前
|
人工智能 并行计算 PyTorch
AI计算机视觉笔记十八:Swin Transformer目标检测环境搭建
本文详细记录了Swin Transformer在AutoDL平台上的环境搭建与训练过程。作者从租用GPU实例开始,逐步介绍了虚拟环境的创建、PyTorch安装、mmcv及mmdetection的配置,并解决了安装过程中遇到的各种问题,如cython版本冲突等。最后,通过修改代码实现目标检测结果的保存。如需了解更多细节或获取完整代码,请联系作者。原文链接:[原文链接](请在此处插入原文链接)。
|
2月前
|
人工智能 计算机视觉 Python
AI计算机视觉笔记十九:Swin Transformer训练
本文介绍了使用自定义数据集训练和测试目标检测模型的步骤。首先,通过安装并使用标注工具labelme准备数据集;接着修改配置文件以适应自定义类别,并调整预训练模型;然后解决训练过程中遇到的依赖冲突问题并完成模型训练;最后利用测试命令验证模型效果。文中提供了具体命令及文件修改指导。
|
5月前
|
编解码 机器人 测试技术
2024年6月计算机视觉论文推荐:扩散模型、视觉语言模型、视频生成等
6月还有一周就要结束了,我们今天来总结2024年6月上半月发表的最重要的论文,重点介绍了计算机视觉领域的最新研究和进展。
133 8
|
6月前
|
编解码 边缘计算 自然语言处理
2024年5月计算机视觉论文推荐:包括扩散模型、视觉语言模型、图像编辑和生成、视频处理和生成以及图像识别等各个主题
五月发布的计算机视觉领域重要论文涵盖了扩散模型、视觉语言模型、图像生成与编辑及目标检测。亮点包括:1) Dual3D提出双模式推理策略,实现高效文本到3D图像生成;2) CAT3D利用多视图扩散模型创建3D场景,仅需少量图像;3) Hunyuan-DiT是多分辨率的中文理解扩散Transformer,可用于多模态对话和图像生成;4) 通过潜在扩散模型从EEG数据重建自然主义音乐,展示复杂音频重建潜力。此外,还有关于视觉语言模型和图像编辑的创新工作,如BlobGEN用于合成具有控制性的图像。
227 3
|
5月前
|
机器学习/深度学习 算法框架/工具 计算机视觉
ViT模型的出现标志着Transformer架构在计算机视觉中的成功应用
ViT模型的出现标志着Transformer架构在计算机视觉中的成功应用
74 2
|
6月前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
602 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
119 0
|
2月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
2月前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。

热门文章

最新文章

下一篇
无影云桌面