06 权重幅值剪枝、剪枝后微调与稀疏网络训练:模型剪枝中的三个基本问题

一、为什么要把这三个问题放在一起讲?

在前面的文章中,我们已经介绍了几类经典剪枝思想:

OBD:用 Hessian 对角项估计删除权重后的损失变化;
OBS:用 Hessian 逆矩阵考虑删除权重后的参数补偿;
Han Pruning:使用 Train-Prune-Retrain 流程进行深度网络剪枝。

其中,Han 等人的Learning both Weights and Connections是深度学习剪枝领域非常重要的一篇论文。它提出了一个简单但非常有效的流程:

训练密集网络 → 删除小权重连接 → 微调剩余连接

论文中作者明确采用三步方法:先训练网络学习重要连接,再剪掉不重要连接,最后重新训练剩余连接以恢复性能。该方法在 AlexNet 和 VGG-16 上取得了显著压缩效果,并且没有造成准确率损失。

但是,理解这个流程时,初学者通常会遇到三个问题:

第一,为什么小权重可以被剪掉?
第二,为什么剪枝之后还要微调?
第三,既然最后得到的是稀疏网络,能不能一开始就直接训练这个稀疏网络?

这三个问题看似简单,但它们其实对应了模型剪枝中的三个核心概念:重要性判断,性能恢复,
稀疏网络可训练性

本文就围绕这三个问题展开。

权重幅值剪枝是什么?

权重幅值剪枝,英文通常叫Magnitude Pruning

它的思想非常简单:权重绝对值越小,越可能不重要,因此可以优先删除。

为什么小权重可以剪掉?

最直观的解释是:小权重对神经元输出的贡献通常较小。如果卷积核中某些权重很小,那么它们对卷积结果的贡献也可能较弱。所以,从局部计算角度看,小权重确实更可能是冗余连接。


二、幅值剪枝为什么在深度网络中有效?

小权重可以剪,只是一个局部直觉。幅值剪枝真正有效,还依赖于深度网络的几个特性。

1. 深度网络通常过参数化

现代神经网络往往拥有远超过任务最低需求的参数数量。也就是说,模型中有很多参数并不是完成任务所必需的。

可以把训练好的模型粗略看成:

幅值剪枝的假设是:许多冗余连接在训练后会表现为较小权重。因此,通过删除小权重,可以去掉一部分冗余连接。


2. 训练过程会自动压低部分无用连接

神经网络训练时,优化器会不断调整权重,使损失函数下降。对于对任务有帮助的连接,权重可能会被逐渐放大或保持在有效范围内。对于贡献较小或方向不稳定的连接,权重可能会逐渐变小。如果再配合 weight decay,很多不必要的权重会进一步被压向 0。因此,训练后的权重大小在一定程度上反映了连接的重要性。


3. 小权重删除带来的局部扰动较小

剪枝本质上是对参数进行扰动。删除权重 (w_i) 等价于:

如果很小,那么扰动幅度:也很小。

从这个角度看,幅值剪枝可以理解为一种最小扰动策略:优先删除对参数空间扰动最小的连接。

这也是它在工程中简单有效的重要原因。


4. 微调可以弥补幅值评分不精确的问题

幅值剪枝并不完美。一个小权重不一定真的不重要,一个大权重也不一定真的不可替代。但是,实际剪枝流程中通常不是剪完就结束,而是会进行微调。微调可以让剩余权重重新适应稀疏结构,弥补一部分误剪带来的损失。因此,幅值剪枝有效并不是因为它永远判断正确,而是因为:

它足够简单;它通常能删除大量明显冗余连接;它造成的损伤可以通过微调部分恢复。

这也是 Han 方法中 Train-Prune-Retrain 流程成功的重要原因。Han 等人的论文明确采用训练、剪枝、重新训练三阶段流程,并在 AlexNet 和 VGG-16 上实现了显著参数压缩且无准确率损失。


三、幅值剪枝的局限性

虽然幅值剪枝有效,但它也有明显局限。

1. 小权重不一定不重要

权重大小只是一个近似指标。如果损失函数对某个小权重非常敏感,删除它仍然可能造成较大损失。这也是 OBD/OBS 引入 Hessian 信息的原因。


2. 大权重不一定不可替代

某些大权重虽然数值较大,但可能和其他权重存在功能冗余。删除它之后,其他权重或通道可能可以补偿其作用。幅值剪枝无法显式建模这种冗余关系。


3. 不同层权重分布不同

全局幅值剪枝会把所有层的权重放在一起排序。但不同层的权重尺度可能不同。这可能导致某些层被剪得过多,出现层塌陷问题。因此,全局剪枝通常需要配合每层最大稀疏率限制,或者采用 layer-wise pruning。


4. 非结构化剪枝不一定带来真实加速

幅值剪枝常用于非结构化剪枝,也就是删除单个权重。这样会产生不规则稀疏矩阵。如果硬件和框架不支持稀疏计算,即使参数量减少,推理速度也不一定明显提升。这也是后续结构化剪枝、通道剪枝和硬件感知剪枝兴起的重要原因。


四、剪枝后为什么需要微调?

剪枝后微调,英文通常叫fine-tuning after pruningretraining after pruning

它的核心作用是:让剩余参数重新适应被剪枝后的网络结构。

