Growing Networks with Autonomous Pruning
论文笔记:Growing Networks with Autonomous Pruning
元信息
| 项目 | 内容 |
|---|---|
| 机构 | 未明确标注(推测为法国高校) |
| 日期 | March 2026 |
| 项目主页 | 无 |
| 对比基线 | NAP, RigL, SNIP, GraSP, LTH, ART |
| 链接 | arXiv |
一句话总结
提出 GNAP,通过交替执行网络增长与基于 Gumbel-Softmax 门控的自主剪枝,从小网络出发动态构建高精度稀疏网络
核心贡献
增长-剪枝交替策略: 当剪枝收敛(门控变化率低于阈值)时自动触发增长阶段,无需预定义网络架构
SVD 正交初始化: 新增神经元到旧神经元的权重通过 SVD 分解实现正交初始化,避免破坏已训练参数的表示空间
结构化/非结构化统一框架: Gumbel-Softmax 门控机制同时支持 结构化剪枝(整个卷积核)和非结构化剪枝(单个权重),且剪枝完全由梯度下降自主决定
问题背景
要解决的问题
传统 神经架构搜索 需要预先固定网络结构,无法在训练过程中动态调整模型大小
大型网络训练计算成本高、容易过拟合,而小网络表达能力不足
现有方法的局限
剪枝方法(LTH, SNIP, GraSP): 需要先训练或初始化一个大网络,再做剪枝,浪费计算资源
增长方法(Splitting Steepest Descent, Firefly, GradMax): 只做增长不做剪枝,无法自动去除冗余参数
增长+剪枝方法(SNFS, RigL): 维持固定稀疏度约束,无法让网络自主决定最终大小
本文的动机
从一个很小的网络出发,让网络自主决定何时需要更多参数(增长)以及哪些参数是冗余的(剪枝),最终得到一个精度高但极度稀疏的网络
方法详解
模型架构
GNAP 采用类 DenseNet 架构:
- 输入: 图像
- Backbone: Dense blocks,每个卷积层与后续所有层(稀疏)连接
- 核心模块: Gumbel-Softmax 门控用于自主剪枝 + SVD 正交初始化用于增长
- 输出: 分类结果(通过单个全连接层)
- 结构: 个 dense block,block 间用 pooling 下采样,每个 block 内层数和宽度可变
核心模块
模块1: 自主剪枝(Autonomous Pruning)
设计动机: 利用 Gumbel-Softmax 分布的可微采样实现端到端的门控学习,让网络自主决定哪些连接应保留
具体实现:
- 为每个权重(非结构化)或每个卷积核(结构化剪枝)分配一个门控变量
- 门控从 Gumbel-Softmax 分布采样,取值为 0(关闭)或 1(开启)
- 训练时通过 L1 正则化 最大化稀疏性,目标密度
- 推理时使用确定性 softmax,阈值 决定门控开关
模块2: 增长策略(Growing Strategy)
When: 当门控数量的相对变化率低于阈值 时触发(表示剪枝已收敛)
Where: 每个 block 的每层添加 个新神经元,并在每个 block 末尾添加新层
How:
- 新→新、旧→新权重: 高斯初始化 ,
- 新→旧权重: 通过 SVD 正交初始化,确保新神经元与已有表示空间正交
模块3: 细化阶段(Refinement Phase)
训练最后阶段(增长停止后),增大稀疏正则系数 ,进一步剪除冗余参数
细化 200 个 epoch, 从 增大到
关键公式
公式1: 稀疏正则化损失
含义: 在预测损失基础上添加门控变量的 L1 范数,鼓励网络最大化稀疏性
符号说明:
- : 分类预测损失(交叉熵)
- : 稀疏正则权重
- : 所有门控变量组成的向量
- : 开启门控的数量(L1 范数)
公式2: 原始 NAP 损失(对比)
含义: 原始 NAP 使用目标密度 控制稀疏度,GNAP 改为 的 L1 形式
符号说明:
- : 权重/门控总数
- : 第 个门控变量
- : 目标权重密度
公式3: 增长触发条件
含义: 当开启门控数量的相对变化率低于阈值 时,判定剪枝已收敛,触发增长阶段
符号说明:
- : 当前开启的门控数量
- : 过去 个 epoch 的门控数量滑动平均
- : 增长触发阈值(默认 0.05)
公式4: SVD 分解
含义: 对层 的权重矩阵做奇异值分解,获取已有表示的基向量空间
符号说明:
- : 层 的权重矩阵
- : 左奇异向量、奇异值、右奇异向量
公式5: 扩展右奇异矩阵
含义: 将一个随机向量 附加到右奇异矩阵 ,扩展基向量空间
符号说明:
- : 原始右奇异向量矩阵
- : 随机初始化的向量
公式6: 正交约束求解
含义: 求解线性方程,使新权重向量 与已有基向量 正交
符号说明:
- : 新神经元到旧层的权重向量
- : 约束向量,最后一维为 1 确保与 方向对齐
公式7: 符号与尺度恢复
含义: 将正交解 的符号替换为随机符号 ,保留其模长
符号说明:
- : 随机符号向量()
- : 正交约束的解
- : 逐元素乘法
公式8: 高斯初始化标准差
含义: 新→新、旧→新权重的初始化标准差与输入维度成反比
符号说明:
- : 输入神经元数量
关键图表
Figure 1: Network Architecture / 网络架构

