Vision Transformer Slimming: Multi-Dimension Searching in Continuous Optimization Space 解读
2026/7/23 22:26:16 网站建设 项目流程

一、论文基本信息

论文题目:Vision Transformer Slimming: Multi-Dimension Searching in Continuous Optimization Space

方法简称:ViT-Slim

作者:Arnav Chavan、Zhiqiang Shen、Zhuang Liu、Zechun Liu、Kwang-Ting Cheng、Eric Xing

发表会议:CVPR 2022

官方代码:Arnav0400/ViT-Slim,GitHub 页面标注为该 CVPR 2022 论文的官方实现。(GitHub)

这篇论文的核心目标是:不是只剪 token,也不是只剪 head 或 MLP channel,而是在 ViT 中同时搜索 patch/token、MHSA、MLP 三个维度的高效子结构。论文摘要明确说,ViT-Slim 可以端到端搜索输入 tokens、MHSA 和 MLP 模块,并通过统一的 L1 稀疏约束在连续搜索空间中完成高效搜索。


二、这篇论文要解决什么问题?

之前很多高效 ViT 方法只压缩一个维度。

例如:

DynamicViT / Patch Slimming主要减少 patch tokens,只降低 FLOPs,不减少参数量。

Head pruning主要减少 attention heads。

MLP pruning主要减少 FFN hidden dimensions。

NAS 方法可以搜索结构,但很多方法需要训练 supernet、评估大量子网,搜索成本很高。

ViT-Slim 认为,ViT 的冗余不只存在于单一维度,而是同时存在于:

输入 patch/token 维度。

MHSA 每个 attention head 的内部维度。

MLP hidden dimension。

所以它想解决的问题是:

能否用一次高效搜索,同时找到 patch、MHSA、MLP 三个维度上的最优压缩结构?

这就是标题里Multi-Dimension Searching的含义。


三、核心思想

ViT-Slim 的核心思想是:

给 ViT 的不同结构维度加上可学习 soft masks,通过 L1 稀疏约束让不重要的维度 mask 变小;搜索结束后按 mask 大小排序,删除低重要维度,再重新训练得到最终小模型。

它不是手工设定每层剪多少,也不是离散枚举候选结构,而是把结构搜索转化为一个连续优化问题。

论文明确说,它在预训练模型上加入 sparsity masks,然后联合优化原模型权重和 mask;搜索完成后,根据 mask 值排序,删除低 rank 的维度,最后再 retrain 提取出的压缩结构。

所以 ViT-Slim 的流程是:

第一步:在预训练 ViT 上插入 soft masks。

第二步:用交叉熵损失 + L1 mask 稀疏正则进行 one-shot search。

第三步:根据目标 budget 删除低 mask 值结构。

第四步:把连续 mask 结构转成真实小模型,再重新训练。


四、它到底“瘦身”哪些维度?

ViT-Slim 同时考虑三个维度。

1. MHSA 维度

在 multi-head self-attention 中,每个 head 都有自己的 Q、K、V 投影维度。ViT-Slim 给每一层、每个 head 的内部维度加 mask。

这意味着它不是简单“删整个 head”,而是可以让不同 head 保留不同维度。

例如某些 head 可能保留 64 维,某些 head 可能只保留 32 维,甚至更少。这比整头剪枝更细。

论文说明,针对 MHSA 模块,ViT-Slim 可以探索的结构空间是每层每个 head 的维度组合,因此比预定义离散候选结构更灵活。

2. MLP 维度

ViT block 中的 MLP 通常是两层全连接,hidden dimension 通常是 embedding dimension 的 4 倍。这个部分参数和 FLOPs 很大。

ViT-Slim 给 MLP hidden dimension 加 mask,从而搜索每层 MLP 到底需要保留多少 hidden neurons。

这类似结构化 FFN dimension pruning,但它不是单独剪 MLP,而是可以和 MHSA、patch selection 联合搜索。

3. Patch / token 维度

ViT-Slim 也搜索每层哪些 patch tokens 可以删除。

论文认为,MHSA 会逐层聚合 patch 信息,使深层 patch 表示越来越相似;因此深层可以删除大量 patch,浅层也可以删除少量不重要 patch。论文在方法部分提到,patch 之间的余弦相似度会随层数快速上升,最终层甚至可达到约 0.9,这为删除深层 patch 提供了动机。

但 patch selection 有一个特殊点:它只降低 FLOPs,不减少模型参数量。

因为删除 patch 是减少 token 数,后续 attention 和 MLP 对 token 的计算变少,但权重矩阵本身没有变小。


五、为什么叫 continuous optimization space?

很多 NAS 方法会预先定义候选结构,例如:

