4、结构压缩定义:结构剪枝、通道剪枝、层剪枝与结构化稀疏的区别
在TinyML的模型压缩实践中,结构压缩(Structural Compression)是区别于非结构化剪枝(如细粒度权重剪枝)的核心技术路线。它通过移除或合并神经网络中的完整结构单元(如卷积核、通道、层),使模型在压缩后仍保持规则的张量形状和内存布局,从而能够直接获得硬件加速器(如NPU、MCU上的CMSIS-NN)的算力支持。本章将系统梳理结构剪枝、通道剪枝、层剪枝与结构化稀疏四类方法的定义边界、操作粒度、适用场景及工程权衡,帮助学习者在实际项目中做出正确的技术选型。
上图从操作粒度、实现机制和硬件适配三个维度勾勒了四类结构压缩方法的整体框架。下面我们将逐一深入剖析每种方法的定义、原理、操作流程和工程注意事项。
4.1 结构剪枝:以卷积核为最小删除单元
核心原理:结构剪枝(Filter/Structured Pruning)是最基础的结构压缩手段,其最小操作单元是单个卷积核(Filter)。在卷积层中,每个输出通道对应一个卷积核,删除一个卷积核意味着该输出通道被完全移除,同时下一层对应输入通道的维度也随之减少。这种剪枝方式保持了张量数据的规则性——剪枝后的权重矩阵仍然是完整的矩形,只是尺寸变小了。
判断方法与操作流程:判断哪些卷积核可以被删除,通常采用以下步骤:
- 重要性评估:计算每个卷积核的L1/L2范数、BN层缩放因子γ值或基于泰勒展开的贡献度。
- 阈值设定:按重要性得分排序,设定剪枝比例(如30%)或绝对阈值。
- 物理删除:从权重张量中移除对应索引的卷积核,同时裁剪下一层输入通道。
- 微调恢复:使用小学习率对剪枝后的模型进行若干epoch重训练。
4.2 通道剪枝:全局视角的维度优化
核心原理:通道剪枝(Channel Pruning)与结构剪枝在操作上高度相似,但视角不同。结构剪枝关注“删除哪个卷积核”,而通道剪枝关注“删除哪些特征图通道”。在实际操作中,两者往往等价——删除一个输出通道等同于删除对应的卷积核。但通道剪枝更强调全局重要性评估:某个通道可能在当前层不重要,但其激活值对后续层影响显著,因此需要跨层联合分析。
关键区别与操作要点:通道剪枝通常采用以下流程:
- 数据驱动评估:使用校准集(如1000张验证图片)统计每个通道的激活均值、标准差或平均百分比零值。
- 层间协调:对残差块(ResNet)或密集块(DenseNet)中的通道进行分组评估,避免剪枝破坏shortcut连接。
- 重建误差最小化:剪枝后使用最小二乘法重建下一层权重,减少精度损失。
| 对比维度 | 结构剪枝 | 通道剪枝 |
|---|---|---|
| 评估粒度 | 单个卷积核 | 特征图通道(跨层关联) |
| 典型算法 | L1范数剪枝、γ因子剪枝 | HRank、ThiNet、NetAdapt |
| 重训练需求 | 需要 | 需要,但可配合权重重建 |
| 压缩比范围 | 1.5×~3× | 2×~5× |
| 硬件适配 | 直接受益 | 直接受益 |
4.3 层剪枝:粗粒度但高收益的结构删除
核心原理:层剪枝(Layer Pruning)直接删除整个卷积层、全连接层或残差块。其理论基础是深度网络中存在功能冗余——某些层对最终输出的贡献极小,或者多个层可以合并为一个等效层。层剪枝的粒度最大,压缩效果最显著,但风险也最高。
适用场景与判断方法:层剪枝主要适用于以下情况:
- 深层网络:ResNet-56/110、VGG-16等超过20层的网络,存在明显的层冗余。
- 残差结构:删除一个残差块时,需要将shortcut连接绕过该块,保持梯度通路。
- 延迟敏感场景:每删除一层,推理延迟可降低约5-15%(取决于层计算量)。
判断哪些层可删除,常用方法包括:
- 特征相似度:计算相邻层输出的余弦相似度,若相似度>0.95,则后一层可能冗余。
- 梯度贡献:在验证集上计算每层输出对损失的梯度范数,梯度范数小的层可优先删除。
- 经验规则:网络末端的层通常比前端层更重要,删除时应从中间层开始尝试。
4.4 结构化稀疏:规则零值模式的艺术
核心原理:结构化稀疏(Structured Sparsity)不删除任何结构单元,而是在权重矩阵中制造规则排列的零值块。最典型的模式是N:M稀疏(如2:4稀疏),即每4个连续权重中强制2个为零。这种稀疏模式可以被支持N:M稀疏的硬件(如NVIDIA Ampere架构、部分NPU)直接加速,而无需额外索引。
与前三者的本质区别:
| 属性 | 结构/通道/层剪枝 | 结构化稀疏 |
|---|---|---|
| 张量形状 | 尺寸缩小 | 尺寸不变,但含规则零值 |
| 存储需求 | 减少 | 可压缩(如2:4模式存储减半) |
| 计算加速 | 直接减少FLOPs | 需硬件支持跳过零值 |
| 重训练难度 | 中等 | 较高(需保持稀疏模式) |
| 典型应用 | MCU、边缘NPU | 服务器GPU、旗舰手机NPU |
操作流程:以2:4结构化稀疏为例:
1. 训练稠密模型至收敛
2. 按权重绝对值排序,每组4个权重保留最大的2个
3. 将剩余2个权重置零
4. 继续训练,但每次前向传播时重新应用掩码
5. 训练结束后,以稀疏格式导出权重
4.5 四类方法的综合对比与选型策略
在实际TinyML项目中,四类方法并非互斥,而是可以组合使用。以下给出选型决策树:
- 目标硬件支持N:M稀疏 → 优先考虑结构化稀疏,配合少量通道剪枝。
- 目标硬件为普通MCU(无稀疏加速) → 使用通道剪枝或结构剪枝,避免结构化稀疏。
- 网络深度>50层且延迟要求极高 → 先做层剪枝(删除10-20%层),再做通道剪枝。
- 精度预算紧张(允许损失<1%) → 仅使用结构剪枝,并充分微调。