剪枝会突然改变模型。

原始模型是基于完整参数集合训练出来的:

剪枝后变成:

这相当于强行删除了一部分连接,模型输出会发生变化,损失通常会上升。

微调的目标就是在固定稀疏结构下重新优化剩余参数:

微调并不是重新找哪些连接重要,而是在已经确定的稀疏连接结构下调整保留下来的权重。


五、微调到底恢复了什么?

剪枝会带来几类损伤,微调就是在修复这些损伤。

1. 修复输出扰动

剪掉某些权重后,中间特征会发生变化。

原来某一层输出是:

剪枝后变成:

两者之间通常存在差异:

这种差异会逐层传播,最终影响模型输出。

微调可以调整剩余权重,让新的特征分布重新适配任务。


2. 重新分配剩余连接的功能

在密集网络中,很多连接共同完成某些功能。

剪枝后,一些连接被删除,剩余连接需要承担更多任务。

微调相当于让模型重新分配功能:

原来由多个连接共同完成的特征表达,
现在由更少的连接重新组织完成。

这和 OBS 中的“参数补偿”思想有相似之处。

不同的是:

OBS:通过 Hessian 逆矩阵显式计算补偿;
Han 方法:通过重新训练隐式学习补偿。


3. 恢复分类边界

剪枝可能会改变分类边界。

对于分类任务,模型最终学习的是不同类别之间的决策边界。

剪枝后,如果特征表示发生变化,决策边界也可能偏移。

微调可以让模型在新的稀疏参数空间中重新找到更合适的决策边界。


4. 校准归一化层和激活分布

如果模型中有 BatchNorm、LayerNorm 等归一化层,剪枝后中间激活分布可能发生变化。

微调可以让模型重新适应新的激活统计。

在结构化剪枝中,这一点尤其重要,因为通道被删除后,特征分布可能发生明显变化。


六、为什么不直接训练剪枝后的稀疏网络?

这是一个非常重要的问题。

既然剪枝之后最终得到的是一个稀疏网络,那么能不能一开始就直接训练这个稀疏网络?

这个问题看起来很自然。

如果可以直接训练稀疏网络,就不需要先训练大模型,也不需要剪枝,训练成本会更低。但实际情况比较复杂。


七、为什么随机稀疏网络通常不好训练?

1. 随机稀疏结构可能破坏信息流

深度网络需要层与层之间保持稳定的信息传播。如果随机删除大量连接,可能导致某些神经元输入太少,某些通道几乎不起作用,甚至某些路径被切断。这会让模型训练变得困难。


2. 稀疏网络表达能力受限

密集网络有大量连接,优化空间更大,更容易找到好的解。随机稀疏网络一开始就限制了连接结构,如果 mask 不合适,模型可能没有足够表达能力。


3. 稀疏网络优化更难

过参数化模型通常更容易优化。密集大网络虽然参数多,但训练时更容易找到低损失解。稀疏网络参数少,优化路径可能更狭窄,更容易陷入较差解。因此,从随机稀疏结构开始训练,可能不如先训练密集模型再剪枝效果好。

八、从头训练、微调和 Lottery Ticket 的区别

我们可以把几种情况放在一起比较。

方式稀疏结构来源初始化方式是否继承训练后权重特点
随机稀疏训练随机生成 mask随机初始化简单,但高稀疏率下通常难训练
剪枝后微调从训练好模型中剪枝得到训练后权重稳定,经典 Train-Prune-Retrain
剪枝结构从头训练剪枝得到结构重新随机初始化在结构化剪枝中有时有效
Lottery Ticket剪枝得到结构原始初始化否,但保留初始值强调稀疏结构和初始化共同重要

这几个问题经常被混淆。

简单来说:

剪枝后微调:保留训练后的权重。 从头训练剪枝结构:保留结构,不保留权重。 Lottery Ticket:保留结构,也保留原始初始化。

九、剪枝到底是在找权重,还是在找结构?

这是模型剪枝中一个很有争议的问题。

传统剪枝认为:

训练好的大模型中有一些重要权重,剪枝就是保留这些重要权重。

但是,一些后续研究提出不同观点:

剪枝可能更重要的是找到一个好的子结构,而不是保留训练后的权重数值。

对于非结构化剪枝,继承权重通常比较重要,因为稀疏连接非常细粒度,随机训练高稀疏网络不容易。

对于结构化剪枝,结构本身可能更重要,因为剪枝后的模型可以看作一个更小的网络架构。

这也是为什么“稀疏网络能否从头训练”没有统一答案。


十、这三个问题的统一理解

现在可以把三个问题统一起来。

问题 1:为什么权重幅值剪枝有效?

因为深度网络通常过参数化,训练后很多不重要连接的权重会变小。删除这些小权重通常对输出扰动较小,再配合微调可以恢复性能。


问题 2:为什么剪枝后需要微调?

因为剪枝会破坏原始模型的特征表达和决策边界。微调可以让剩余权重重新分配功能,补偿被删除连接造成的损失。


问题 3:稀疏网络能否从头训练?

可以,但不总是容易。随机稀疏网络通常训练困难;剪枝得到的结构有时可以从头训练;Lottery Ticket 则说明某些稀疏子网络在保留原始初始化时可以有效训练。