一、论文基本信息论文题目MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning作者Zechun Liu、Haoyuan Mu、Xiangyu Zhang、Zichao Guo、Xin Yang、Kwang-Ting Cheng、Jian Sun发表信息ICCV 2019论文链接官方代码这篇论文发表于ICCV 2019CVF 页面显示论文收录于Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), 2019, pp. 3296–3305。论文提出了一种基于元学习的自动通道剪枝方法先训练一个PruningNet使其能够为任意给定的剪枝结构生成权重然后使用进化算法搜索性能较好的剪枝网络。CVF 页面和 arXiv 摘要都明确给出了官方代码地址。官方 GitHub 仓库说明MetaPruning 可以自动搜索每一层的最佳剪枝比例也就是每层应该保留多少通道整个方法包含两个步骤第一步训练一个 meta-net也就是 PruningNet用来为各种通道数组合生成可靠权重第二步用进化算法搜索最优剪枝网络并最终从头训练或评估该剪枝网络。二、论文要解决的问题在 MetaPruning 之前通道剪枝方法大多围绕两个问题展开。第一个问题是每一层应该剪哪些通道例如L1 Filter Pruning: 剪掉小范数 filters。 ThiNet / Channel Pruning: 剪掉对特征重构影响较小的通道。 Network Slimming: 根据 BN gamma 选择通道。 FPGM: 剪掉靠近几何中位数的冗余 filters。 HRank: 剪掉低秩 feature map 对应的 filters。第二个问题是每一层应该剪多少通道这个问题其实更难。因为剪枝不是只在某一层做选择而是要决定整个网络的通道配置conv1 保留多少通道 conv2 保留多少通道 conv3 保留多少通道 ……如果一个网络有很多层每层都有多个可选通道数那么所有可能的剪枝结构会形成一个巨大的搜索空间。传统方法通常需要人工设定每层剪枝率例如浅层少剪 中间层适中 深层多剪 或者所有层统一剪 30%但这种人工设定很难保证最优。官方代码仓库也明确指出传统剪枝需要决定每一层剪哪些通道并且需要人工设置每层剪枝率MetaPruning 的目标是自动搜索每层最佳剪枝比例。MetaPruning 要解决的核心问题就是能不能自动搜索每一层保留多少通道同时避免对每一个候选结构都重新训练或微调三、核心思想MetaPruning 的核心思想可以概括为一句话训练一个 PruningNet让它根据候选剪枝结构直接生成对应网络权重这样在搜索阶段就不需要对每个候选子网进行微调可以快速评估大量候选结构。传统剪枝搜索的流程通常是生成一个候选剪枝结构 ↓ 构建子网络 ↓ 训练 / 微调这个子网络 ↓ 评估精度 ↓ 换下一个候选结构这个流程的问题是候选结构太多逐个训练代价太高。MetaPruning 改成先训练 PruningNet ↓ 生成一个候选剪枝结构 ↓ PruningNet 直接生成该结构的权重 ↓ 快速评估该候选结构 ↓ 进化算法继续搜索也就是说MetaPruning 将“训练每个候选子网”的成本转化为“训练一个能生成很多子网权重的元网络”的成本。论文摘要中明确写到搜索阶段效率高是因为权重由训练好的 PruningNet 直接生成因此搜索时不需要 fine-tuning一个 PruningNet 训练好后可以在不同约束下搜索多种剪枝网络。四、方法细节4.1 什么是 Pruned Network Structure在 MetaPruning 中一个剪枝网络结构主要由每一层保留的通道数决定。例如一个 5 层 CNN 原始通道数为[64, 128, 256, 256, 512]一个候选剪枝结构可能是[48, 96, 160, 192, 320]另一个候选结构可能是[32, 80, 128, 160, 256]这些通道数向量就可以看作网络结构编码。论文和代码中通常把这种结构编码称为encoding vector或者 candidate structure。官方 README 中也提到搜索结束后会输出 top-1 encoding vector用户可以将这个 encoding vector 写入evaluate.py中评估对应的 Pruned Network。因此MetaPruning 的搜索对象不是单个 filter也不是单层剪枝率而是整个网络的通道配置candidate [c1, c2, c3, ..., cL]其中 (c_l) 表示第 (l) 层保留的通道数。4.2 PruningNet 的作用PruningNet 是 MetaPruning 的核心。它的输入是一个候选剪枝结构输出是这个剪枝结构所需的网络权重。可以抽象为其中(e)候选剪枝结构编码(W)该结构对应的网络权重元网络。直观理解普通网络 输入图像 输出分类结果 PruningNet 输入网络结构编码 输出这个结构对应的权重所以PruningNet 不是直接做图像分类而是负责生成另一个网络的参数。这就是 MetaPruning 中“meta learning”的含义它学习的不是某一个固定网络的权重而是学习如何为不同剪枝结构生成权重。论文摘要明确说PruningNet 是一种 meta network能够为目标网络中的任意剪枝结构生成权重参数。4.3 为什么需要 PruningNet如果没有 PruningNet搜索一个剪枝结构需要这样做candidate structure ↓ 构建对应网络 ↓ 训练或 fine-tuning ↓ 得到 accuracy对于大量候选结构这个成本非常高。有了 PruningNet 后candidate structure ↓ PruningNet 生成权重 ↓ 直接评估 accuracy这样搜索阶段就不需要对每个候选结构单独 fine-tuning。这和 EagleEye 有相似之处EagleEye: 用 Adaptive BN 快速评估候选子网 减少候选 fine-tuning 成本。 MetaPruning: 用 PruningNet 直接生成候选子网权重 搜索时不需要 fine-tuning。二者都是为了解决搜索式剪枝中的候选评估成本问题但技术路径不同。4.4 PruningNet 如何训练MetaPruning 使用随机结构采样来训练 PruningNet。训练过程可以概括为1. 随机采样一个候选剪枝结构 e。 2. 将 e 输入 PruningNet。 3. PruningNet 生成该结构对应的网络权重 W。 4. 用 W 构建 Pruned Network。 5. 将训练图像输入 Pruned Network。 6. 计算分类 loss。 7. 反向传播更新 PruningNet 参数。 8. 继续采样新的结构。也就是说每一次训练迭代PruningNet 都可能面对一个不同的网络结构。它必须学会为各种不同通道配置生成可用权重。这和普通网络训练最大的区别是普通训练 网络结构固定只学习一组权重。 MetaPruning: 网络结构不断变化学习的是“生成权重的能力”。论文摘要中也明确提到MetaPruning 使用简单的 stochastic structure sampling 方法训练 PruningNet。4.5 搜索阶段Evolutionary SearchPruningNet 训练完成后MetaPruning 进入搜索阶段。这时不再更新 PruningNet而是用它来快速评估候选剪枝结构。整体流程为1. 随机初始化一批候选通道配置。 2. 对每个候选配置 a. 输入 PruningNet b. 生成该子网权重 c. 在验证集上评估 accuracy d. 检查 FLOPs / 参数量约束 3. 保留表现较好的候选。 4. 通过 mutation / crossover 产生新候选。 5. 重复搜索。 6. 得到最优 encoding vector。论文摘要写到PruningNet 训练后会使用 evolutionary procedure 搜索表现好的剪枝网络。官方代码 README 也说明MetaPruning 的第二步是通过 evolutional algorithm 搜索最佳 Pruned Net并在搜索结束后输出 top-1 encoding vector。4.6 为什么搜索阶段不需要 fine-tuningMetaPruning 搜索阶段的关键优势是每个候选子网的权重由 PruningNet 直接生成。因此不需要候选 A fine-tune 10 epoch 候选 B fine-tune 10 epoch 候选 C fine-tune 10 epoch ……直接生成权重后就可以评估候选结构。论文摘要明确指出搜索过程高效因为权重由训练好的 PruningNet 直接生成搜索阶段不需要 fine-tuning。这点和很多自动剪枝方法不同。例如 AMC、EagleEye、LeGR 都需要某种候选评估机制而 MetaPruning 的评估依赖 PruningNet 直接给候选结构生成可用权重。4.7 最终模型如何得到搜索阶段找到最优通道配置后最终模型通常不是直接使用 PruningNet 生成的权重作为最终部署模型而是使用搜索得到的结构重新训练或评估。官方代码 README 中写到MetaPruning 包含两步训练 PruningNet为所有可能通道数组合提供可靠权重然后用进化算法搜索最佳 Pruned Net并通过从头训练评估一个最佳 Pruned Net。所以可以理解为PruningNet 主要用于搜索阶段快速评估结构。 最终部署模型 使用搜索得到的通道配置 再进行正式训练 / 评估。这点很重要。MetaPruning 的价值不只是生成权重而是通过生成权重帮助我们快速找到更好的结构。4.8 与传统剪枝方法的区别MetaPruning 和传统通道剪枝的区别非常明显。传统通道剪枝 从一个预训练大模型出发 ↓ 判断哪些通道不重要 ↓ 删除通道 ↓ fine-tuning MetaPruning 训练一个 PruningNet ↓ 自动生成不同候选子网的权重 ↓ 搜索最优通道配置 ↓ 得到最终剪枝结构因此MetaPruning 更接近Network pruning Neural Architecture Search Meta learning它不是简单地“剪掉已有网络中的某些通道”而是通过元学习和搜索找到一个更优的通道配置。五、关键公式5.1 通道配置编码设目标网络有 (L) 个可变通道层一个候选剪枝结构可以写成5.2 PruningNet 生成权重5.3 PruningNet 训练目标对于随机采样的结构 (e \sim \mathcal{E})PruningNet 生成权重后得到子网络训练目标可以写成直观含义是随机采样很多候选结构让 PruningNet 学会为这些结构生成能完成分类任务的权重。5.4 搜索目标在给定复杂度约束下搜索最优结构约束为其中 (C(e)) 可以是 FLOPs、参数量或其他复杂度指标。六、实验设置MetaPruning 主要在 ImageNet 上验证目标网络包括MobileNet V1 MobileNet V2 ResNetCVF 摘要明确指出MetaPruning 在 MobileNet V1/V2 和 ResNet 上相较于已有剪枝方法展示了更优表现。官方 GitHub README 中列出了 MobileNet V1、MobileNet V2 和 ResNet 的实验结果。例如 MobileNet V1 中uniform baseline 的 0.75× 模型 Top-1 为 68.4%、FLOPs 为 325MMetaPruning 搜索得到的模型在 316M FLOPs 下 Top-1 为 70.9%。MobileNet V2 中MetaPruning 在 303M FLOPs 下达到 72.7% Top-1ResNet 中MetaPruning 在 2.0G FLOPs 下达到 75.4% Top-1在 1.0G FLOPs 下达到 73.4% Top-1。数据划分方面官方 README 说明ImageNet 训练图像需要划分为 sub-validation dataset 和 sub-training datasetsub-validation 包含 50,000 张图像每个 1000 类中随机选 50 张其余训练图像用于训练 PruningNet。PruningNet 在 sub-training 上训练搜索阶段在 sub-validation 上评估候选剪枝网络精度。七、实验结果解读7.1 MobileNet V1比 uniform width multiplier 更优MobileNet V1 常见压缩方式是直接使用 width multiplier例如 0.75×、0.5×、0.25×。这种方式相当于所有层按统一比例缩小。但统一缩放不一定是最优因为不同层冗余程度不同。有些层可以多剪有些层需要保留更多通道。官方 README 给出的结果显示MobileNet V1 0.75× uniform: Top-1 68.4% FLOPs 325M MetaPruning MobileNet V1: Top-1 70.9% FLOPs 316M在相近计算量下MetaPruning 明显优于统一缩放。这说明自动搜索每层通道数比简单地把所有层乘同一个比例更有效。7.2 MobileNet V1 激进压缩优势更明显在更低 FLOPs 下MetaPruning 的优势更明显。官方 README 中MobileNet V1 0.5× uniform: Top-1 63.7% FLOPs 149M MetaPruning: Top-1 66.1% FLOPs 142M更激进的 0.25× 设置下MobileNet V1 0.25× uniform: Top-1 50.6% FLOPs 41M MetaPruning: Top-1 57.2% FLOPs 41M可以看到在 41M FLOPs 极低计算预算下MetaPruning 比 uniform baseline 高出较大幅度。这说明当压缩越激进时人工统一剪枝越容易破坏关键层而自动搜索的价值越明显。7.3 MobileNet V2对倒残差结构也有效MobileNet V2 使用 inverted residual 和 depthwise separable convolution结构比普通 CNN 更复杂。官方 README 中MobileNet V2 baseline 为Top-1 74.7% FLOPs 585MMetaPruning 在不同 FLOPs 下得到303M FLOPs: Top-1 72.7% 140M FLOPs: Top-1 68.2% 43M FLOPs: Top-1 58.3%这些结果说明MetaPruning 不只适用于普通卷积网络也能处理 MobileNet V2 这种移动端高效结构。7.4 ResNet残差结构上也能搜索通道配置ResNet 有 shortcut 和残差连接剪枝时需要处理通道依赖。官方 README 给出 ResNet 结果ResNet baseline: Top-1 76.6% FLOPs 4.1G MetaPruning 0.75 setting: Top-1 75.4% FLOPs 2.0G MetaPruning 0.5 setting: Top-1 73.4% FLOPs 1.0G相比 uniform baselineMetaPruning 在相近或更低 FLOPs 下获得更高精度。这说明 MetaPruning 的结构搜索能力也能扩展到残差网络。7.5 搜索效率PruningNet 让候选评估变快MetaPruning 最大的贡献并不只是某个结果高而是搜索方式变了。传统自动剪枝如果要评估很多候选结构通常需要每个候选结构都训练 / 微调MetaPruning 通过训练一个 PruningNet让搜索阶段可以直接生成候选结构权重 直接评估 不用 fine-tuning论文摘要明确强调这种搜索非常高效因为权重由训练好的 PruningNet 直接生成搜索时不需要 fine-tuning。这使 MetaPruning 在自动剪枝路线中具有特殊地位它不是设计一个新的通道重要性指标而是设计一个结构—权重生成器从而让大量候选结构搜索变得可行。八、方法优点8.1 自动搜索每层通道数MetaPruning 不需要手动指定每一层剪枝率而是自动搜索每层保留多少通道。官方 README 也明确指出它可以自动搜索每层最佳剪枝比例。这比统一 width multiplier 更灵活。8.2 搜索阶段不需要 fine-tuning 每个候选子网PruningNet 能直接为候选结构生成权重因此搜索阶段不需要为每个候选结构单独 fine-tune。这极大降低了自动剪枝的搜索成本。8.3 一个 PruningNet 支持多种约束论文摘要指出一个 PruningNet 训练好后可以在不同约束下搜索多种 Pruned Networks。这和 LeGR 有相似之处都希望一次训练或一次排序支持多个预算模型。区别是LeGR: 学一个全局 filter ranking。 MetaPruning: 学一个能生成候选子网权重的 PruningNet。8.4 对 MobileNet 这种紧凑网络有效MobileNet V1/V2 本身已经是高效网络冗余比普通大 CNN 更少。MetaPruning 仍能在 MobileNet 上获得优于 uniform baseline 的结果说明其自动通道配置搜索具有实际价值。8.5 更接近 NAS-style pruningMetaPruning 不只是 pruning它也有明显的 NAS 思想搜索空间 每层通道数配置。 性能预测 PruningNet 生成权重后快速评估。 搜索算法 Evolutionary algorithm。 最终输出 满足约束的高性能网络结构。因此它可以看作结构化剪枝和神经架构搜索之间的桥梁。九、方法局限9.1 训练 PruningNet 成本不低MetaPruning 节省了搜索阶段候选子网 fine-tuning 的成本但它需要先训练一个 PruningNet。也就是说成本从训练大量候选子网转移到了训练一个能覆盖大量候选结构的元网络如果目标网络很大、候选空间很大PruningNet 的训练也并不轻松。9.2 PruningNet 的泛化能力是关键MetaPruning 假设 PruningNet 能为未见过的候选结构生成可靠权重。如果 PruningNet 对某些结构泛化不好那么搜索阶段评估出来的 accuracy 就可能不可靠。这点和 EagleEye 中的“候选评估分数是否和最终精度相关”类似都是自动剪枝方法必须面对的问题。9.3 最终结构仍通常需要正式训练搜索阶段使用 PruningNet 生成权重进行快速评估但最终得到的最佳结构通常还需要正式训练或从头训练来获得最终模型。官方 README 中也写到搜索最佳 Pruned Net 后通过从头训练评估该 Pruned Network。所以 MetaPruning 并不是完全免训练的 one-shot pruning。9.4 实现复杂度较高相比 L1、FPGM、HRank 这类排序式剪枝方法MetaPruning 需要实现结构编码 PruningNet 动态生成权重 随机结构采样训练 进化搜索 复杂度约束 最终结构训练工程复杂度明显更高。9.5 对 Transformer / LLM 不能直接照搬MetaPruning 原文面向 CNN channel pruning。对于 ViT、LLM、VLM剪枝对象可能是attention heads MLP hidden neurons tokens layers KV cache vision tokensMetaPruning 的思想可以迁移为训练一个 meta network 根据候选压缩结构生成权重或预测性能 再进行结构搜索。但原始 CNN 通道编码和权重生成方式不能直接用于 Transformer。十、后续影响MetaPruning 的影响主要体现在三个方面。第一它把通道剪枝推进到自动结构搜索。传统方法更关注“哪些通道不重要”而 MetaPruning 更关注“什么样的通道配置最优”。第二它提出用元网络生成候选子网权重从而避免搜索阶段对每个候选都 fine-tune。这对后来的 once-for-all、supernet、weight-sharing NAS、自动剪枝搜索都有启发。第三它和 EagleEye、LeGR 形成了一个清晰的自动剪枝脉络EagleEye: 快速评估候选子网。 LeGR: 学习一次全局排序生成多个预算模型。 MetaPruning: 训练 PruningNet为候选结构直接生成权重 再用进化算法搜索最优结构。如果说前面很多论文问的是如何给 filter / channel 打分那么 MetaPruning 问的是能不能训练一个元网络 让它为不同剪枝结构生成权重 从而自动搜索每层最优通道数这就是 MetaPruning 在剪枝论文脉络中的核心位置。十一、一句话总结《MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning》提出训练一个 PruningNet使其能够根据候选通道配置直接生成对应子网权重并结合进化算法自动搜索满足 FLOPs 约束的高性能剪枝结构从而把通道剪枝从人工设定剪枝率推进到基于元学习的自动结构搜索。