https://cs.nju.edu.cn/wujx/paper/Pruning_Survey_MLA21.pdf

一、先给你打个总比喻:剪枝到底在干嘛?

我们可以把神经网络看成一栋超级大别墅

  • 房间太多、走廊太宽,跑起来慢、占地大(=模型大、FLOPs高、推理慢)
  • 剪枝 = 给别墅合法拆迁、精简结构,拆掉没用的房间、缩窄多余走廊
  • 目标:房子变小、跑得快,但住起来功能几乎没变(=模型变小、速度变快,精度不掉太多)

之前主流的剪枝叫:
基于重要性的剪枝
人先定规则:“这个卷积核重要、那个通道没用”,然后按重要性删。

而你要学的是另一大类:

二、基于搜索的剪枝:让AI自己找“最佳瘦身方案”

1. 先铺垫两个必须懂的基础词

  1. 神经网络结构搜索(NAS)
    以前网络结构(几层、每层多少通道)都是专家手工设计,累、难、费人。
    NAS = 让机器自动搜索出好的网络结构,代替人设计。

    • 早期:Zoph & Le 用强化学习做NAS,巨耗算力。
    • 后来:DARTS 用基于梯度的搜索,速度快很多,变成主流。
  2. 基于搜索的剪枝
    研究者换了个思路:

    结构化剪枝,看成一次 “在原模型里搜一个最优小模型” 的过程。
    原模型 = 大别墅
    搜出来的子模型 = 精简后的小别墅(就是剪枝完的模型)


三、逐个讲懂:经典的基于搜索的剪枝方法

我每个都给你:大白话 + 专业细节 + 核心贡献

1. AMC(2018)——用强化学习“智能体”来剪枝

  • 思路:把剪枝交给强化学习智能体去试错。
  • 技术细节:
    1. 每一层的输入维度、卷积核大小、步长等,编码成一个状态(state)
    2. DDPG 算法训练一个智能体
    3. 智能体输出“剪多少”的动作(action)
    4. 奖励(reward):分类错误越少、FLOPs越小,奖励越高
  • 人话:让AI像玩游戏一样,试各种剪枝方案,越准、越快得分越高

2. ABCPruner——模仿蜜蜂找蜜,搜最优通道数

  • 算法:人工蜂群算法(仿生优化算法)
  • 和传统剪枝最大区别:
    传统剪枝:挑哪个通道重要,删不重要的。
    ABCPruner:不挑单个通道,只决定每层留多少个通道
  • 技术细节:
    1. 每层通道数 → 拼成一个可行解
    2. 一堆可行解 → 组成种群
    3. 子模型在数据集上的效果 → 叫适应度(评分)
    4. 蜂群算法在这些解里搜最高分方案
  • 效果:在 ResNet-152 上
    • FLOPs ↓ 62.87%
    • 参数量 ↓ 60%
    • 精度几乎不变

3. MetaPruning——元学习 + 演化搜索,自动剪通道

  • 思路:用元学习学会“怎么剪枝”,再用演化算法搜好模型。
  • 关键 trick:
    不搜“具体哪一个通道留”,只搜**“每层留多少通道”**,极大缩小搜索空间
  • 效果:ResNet-50 减少 25% FLOPs,Top-1 精度只掉 0.4%。

4. NetworkAdjustment——用数学公式“算出来”怎么剪

  • 思路:不搜、不试错,直接建模
  • 技术细节:
    1. 模型准确率看成 FLOPs(计算量)的函数
    2. 算出每一层的 FLOPs 利用率
    3. 按利用率自动调整每层通道数
  • 人话:给准确率和计算量列个方程,解方程就知道每层该留多少。

5. DMCP——解决“搜索太慢”的神器:可微分 + 马尔可夫

前面的演化算法、蜂群算法,搜索时间还是巨长
DMCP 做了一件事:把剪枝变成可微分、能用梯度下降训练

  • 技术细节:
    1. 每层通道的剪/留 → 建模成一个马尔可夫过程
    2. 通道数变多/变少 → 对应马尔可夫状态转移
    3. 直接用梯度下降优化,不用暴力搜索
  • 效果:ResNet-50 减少 46% FLOPs,精度只降 0.4%,又快又好。

四、表格2 一眼看懂:搜索剪枝 VS 传统重要性剪枝

这张表统一用 ResNet-50 + ILSVRC-2012 数据集,比谁剪得狠、精度掉得少。

