《Pruning from Scratch》论文笔记

引自(https://blog.csdn.net/calvinpaean/article/details/103662659}

Abstract

网络剪枝是降低神经网络计算成本的重要研究方向。传统的方法都是先训练一个大型、冗余的网络,然后决定哪些单元(如通道)没那么重要,可以被裁剪掉。这篇论文发现,我们不需要预训练一个过度参数化的网络,再对其进行剪枝。作者证明,从随机初始化的权重直接进行剪枝,可以获得更多样化的剪枝结构,甚至性能更优的模型。因而,作者提出了一个新的剪枝方法,允许我们从零开始剪枝 (prune from scratch)。在 CIFAR10 和 ImageNet 数据集上作者进行了分类模型的压缩实验,本文方法不仅极大地降低了传统剪枝方法中预训练的负担,而且在相同计算开支下,取得了相似的,甚至更高的准确率。本文的结果将促使该领域学者重新思考网络剪枝现有方法的有效性。

1.Introduction

image.png

由于深度神经网络被广泛应用在移动设备上,人们迫切地需要降低模型的大小和运行时延迟。因而人们提出了网络剪枝的方法,去除网络中的冗余结构和参数,实现模型压缩和推理加速。除了早期非结构化的剪枝方法,以通道剪枝为代表的结构化剪枝方法在近些年被普遍采用,因为它们在通用GPU上部署起来很方便。传统的网络剪枝方法采用了一个三阶段的流程,即预训练、剪枝和微调,如图1(a)。预训练和剪枝步骤可以循环交替进行。但是,最近的研究表明剪枝后的模型可以从零开始训练,无需对其进行微调(如图1(b))。这就说明,剪枝后的网络结构对于剪枝模型的性能表现更重要。尤其是对于通道剪枝方法,我们应更加关注在每一层的通道数配置上。

尽管有人证明了,剪枝后模型的权重不需要进行微调,但我们仍需要依据不同的标准,从训练好的模型中学习和提取出剪枝后模型的结构。这个权重优化的过程通常很费时费力。那么就有个问题:从预训练模型中学习剪枝后的网络结构是否必要?

本文通过大量实验研究了这个问题,发现了一个令人吃惊的答案:我们并不需要从预训练权重中学习一个有效的剪枝结构。作者证明,从预训练权重中学到的剪枝结构都是类似的,这就限制了更优秀结构搜索的可能性。但对随机初始化权重直接进行剪枝,我们可以发现更多样化、更有效的剪枝结构,其中就有可能包含性能更佳的潜在模型。

基于以上发现,作者提出了一个新的网络剪枝方法,由随机初始化的权重直接学习剪枝网络结构,如图1c所示。特别地,作者利用了网络裁剪[19] 中相似的技巧,对每层都关联一个标量门值(scalar gate value),以此来学习通道的重要性。利用稀疏正则化对通道的重要性进行优化,提升模型性能。与之不同的地方就是,在此过程中本文没有更新随机权值。学习了通道重要性之后,本文利用了一个简单的二元搜索策略来决定在给定资源限制条件下(如 FLOPs),剪枝模型的通道数配置。由于本文方法不需要在优化阶段中更新模型的参数,搜索剪枝结构的速度非常快。在 CIFAR10 和 ImageNet 上的实验显示,本文的方法可以分别提升搜索的速度至少 10 倍和 100 倍,但取得的准确率和传统剪枝方法相比是差不多的,甚至要更好。此方法可以将研究人员从耗时的训练过程中解放出来,提供极具竞争力的剪枝结果。

2.Related Work

网络剪枝去除模型中冗余的参数和结构,对深度神经网络进行推理加速。早期有些工作提出了一些方法,去除单独的权重值,这就使网络变得非结构化稀疏。在单个GPU上实现运行时加速是比较有难度的,除非有一个定制化的推理引擎[6]。最近一些工作则关注在结构化模型剪枝[17,12,19],尤其是对权重通道的剪枝。基于L1范数的方法[17]根据权重通道的L1范数进行模型剪枝。通道剪枝[12] 对局部层输出的重构损失最小化,学习稀疏权重。网络裁剪[19] 使用 LASSO 正则化来学习各通道的重要性,基于一个全局阈值来裁剪模型。自动模型压缩(AMC)[11] 通过增强学习自动地学习每层的压缩率,探索了剪枝策略。剪枝模型通常需要进一步微调,来取得更高的预测性能。但是,最近一些工作[4,20] 对此范式提出挑战,证明压缩模型可以从零开始训练,无需微调,也能取得类似的性能。

最近,神经结构搜索也给模型结构压缩提供了一个方向。[18,3 ] 延续了自上而下的模式,从一个大网络中裁剪出一个小网络。单阶段结构搜索方法[2,1]进一步发展了此思路,当学习了内部细胞连接重要性之后,进行结构搜索。但是这些方法都需要大量的训练时间,来搜索高效率的结构

3.Rethinking Pruning with Pre-Training

网络剪枝的目的是获取一个高效率剪枝网络,去除过度参数化的模型中存在的冗余参数或结构。代表性方法[19.5] 利用通道重要性来评估一个权重通道是否重要,是否应该被保留。给定一个预训练模型,每层都有一组通道门,学习通道的重要性。利用基于L1范数的稀疏正则化来优化通道重要度。有了通道的重要度,我们用一个全局阈值来决定在给定资源的情况下,哪些通道应该保留。最终,剪枝模型可以用原始的完整模型权重来微调,也可以从零开始重新训练。整个流程如图1(a)和(b)所示。

接下来,作者将证明在网络剪枝的常用流程中,预训练的角色和我们之前所认为的有很大不同。基于此发现,作者提出了一个新的剪枝流程,允许剪枝网络从零(即随机初始化的权重)开始训练。

3.1 Effects of Pre-Training on Pruning

传统剪枝流程中,我们似乎必须要先对网络进行充分地训练,然后再对其进行剪枝。这里作者仔细研究了预训练权重对最终的剪枝结构的作用。在训练基线网络时,作者保存了不同 epochs 的 checkpoints。然后用不同 checkpoints 的权重作为网络的初始化权重,使用上述流程,学习每一层的通道重要性。作者想要知道,不同阶段的预训练权重是否对最终的剪枝结构学习有重要影响。


image.png

首先,作者比较了不同剪枝模型的结构相似度。对于每个剪枝模型,计算每一层的剪枝比例,即剩余通道的个数除以原有通道的个数。将所有层的裁剪比例拼接起来,得到一个向量,然后将这个向量作为剪枝结构的特征表示。然后,计算这两个剪枝模型特征的相关系数,作为其结构的相似度。为了确保其有效,作者在 CIFAR10 数据集和 VGG16 数据集的实验中,随机选择了5组随机种子。在补充材料中,作者介绍了 ResNet20 和 ResNet56 的可视化结果。

图2展示了所有剪枝模型的相关系数矩阵。从该图,我们可以发现3个现象。首先,由随机权重学到的剪枝结构与所有预训练权重学到的网络结构都不一样(看图2(a),(b) 的左上图)。其次,由随机权重学到的剪枝模型结构要更加的多样化,相关系数更多样。同样,在预训练阶段 10个 epochs 的权重更新之后,剪枝模型趋向于同质化(看图2c)。第三,相近 epochs 的 checkpoints 得到的剪枝结构,其相关系数要更类似(看图2(a)(b))。

上述结构相似的结果表明,在预训练阶段随着权重的更新,剪枝结构的搜索空间逐步缩小,可能会限制模型的潜在性能。另一方面,随机初始化的权重使得剪枝算法可以探索更多样化的剪枝结构。

3.3 Performance of Pruned Structures

image.png

作者进一步从头训练每个剪枝模型,比较其最终的准确率。表 1 列出了所有剪枝结构在 CIFAR10 测试集上的预测准确率。可以看到,随机权重的剪枝模型也可以取得和预训练权重得到的剪枝模型相同的表现。而且,在一些例子中(如 ResNet20),随机权重得到的剪枝模型甚至可以取得更高的准确率。这些结果证明,由随机权重直接学习得到的剪枝结构更加多样,而且也很有效,能够训练得到不错的效果。

剪枝模型的准确率表明,对于最终的预测性能而言,在预训练权重上得到的剪枝模型优势极其有限。预训练阶段的计算过程通常很耗时耗力,本文认为我们可以直接从随机初始化权重开始网络剪枝。

4. Our Solution: Pruning from Scratch

待续

你可能感兴趣的:(《Pruning from Scratch》论文笔记)