Learning sparse network using target dropout(文末有代码链接)



摘要

当神经网络的权值的数量超过了从输入映射到输出需要的权值数量,神经网络会更容易优化。这里暗存了一个两个阶段的学习进程:首先学习一个大的网络,然后删除连接或隐藏的单元。但是,标准的训练并不一定会使得网络易于修剪。于是,我们介绍了一种训练神经网络的方法——target dropout(定向dropout),使其对后续剪枝具有较强的鲁棒性。在计算每次权值更新的梯度之前,定向dropout使用简单的自增强稀疏性准则,推测地选择一组要删除的单元或权重,然后计算剩余权重的梯度。所得到的网络对于删除集中经常出现的权值或单位的事后剪枝具有很强的鲁棒性。该方法改进了更复杂的稀疏正则器,实现简单,易于调优。

介绍

神经网络是一种功能强大的模型,可以在对象识别、语音识别和机器翻译等广泛任务上达到最新水平。其中原因之一是,神经网络强大的灵活性,因为它们有许多可学习的参数。然而,这种灵活性随之而来的是过拟合,并且会增加不必要的计算和存储压力。
在模型压缩的方法方面已经做了大量的工作。一种直观的策略是稀疏化:从网络中删除权重或整个神经元。在学习过程中,可以使用稀疏性诱导规则来鼓励网络稀疏化,比如L1,L0正则化等。也可以使用post hoc剪枝:训练一个全尺寸的网络,然后根据一些修剪策略进行稀疏化。理想情况下,从任务性能方面考虑,我们将删除为任务提供最少增益的权重或单元。一般来说,寻找最优集是一个困难的组合问题,即使是一个贪婪策略也存在不现实的任务评估数量,因为通常模型有数百万个参数。因此,常用的剪枝策略侧重于快速逼近,例如删除幅度最小的权重,或者根据任务性能相对于权重的敏感性对权重进行排序,然后删除最不敏感的权重。我们希望这些近似与任务性能很好地相关,这样剪枝就会产生高度压缩的网络,同时对任务性能几乎没有负面影响,但情况可能并非总是如此。
我们的方法是基于观察到dropout正则化,在训练过程中,它通过每次向前传递时对网络进行稀疏化来增强稀疏性容忍度。这鼓励网络学习对特定形式的事后稀疏化具有鲁棒性的表示形式,在本例中,是删除随机节点集。我们的假设是,如果我们计划进行显式的事后稀疏化,那么我们可以通过将dropout应用于我们之前认为是最没用的节点集来做得更好。我们称之为定向dropout。其思想是根据一些快速的、近似的重要性度量(如大小)对权重或单位进行排序,然后将dropout主要应用于那些被认为不重要的因素。与dropout正则的观察相似,我们表明,这使得网络去学习一种表示,其中权重或单位的重要性更接近我们的近似。换句话说,网络学会了对我们选择的事后剪枝策略保持了鲁棒性。
与其他方法相比,定向dropout的优势在于,它使网络对所选择的事后剪枝策略有鲁棒性,能够对所需的稀疏模式进行密切控制,并且容易实施。该方法在广泛的体系结构和数据集上实现了令人印象深刻的稀疏率;值得注意的是,在cifar10上,ResNet-32体系结构的稀疏性为99%,测试集精度下降不到4%。

背景

为了展示定向dropout,我们首先简要介绍了一些符号,并回顾了dropout和基于数值大小的剪枝的概念。

符号

假设我们正处理一个特定的网络架构,用 代表从候选集 中提取的神经网络参数向量, 是参数的个数, 表示参数为 的神经网络中权值矩阵的集合。因此, 是在网络连接层与层的权重矩阵。我们只考虑权重,为了收敛而忽略偏置,在剪枝过程中,偏置并没有移除。为简洁起见,我们使用符号 ,下标o表示连接下一层到第 个输出节点的权重(即权矩阵的第 列), 表示W中的列数, 指的是行数。每一列对应的是一个隐藏神经元,或者是或者卷积层的特征图。注意,压扁和连接所有的在 中的权重矩会恢复。

Dropout