先认指标

  • FLOPs:计算量(越小越快)
  • 剪枝百分比(%):剪掉多少计算量
  • Top-1 准确率(%):分类正确率
  • 准确率变化(%):和原模型比,掉了多少(越接近0越好)

两大类对比

  1. 基于重要性的剪枝(左边)
    靠人定规则:熵、范数、几何中值、高激活排名等。
    特点:剪多了精度掉得很猛(比如 HRank 剪76%,精度掉7%)。

  2. 基于搜索的剪枝(右边)
    让算法自动搜最优结构:

    • DMCP:剪 31% FLOPs,精度还涨了 0.4%
    • AutoSlim:剪 27% FLOPs,精度几乎没变(-0.15%)
    • MetaPruning、TAS 等都比传统方法更稳、掉点更少

五、极简总结(小白也能背下来)

  1. 基于搜索的剪枝 = 把剪枝当成一次神经网络结构搜索(NAS),让AI自己找最优小模型。
  2. 早期用:强化学习(AMC)、仿生算法(ABCPruner)、演化算法(MetaPruning)
  3. 后来进阶:可微分搜索(DMCP),把剪枝变成马尔可夫过程+梯度下降,又快又准
  4. 核心优势:
    • 不靠人工定重要性规则
    • 大多只搜每层通道数,搜索空间小
    • 同等剪枝量下,精度比传统重要性剪枝高很多

3 基于搜索的剪枝方法

神经网络结构搜索(Neural Architecture Search, NAS)近年来在网络结构自动设计领域得到广泛研究与应用。传统深度学习模型的结构依赖研究者根据领域经验进行人工设计,不仅需要大量的先验知识与反复实验,同时人力成本与调试成本较高。

Zoph 和 Le 最早提出基于强化学习的神经网络结构搜索方法,以自动搜索替代人工设计网络结构,但这类方法通常需要巨大的计算资源与训练开销。随着 DARTS 等基于梯度的搜索方法被提出,因其搜索效率高、可端到端优化等优势,逐渐成为 NAS 的主流方案。

在此背景下,研究者将结构化剪枝建模为一种在给定原型网络上进行子结构搜索的过程:以预先训练好的大型网络为搜索空间,通过搜索算法从中筛选出精度高、计算量低的最优子网络,该子网络即为剪枝后的轻量化模型。本节对典型的基于搜索的剪枝方法进行系统梳理与介绍。

3.1 基于强化学习的剪枝搜索——AMC

AMC(AutoML for Model Compression)是较早将强化学习引入通道剪枝的代表性工作。

其核心思路是:

将模型剪枝过程建模为序列决策问题,把网络每一层的输入特征维度、卷积核尺寸、步长、输出通道数等信息编码为强化学习的状态(State),采用深度确定性策略梯度算法(DDPG)作为决策智能体,输出每一层的剪枝比例作为动作(Action)

在优化目标上, AMC 以分类错误率FLOPs共同构成奖赏函数:在保证精度尽可能高的同时,鼓励模型计算量尽可能小。

通过与环境不断交互试错,智能体可自动学习到每层最优的剪枝策略,避免人工设定剪枝比例与重要性准则。

3.2 基于仿生优化算法的剪枝搜索——ABCPruner

ABCPruner 采用人工蜂群算法(Artificial Bee Colony) 进行剪枝结构搜索,与传统基于重要性的剪枝存在明显区别:

传统剪枝通常先评估每个通道的重要性分数,再按分数删除低贡献通道;

而 ABCPruner 并不直接选择具体通道,而是搜索每层应当保留的通道数量

具体实现中:

  • 将每一层保留的通道数组合成一个可行解
  • 若干可行解构成算法的搜索种群
  • 以剪枝后子模型在验证集上的精度作为适应度值
  • 通过人工蜂群的雇佣蜂、观察蜂、侦察蜂阶段迭代搜索最优通道配置。

在 ILSVRC-2012 数据集上,ABCPruner 可在 ResNet-152 模型上实现 62.87% FLOPs 与 60% 参数量的压缩,同时精度基本保持不变。

3.3 基于元学习与演化搜索的剪枝——MetaPruning

MetaPruning 采用元学习演化搜索结合的方式实现自动通道剪枝。

该方法首先训练一个元网络(Meta Network),用于学习不同结构下的剪枝先验知识,再通过演化算法搜索表现最优的剪枝子模型。

为降低搜索复杂度,MetaPruning 同样采用搜索每层通道数而非搜索单个通道去留的策略,大幅缩小搜索空间,提升搜索效率。

