"ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression"这篇文章的主要贡献包括:1)基于贪心策略与最小化重建误差,设计了ThiNet剪枝方法,并且是规整的通道剪枝方法;2)将网络剪枝视作优化问题,并利用下一层的输入输出关系获取统计信息,以决定当前层的剪枝;3)在ImageNet数据集上,获得了良好的剪枝效果(主要是Resnet50与VGG-16),并在其他任务上取得了良好的迁移效果。
ThiNet的剪枝步骤如上图所示,对于给定的预训练模型以及固定的剪枝率,逐层裁剪冗余的滤波器(3D filters或2D kernels),总体包括通道选择、通道剪枝与fine-tuning三个阶段:1)Channel Selection:利用第i+1 层的统计信息指导第i 层的剪枝,即从第i+1 层的输入特征中提取最优子集,用于估计第i+1的输出特征,而其余输入特征以及相对应的3D filters均可被删除;2)Pruning:根据第一步通道选择的结果,剪除第i 层对应的3D filters以及第i+1 层的2D kernels,从而获得结构紧凑、纤瘦的模型(Thin-Net);3)Fine-tuning:完成第i 层的剪枝之后,在训练集上微调1~2个epochs,以恢复因剪枝丢失的精度。在完成整个模型的剪枝之后,通常需要微调更多的epochs;4)回到第一步,完成第i+1 层的剪枝;
Channel Selection的目的,在于移除第i 层权重矩阵Wi 中一些不重要的3D filters,同时对第i+1 层的输出造成非常轻微的影响,从而确保整体性能几乎不受影响。首先第i