模型剪枝经典论文精读:Group Sparsity: The Hinge Between Filter Pruning and Decomposition for Network Compressio

📅 2026/7/14 11:44:13
模型剪枝经典论文精读:Group Sparsity: The Hinge Between Filter Pruning and Decomposition for Network Compressio
一、论文基本信息论文题目Group Sparsity: The Hinge Between Filter Pruning and Decomposition for Network Compression作者Yawei Li、Shuhang Gu、Christoph Mayer、Luc Van Gool、Radu Timofte发表信息CVPR 2020论文链接CVF Open Access / arXiv官方代码ofsoundof/group_sparsity这篇论文发表于CVPR 2020。论文的核心目标是从统一视角分析两类经典网络压缩方法filter pruning和low-rank decomposition。作者认为这两类方法本质上都在寻找卷积权重张量的紧凑近似只是操作形式不同通过在卷积后引入一个sparsity-inducing matrix (A)并对 (A) 的不同结构组施加 group sparsity就可以分别得到类似 filter pruning 或 decomposition 的效果。论文摘要也明确指出该方法可以根据层的具体结构在 pruning 和 decomposition 两种模式之间灵活切换。官方代码仓库为ofsoundof/group_sparsityREADME 中说明这是该 CVPR 2020 论文的官方实现并提供了模型测试、训练、压缩模型、依赖环境和实验结果说明。二、论文要解决的问题在这篇论文之前网络压缩中有两条经典路线。第一条是filter pruning删除不重要的 filters / channels ↓ 直接减少卷积输出通道数 ↓ 得到更窄的卷积层第二条是low-rank decomposition / filter decomposition把一个大的卷积分解成两个较小卷积 ↓ 例如 k×k convolution 1×1 convolution ↓ 用低秩近似减少计算论文指出这两类方法各有优缺点。Filter pruning 可以直接删除输出通道结构简单部署友好但在 ResNet 这类带 shortcut 的结构中某些卷积层的输出不能随便剪因为输出还要和 shortcut 相加。论文特别提到很多 pruning 方法难以处理 ResNet basic block 中第二个卷积层因为剪掉该层输出可能等价于破坏重要的 shortcut 输入特征。Low-rank decomposition 则可以处理一些 pruning 不方便处理的层例如 ResBlock 中最后一个卷积但 decomposition 往往会额外引入一个 (1\times1) 卷积层这会带来额外 kernel 调用开销在真实部署中不一定总是划算。论文明确指出decomposition 通常会引入额外的 (1\times1) convolutional layer因此有额外 CUDA kernel 调用开销。所以这篇论文要解决的问题是能不能把 filter pruning 和 low-rank decomposition 放到一个统一框架中 让网络根据不同层的结构特点 选择更合适的压缩方式也就是说它不是只问这个 filter 该不该剪而是进一步问这一层更适合用 pruning 还是更适合用 decomposition 能不能用同一个数学框架统一两者这就是题目中“The Hinge Between Filter Pruning and Decomposition”的含义。三、核心思想论文的核心思想可以概括为一句话在原始卷积后插入一个可学习的稀疏诱导矩阵 (A)然后根据对 (A) 的列或行施加 group sparsity分别得到 filter pruning 或 low-rank decomposition 的效果。普通卷积可以写成矩阵乘法Z XW其中(X)reshape 后的输入 feature map(W)reshape 后的卷积权重矩阵(Z)输出 feature map。论文在 (W) 后面插入一个矩阵 (A)这里可以理解为接在原卷积后面的一个卷积。然后重点来了对 A 的列施加 group sparsity ↓ 某些输出列被置零 ↓ 等价于删除输出 channels / filters ↓ 对应 filter pruning 对 A 的行施加 group sparsity ↓ 中间维度被压缩 ↓ 原始大卷积变成 W_r 和 A_r 两个小卷积 ↓ 对应 low-rank decomposition论文 Figure 1 和 Figure 3 正是说明这个关系对 sparsity-inducing matrix (A) 的列做 group sparsity会得到类似 filter pruning 的效果对 (A) 的行做 group sparsity会得到类似 decomposition 的效果。所以矩阵 (A) 就是这篇论文所谓的hingeA 的列稀疏 走向 pruning。 A 的行稀疏 走向 decomposition。 A 同时作为 1×1 conv 把两类压缩方式统一起来。四、方法细节4.1 原始卷积的矩阵形式一个卷积可以转换为矩阵乘法Z XW其中论文在第 3.1 节中给出了这个矩阵化表达并用它来说明后续 group sparsity 统一框架。4.2 传统 group sparsity 直接作用在 (W) 上传统结构化稀疏训练通常写成这种方法直接对卷积权重 (W) 加 group sparsity让某些 filters 或 channels 被压到 0。论文认为这类方法虽然能做 pruning但还不能自然连接 decomposition。4.3 引入 sparsity-inducing matrix (A)论文的关键做法是不直接对 (W) 加稀疏而是在 (W) 后面插入 (A)Z X(WA)然后优化4.4 为什么 (A) 可以连接 pruning 和 decomposition假设 (A) 的列被稀疏化。如果 (A) 的某些列接近 0那么WA中对应输出通道也会变得无效。此时可以把这些输出通道删除得到一个更窄的卷积。这就是filter pruning。如果 (A) 的行被稀疏化。那么 (W) 和 (A) 的中间维度可以减少。原始 (W A) 可以变成其中原卷积的低维部分后接的卷积中间通道数被压缩。这就是low-rank decomposition / filter decomposition。4.5 Group sparsity 正则形式论文把 group sparsity 写成这说明论文并不是只使用一种固定稀疏正则而是把不同 sparsity regularizer 都纳入框架中。4.6 Proximal Gradient Solver由于 group sparsity 正则通常不可直接用普通 SGD 很好地优化论文使用proximal gradient method。整体分两步。第一步对 (A) 做普通梯度下降其中第二步做 proximal step也就是在梯度更新后再通过 proximal operator 把某些 group 推向 0。论文明确说明(A) 用 proximal gradient 优化过程由 gradient descent 和 proximal operator 组成对于 (p1) 时是 soft-thresholding对于 (p1/2) 时是 half-thresholding。4.7 为什么 (W) 和 (A) 使用不同学习率论文希望压缩阶段主要修改 (A)而不要大幅破坏原始预训练权重 (W)。因此W: 使用较小学习率 保持预训练知识。 A: 使用较大学习率 让 group sparsity 快速形成。论文实验中提到压缩阶段 (W) 和 (A) 使用不同学习率(\eta_s) 与 (\eta) 的比例为 0.01。这个设计很重要。因为如果 (W) 也大幅更新可能会导致整个网络重新训练而不是只学习压缩结构。4.8 Binary Search 确定阈值压缩时论文会把 group (L_2) norm 小于某个阈值 (T) 的 group 置零。但问题是T 太小 压缩不够。 T 太大 压缩过度精度下降。所以论文使用 binary search 来寻找合适的 nullifying threshold (T)使最终 FLOPs 压缩率接近目标压缩率4.9 Layer Balancing避免某些层被压得过狠论文发现不同层的 group (L_2) norm 分布可能差异很大。如果使用同一个全局稀疏强度可能导致某些层被过度压缩形成很窄的 bottleneck进而影响性能。为了解决这个问题论文用每层 group (L_2) norm 的均值重新校准该层的 regularization factor这样平均 group norm 较大的层会得到更大的 penalty从而让不同层之间的压缩更加平衡。论文将其称为group (L_2) norm based layer balancing。4.10 Regularization Factor Annealing在压缩后期如果固定仍然过大可能会导致一轮中突然有太多 group 被置零超过目标压缩率。因此论文提出regularization factor annealing压缩初期 使用较强 regularization 快速推动 group 稀疏。 压缩后期 降低 regularization factor 避免过度剪枝 让优化在局部邻域内更稳定。论文说明当平均 group (L_2) norm 低于某个阈值时会 anneal regularization factor。4.11 Fine-tuning 阶段使用知识蒸馏压缩完成后论文对压缩模型进行 fine-tuning并加入知识蒸馏损失论文中使用(T4)。蒸馏的作用是让压缩模型的输出分布接近原模型帮助恢复精度。五、整体算法流程可以把这篇论文的方法概括为输入 预训练模型 目标 FLOPs / 参数压缩率 group sparsity 类型 pruning / decomposition 设置 Step 1: 在卷积层后插入 sparsity-inducing matrix A 等价于增加一个 1×1 convolution。 Step 2: 根据当前层适合 pruning 还是 decomposition 对 A 的列或行施加 group sparsity。 Step 3: 使用 proximal gradient 优化 A W 只用较小学习率微调。 Step 4: 每轮根据 group L2 norm 和阈值 T 置零部分 group。 Step 5: 用 binary search 调整 T 使实际压缩率接近目标压缩率。 Step 6: 使用 layer balancing 和 regularization annealing 提高压缩稳定性。 Step 7: 根据 A 的稀疏结构导出真正的压缩网络 列稀疏 → pruning 行稀疏 → decomposition Step 8: 使用知识蒸馏 fine-tuning 压缩模型。这篇论文的关键不是某个单独步骤而是把这些步骤组合成一个完整的Hinge compression pipeline。七、实验设置论文在三个图像分类数据集上验证CIFAR-10 CIFAR-100 ImageNet2012网络结构包括ResNet ResNeXt VGG DenseNet WRN其中CIFAR-10 / CIFAR-100 上测试 ResNet、ResNeXt、VGG、DenseNet、WRNImageNet2012 上测试 ResNet-50。论文说明CIFAR 上原始网络训练 300 epochsSGD momentum 为 0.9weight decay 为batch size 为 64ResNet-50 使用 PyTorch 预训练模型。八、实验结果解读8.1 CIFAR-10在多种结构上都有竞争力论文在 CIFAR-10 上比较了 ResNet、ResNeXt、VGG16、DenseNet 等模型。对于 VGG16Hinge 方法达到 6.41% Top-1 error剩余 FLOPs 为 60.93%剩余参数为 19.95%相比 GAL-0.1 的 6.58% error 和 17.80% 参数比例Hinge 在精度上更好。对于 DenseNet-12-40Hinge 达到 5.33% error剩余 FLOPs 为 55.60%剩余参数为 72.46%。这个结果说明该方法不是只适合单一网络而是可以应用到多种 CNN 结构。8.2 ResNet-56同等 FLOPs 下优于部分已有方法论文指出在 ResNet-56 的约 50% FLOPs 压缩点上该方法取得了较好的性能在更高压缩率下也优于 KSE 等对比方法。论文 Figure 4 展示了 Hinge 与 KSE 在不同 FLOPs 和参数比例下的对比Hinge 在相同压缩比例附近有更低 Top-1 error。这说明 group sparsity hinge 的优势不只是理论统一而是在实际压缩精度上也有收益。8.3 CIFAR-100蒸馏进一步提升效果论文在 ResNet164 和 ResNeXt164 上比较了 SSS、Hinge without distillation 和 Hinge with distillation。结果显示即使不使用蒸馏Hinge 已经优于 SSS加入 distillation loss 后Top-1 error 进一步降低。论文明确指出distillation loss 能让 164-layer 网络的结果进一步改善。这说明这篇论文的最终效果不是单靠 group sparsity还依赖压缩后 fine-tuning 阶段的知识蒸馏。8.4 ImageNet / ResNet-50压缩率和精度折中较好在 ImageNet2012 的 ResNet-50 上论文表 4 报告Hinge 方法在剩余 FLOPs 为 46.55% 时Top-1 error 为 25.30%。相比 FPGM 的 25.17% Top-1 error 和 47.50% FLOPsHinge 的误差略高但 FLOPs 更低相比 GAL 的 28.20% error 和 44.98% FLOPsHinge 精度明显更好。论文总结认为该方法在 Top-1 error 和 FLOPs compression ratio 之间取得了有竞争力的 trade-off。这个实验说明Hinge 不只是 CIFAR 小数据集有效也能扩展到 ImageNet 级别的大模型压缩。九、方法优点9.1 统一 filter pruning 和 decomposition这是论文最大贡献。以前 pruning 和 decomposition 通常是两条独立路线Pruning: 删除 filters / channels。 Decomposition: 分解卷积权重插入低秩结构。这篇论文用 (A) 矩阵把两者统一起来A 的列稀疏 pruning。 A 的行稀疏 decomposition。这种统一视角很有理论意义也给实际压缩提供了更多选择。9.2 可以处理 ResNet 中 pruning 难处理的层Filter pruning 不适合随意剪 ResBlock 中最后一个卷积因为其输出要和 shortcut 相加。论文指出decomposition 可以处理这类 pruning 不方便处理的层。通过 Hinge 框架网络可以根据结构选择 pruning 或 decomposition从而更灵活。9.3 联合压缩整个网络而不是逐层压缩论文提出压缩 whole network jointly而不是 layer-wise manner。这样可以减少逐层局部决策带来的问题也更接近全局压缩目标。9.4 Proximal gradient 更适合 group sparsity普通 SGD 很难把 group 精确压到 0。Proximal gradient 可以通过 proximal operator 更有效地产生结构化稀疏。论文还结合了 threshold binary search、layer balancing、annealing 等技巧使压缩过程更稳定。9.5 适用于多种 CNN 结构论文在 VGG、ResNet、ResNeXt、WRN、DenseNet 等模型上验证说明该框架不是为某一个网络定制。十、方法局限10.1 工程实现复杂相比 L1、FPGM、HRank 这类排序式剪枝方法这篇论文需要插入 sparsity-inducing matrix A 实现 proximal gradient 设计 group sparsity 正则 二分搜索 threshold 做 layer balancing 做 annealing 再进行蒸馏 fine-tuning因此复现难度明显更高。10.2 Decomposition 可能带来额外 kernel 调用论文自己也指出decomposition 会引入额外 (1\times1) 卷积层带来 CUDA kernel 调用开销。虽然理论 FLOPs 降低但真实延迟是否下降还要看硬件和推理框架。10.3 需要较多超参数例如regularization factor λ threshold T target compression ratio proximal regularizer 类型 learning rate ratio layer balancing 方式 annealing 触发条件 distillation temperature这些超参数会影响最终压缩效果。10.4 最终仍需要 fine-tuning压缩阶段只是得到结构最后还要用知识蒸馏 fine-tuning 才能恢复精度。论文的实验也显示distillation 对最终结果有明显帮助。10.5 对 Transformer / LLM 不能直接照搬这篇论文针对 CNN 卷积权重矩阵 (W) 和 (1\times1) sparsity-inducing matrix (A)。对于 Transformer、ViT、LLM、VLM压缩对象变成attention heads MLP hidden dimensions tokens layers KV cache vision tokens不过它的统一思想可以迁移引入一个可学习的结构变换矩阵 ↓ 对不同 group 施加 sparsity ↓ 根据 group 稀疏方向得到 pruning 或 low-rank factorization但原始 CNN 公式不能直接使用。十一、后续影响这篇论文的影响主要体现在三个方面。第一它从compact tensor approximation角度统一了 filter pruning 和 decomposition。这个视角比单纯“剪哪个通道”更高一层因为它把两类压缩操作都看成对卷积权重的紧凑近似。第二它说明 group sparsity 不只是 pruning 工具也可以作为 decomposition 的入口。通过改变 group sparsity 施加在 (A) 的行还是列就能切换压缩模式。第三它为“混合压缩”提供了一个清晰框架。实际部署中某些层适合 pruning某些层适合 decomposition单一压缩方式未必最优。这篇论文的 Hinge 框架正是为了让不同层灵活选择压缩形式。如果说 FPGM、HRank、CHIP 主要问的是哪些 filters / channels 更冗余那么这篇论文问的是filter pruning 和 low-rank decomposition 能不能用同一个 group sparsity 框架统一起来 并根据层结构灵活选择压缩方式这就是它在剪枝论文脉络中的核心位置。十二、一句话总结《Group Sparsity: The Hinge Between Filter Pruning and Decomposition for Network Compression》通过在卷积后引入 sparsity-inducing matrix (A)并对 (A) 的列或行施加 group sparsity将 filter pruning 和 low-rank decomposition 统一到同一优化框架中它的核心价值不是新的通道重要性指标而是提供了一个能在 pruning 和 decomposition 之间灵活切换的混合压缩框架。