模型剪枝经典论文精读:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration
一、论文基本信息论文题目Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration简称FPGM作者Yang He、Ping Liu、Ziwei Wang、Zhilan Hu、Yi Yang发表信息CVPR 2019论文链接https://arxiv.org/abs/1811.00250官方代码https://github.com/he-y/filter-pruning-geometric-median这篇论文发表于 CVPR 2019官方 GitHub 仓库标注为CVPR 2019 Oral并提供 PyTorch 实现。仓库中包含 ImageNet 上 ResNet 训练与剪枝、CIFAR-10 上 ResNet 剪枝、CIFAR-10 上 VGGNet 剪枝等脚本。FPGM 的核心观点非常直接过去很多 filter pruning 方法都依赖“smaller-norm-less-important”假设即认为范数小的 filter 更不重要应该优先剪掉。但论文指出这个假设成立需要两个前提第一filter 范数分布差异要足够大第二最小范数要足够接近 0。现实网络中这两个条件并不总是满足。为了解决这个问题FPGM 不再剪“小范数 filter”而是剪“最容易被其他 filters 替代的冗余 filter”。二、论文要解决的问题在 FPGM 之前filter pruning 中最常见的思路是基于范数排序。例如前面讲过的Pruning Filters for Efficient ConvNets使用 L1 范数衡量 filter 重要性SFP使用 Lp 范数选择低范数 filters 并进行 soft pruning。它们背后的共同假设是filter 范数越小 该 filter 越不重要 越适合被剪掉。FPGM 认为这个假设并不总是可靠。论文明确分析了 norm-based pruning 成功所依赖的两个条件条件一 同一层 filters 的范数差异要足够大。 条件二 最小范数 filters 的范数要足够接近 0。如果同一层 filters 的范数都比较接近那么很难根据范数大小区分谁重要、谁不重要。如果某些 filter 的范数虽然相对较小但绝对值并不接近 0那么它们仍然可能对网络有明显贡献。论文在 ResNet-110 / CIFAR-10 和 ResNet-18 / ImageNet 的真实网络中观察到小范数差异和大最小范数现象确实存在。因此FPGM 要解决的问题是能不能不再依赖“小范数 不重要”这个假设而是从 filter 之间的冗余关系出发剪掉那些最容易被其他 filters 表示的 filter三、核心思想FPGM 的核心思想可以概括为一句话不要剪范数最小的 filter而要剪最靠近该层 filter 集合几何中位数的 filter因为这些 filter 位于 filter 分布中心包含的是更容易被其他 filters 替代的公共信息。这和 L1 / L2 / SFP 的思路有本质区别。L1 / L2 / SFP: 根据 filter 自身范数判断重要性。 FPGM: 根据 filter 与同层其他 filters 的几何关系判断冗余性。也就是说FPGM 不关心某个 filter 自己“大不大”而关心它和其他 filters 是否太相似、是否太“居中”、是否容易被其他 filters 替代。论文中的直觉是如果一个 filter 靠近同层 filters 的几何中心 说明它包含的是大家都有的公共信息 它不是独特的、不可替代的 filter 删除它后剩下的 filters 仍然可以近似表达它的信息。因此FPGM 的剪枝标准不是less important而是most replaceable论文也明确写到FPGM 选择的是贡献“最可替代”的 filters而不是贡献相对较小的 filters。四、方法细节4.1 为什么 norm-based criterion 有问题范数剪枝的逻辑看似很自然filter 权重整体幅值小 ↓ 输出响应可能小 ↓ 对网络贡献可能小 ↓ 可以剪掉但 FPGM 指出这个逻辑有两个隐含前提。第一个前提是同层 filters 的范数分布要拉得很开。如果所有 filters 的范数都差不多那么“最小范数 filter”和“中等范数 filter”之间的差距可能很小。此时只根据范数排序很容易出现误判。第二个前提是最小范数本身要足够小最好接近 0。如果最小范数也很大那么这些 filter 虽然是“相对最小”但并不意味着它们的绝对贡献很小。论文特别强调小范数 filter 可能只是“相对不大”但仍然有正向贡献。所以FPGM 的批评点不是说范数剪枝完全没用而是说范数剪枝有效 需要网络中的 filter 范数分布满足特定条件 但真实网络中这些条件不一定成立。4.2 几何中位数是什么几何中位数是一个经典的鲁棒中心估计。给定一组点几何中位数定义为它表示在空间中找一个点使它到所有点的欧氏距离之和最小。在 FPGM 中每个 filter 都可以看成一个高维点。一个卷积 filter 的形状通常是把它展平后就可以得到一个高维向量。这样同一层的所有 filters 就构成了一组高维点。于是FPGM 可以在这一层的 filter 空间中寻找“中心点”也就是几何中位数。论文正是用几何中位数来捕捉同一层 filters 的公共信息。4.3 为什么靠近几何中位数的 filter 可以剪假设第 (i) 个卷积层有 (N_{i1}) 个 filtersFPGM 定义该层的几何中位数为其中如果某个 filter () 非常接近几何中位数那么它就位于该层 filter 分布的中心附近。FPGM 的解释是靠近几何中位数的 filter 代表的是同层 filters 的公共信息而公共信息可以被剩余 filters 表示。因此剪掉这些中心附近的 filter对网络最终性能影响较小。论文也明确写到靠近 GM 的 filters 可以被剩余 filters 表示因此剪掉它们不会对模型性能造成明显负面影响。这和范数剪枝的区别非常关键范数剪枝 低范数 贡献小 可以剪。 FPGM 靠近几何中心 冗余高 可以剪。4.4 实际实现不直接求精确几何中位数几何中位数本身是一个非平凡的计算几何问题。论文指出精确或近似求解几何中位数可能有较高计算代价。但在 filter pruning 中我们最终要选择的是已有 filters 中的若干个而不是空间中任意一个连续点。因此FPGM 做了一个简化不直接求连续空间里的几何中位数而是在已有 filters 中选择距离其他 filters 总距离最小的 filter。也就是对每个 filter 计算然后选择最小的 filters 进行剪枝。直观理解如果某个 filter 到所有其他 filters 的距离总和最小 说明它处在该层 filters 的中心位置 它不是最独特的 filter 而是最“普通”、最容易被其他 filters 替代的 filter。所以 FPGM 的实际选择标准可以写成如果要剪多个 filters就选择距离和最小的 Top-(m) 个 filters。4.5 FPGM 的剪枝流程FPGM 的算法流程和 SFP 有一定相似性它不是只在训练完成后一次性剪枝而是在训练过程中周期性执行 pruning 操作。论文 Algorithm 1 的流程可以概括为输入 训练数据 X 每层剪枝率 P_i 网络参数 W for epoch 1 ... epoch_max: 1. 正常训练网络参数 W 2. 对每一个待剪卷积层 a. 计算该层 filters 两两距离 b. 对每个 filter 计算到其他 filters 的距离和 c. 选择距离和最小的 N_{i1} P_i 个 filters d. 将这些 filters 置零 训练结束后 根据最终置零 filters 构建 compact model论文 Algorithm 1 中明确写到每个 epoch 更新模型参数然后对每层找出满足公式的 (N_{i1}P_i) 个 filters 并将其 zeroize最后得到 compact model。因此FPGM 可以理解为训练过程中 根据几何中位数思想持续压制冗余 filters。 训练结束后 物理删除这些 filters得到规则紧凑模型。4.6 FPGM-only 和 FPGM-mix论文中有两个版本FPGM-only: 只使用几何中位数准则选择 filters。 FPGM-mix: 一部分 filters 用 FPGM 选择 另一部分 filters 用 norm-based criterion 选择。例如论文中写到FPGM-only 40% 表示某层 40% filters 都由 FPGM 准则选择FPGM-mix 40% 则表示其中 30% filters 由 FPGM 选择剩余 10% filters 由 norm-based criterion 选择。为什么要设计 FPGM-mix因为论文并不是完全否定范数准则。某些层中如果范数分布确实满足“大范数差异、最小范数接近 0”的条件那么范数准则仍然有用。因此FPGM 可以作为范数剪枝的补充。但论文实验也显示在 ImageNet 上 FPGM-only 和 FPGM-mix 差异不明显在 CIFAR-10 上FPGM-mix 有时会略好。论文解释可能是 CIFAR-10 某些层更满足 norm-based criterion 的条件而 ImageNet 预训练网络中这些条件不那么稳定。4.7 FPGM 与 SFP 的关系FPGM 和 SFP 都来自 Yang He 等人的剪枝路线而且官方 FPGM 代码也说明其 PyTorch 实现基于 soft-filter-pruning 仓库。但两者关注点不同。SFP 关注 被剪 filters 是否还能继续更新 剪枝是否可以软化避免不可逆误删 FPGM 关注 选择哪些 filters 更合理 是否可以摆脱小范数假设也就是说SFP 主要改进的是剪枝过程FPGM 主要改进的是剪枝准则。二者可以组合理解SFP: 低范数 filters 先置零但后续仍可更新。 FPGM: 靠近几何中位数的冗余 filters 先置零 后续训练中继续调整模型。六、实验设置6.1 数据集论文主要在两个图像分类 benchmark 上验证 FPGMCIFAR-10 ILSVRC-2012 / ImageNet论文中说明CIFAR-10 包含 60,000 张 32×32 彩色图像其中 50,000 张训练图像和 10,000 张测试图像ILSVRC-2012 包含 1.28M 训练图像和 50k 验证图像共 1,000 类。6.2 网络结构论文在单分支网络和多分支网络上都进行了实验单分支网络 VGGNet 多分支网络 ResNet在 CIFAR-10 上论文测试了 VGGNet以及 ResNet-20、ResNet-32、ResNet-56、ResNet-110。在 ImageNet 上论文测试了 ResNet-18、ResNet-34、ResNet-50 和 ResNet-101。6.3 剪枝设置FPGM 的剪枝设置比较简单论文中对所有 weighted layers 使用相同剪枝率因此只需要一个超参数 (P_iP) 来平衡精度和加速。剪枝操作在每个训练 epoch 结束时执行。这点很重要。很多剪枝论文需要复杂的 sensitivity analysis 来决定每层剪多少而 FPGM 论文强调在它的设置中不依赖复杂敏感性分析也可以取得较好效果。6.4 从头训练和预训练剪枝论文同时比较了两种设置pruning from scratch: 从随机初始化开始训练并在训练过程中剪枝 不额外 fine-tuning。 pruning from pretrained model: 从预训练模型开始剪枝 降低学习率进行 fine-tuning。论文明确说明从头剪枝时使用正常训练 schedule不额外 fine-tuning从预训练模型剪枝时将学习率降为原始学习率的十分之一并使用相同训练 epoch 数进行公平比较。七、实验结果解读7.1 CIFAR-10 / ResNetFPGM 在较高 FLOPs 剪除下保持较小精度损失在 CIFAR-10 上FPGM 测试了 ResNet-20、32、56、110并使用 30% 和 40% 两种剪枝率。论文报告在 ResNet-56 上剪掉约 52.6% FLOPs 时FPGM 的 accuracy drop 为 0.66%而 SFP 为 1.33%。对于 ResNet-110FPGM-only 40% 在约 52.3% FLOPs 剪除下pruned accuracy 为 93.74%相比 baseline accuracy 93.68% 反而略有提升。这个结果说明FPGM 的“剪冗余 filter”策略在高剪枝率下比单纯低范数剪枝更稳。7.2 CIFAR-10 / VGGNetFPGM 同样适用于单分支网络论文也在 CIFAR-10 的 VGGNet 上测试 FPGM。对于预训练 VGGNetFPGM 在相同 34.2% FLOPs 削减下pruned accuracy 为 93.24%优于 PFEC 的 93.22%在从头训练剪枝设置中FPGM 也能达到与 PFEC 相当甚至更好的结果。这说明 FPGM 不只是为 ResNet 设计也可以用于普通串行卷积网络。7.3 ImageNet / ResNetFPGM 能扩展到大规模任务在 ILSVRC-2012 上论文测试了 ResNet-18、34、50、101。论文摘要中给出的代表性结果是在 ResNet-101 上FPGM 可以减少超过 42% FLOPs并且没有 top-5 accuracy drop。论文还报告了理论加速和真实推理加速的对比。例如在 GTX1080 GPU、batch size 为 64 的前向推理测试中ResNet-101 的 forward time 从 219.70 ms 降到 147.45 ms真实加速约 32.9%理论 FLOPs 削减约 42.2%。这个结果也提醒我们FLOPs 下降不等于真实延迟等比例下降。真实加速还受到 IO、缓存、BLAS/cuDNN 实现效率等因素影响。7.4 消融实验剪枝间隔影响不大FPGM 的默认设置是在每个 epoch 结束时执行剪枝。论文在 ResNet-110 / CIFAR-10 上测试了不同 pruning interval从 1 个 epoch 到 10 个 epoch。结果显示准确率波动小于 0.3%说明 FPGM 对这个超参数不太敏感。这说明 FPGM 的剪枝准则比较稳定不需要非常频繁或非常精细地调整剪枝间隔。7.5 消融实验剪枝也可能带来正则化效果论文还测试了 ResNet-110 在不同 FLOPs 削减比例下的表现。结果显示当 pruned FLOPs 为 18% 和 40% 时剪枝模型性能甚至超过 baseline。作者认为这说明 FPGM 可能具有一定正则化效果。这个现象和 SFP、Network Slimming 中的观察有相似之处适度剪枝不仅减少计算还可能缓解过拟合或冗余表达。7.6 消融实验距离度量可以替换FPGM 默认使用 L2 距离计算 filter 之间的距离。论文也尝试用 L1 距离和 cosine distance 替换。结果显示在 ResNet-110 / CIFAR-10 上L1 距离略好于 L2 距离而 cosine distance 略差。这说明 FPGM 的核心不一定局限于 L2 距离而是“通过 filter 间关系衡量冗余性”这一思想。八、方法优点8.1 反思了小范数剪枝的根本假设FPGM 最大的贡献不是简单提出一个新公式而是指出小范数 filter 不一定不重要。这对 filter pruning 研究非常关键。因为早期很多方法都把范数大小当作重要性依据而 FPGM 说明这个依据有明确适用条件。8.2 从“重要性”转向“冗余性”FPGM 的判断标准不是“哪个 filter 贡献最小”而是“哪个 filter 最容易被替代”。这个视角很有价值不重要 这个 filter 自己贡献小。 冗余 这个 filter 的信息可以由其他 filters 表示。在过参数化 CNN 中冗余性往往比单个 filter 的范数更稳定。8.3 不依赖训练数据计算重要性FPGM 是一种 data-independent filter pruning 方法。它只需要模型权重本身不需要额外跑训练数据来统计激活或重构误差。论文也将 filter pruning 方法区分为 data-dependent 和 data-independent并指出 data-independent 方法因为不需要使用训练数据来决定剪枝 filter所以计算更高效。这使得 FPGM 比 ThiNet、Channel Pruning、DCP 这类依赖数据或激活的剪枝方法更轻量。8.4 支持从头训练剪枝FPGM 可以从 scratch 开始训练并剪枝也可以从预训练模型开始剪枝。对于从头剪枝设置论文使用正常训练 schedule不额外 fine-tuning。这和 SFP 的思想一脉相承也与后来的Rethinking the Value of Network Pruning形成呼应剪枝不一定只是在预训练大模型之后做也可以融入训练过程。8.5 最终得到规则稠密小模型FPGM 属于结构化 filter pruning。最终删除的是整个 filters 和对应 feature maps因此得到的是规则的紧凑网络而不是非结构化稀疏矩阵。这意味着它可以更自然地减少参数量、FLOPs并在常规硬件上获得实际推理加速。论文也强调与 weight pruning 产生非结构化稀疏不同filter pruning 会留下规则结构更适合利用高效 BLAS 库。九、方法局限9.1 仍然需要给定每层剪枝率FPGM 的剪枝准则可以判断某一层哪些 filters 更冗余但它并不自动决定每一层应该剪多少。论文中通常对 weighted layers 使用相同剪枝率。这样实现简单但不一定是全局最优。不同层的冗余程度不同统一剪枝率可能会对某些敏感层造成更大影响。9.2 只基于权重空间不直接看任务损失FPGM 不需要数据这是优点也是局限。它只根据 filters 在权重空间中的几何关系判断冗余而没有直接考虑输入数据分布 激活响应 梯度敏感性 最终分类损失 硬件延迟因此一个 filter 在权重空间中“靠近中心”不一定严格等价于它对任务最不重要。9.3 两两距离计算仍有开销对于某一层如果有 (N) 个 filtersFPGM 需要计算 filters 之间的两两距离。复杂度大致与 (N^2) 相关。对于普通 CNN 这通常可以接受但如果网络非常宽或者剪枝对象扩展到 Transformer MLP hidden neurons / attention heads就需要更高效的近似或分块计算。9.4 对残差结构的真实压缩仍需工程处理虽然训练阶段可以 zeroize filters但最终要得到真正 compact model还需要同步处理当前层输出 filters 下一层输入 channels BatchNorm 参数 残差 shortcut / projection 分支结构通道对齐论文在 ImageNet ResNet 实验中也说明为了简化不剪 projection shortcuts。因此FPGM 的思想简单但完整部署仍然需要结构依赖处理。9.5 对 Transformer / LLM 不能直接照搬FPGM 面向 CNN filters。对于 ViT、LLM、VLM剪枝对象可能变成attention heads MLP hidden dimensions tokens layers KV cache vision tokens“几何中位数选择冗余单元”的思想可以借鉴但原始公式需要重新定义剪枝单元和距离度量。十、后续影响FPGM 对剪枝研究的影响主要体现在三个方面。第一它系统反思了small-norm-less-important假设。很多后续剪枝论文都会指出仅用 L1/L2 范数衡量通道重要性并不充分而 FPGM 是这个批评脉络中非常典型的一篇。第二它把剪枝准则从“个体重要性”转向“群体冗余性”。这对后续基于相似性、聚类、相关性、几何结构的剪枝方法有明显启发。第三它延续了 SFP 的训练中剪枝思想但将选择准则从低范数改为几何冗余。因此FPGM 可以看作是 SFP 之后对 filter pruning criterion 的进一步改进。从专栏脉络上看FPGM 可以放在这里Pruning Filters for Efficient ConvNets ↓ ThiNet ↓ Channel Pruning ↓ Network Slimming ↓ NISP ↓ DCP ↓ SFP ↓ FPGM ↓ Rethinking the Value of Network Pruning如果说 SFP 主要回答的是剪掉的 filter 是否应该继续更新那么 FPGM 回答的是到底应该剪掉低范数 filter 还是剪掉最冗余、最可替代的 filter这就是 FPGM 的核心价值。十一、一句话总结《Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration》指出小范数剪枝依赖不稳定的范数分布假设并提出通过几何中位数寻找同层中最冗余、最容易被其他 filters 替代的 filter从而将 filter pruning 的核心从“低重要性剪枝”推进到“高冗余剪枝”。