说明: GNAP 的整体网络架构。基于 DenseNet 设计,每个卷积层可(稀疏地)连接到所有后续层。网络由多个 dense block 组成,block 间通过 pooling 下采样,最后接全连接分类层。
Figure 2: Training Evolution / 训练过程演化

说明: GNAP-U 在 CIFAR10 上的训练过程。展示了准确率、训练/验证损失和开启门控数量的变化。增长阶段在曲线上表现为明显的跳变(门控数量突增),随后梯度下降平滑恢复。注意门控数量为对数刻度。
Figure 3: Accuracy vs. Parameters / 精度-参数权衡

说明: 不同训练阶段(增长前的快照)的精度-参数关系。每条曲线对应一个增长阶段前的模型,点代表不同推理门控阈值 (0.01 到 0.99)。随着增长阶段推进,模型精度提升同时参数量反而减少——说明新增参数帮助探索更高效的解。最终细化阶段实现显著的稀疏化。
Figure 4: Gate Evolution Visualization / 门控演化可视化
{:width 600}
说明: GNAP-U 在 CIFAR10 训练过程中活跃连接(开启门控)的演化。像素 表示从神经元 到神经元 的连接。可观察到:早期快速剪枝、增长阶段新增神经元、epoch 160-200 的大规模剪枝事件、最终收敛到均匀分布。
Table 1: 初始架构配置
| 模型 | Block 1 | Block 2 | Block 3 | FC |
|---|---|---|---|---|
| GNAP (MNIST) | 10 | 10 | 10 | - |
| GNAP (CIFAR10) | 64,64,64 | 128,128,128 | 256,256,256 | 10 |
| GNAP (CIFAR100) | 64,64,64 | 128,128,128 | 256,256,256 | 100 |
| NAP (m1) MNIST | 10 | 10 | 10 | - |
| NAP (m2) MNIST | 100 | 100 | 10 | - |
| NAP (m3) CIFAR10 | 64 | 128 | - | 10 |
| NAP (m4) CIFAR10 | 64,64 | 128,128 | - | 10 |
| NAP (m5) CIFAR10 | 64,64,64 | 128,128,128 | - | 10 |
| NAP (m6) CIFAR10 | 64,64,64 | 128,128,128 | 256,256,256 | 10 |
| NAP (m7) CIFAR100 | 64,64,64 | 128,128,128 | - | 100 |
| NAP (m8) CIFAR100 | 64,64,64 | 128,128,128 | 256,256,256 | 100 |
说明: GNAP 从与 NAP 最小配置相同的初始架构出发,通过增长阶段自动扩展
Table 2: MNIST 结果
| 方法 | 准确率 | Links | Weights |
|---|---|---|---|
| NAP-U (m1) | 0.9875±0.0008 | 5762±437 | 5762±437 |
| NAP-U (m2) | 0.9938±0.0008 | 9264±2202 | 9264±2202 |
| GNAP-U (rand) | 0.9943±0.0004 | 6154±291 | 6154±291 |
| GNAP-U (ortho) | 0.9944±0.0004 | 6234±203 | 6234±203 |
| NAP-S (m1) | 0.9823±0.0023 | 5409±1388 | 5928±1482 |
| NAP-S (m2) | 0.9923±0.0012 | 21003±10068 | 28533±11678 |
| GNAP-S (rand) | 0.9946±0.0006 | 5221±1151 | 14504±2399 |
| GNAP-S (ortho) | 0.9947±0.0008 | 4971±629 | 13784±1916 |
说明: GNAP 在 MNIST 上达到 99.44-99.47% 准确率,仅需约 6.2k 参数(非结构化)或 5k links(结构化),显著优于同等大小的 NAP
Table 3: CIFAR10 结果
| 方法 | 准确率 | Links | Weights |
|---|---|---|---|
| NAP-U (m4) | 0.8763±0.0055 | 235655±67951 | 235655±67951 |
| NAP-U (m5) | 0.8849±0.0107 | 245168±68530 | 245168±68530 |
| NAP-U (m6) | 0.9162±0.0024 | 696837±116179 | 696837±116179 |
| GNAP-U (rand) | 0.9245±0.0046 | 179979±26074 | 179979±26074 |
| GNAP-U (ortho) | 0.9222±0.0041 | 157765±18620 | 157765±18620 |
| NAP-S (m4) | 0.8802±0.0049 | 99097±38844 | 340501±65564 |
| NAP-S (m5) | 0.8912±0.0051 | 143666±29348 | 521724±88896 |
| NAP-S (m6) | 0.9155±0.0020 | 311167±28118 | 2244999±228665 |
| GNAP-S (rand) | 0.9331±0.0022 | 88365±27679 | 681377±200233 |
| GNAP-S (ortho) | 0.9305±0.0048 | 88227±31551 | 668941±220206 |
说明: GNAP-U (ortho) 以 157.8k 参数达到 92.22% 准确率,比需要 696.8k 参数的 NAP-U (m6) 仅低 0.6% 但参数量少 77%。GNAP-S 在结构化剪枝下达到 93.31%,links 数仅 88k
Table 4: CIFAR100 结果
| 方法 | 准确率 | Links | Weights |
|---|---|---|---|
| NAP-U (m7) | 0.5583±0.0173 | 393330±121100 | 393330±121100 |
| NAP-U (m8) | 0.6408±0.0158 | 410827±118481 | 410827±118481 |
| GNAP-U (rand) | 0.6692±0.0106 | 207289±59319 | 207289±59319 |
| GNAP-U (ortho) | 0.6656±0.0086 | 179857±28182 | 179857±28182 |
| NAP-S (m7) | 0.5085±0.0124 | 231668±3532 | 247850±4221 |
| NAP-S (m8) | 0.5965±0.0141 | 235029±34575 | 461149±142521 |
| GNAP-S (rand) | 0.6812±0.0067 | 135354±17064 | 309983±38011 |
| GNAP-S (ortho) | 0.6784±0.0055 | 125225±13379 | 275970±28591 |
说明: CIFAR100 上 GNAP 优势更加明显。GNAP-S (rand) 以 135k links 达到 68.12%,而 NAP-S (m8) 以 235k links 仅 59.65%——精度高 8.5 个百分点同时参数少 42%
Table 5: CIFAR10 SOTA 对比
| 方法 | 准确率 | Weights | 基础架构 |
|---|---|---|---|
| SimpleNet | 0.9198 | 310000 | - |
| SNIP | 0.9272±0.0018 | 186013 | ResNet32 |
| SNIP | 0.7612±0.2196 | 410968 | VGG19 |
| GraSP | 0.9286±0.0019 | 186013 | ResNet32 |
| GraSP | 0.9216±0.0014 | 410968 | VGG19 |
| SRatio | 0.9185±0.0016 | 93006 | ResNet32 |
| SRatio | 0.9233±0.0024 | 410968 | VGG19 |
| LTH | 0.9268±0.0032 | 186013 | ResNet32 |
| LTH | 0.4117±0.4276 | 410968 | VGG19 |
| IMP | 0.9135±0.0018 | 37203 | ResNet32 |
| IMP | 0.9128±0.0029 | 205484 | VGG19 |
| RigL | 0.9307±0.0022 | 93006 | ResNet32 |
| RigL | 0.9141±0.0015 | 410968 | VGG19 |
| ART | 0.9269±0.0022 | 37203 | ResNet32 |
| ART | 0.9291±0.0010 | 102742 | VGG19 |
| MCUNet | 0.8970 | 210100 | - |
| GNAP-U | 0.9222±0.0041 | 157765 | 无需预定义 |
说明: GNAP 在无需预定义基础架构的情况下,以 157.8k 参数达到与基于 ResNet32/VGG19 的 SOTA 剪枝方法可比的精度。与 RigL (ResNet32, 93k参数, 93.07%) 相比稍低 0.85%,但 GNAP 无需任何先验架构
Table 6: CIFAR100 SOTA 对比
| 方法 | 准确率 | Weights | 基础架构 |
|---|---|---|---|
| SimpleNet | 0.6468 | 310000 | - |
| SNIP | 0.6554±0.0026 | 93006 | ResNet32 |
| GraSP | 0.6584±0.0014 | 93006 | ResNet32 |
| SRatio | 0.6708±0.0041 | 93006 | ResNet32 |
| LTH | 0.6680±0.0049 | 93006 | ResNet32 |
| IMP | 0.6467±0.0036 | 37203 | ResNet32 |
| RigL | 0.6446±0.0036 | 37203 | ResNet32 |
| RigL | 0.6748±0.0036 | 410968 | VGG19 |
| ART | 0.6586±0.0022 | 18601 | ResNet32 |
| ART | 0.6453±0.0024 | 41097 | VGG19 |
| GNAP-U | 0.6656±0.0086 | 179857 | 无需预定义 |
说明: CIFAR100 上 GNAP 精度与 SRatio (67.08%) 和 LTH (66.80%) 接近,优于大部分基于 ResNet32 的方法,同时无需任何先验架构设计
实验结果
主要结论
MNIST: GNAP-S (ortho) 达到 99.47% 准确率,仅 ~5k links,超越所有 NAP 变体
CIFAR-10: GNAP-S (rand) 达到 93.31%,links 数仅 88k;GNAP-U (ortho) 以 157.8k 参数达到 92.22%,与 SOTA 剪枝方法(RigL 93.07%、SNIP 92.72%)可比但无需预定义架构
CIFAR-100: GNAP-S (rand) 以 135k links 达到 68.12%,比 NAP-S (m8) 高 8.5 个百分点同时参数少 42%
增长的悖论: Figure 3 表明增长阶段添加参数后,模型后续训练中反而变得更小——新参数帮助网络发现更高效的解空间
正交 vs 随机初始化: 两者精度相当,但正交初始化(ortho)倾向于产出更稀疏的网络(参数量更少)
数据集
| 数据集 | 规模 | 特点 | 用途 |
|---|---|---|---|
| MNIST | 60k/10k | 手写数字 10 类 | 训练/测试 |
| CIFAR-10 | 50k/10k | 自然图像 10 类 | 训练/测试 |
| CIFAR-100 | 50k/10k | 自然图像 100 类 | 训练/测试 |
实现细节
Backbone: 类 DenseNet,dense block + pooling
优化器: Adam,默认参数
学习率: 0.01
Weight Decay:
Batch Size: 256
数据增强: 水平翻转(50%)、旋转(最大15°)、仿射变换(shear 10, translate 0.1)、裁剪(0.8~1.0)、cutout
GNAP 特有参数:
- 稀疏损失权重 :
- 增长阈值 : 0.05
- 滑动平均窗口 : 10 epochs
- 准确率容忍度 : 0.5%(CIFAR)/ 0.25%(MNIST)
- 固定 12 次增长阶段
- 增长截止: 总 epoch 的 30%
- 细化阶段: 200 epochs,
可视化结果
Figure 3 展示了一个反直觉的现象:增长阶段添加参数后,模型在后续训练中反而变得更小更稀疏。这说明新增参数帮助网络探索更高效的解空间
Figure 4 展示了门控演化的全过程,可观察到早期剪枝的激进性和增长后的重新组织行为
批判性思考
优点
无需先验架构: 从极小网络出发,自动发现合适的网络结构,是真正意义上的架构自动设计
增长-剪枝耦合设计优雅: 用门控收敛作为增长触发条件,在数学上自洽——当网络无法再通过剪枝优化时才增长
SVD 正交初始化有理论支撑: 确保新神经元不与已有表示冗余,最大化新参数的信息增益
实验充分: 三个数据集、结构化与非结构化两种模式、多个 baseline 的对比
局限性
仅在小规模数据集上验证: MNIST/CIFAR-10/CIFAR-100 规模较小,未在 ImageNet 等大规模数据集上验证可扩展性
DenseNet 架构限制: 依赖 DenseNet 的全连接结构,未验证在 ResNet、Transformer 等主流架构上的适用性
缺乏训练效率分析: 未报告总训练时间、FLOPs 对比,无法判断从小网络增长是否真的比直接训练大网络再剪枝更高效
增长策略较粗糙: “everywhere add C neurons” 的策略缺乏对不同层/block 需求差异的考虑
与 SOTA 差距: 在 CIFAR-10 上与 RigL (93.07%) 仍有 ~0.85% 差距,且 RigL 参数量更少(93k vs 158k)
潜在改进方向
自适应增长: 根据每层的表达瓶颈程度(如 effective rank)决定增长量,而非均匀添加
扩展到 Transformer: 将门控机制应用到 attention head 和 FFN 维度
大规模验证: 在 ImageNet 上验证,对比 progressive training 系列方法
训练效率对比: 与 “大网络→剪枝” 的 pipeline 做总 FLOPs 对比
可复现性评估
- 代码开源
- 预训练模型
- 训练细节完整(超参数全部给出)
- 数据集可获取(MNIST, CIFAR-10, CIFAR-100)
关联笔记
基于
NAP: GNAP 的剪枝机制直接基于 NAP 的 Gumbel-Softmax 门控方法,但将目标密度改为 0 并扩展到结构化剪枝
DenseNet: 网络架构的基础,利用密集连接结构实现跨层信息流
对比
RigL: 维持固定稀疏度的动态稀疏训练方法,GNAP 允许稀疏度自由变化
SNIP: 初始化时一次性剪枝,GNAP 在训练过程中持续剪枝
GraSP: 基于梯度信号的初始化剪枝
LTH: 彩票假设,需要多轮训练-剪枝-重置迭代
ART: 自适应正则化训练,同样追求稀疏网络但不做增长
方法相关
Gumbel-Softmax: 核心剪枝机制的数学基础,实现离散门控的可微采样
SVD: 正交初始化的数学工具
结构化剪枝: GNAP 支持的剪枝模式之一
L1 正则化: 稀疏性诱导的正则化方法
progressive training: 渐进式训练的一般范式
神经架构搜索: GNAP 可视为一种隐式 NAS
硬件/数据相关
CIFAR-10: 主要实验数据集
CIFAR-100: 主要实验数据集
速查卡片
Growing Networks with Autonomous Pruning
- 核心: 从小网络出发,交替增长(SVD正交初始化)和自主剪枝(Gumbel-Softmax门控),自动构建稀疏高效网络
- 方法: DenseNet 架构 + Gumbel-Softmax 门控自主剪枝 + 门控收敛触发增长 + SVD 正交初始化新神经元
- 结果: MNIST 99.44%/6.2k参数,CIFAR-10 92.2%/157.8k参数,CIFAR-100 66.6%/179.9k参数
- 代码: 未开源
笔记创建时间: 2026-03-24