news 2026/7/16 4:04:55

模型剪枝经典论文精读:SkipNet: Learning Dynamic Routing in Convolutional Networks

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模型剪枝经典论文精读:SkipNet: Learning Dynamic Routing in Convolutional Networks

一、论文基本信息

论文题目:SkipNet: Learning Dynamic Routing in Convolutional Networks

作者:Xin Wang、Fisher Yu、Zi-Yi Dou、Trevor Darrell、Joseph E. Gonzalez

发表信息:ECCV 2018

论文链接:CVF Open Access / arXiv

官方代码:ucbdrive/skipnet

这篇论文发表于ECCV 2018。CVF 页面显示论文收录于 ECCV 2018,页码为 409–424。论文的核心思想是:不是把网络静态剪小,而是让网络根据每张输入图片动态决定哪些 residual blocks 执行、哪些 residual blocks 跳过。论文官方 GitHub 仓库为 ucbdrive/skipnet,README 中说明 SkipNet 会对每张图像学习一条动态路径,困难图像走更多层,简单图像走更少层。

这篇论文和传统剪枝论文最大的不同是:SkipNet 不是静态结构化剪枝,而是动态推理 / 条件计算方法。传统剪枝得到的是一个固定小模型;SkipNet 得到的是一个带 gate 的动态网络,不同输入会走不同深度。


二、论文要解决的问题

深层 CNN 往往精度更高,但推理成本也更高。论文指出,很多输入样本并不需要完整深层网络才能正确分类;简单图像可能只需要较浅路径,困难图像才需要更多层。因此,如果每张图像都完整执行所有层,就会浪费计算。

传统压缩方法通常会做静态压缩,例如 filter pruning、quantization、distillation、low-rank decomposition 等。这些方法的特点是:压缩后每张输入都走同一个固定模型。

SkipNet 的问题设定不同。它问的是:

能不能让网络在推理时根据输入内容动态选择计算路径?

也就是说,对于简单图片,跳过更多残差块;对于困难图片,执行更多残差块。

所以 SkipNet 要解决的不是:

哪些 filters 永久删除?

而是:

对当前这张图片,哪些 residual blocks 可以临时跳过?


三、核心思想

SkipNet 的核心思想可以概括为一句话:

在 ResNet 的 residual blocks 之间加入 gating network,让 gate 根据前一层 activation 判断下一个 block 是执行还是跳过。

对于第 i个 residual block,设输入为,block 变换为,gate 为。SkipNet 的输出写成:

其中:

时,执行该 residual block。

时,跳过该 residual block,直接把输入传到下一层。

这个公式是 SkipNet 的核心。论文明确把 gating module 放在 residual blocks 之间,让 gate 根据前一层 activation 做二值决策。

这里最需要强调的是:

SkipNet 依赖 ResNet 的残差结构,因为 residual block 的输入和输出维度通常一致,所以才能安全地直接跳过 block。

如果是普通顺序 CNN,直接跳过某一层可能会导致维度或语义不匹配;但 ResNet 本来就有 identity shortcut,所以天然适合动态跳层。


四、方法细节

4.1 动态路由不是 early-exit

SkipNet 很容易和 early-exit 方法混淆,但二者不一样。

Early-exit 的思想是:如果浅层分类头已经足够自信,就提前退出,不再执行后续网络。

SkipNet 的思想是:不提前退出,而是在网络内部选择性跳过某些 residual blocks,后面的层仍然可以继续执行。

这点非常重要。

Early-exit 的路径通常是从前往后执行,到某个点停止。

SkipNet 的路径则更灵活:它可以跳过中间某些 blocks,但继续执行后面的 blocks。

因此,SkipNet 的搜索空间比简单 early-exit 更大,表达能力也更灵活。论文也明确指出,SkipNet 不是 early termination,而是 conditionally bypass individual layers。


4.2 Gate 的作用

每个 gate 的输入是前面层或 block 的 activation,输出是一个二值动作:

执行:

跳过:

这个 gate 本质上是一个轻量分类器,用来判断:

当前样本是否需要经过下一个 residual block。

直观理解如下。

如果图像很简单,例如目标大、背景干净、类别明显,那么 gate 可能倾向于跳过更多 blocks。

如果图像很困难,例如目标小、遮挡多、背景复杂,那么 gate 可能倾向于执行更多 blocks。

论文也做了定性分析,认为 learned gating policy 和图像尺度、显著性之间存在关系:困难图像通常会执行更多层,简单图像会跳过更多层。


4.3 两种 gate 设计

论文主要研究了两类 gate。

第一类是Feed-forward Gate,前馈门控