我们的工作使用了两种最流行的伯努利dropout,分别是Hintion等人提出的节点dropout,和Wan等人提出的权重dropout(dropconnect),对于全连接层,输入为张量X,权重矩阵是W,输出张量为Y,掩模
,我们定义两种技术如下:

Unit dropout:

  节点dropout在训练的每一步中,随机drop节点(通常认为是神经元)以降低以减少节点之间的依赖,防止过度拟合。

Weight dropout:

权重dropout在训练的每一步中随机drop单独的权重。直观地说,这是在减少层之间的连接,迫使网络在每个训练步骤中适应不同的连接。

基于数值的剪枝

一个比较常用的剪枝方式是基于数值的剪枝策略,这些策略认为,只有值最大的k个权重才是重要的,我们调用argmax-k从而可以获得考虑的所有元素中的top-k元素(节点或者是权重)。

节点剪枝:

考虑L2范数下权重矩阵的节点(列向量)(根据每一层的权重L2范数判定节点重不重要?)

在这里插入图片描述

权重剪枝:(根据权重的绝对值,判定权重重不重要)
在这里插入图片描述
而在较粗的剪枝下,权值剪枝倾向于保留更多的任务性能,节点剪枝允许相当大的计算节省。特别是权值剪枝网络可以通过稀疏线性代数运算来实现,它只在足够稀疏的条件下提供加速;当节点剪枝网络在较低维张量上执行标准线性代数运算时,对于给定的固定稀疏率,这往往是一个更快的选择。

定向dropout

考虑一个神经网络的参数为 ,重要性判别标准(上述定义的w( )),我们希望找到一个最优参数 ,这样loss函数 就会变小,同时, ,也就是我们只保留网络最大的k个权重。确定的剪枝函数,会挑出 个,并把它们dropout。但是我们希望的是,如果低的权重值在训练期间变得重要,那么它的权重值就应该得到增加。因为,我们在这个过程中引入了随机变量,一个是定向概率 和drop概率 ,定向概率指的是我们挑选最小的 个权重作为dropout的候选集,在里面我们独立地drop掉 %的元素。这意味着每一轮定向dropout后保持的节点数为 。接下来我们会看到,结果是减少了重要子网络对不重要子网络的依赖,从而减少了由于在训练结束时进行修剪而导致的性能下降。

重要子网络和不重要子网络之间的依赖关系

定向dropout的目标是降低重要子集对其补集的依赖。一个常用的看法是,dropout的目的是防止节点之间相互适应,也就是,当某一节点被dropout后,剩余的网络不能再依赖于该节点对函数的贡献,必须学会通过更可靠的渠道传播该节点的信息。另一种描述是dropout最大化了同一层中节点之间的相互信息,从而减少了节点丢失的影响。与我们的方法类似,dropout可用于指导表示的属性。例如,嵌套的dropout,根据与每个单元相关联的特定下降速率,在单元之间强加“层次结构”。Dropout本身也可以解释为贝叶斯近似。
在我们特定的剪枝场景中,我们可以从一个演示的例子中得到更相关的直觉,在这个例子中,重要的子网与不重要的子网完全分离。假设一个神经网络有两个互不重叠的子网络构成,每个子网络都能够自己产生正确的输出,网络输出作为两个子网络输出的平均值。如果我们的重要性准则认为第一个子网络重要,第二个子网不重要(更具体地说,它的权值更小),然后,给不重要的子网络(第二个)加上噪声(也就是,dropout)意味着在非零概率下,我们将破坏网络输出。因为重要已经可以预测出正确的结果,为了降低loss,我们必须将不重要的子网络输出层的权值降低到零,实际上,“杀死”了那个子网,并加强了重要子网和不重要子网之间的分离。
这些解释清楚了为什么dropout应该被认为是修剪应用的自然工具。我们可以通过比较训练好的网络和没有经过定向dropout的网络,并且检查黑森矩阵和梯度来确定网络对要修剪的权值/单位的依赖关系,从而实证地确定定向dropout对权重依赖的影响。如LeCun提出,我们可以通过考虑损失变化的二阶泰勒展开来估计剪枝权值的影响,
(要去掉的权重)否则就为0,。 是loss的梯度,H是黑塞矩阵。在训练结束时,如果我们找到了临界点, ,并且, ,就只留黑塞矩阵一项。在我们的实验中,我们证明了目标target降低了重要子网络和不重要子网络之间的依赖性。

