Learning Structured Sparsity in Deep Neural Networks

1. 文章介绍

DNN,尤其是CNN,已经通过从大量数据中的大规模学习在计算机视觉领域取得了巨大的成功,但是这样的大模型部署是有问题的。为了减少计算成本,许多研究方法被用来压缩DNN的大小,包括稀疏正则化、连接剪枝和低秩近似稀疏正则化和连接剪枝通常会得到一个非结构化的随机连接关系,因此不规则的内存访问不利于硬件加速,Figure 1展示了通过L1正则化对AlexNet每一层的非结构稀疏化。与原始模型相比,稀疏化模型的准确率损失被控制在2%以内,由于稀疏权重分布的不规则,获得的加速效果是十分有限的,即使实际的稀疏程度很高(达到95%)。在最近提出的低秩近似方法中,DNN先被训练,然后将训练得到的权重张量分解为一系列小因子的乘积,最后再通过微调来恢复准确率。低秩近似能够获得加速,是因为它减少了参数量和计算量的同时效果和大的密集张量一样,有效避免了非结构稀疏化的局限性问题,然而低秩近似方法仅在层内获得紧凑的结构,在微调期间层间的结构是固定的,这使得需要多次反复分解和微调来获得最佳的权重近似。
Learning Structured Sparsity in Deep Neural Networks

受到以下事实启发:

  1. 在卷积核和通道上存在冗余;
  2. 卷积核的形状通常被固定为长方形,但是任意形状可能会消除这种固定带来的不必要的计算;
  3. 网络的深度对分类准确率至关重要,但是不总是越深的模型准确率就一定越高,这里面牵扯到了梯度爆炸和退化问题;

我们提出了SSL方法在训练期间通过group Lasso 正则化直接学习一个紧凑的结构,SSL是一个通用的正则化方法自适应多种DNN结构,包括filters、channels、filter shape的结构和网络的深度。SSL将结构正则化和本地优化(内存访问、高效计算)集合,不仅提供了提高准确率的规范化大模型,而且加速了计算。

2. 相关工作

连接剪枝和权重稀疏:韩松通过使用连接剪枝将AlexNet的参数量减少了9倍、VGG-16的参数量减少了13倍,因为参数量的减少主要是在全连接层,作者获得了 3-4倍的加速。然而,由于Figure 1中存在的问题,卷积层几乎没有大的加速,然而卷积才是CNN网络的计算瓶颈,所以在卷积层的压缩和加速变得至关重要,Liu等人在AlexNet卷积层实现了 >90%的稀疏度,同时准确率损失控制在2%以内,并且通过对稀疏权重硬件编码到程序中在CPU上获得了4.59倍的加速。这本文的工作中,我们也是聚焦于卷积层,与上面的方法相比,我们的SSL方法协调在相邻内存空间中的稀疏权重,在同样的准确率下获得了更高的加速。当然了硬件和程序优化可以进一步提高系统性能,但这并不在我们的讨论范围内。

低秩近似:低秩近似(Low rank approximation)的优点和问题上面已经做过描述,同时低秩近似还存在另一个问题,就是LRA的超参数量伴随深度线性增加,搜索空间线性增加甚至多项式式增加。与LRA相比,我们的贡献在于:

  1. SSL可以动态优化DNN的紧凑结构,只需要一个超参数,没有反复;
  2. 除了层内冗余,SSL可以减少层的深度;
  3. 通过SSL正则化后的DNN卷积核也可以使用低秩近似,所以它可以同LRA一起来获得更加高效的压缩模型;

模型结构学习:group Lasso对于学习稀疏结构是一种高效的正则化技术,Kim等人将group Lasso用到多任务回归中规范关联树的结构,较少了预测的错误;Liu等人使用group Lasso来约束LRA结构的尺度;为了使DNN适应不同的数据库,Feng等人在DNN中学习卷积核的数量。不同于之前的工作,我们将group Lasso应用于规范DNN的多种结构(filters、channels、filter shapes、layer depth)。

3. 结构稀疏化学习方法

我们主要关注卷积层上的结构化稀疏学习(SSL)来规范化DNN的结构。 我们首先在3.1节中提出了一种通用方法来规范DNN的结构;然后在3.2节中指定对卷积核、通道、卷积核形状、和深度的方法;在3.3节从计算效率的观点讨论了公式的变体。

3.1 对通用结构提出了结构稀疏化学习

假定在DNN中卷积层的权重形成了一个四维张量WlRNl×Cl×Ml×KlWlRNl×Cl×Ml×KlWlRNl×Cl×Ml×KlWl∈RNl×Cl×Ml×KlWl∈RNl×Cl×Ml×Kl W^{^{l}}\in R^{N_{l}\times C_{l}\times M_{l}\times K_{l}}Kl分别是第l层的权重张量的维度,具体含义为卷积核个数、通道数、高和宽。那么一个DNN做结构稀疏化规范时,通用的目标公式为:
Learning Structured Sparsity in Deep Neural Networks

3.2 对于卷积核、通道、卷积核形状和深度结构做结构稀疏化学习

在SSL中,学习的“结构化”是由将划分 WgW^g 的方式决定,我们调查了在Figure 2中的filter-wise、channel-wise、shape-wise、depth-wise结构稀疏化。为了简单起见,等式(1)中的R(W)在下面的公式中先省略

Learning Structured Sparsity in Deep Neural Networks

惩罚不重要的卷积核和通道
Learning Structured Sparsity in Deep Neural Networks

学习任意形状的卷积核
Learning Structured Sparsity in Deep Neural Networks

正则化层深
Learning Structured Sparsity in Deep Neural Networks

3.3 对于计算高效结构的结构稀疏化学习

在3.2节提出的所有方案都可以学习到一个紧凑的DNN结构来减少计算成本,而且,这些方案中公式的一些变种也可以学习到高效计算的结构。

2D-filter-wise sparsity for convolution:在DNN中3D卷积核是由2D的kernels组成,为了高效地做卷积,我们探索了filter-wise稀疏化的细粒度的变种,称之为2D-filter-wise稀疏化,空间上将group Lasso用在2D的filter W(l)nl,cl,:,:Wnl,cl,:,:(l)Wnl,cl,:,:(l)W(l)nl,cl,:,:Wnl,cl,:,:(l) W_{n_{l},c_{l},:,:}^{(l)}W:,cl,ml,kl(l)的集合。将filter-wise和shape-wise稀疏化集合可以直接减少GEMM中权重矩阵的维度(通过移除全零列和行)。
Learning Structured Sparsity in Deep Neural Networks

实验