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

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

3青出于蓝


3.1 Weight Multiplexing

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

  • 训练不稳定
  • 性能下降

image.png图4

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

image.png图5

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

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

  1. 在多个Transformer Block之间共享权重,可以认为在复用时是一个组合过程;
  2. 在每一层引入转换来模拟解复用;
  3. 运用知识蒸馏增加压缩前后模型之间特征表示的相似性。

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

image.png

其中,表示第个Transformer LayerTransformer Block的权值。请注意,中的参数数量远少于。

1、Weight Transformation

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

image.png

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

Transformation for MSA

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

image.png

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

Transformation for MLP

另一方面,进一步对MLP进行了轻量级转换,以提高参数的多样性。特别地,设输入为,其中表示所有Token的嵌入向量的第1个位置。然后引入线性变换将Y转换为,其中是线性层的独立权重矩阵。然后是等式3被重新表述为:

image.png

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

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

2、Weight Distillation

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

  • Prediction-Logit Distillation
  • Self-Attention Distillation
  • Hidden-State Distillation

Prediction-Logit Distillation

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

image.png

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

Self-Attention Distillation

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

首先在所有的Head上附加矩阵。例如,定义,以同样的方式定义。为了简化符号,分别用、和来分别表示QKV。然后,可以生成由定义的9个不同的关系矩阵。注意,是注意力矩阵aSelf-Attention Distillation损失可以表示为:

其中,表示的第n行。

Hidden-State Distillation

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

其中表示第n行,计算公式为。

总的蒸馏损失

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

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

3.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


4实验


4.1 消融实验

1、Weight Sharing

图4

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

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

图5

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

2、Component-wise

image.png

采用权值共享方法后,Swin-TDeiT-S模型的参数数量减少了一半,精度也下降了2%。性能可以通过应用权重精馏权重转换来提高,这表明了它们各自的有效性。值得注意的是权值变换只引入了少量的参数。

此外,当结合这3个组件时,MiniViT可以达到最好的精度,甚至超过原始的Swin-TDeiT-S

3、Number of Sharing Blocks

image.png

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

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

4、Distillation Losses

image.png

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

4.2 SoTA分类

4.3 迁移学习


5参考


[1].MiniViT: Compressing Vision Transformers with Weight Multiplexing


6推荐阅读


Sparse R-CNN升级版 | Dynamic Sparse R-CNN使用ResNet50也能达到47.2AP

CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识

相关文章
|
14天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
6天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
17天前
|
机器学习/深度学习 监控 自动驾驶
卷积神经网络有什么应用场景
【10月更文挑战第23天】卷积神经网络有什么应用场景
18 2
|
17天前
|
机器学习/深度学习 自然语言处理 算法
什么是卷积神经网络
【10月更文挑战第23天】什么是卷积神经网络
24 1
|
21天前
|
缓存 监控 前端开发
优化网络应用的性能
【10月更文挑战第21天】优化网络应用的性能
15 2
|
20天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
21天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
28天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
81 1
|
7天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
21 0

热门文章

最新文章