相关工作

神经网络的剪枝和稀疏化研究已有近30年的历史,由于在移动电话和asic等资源有限的设备上实现了剪枝和稀疏化,因此人们对神经网络的兴趣大增。早期的工作,如脑损伤(OBD)和optimal brain surgeon;最近的工作,有的利用二阶泰勒展开式对训练到局部最小值的权值周围的损失函数进行展开式,以收集选择参数剪枝顺序的策略。Han等人将权值量化与剪枝相结合,得到了令人印象深刻的网络压缩结果,大幅降低网络的空间成本。Dong等人通过各个分层独立的假设,提高了最优脑外科手术的效率。Wen等人提出在卷积滤波器上使用组Lasso,并且能够从ResNet-20网络中删除多达6层,从而增加1%的误差。
为了开发改进的剪枝启发式算法和稀疏化正则化器,已经付出了大量的努力,这些一般包括两个部分:第一种是将正则化方案纳入训练中,使重要的子网络易于识别为事后剪枝策略; 第二种是一种特殊的事后剪枝策略,它在预先训练好的网络上运行,去掉不重要的子网络。
和我们工作最相关的两个是L0正则化和变分dropout。Louizos等人改编了concrete dropout对网络权重进行调整,并调节dropout率,以使网络稀疏化。类似地,Molchanov等人将变分dropout应用于网络的权重上,并注意到前者通过选择较大的drop率隐式地稀疏了参数。除了我们的方法能更有效地缩小重要子网的大小,有针对性的dropout使用了两个直观的超参数, 和 ,并直接控制整个训练的稀疏性(即,达到预定的稀疏阈值)。相比之下,Louizos使用的hard-concrete使用了三个超参数,并且为每一个参数引入了门参数,使得可训练参数量翻倍。Molchanov等人增加了两个超参数,并将可训练参数的数量增加了一倍。在我们的实验中,我们也和L1正则化进行了比较,L1正则化的目的是使得不重要的权重趋近于零。
彩票假设验证了子网络的存在,这个子网是孤立的,其他的子网都被剪掉了,剩下的和减掉的子网络都对梯度下降法找到的函数有影响,并且可以在有或没有剩余网络的情况下训练到相同的任务性能水平。在我们的符号中,w( )就是中奖网络。该方法的有效性表明,通过规范彩票网络可以减小中奖彩票的规模。

实验

我们的实验采用了resnet和wide resnet以及transfomer架构,数据库采用了cifar10,imagenet, 和WMT英德翻译数据集。对于每个基线实验,我们验证我们的网络在适当的测试集上达到了报告的精度;我们报告了不同剪枝比例的测试准确度,并比较了不同的规范化策略。此外,我们还将我们的定向dropout与标准dropout进行了比较,两种技术之间期望的下降权重的数量是匹配的(即,标准drop率等于 )
对于我们的剪枝过程,我们对所有的权重矩阵,除了那些导致logits的,执行贪婪的层间基于的数值的剪枝,如第2.3节描述的那样。在我们的实验汇总,我们比较了目标target和以下几种方法:
L1正则:将复杂成本函数 加到目标函数中,希望这一项能将不重要的权重降至零。在本次实验中,我们用 表示这个loss函数, 是L1的权重。
L0正则:Louizos等人对神经网络的参数应用了concrete dropout的增强版——hard concrete dropout。将掩码应用于那些遵循hard concrete的权重,其中每个权值与决定下降速率的门控参数相关联。Concrete 分布使得L0目标函数可微,所以我们可以直接把它和我们的任务目标一起最小化。当将这些网络稀疏化到所需的稀疏率时,我们根据学习到的剪枝概率( ),dropout那些保持最低概率权重。
变分dropout:和L0正则技术很像,Molchanov等人将具有可训练dropout率的高斯dropout应用于网络权值,并将模型解释为具有特定先验的变分后验。作者指出,在训练中使用的较低的变分下界有利于更高的dropout概率,并通过实验证实,以这种方式训练的网络确实是稀疏的。
Smallify:Leclerc等人在权重/节点上使用可训练的门,并使用L1正则化将门正则化为零。该技术的关键是在线剪枝条件:Smallify保持门符号的移动方差,当方差超过某一预设的阈值是,将权重/单元的关联门设置为零(使得剪权重或者是节点更有效)。在VGG网络上,这种技术被证明是非常有效的,可以达到很高的修剪率。
具体来说,我们比较了以下技术:
Dropout: 标准权重或者节点dropout,dropout率为
Trargeted: 定向dropout(权重变量在a表中,节点变量在b表中),剪掉 最小权重值的
Variaitonal: 变分dropout,成本系数为0.01/50000
:L0正则,成本系数Wie
:L1正则,成本系数为
Smallify:smallify 变换层用的成本系数为 ,指数移动平均衰减为0.9,方差阈值为0.5。