MLP hidden dimension 只能从 {128, 256, 384} 中选。

head 数只能从 {3, 6, 9} 中选。

这种是离散搜索空间。

ViT-Slim 不这样做。它给每个维度一个连续 mask 值,通过优化 mask 大小来判断重要性。论文解释说,Transformer 内部主要由 fully-connected layers 组成,可以用共享 super weight matrix 的方式,让不同候选输出维度从同一个大矩阵中 slice 出来,从而构建连续搜索空间。

简单理解:

传统 NAS:在几个候选结构里选。

ViT-Slim:每个维度都有一个连续重要性分数,最后按预算切掉一部分。

这种方式的优点是:

搜索空间更细。

不用训练大量候选子网。

搜索一次后可以根据不同 budget 取不同子模型。

论文也强调,搜索完成后可以根据真实设备的精度-FLOPs 需求直接确定最终结构,不需要像 SPOS 那样额外评估大量子网。


六、L1 稀疏 mask 的作用

ViT-Slim 的目标可以直观理解为:

既要分类准确,又要让 mask 尽量稀疏。

也就是:

分类损失 + mask 的 L1 稀疏损失。

L1 正则会推动一部分 mask 变小。搜索完成后,mask 小的维度被认为不重要,可以删除;mask 大的维度被保留。

论文中明确写到,搜索目标是根据 mask 对最终性能的影响进行排序,然后删除 mask 值最低的维度;mask 会乘到对应中间 tensor 上,优化目标由分类交叉熵和 mask 的 L1 norm 组成。

这和 Network Slimming 中用 BN gamma 做通道重要性很像,但 ViT 没有 BN,所以论文显式引入 soft masks 来替代 BN scaling parameter。


七、搜索和重训练流程

ViT-Slim 的完整 workflow 有三步。

第一,One-shot Searching。
用预训练权重初始化 ViT,把它当作 supernet,然后加入 sparsity masks。搜索时同时训练模型权重和 mask。论文实验中搜索 50 epochs,DeiT-S 的 batch size 为 1024,DeiT-B 为 512,优化器为 AdamW,并沿用 DeiT 的数据增强策略。

第二,Budget Selection。
搜索结束后,根据 mask 值排序。目标 budget 决定保留多少维度或 patch。比如保留 70% MHSA / MLP 维度,或者保留 80% patch。

第三,Re-training。
把连续 mask 转成真正的压缩结构后,重新训练 300 epochs。论文解释说,这一步让权重从连续 mask 搜索空间适应到最终 binary / non-existing mask 的真实结构。

所以 ViT-Slim 不是 training-free pruning。它需要搜索 + 重训练。


八、ViT-SlimPS 和 ViT-SlimJS 是什么?

论文里有两个主要模型族。

ViT-SlimPS

PS 可以理解为Partial Search / Parameter Search

它只搜索:

MHSA 维度。

MLP 维度。

不做 patch selection。

因此它能同时减少:

参数量。

FLOPs。

因为 MHSA 和 MLP 的权重矩阵变小了。

ViT-SlimJS

JS 可以理解为Joint Search

它联合搜索:

MHSA 维度。

MLP 维度。

patch selection。

因此它不仅减少参数和 FLOPs,还进一步通过删除 patches 降低 FLOPs。

论文在 Table 8 中也说明,PS 是 MHSA+MLP 的参数搜索;JS 是最终的 joint-dimension search;patch selection 不影响参数量,但能进一步减少 FLOPs。


九、主要实验结果

9.1 DeiT-S 上的结果

原始DeiT-S

22.0M 参数。

4.6B FLOPs。

79.9% Top-1。

ViT-SlimPS:

17.7M 参数。

3.7B FLOPs。

80.6% Top-1。

也就是说,ViT-SlimPS 在参数和 FLOPs 都减少的情况下,Top-1 反而比原始 DeiT-S 高。

ViT-SlimJS:

15.7M 参数。

3.1B FLOPs。

79.9% Top-1。

或者更激进:

15.7M 参数。

2.8B FLOPs。

79.5% Top-1。

这说明加入 patch selection 后,FLOPs 可以进一步降到 2.8B 左右,同时精度损失很小。


9.2 单独搜索 MHSA 和 MLP 的结果

论文对 MHSA 和 MLP 单独做了搜索。

在 DeiT-S 上,MHSA 单独 70% budget 时:

19.9M 参数。

4.1B FLOPs。

80.90% Top-1。

MLP 单独 70% budget 时:

17.8M 参数。

3.8B FLOPs。

80.80% Top-1。

这说明 MHSA 和 MLP 都有冗余,而且适度压缩后甚至能提高精度,可能起到了结构正则化作用。