它为每个 residual block 分配一个独立 gating module。论文设计了 FFGate-I 和 FFGate-II。FFGate-I 包含两个卷积、global average pooling 和全连接层,计算量约为 residual block 的 19%;FFGate-II 更轻量,只包含一个stride 2 卷积、global average pooling 和全连接层,计算量约为 residual block 的 12.5%。

第二类是Recurrent Gate,循环门控

RNNGate 使用 LSTM 在不同 blocks 之间共享参数,并利用前面 gate 的状态信息来帮助当前 gate 决策。论文中 RNNGate 的成本非常低,约为 residual block 计算量的 0.04%。论文实验也发现,RNNGate 通常比 feed-forward gate 同时具有更低计算成本和更好精度。

所以 SkipNet 最重要的 gate 设计结论是:

动态路由不仅要会判断是否跳过,还必须足够轻量;否则 gate 自身的计算开销会抵消跳层带来的收益。


五、训练难点

SkipNet 的最大难点是:gate 的跳过 / 执行动作是离散二值决策,不可直接反向传播。

如果 gate 输出是连续值,例如 0.3、0.7,那么训练可以用普通梯度下降,但推理时无法真正节省计算,因为只要不是硬跳过,block 仍然要执行。

如果 gate 输出是硬二值 0 或 1,那么推理可以真正跳过 block,但训练时这个离散决策不可导。

论文指出,简单使用 soft gate 训练再在推理时 hard threshold,会导致精度较差,因为训练和推理不一致。

因此,SkipNet 采用了两阶段训练:

第一阶段:supervised pre-training。

第二阶段:hybrid reinforcement learning。

这也是论文方法的关键。


六、Supervised Pre-training

在 supervised pre-training 阶段,SkipNet 使用一种近似技巧:

前向传播时使用 hard gate。

反向传播时使用 soft gate。

论文把它写成:


其中是 gate 的 soft 输出,是指示函数。

这个设计的作用是:

前向时让网络看到真实 hard skipping 路径,反向时仍然能让 gate 获得梯度。

论文认为,如果直接从随机初始化开始用强化学习训练,容易陷入差的局部最优;supervised pre-training 可以给 base network 和 gating network 一个更稳定的初始化。

这一步很重要,因为它解决了动态网络训练中的一个核心问题:

先让 gate 学会基本可用的路由策略,再用强化学习进一步优化跳层策略。


七、Hybrid Reinforcement Learning

完成 supervised pre-training 后,论文使用 REINFORCE 进一步优化 gate policy。

SkipNet 把每个 gate 的决策看作 sequential decision making。对于第 (i) 个 gate,定义 skipping policy:

%29%2Cy%29%20%3D%20%5Cfrac%7B%5Calpha%7D%7BN%7D%5Csum_%7Bi%3D1%7D%5E%7BN%7DR_i%20%5Cright%5D" />

如果,说明跳过第 i 个 block,就获得计算节省 reward。

如果,说明执行该 block,不获得跳过奖励。

是控制精度和计算量 trade-off 的超参数。论文指出,通过调节,可以得到不同计算预算下的 SkipNet。

这里的重点是:

SkipNet 的训练目标不是单纯提高精度,而是在精度和计算成本之间做动态权衡。


八、完整算法流程

SkipNet 的完整训练流程如下。

第一,基于 ResNet 构建带 gate 的 SkipNet。

第二,在 residual blocks 之间插入 gate。

第三,用 supervised pre-training 训练网络。前向使用 hard gate,反向使用 soft gate。

第四,以 supervised pre-training 的结果作为初始化。

第五,用 hybrid reinforcement learning 继续优化 gate policy。

第六,在推理阶段,对每张输入图片执行 hard routing。

第七,简单图片跳过更多 blocks,困难图片执行更多 blocks。

最终得到的是:

一个输入自适应的动态深度网络。

它不是一个固定剪枝后的小模型,而是一个per-input adaptive inference model


九、实验设置

论文在四个分类数据集上验证 SkipNet:

CIFAR-10

CIFAR-100

SVHN

ImageNet

其中 CIFAR-10 和 CIFAR-100 均为 50k 训练图像、10k 测试图像;SVHN 使用训练集和 extra 数据,ImageNet 使用 1.28M 训练图像和 50k 验证图像

模型方面,论文以 ResNet 为基础。在 CIFAR 和 SVHN 上使用不同深度的 ResNet,例如 ResNet-38、ResNet-74、ResNet-110、ResNet-152;在 ImageNet 上使用 ResNet-34、ResNet-50、ResNet-101。

训练方面,SkipNet 使用两阶段训练。第一阶段与原 ResNet 训练设置类似;第二阶段使用较小学习率进行 policy refinement。论文说明整体训练时间比普通模型增加约 30%–40%。