图一 没有用drop(左)和用了定向dropout(右)的矩阵,构成方式为 。权重的排序是这样的,即具有最小的幅度最后的75%的权重 (我们打算修剪的那些)。(右边的右下角基本没有剩什么了,可以减掉)右下角元素的近似于剪枝后误差的变化。请注意这两个网络之间的明显差异,有针对性的drop – out将其依赖集中在左上角,从而导致修剪后的错误变化要小得多。

分析重要子网络

为了分析定向dropout的作用,我们利用小的稠密网络构造了一个玩具实验,分析了网络的权值依赖性。我们考虑的模型是一个由10个节点和ReLU激活的单隐层密集连接的网络。我们在cifar10上训练了两个这样的网络,第一个没有正则化,第二个采用的是 的定向dropout。两个网络均训练200epoch,使用学习率为0.001,没有使用冲量的随机梯度下降。
然后我们计算测试集上的梯度和黑森量,以便从方程3估计误差的变化。如下图所示
此外,我们还计算了由典型元素 构成的黑塞权积矩阵,作为权重相关性和网络独立性的估计,如图一。该矩阵是非常重要的可视化工具,由于将与要删除的权重相关的项求和,对应于计算式(1)中的第二项——这将成为训练结束时的主导项,此时梯度近似为零。图一解释清楚了定向dropout对于网络的显著作用。在图一中,我们对矩阵的行和列重新排序,使矩阵行/列的前25%对应于我们确定为重要子网络的权重的25%(即,权重值最大的),最后的75%的权值代表不重要的子网络(即,权重最小的)。定向dropout训练的网络几乎完全依赖于训练结束时最大权重的25%。然而,未经正则化训练的网络依赖于更大比例的权重,并且在标记为剪枝的参数中有许多依赖关系。

残差网络

我们在残差网络上测试了定向dropout,数据集为cifar10,使用了基础的随机中心,随机水平翻转,标准化等数据增强,这种结构在计算机视觉中已经变得无处不在,并且在语言,音频领域越来越受欢迎。我们的baseline模型在256个epoch后,达到了93%的准确性,这与此前报道的ResNet-32的结果相符。
我们的权重剪枝实验表明,与目标方案相比,标准的删除方案相对较弱;标准dropout的表现比我们的没有正则化的basline模型差。我们发现,一个较高的目标dropout率适用于较大的权重比例,产生的网络只占没有正则化网络的40%的参数。
在权重和单位剪枝的情况下,变分缺失似乎比非正则化基线稍微改善了一些,但是仍然没有定向dropout做得好。L0正则化对其复杂度项系数不敏感,我们研究了 ,发现在0.1附近不能收敛,而低于 的数值则没有规律的迹象。和变分dropout相同的是,L0正则化并没有规定在网络中实现特定的修剪百分比的方法,因此,为了找到导致所需稀疏性的值,需要进行广泛的超参数搜索。作为妥协,我们搜索上述范围,并选择最有竞争力与dropout最有竞争力的设置。接下来,我们将接下来,我们将基于大小的剪枝应用于Louizos等人提供的公式13中。不幸的是,L0正则化似乎迫使模型偏离了我们用参数大小描述重要性的假设。
在表三中,如下所示,我们例举了resnet-102在Imagnet上的的剪枝结。我们注意到,这与在cifar10上训练resnet是一样的,尽管很明显,该任务使用了更多的网络容量,使得它对相对于CIFAR-10的修剪更加敏感。