但 MLP 压缩更能减少参数,因为 ViT 中 MLP 通常占大量参数;MHSA 压缩对 attention 表达能力影响更敏感。


9.3 联合搜索比单独搜索更有意义

论文的结论不是“只剪 MLP 最好”,而是:不同模块冗余不同,联合搜索能找到更平衡的结构。

例如 ViT-SlimPS 在 80/80 budget 下达到:

17.7M 参数。

3.7B FLOPs。

80.60% Top-1。

在 70/70 budget 下:

15.6M 参数。

3.3B FLOPs。

80.03% Top-1。

在 60/60 budget 下:

13.5M 参数。

2.8B FLOPs。

79.20% Top-1。

这些结果说明,保留 70% 左右的 MHSA+MLP 维度已经可以基本保持甚至超过 DeiT-S baseline,而过度压缩到 50% 会明显掉点。


9.4 DeiT-B 和 Swin 上的结果

论文也把方法扩展到 DeiT-B 和 Swin-T。

在 DeiT-B 上,作者设置 60% budget,约等价于40% FLOPs 和参数下降,并报告 ViT-Slim 在参数和 FLOPs 更少的情况下,Top-1 相比预训练 DeiT-B 提升约0.6%

在 Swin-T 上,论文也做了搜索。结果显示 80% budget 可以保持精度,但 70% budget 会下降。作者解释说,Swin 本身是精心设计的层级结构,每层维度已经比较紧凑,因此压缩空间小于 isotropic 的 DeiT。

这个结论很重要:ViT-Slim 对 DeiT 这类等宽 isotropic ViT 特别有效;对 Swin 这种已经层级化设计的模型,压缩空间相对有限。


十、迁移学习结果

论文还测试了迁移任务,包括 CIFAR-10、CIFAR-100、iNaturalist-2018、iNaturalist-2019。

结果显示,ViT-SlimPS 在 ImageNet 上搜索并预训练后,迁移到这些数据集时仍然优于 DeiT-S baseline。例如 CIFAR-100 从 87.80 提升到 88.16,iNaturalist-2019 从 75.35 提升到 76.67。论文强调,这些结构是在 ImageNet 上搜索的,不是在对应下游数据集上重新搜索,说明搜索出的 Slim 结构有一定迁移性。

这对模型压缩很重要,因为如果每个下游任务都要重新搜索,成本会很高。ViT-Slim 的结果说明:至少在分类迁移任务上,ImageNet 搜索得到的结构可以复用。


十一、搜索到的结构有什么规律?

论文可视化了搜索后的 MHSA head dimensions 和 MLP dimensions。

一个重要现象是:

深层维度被压缩得更多。

中间层保留维度更多。

前面层有中等程度压缩。

论文解释说,self-attention 在中间和前面层仍然比较重要,因为 patch 还比较 distinct,需要信息交换;而深层已经学到大量特征,冗余更强,因此可以保留更小维度。

这个现象和你前面看的 Patch Slimming、A-ViT、DynamicViT 的发现有呼应:ViT 深层通常存在更强冗余。

不过 ViT-Slim 的冗余不是只体现在 token 数上,也体现在 MHSA head dimension 和 MLP hidden dimension 上。


十二、和 DynamicViT 的区别

DynamicViT 主要做动态 token sparsification。它不减少参数量,只减少推理时 token 数,因此主要降低 FLOPs。

ViT-Slim 不同:

它搜索 MHSA 和 MLP 维度,可以减少参数量。

它也可以搜索 patch selection,进一步减少 FLOPs。

它得到的是静态压缩结构,而不是每张图动态不同的 token path。

论文对比表中也明确指出,DynamicViT 是 dynamic patch selection,主要减少 FLOPs;而 ViT-Slim 可以同时减少参数和 FLOPs。

所以:

DynamicViT:输入自适应 token pruning。

ViT-Slim:多维度结构搜索 + 静态 slim architecture。


十三、和 Patch Slimming 的区别

Patch Slimming 主要从最终输出误差出发,top-down 搜索每层保留哪些 patch tokens。它同样只减少 FLOPs,不减少参数。

ViT-Slim 把 patch selection 作为三维搜索中的一部分,同时还搜索 MHSA 和 MLP 维度。

所以:

Patch Slimming:专注 patch token slimming。

ViT-Slim:patch + MHSA + MLP 联合 slimming。

论文也指出 Patch Slimming 和 DynamicViT 在 FLOPs 方面可与 ViT-SlimJS 接近,但它们没有参数效率提升,因为 patch selection 不减少权重矩阵。


十四、和 ToMe / TokenLearner / ATS 的区别

ToMe是 token merging,可以 training-free 地把相似 tokens 合并。