十、实验结果解读

10.1 CIFAR-10、CIFAR-100、SVHN:大幅减少 FLOPs

论文在保持原模型精度基本不变的前提下,报告了明显的计算量下降。

对于最深模型,使用 RNNGate 和 HRL+SP 后,SkipNet 在 CIFAR-10 上减少约 50% 计算,在 CIFAR-100 上减少约 37% 计算,在 SVHN 上减少约 86% 计算。论文还指出,相比只使用 supervised pre-training,加入 hybrid reinforcement learning 通常还能进一步带来 10% 或更多计算量下降。

这说明:

动态跳层在简单数据集上尤其有效。

SVHN 是街景数字识别,很多样本相对简单,所以 SkipNet 可以跳过大量 residual blocks,同时保持精度。


10.2 ImageNet:ResNet-101 减少约 30% 计算

在 ImageNet 上,SkipNet 的计算节省幅度没有 SVHN 那么夸张,但仍然有效。

论文报告,使用 RNNGate 的 SkipNet-101+HRL+SP 在保持完整网络精度的情况下,可以减少约 30% 计算。

这说明:

ImageNet 任务更复杂,模型需要执行更多层,因此可跳过空间更小。

但即使如此,30% 的动态计算节省仍然有意义。


10.3控制精度和计算量折中

SkipNet 的目标函数中有一个超参数,用于控制跳层奖励。

较大时,模型更倾向于跳过 layers,计算量更低,但精度可能下降。

较小时,模型更保守,执行更多 layers,精度更高但计算量更大。

论文在 ImageNet 上展示了不同下的 accuracy-computation trade-off,并指出通过调节,SkipNet 可以满足不同计算预算或精度要求。

这点非常重要:

SkipNet 不是只能产生一个模型,而是可以通过调节 cost reward 得到不同预算下的动态推理策略。


10.4 RNNGate 优于 Feed-forward Gate

论文实验表明,RNNGate 通常比 FFGate 更好。

原因主要有两个。

第一,RNNGate 成本极低,约为 residual block 计算量的 0.04%。

第二,RNNGate 能利用跨层状态信息,更好地建模前面 layers 的路由历史。论文也推测,recurrent gate 能更好捕捉 cross-layer dependencies。

所以,SkipNet 的 gate 设计给后续动态网络一个重要启发:

路由决策不是彼此独立的,前面层的选择会影响后面层是否需要执行。


十一、方法优点

11.1 输入自适应

SkipNet 最大优点是per-input dynamic inference

传统剪枝方法得到的是一个固定小模型,每张图像都使用同一计算路径。

SkipNet 则让不同图像使用不同计算路径。

这更符合直觉:简单样本少算,困难样本多算。


11.2 真正减少计算

SkipNet 使用 hard gate。如果某个 block 被跳过,该 block 的卷积计算就不会执行。

因此,它不是软注意力,也不是单纯调权重,而是可以真正减少 FLOPs。


11.3 利用 ResNet 结构天然跳层

ResNet 的 identity shortcut 让跳过 residual block 非常自然。

这使 SkipNet 不需要重新设计复杂网络拓扑,只需要在 residual blocks 之间加入 gate。


11.4 兼顾精度与计算预算

通过调节 (\alpha),SkipNet 可以在不同 accuracy-computation trade-off 上工作。

这对实际部署很有价值,因为不同设备、不同场景可能有不同延迟或能耗要求。


11.5 对后续动态网络有启发

SkipNet 是较早系统研究 dynamic routing / conditional computation 的代表方法之一。

它对后续动态深度网络、动态 token pruning、early exiting、conditional computation、Mixture-of-Experts routing 等方向都有启发意义。


十二、方法局限

12.1 不是传统意义上的静态剪枝

SkipNet 不会得到一个固定变窄的模型。

它保留原网络结构和 gate,只是在推理时动态跳过部分 blocks。

所以,如果部署平台不擅长动态控制流,SkipNet 的实际加速可能不如 FLOPs 下降那么理想。

这是它和 filter pruning、channel pruning、DepGraph 等方法的重要区别。


12.2 训练复杂度更高

SkipNet 需要两阶段训练:

先 supervised pre-training。

再 hybrid reinforcement learning。

论文也报告整体训练时间比普通模型增加约 30%–40%。

相比 L1 pruning、FPGM、HRank 这类方法,SkipNet 的训练流程更复杂。


12.3 强化学习训练可能不稳定

论文自己也指出,直接用 RL 学 hard decision gates 容易陷入差的局部最优,所以需要 supervised pre-training 初始化。