实验结果表明,在 ResNet-50 模型上减少 25% FLOPs 时,其在 ILSVRC-2012 数据集上的 Top-1 准确率仅下降 0.4%。

3.4 基于计算量建模的自动结构调整——NetworkAdjustment

NetworkAdjustment 从数值建模角度实现自动剪枝,不依赖复杂的搜索迭代。

其核心思想是:

将模型精度建模为关于计算量 FLOPs 的函数,通过对该函数进行分析,得到每一层的FLOPs 利用率,再依据利用率自动分配每层应保留的通道数。
该方法将剪枝转化为一个资源分配问题,通过数学关系直接推导最优结构,具有计算开销小、推理速度快的特点。

3.5 基于可微分马尔可夫过程的高效搜索——DMCP

基于演化算法、蜂群算法的搜索方法虽然效果较好,但通常存在搜索耗时长、难以端到端训练的问题。

DMCP(Differentiable Markov Channel Pruning)将剪枝过程建模为可微分的马尔可夫过程,从而可以直接通过梯度下降进行端到端优化。

具体而言:

  • 将每一层通道的剪枝与保留构造成一个独立的马尔可夫决策过程
  • 通道数量的增加或减少对应马尔可夫链中的状态转移
  • 将结构搜索从离散优化转化为连续可微分优化,可与网络训练同步完成。

在 ILSVRC-2012 数据集上,DMCP 可对 ResNet-50 减少近 46% FLOPs,同时 Top-1 精度仅下降 0.4%,在压缩率与精度之间实现了优秀平衡。


表2 不同剪枝算法在 ResNet-50 上的性能对比

下表统一以 ResNet-50 为基础模型,在 ILSVRC-2012 数据集上对比各类剪枝算法的压缩性能与精度变化。由于不同方法的训练框架与初始化存在差异,以相对精度变化作为主要对比依据。

表 2 不同剪枝算法在 ResNet-50 上的性能表现

类别 方法 模型FLOPs 剪枝百分比(%) 子模型Top-1准确率(%) 准确率变化(%)
基于重要性的剪枝方法 SFP 8.17 0 76.15 +0.00
4.75 42 74.61 -1.54
FPGM 8.17 0 76.15 +0.00
4.74 42 75.59 -0.56
3.80 53 74.83 -1.32
HRank 8.17 0 76.15 +0.00
4.60 44 74.98 -0.17
3.10 62 71.98 -4.17
1.96 76 69.10 -7.05
ThiNet 7.72 0 72.88 +0.00
4.88 37 72.04 -0.84
3.41 56 71.01 -1.87
2.20 72 68.42 -4.46
Entropy 7.72 0 72.88 +0.00
7.16 7 73.56 +0.68
6.38 17 72.89 +0.01
5.04 35 70.84 -2.04
CURL 8.17 0 76.15 +0.00
2.22 73 73.39 -2.76
EagleEye 8.17 0 76.60 +0.00
6.00 27 77.10 +0.50
4.00 51 76.40 -0.20
2.00 76 74.20 -2.40
LFPC 8.17 0 76.15 +0.00
3.20 61 74.46 -1.69
基于搜索的剪枝方法 ABCPruner 8.17 0 76.01 +0.00
5.12 37 74.84 -1.17
2.60 68 72.58 -3.42
1.88 77 70.29 -5.72
MetaPruning 8.17 0 76.60 +0.00
6.00 27 76.20 -0.40
4.00 51 75.40 -1.20
2.00 76 73.40 -3.20
TAS 8.17 0 77.46 +0.00
2.31 72 76.20 -1.26
AutoSlim 8.17 0 76.15 +0.00
6.00 27 76.10 -0.15
4.00 51 75.60 -0.55
2.00 76 74.00 -2.15
DMCP 8.17 0 76.60 +0.00
5.60 31 77.00 +0.40
4.40 46 76.20 -0.40
2.20 73 74.40 -2.20

深度总结

从表中可以看出,基于重要性的剪枝依赖人工设计的重要性评价准则,在低压缩率下尚能保持精度,但随着剪枝比例提升,精度会出现明显下降;

基于搜索的剪枝将剪枝视为结构搜索问题,通过强化学习、演化算法、可微分搜索等策略自动优化通道配置,能够在更高压缩率下更稳定地保持模型精度。

其中,DMCP、AutoSlim 等可微分搜索剪枝方法,在搜索效率与性能上均表现突出,成为当前结构化剪枝的主流发展方向。


Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