一、为什么要把这三个问题放在一起讲在前面的文章中我们已经介绍了几类经典剪枝思想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 pruning或retraining 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 则说明某些稀疏子网络在保留原始初始化时可以有效训练。