Wide resnet

为了确保与L0规范化基线进行公平比较,我们采用了作者自己的代码库来支持定向dropout,并比较了在给定的L0实现和定向dropout下,网络对稀疏化的鲁棒性。在表四中,如下图,我们注意到,L0正则化不能真正使网络稀疏化,但对网络的精度有很强的正则化影响(证实了Louizos等人的说法。)。这进一步验证了上面的观察结果,表明L0正则化没有使ResNet体系结构变得稀疏。

Transformer

Transformer网络结果代表了现在NLP任务的最好结果。为了评估我们的方法的普遍适用性,我们测量了transormer在不经过正则化的情况下对权重级剪枝的鲁棒性,并将其与应用于网络的两种目标删除设置进行了比较。
Transformer结构包含了多层头的注意层和前馈(紧密连接)层,这两者我们都需要稀疏化;在多头注意层中,每一个输入的每一个头都有一个唯一的线性变换,这就是我们要稀疏化的权重矩阵。
表五a例举了在WMT上训练transformer结构的剪枝结果。在没有使用任何正则化情况下,tansformer结构不能对剪枝保持鲁棒性,但是在使用定向dropout时,我们可以在稀疏性为70%时,增加BLEU得分15分;在稀疏性为80%时,增加BLEU得分12分。
调整目标比例
在评价权重水平的Smallify我们发现,通过调优,在非常高的修剪百分比时,Smallify的性能超过了dropout (见表6)。也许有人会认为,一个像Smallify的稀疏化方案——允许不同层中有不同的剪枝率-会更灵活,更适合寻找最佳剪枝掩模;然而,我们证明了一种被我们称为Ramping targeted dropou,定向dropout变体同样也具有类似的高剪枝率的剪枝能力。此外,ramping target dropout保留了目标退出的主要好处:对稀疏率的精细控制。
Ramping targeted dropou仅仅是将目标份额从0增加到 ,用指定的最终的 完成整个训练过程。在我们resnet实验中,为我们ResNet实验中,在49epoch时,我们从0增加到 的95%。在98epoch时,退火到 的100%。用相同的方式,在89个epoch中,我们把 从0线性增加到100%。(类似于中奖彩票的预热?)
使用Ramping targeted dropou我们可以实现稀疏率为99%的ResNet32时,CIFAR-10数据集上的准确性为87.03%;然而smallify最好的稀疏性为98.8%时,精度为88.13%,当我们在所有权重矩阵中执行剪枝以强制执行相等的剪枝率时,网络会迅速退化,如下图所说。

未来的工作

有针对性的退出提出了一个非常简单的程序,以解耦子网络之间的依赖关系。虽然这项工作的重点是对网络稀疏化的影响,但对定向dropout的一般性解释表明,针对目标策略的潜力在于提高可解释性和结构化表示等特性。
网dropout的一个主要特性是提高节点间的层次化,这是以一个昂贵的培训过程为代价的,该过程要求对loss求和,loss等于所有可能的截断掩模的数量(对于嵌套的单层dropout,这相当于该层中的节点数; 对于多层,这相当于所有层节点的乘积)。定向的dropout可以通过简单的调整,以一种计算成本较低的方式在每一层的单元之间强加层次结构。
为了提高量化的鲁棒性,还可以对权值的位和激活的数字表示进行有针对性的删除。
应用于网络参数的定向dropout受到每个批处理只能应用一个掩码样本的影响,因此,合并flipout将会受益,它将批内梯度去除,同时保持它们的无偏。

总结

我们提出了一个target drop,作为一个训练神经网络的简单高效的正则工具,对事后的剪枝有很强的鲁棒性。定向dropout的主要好处之一是实现的简单性、直观的超参数和对稀疏性的细粒度控制(包括在训练和推理期间)。定向dropout在一系列网络架构和任务中表现良好,证明了其广泛的适用性。重要的是,就像在网dropout中,我们展示了如何使用dropout作为一种工具,将先前的结构假设编码到神经网络中。这个方法为许多有趣的应用程序