TokenLearner是 learned tokenization,从特征图中生成少量新 tokens。

ATS是 parameter-free adaptive token sampling,根据 class attention 和 value norm 采样 tokens。

ViT-Slim则是结构搜索。它不是为了直接 patch 到已有模型做无训练加速,而是通过 soft masks 搜索一个真实更小的 ViT 子结构,再重新训练。

所以 ViT-Slim 更接近:

structured architecture search / structured pruning。

而不是纯 token reduction 插件。


十五、它是不是剪枝?

可以说 ViT-Slim 是一种结构化剪枝 + 架构搜索方法。

它有剪枝味道,因为最终会删除:

MHSA head 内部维度。

MLP hidden dimensions。

某些 patch tokens。

但它又不完全是传统剪枝,因为它不是用单一重要性指标直接剪,而是把不同维度放到连续搜索空间中,用 L1 sparse masks 做 one-shot search。

所以最准确的分类是:

multi-dimensional structured slimming / one-shot differentiable architecture search for ViTs。


十六、方法优点

第一,压缩维度全面。
不是只剪 token,而是同时考虑 patch、MHSA、MLP 三个维度。

第二,能减少参数和 FLOPs。
MHSA+MLP 搜索直接让权重矩阵变小;patch selection 进一步减少 token 计算。

第三,搜索效率较高。
论文报告 DeiT-S 搜索约 43 GPU hours,DeiT-B 约 71 GPU hours;相比很多 NAS 方法的数百 epoch 或大量子网评估更轻。

第四,搜索一次可支持多个 budget。
搜索结束后,mask 排序已经形成,可以根据不同 budget 切出不同子模型,不需要为每个预算重复搜索。

第五,压缩后结构是真实小模型。
不像 mask-only 稀疏方法依赖稀疏 kernel,ViT-Slim 最终得到的是维度变小的 dense 子网络,更容易实际部署。


十七、方法局限

第一,需要重新训练。
搜索后必须 retrain 300 epochs,才能让最终二值结构恢复性能。因此它不是 training-free 方法。

第二,patch selection 主要是静态的。
ViT-Slim 的 patch selection 不是像 DynamicViT / ATS 那样对每张图动态选择。论文自己也提到,patch 维度上动态方式更有前景,因为不同图像重要区域不同。

第三,搜索和训练成本仍然不低。
虽然比许多 NAS 方法低,但 43 GPU hours 搜索 + 300 epochs retraining 对普通实验仍然比较重。

第四,主要验证分类。
ImageNet 和下游分类任务效果较强,但检测、分割等 dense prediction 任务中,patch selection 和维度压缩是否保持空间细节,需要额外验证。

第五,和现代大规模预训练 ViT 的关系需要重新评估。
论文主要基于 DeiT、Swin 等 2021–2022 年主流模型。对 MAE、DINOv2、CLIP ViT、SAM encoder 等更大规模表示模型,是否还能直接获得同样规律,需要进一步实验。


十八、整体评价

ViT-Slim 的核心贡献是把 ViT 压缩从“单维度剪枝”推进到“多维度联合结构搜索”。

它不满足于只删 patch,也不满足于只剪 head 或 MLP,而是同时搜索:

哪些 patch tokens 可以少算。

哪些 attention head 内部维度可以变窄。

哪些 MLP hidden dimensions 可以删除。

这种思路很符合 ViT 的结构特点,因为 ViT 的冗余确实分布在多个位置。只剪一个维度,容易造成某个模块过度压缩;联合搜索可以在不同模块之间分配压缩预算。

从你前面看的 token reduction 方法脉络看,ViT-Slim 的位置很清楚:

DynamicViT / EViT / ATS / ToMe / TokenLearner 更关注 token 数。

ViT-Slim 更关注整体结构维度,包括 token、attention、MLP。

因此它更适合被放在ViT structured pruning / architecture search类,而不是单纯的 token pruning 类。


十九、一句话总结

《Vision Transformer Slimming: Multi-Dimension Searching in Continuous Optimization Space》提出 ViT-Slim:通过在 ViT 的 MHSA、MLP 和 patch/token 维度上引入可学习 soft masks,并用 L1 稀疏约束进行 one-shot 连续空间搜索,自动找到高效子结构;搜索完成后按 mask 排序删除低重要维度,再重新训练得到真实小模型。它的核心价值是同时减少参数和 FLOPs,而不是只减少 token 计算;在 DeiT-S 上,ViT-SlimPS 可从 22.0M / 4.6B / 79.9% 压缩到 17.7M / 3.7B / 80.6%,ViT-SlimJS 进一步通过 patch selection 达到约 15.7M / 3.1B / 79.9%,是 ViT 多维度结构化压缩的重要代表。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询