这说明 SkipNet 的效果比较依赖训练策略。


12.4 Gate 也有计算开销

如果 gate 太复杂,节省的 block 计算可能被 gate 计算抵消。

因此 SkipNet 特别强调轻量 gate,尤其是 RNNGate。

这也是动态网络部署中普遍存在的问题:

路由器本身必须足够便宜。


12.5 动态路径对硬件不一定友好

GPU、NPU 等硬件通常更喜欢规则、批量一致的计算。

SkipNet 每张图像路径不同,如果 batch 内样本路径不一致,可能导致控制流开销、并行效率下降。

所以,在真实部署中,SkipNet 的延迟收益需要结合具体框架和硬件验证。


十三、和前面剪枝论文的关系

SkipNet 应该作为动态推理 / 条件计算方向的代表论文,而不是普通结构化剪枝论文。

它和前面方法的关系可以这样理解:

Pruning Filters for Efficient ConvNets 关注静态删除 filters

ThiNet / Channel Pruning 关注重构误差驱动的静态通道剪枝

Network Slimming 关注BN gamma 稀疏化后静态剪枝

SFP / FPGM / HRank / CHIP 关注不同通道重要性或冗余指标

Importance Estimation / Gate Decorator 关注loss sensitivity / gate-based importance

DepGraph 关注任意结构剪枝中的依赖关系和同步裁剪

SkipNet 关注每个输入动态选择执行哪些 blocks

所以 SkipNet 的定位应该是:

从“把模型永久剪小”转向“让模型按输入动态少算”。

这也是它和传统剪枝方法最大的区别。


十四、一句话总结

《SkipNet: Learning Dynamic Routing in Convolutional Networks》提出在 ResNet 的 residual blocks 之间加入轻量 gating network,让模型根据每张输入图像动态决定执行或跳过哪些 blocks,并通过 supervised pre-training 与 hybrid reinforcement learning 解决 hard gate 不可导问题;它的核心贡献不是静态删除通道,而是实现输入自适应的动态推理,在保持精度的同时减少 30%–90% 计算量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 4:03:55

从信号到文件:解码音频技术核心要素与应用实践

1. 音频信号:从物理振动到数字世界的桥梁声音的本质是物体振动产生的机械波,通过空气等介质传播到我们的耳朵。这种振动可以用连续的波形来表示,也就是我们常说的模拟信号。想象一下水面上的波纹,当一块石头投入水中时&#xff0c…

作者头像 李华
网站建设 2026/7/16 4:03:27

C++线程池工业级实现:从核心原理到避坑指南

1. 项目概述最近在后台收到不少朋友的私信,想让我聊聊线程池的C实现。这确实是个老生常谈但又常谈常新的话题,尤其是在高并发、高性能的服务端开发中,一个设计得当的线程池往往是系统稳定性的基石。很多人觉得线程池不就是个“任务队列加几个…

作者头像 李华
网站建设 2026/7/16 4:00:26

PHP不死马的攻防博弈:从原理剖析到实战查杀

1. PHP不死马的核心原理剖析1.1 什么是PHP不死马PHP不死马是一种特殊的内存驻留型后门脚本,它通过删除自身文件并利用无限循环机制,将恶意代码持久化保存在PHP进程内存中。与传统webshell最大的区别在于——它没有实体文件。攻击者上传一个PHP脚本后&…

作者头像 李华
网站建设 2026/7/16 3:57:53

张量基础学习(四 张量代数运算——下)

1. 张量缩并:高维数据的降维手术张量缩并(Tensor Contraction)是张量代数中最具实用价值的运算之一,它就像给高维数据做"降维手术"。想象你手里有个五阶魔方(33333),通过缩并运算可以…

作者头像 李华
网站建设 2026/7/16 3:56:47

RA6M4开发板PWM控制舵机实战指南

1. RA-Eco-RA6M4开发板PWM功能初探第一次拿到RA-Eco-RA6M4开发板时,我就被它丰富的PWM外设资源吸引了。作为瑞萨电子的新一代MCU开发平台,RA6M4系列基于Arm Cortex-M4内核,主频高达200MHz,特别适合需要精确时序控制的应用场景。开…

作者头像 李华
网站建设 2026/7/16 3:53:03

DeepSeek:低成本高性能AI代码助手实战指南

最近在AI圈里有个很有意思的现象:很多开发者都在寻找"平替"方案——既想要接近GPT-4的性能,又不愿意承担高昂的API费用。如果你也在为这个问题头疼,那么今天要介绍的DeepSeek可能正是你需要的解决方案。作为一个长期关注AI技术落地…

作者头像 李华