论文通过DBTD办法计算过滤阈值,再联合随机剪枝算法对特征值梯度进行裁剪,稠密化特征值梯度,可能升高回传阶段的计算量,在CPU和ARM上的训练别离有3.99倍和5.92倍的减速成果
起源:晓飞的算法工程笔记 公众号
**论文: Accelerating CNN Training by Pruning
Activation Gradients**
- 论文地址:https://arxiv.org/abs/1908.00173
Introduction
在训练过程中,特征值梯度的回传和权值梯度的计算占了大部分的计算耗费。因为这两个操作都是以特征值梯度作为输出,而且零梯度不会占用计算资源,所以稠密化特征值梯度能够升高回传阶段的计算耗费以及内存耗费。论文的指标在于高效地升高训练负载,从而在资源无限的平台进行大规模数据集的训练。
论文假如特征值梯度遵从正态分布,基于此计算阈值$\tau$,随后应用随机剪枝算法(stochastic pruning)将小于阈值的特征值梯度随机置为零或$\pm \tau$。经实践推理和试验证实,这种办法不仅可能无效地稠密化特征值梯度,还能在减速训练的同时,不影响训练的收敛性。
General Dataflow
卷积层通常蕴含4个阶段:推理、特征值梯度回传、权值梯度计算和权值更新。为了示意这些阶段的计算,论文定义了一些符号:
卷积层的四个训练阶段的总结为:
论文通过可视化发现,回传阶段的特征值梯度简直全是十分小的、接近于零的值,自然而然地想到将这些值去掉不会对权值更新阶段造成很大的影响,所以论文认为剪枝特征值梯度可能减速卷积层在训练时的计算。
Sparsification Algorithms
Distribution Based Threshold Determination (DBTD)
剪枝操作最要害的步骤是决定抉择哪些元素进行打消,先前有钻研应用最小堆进行元素抉择,但这会带来较大的额定计算开销。为此,论文采纳简略的阈值过滤进行元素抉择。
论文首先剖析了两种经典的卷积网络结构的特征值梯度散布:Conv-ReLU构造和Conv-BN-ReLU构造:
- 对于Conv-ReLU构造,输入的特征值梯度$dO$是稠密的,但其散布是无规律的,而构造的输出特征值梯度$dI$简直全是非零值。通过统计发现,$dI(\cdot)$的散布以零值对称散布,且密度随着梯度值的减少而降落。
- 对于Conv-BN-ReLU构造,BN层设置在卷积层与ReLU层两头,扭转了梯度的散布,且$dO$的散布与$dI$相似,。
所以,上述的两种构造的梯度都可认为遵从零均值、方差为$\sigma^2$的正态分布。对于Conv-ReLu构造,因为ReLU不会升高稠密性,$dO$可能继承$dI$的稠密性,将$dI$是作为Conv-ReLU构造中的剪枝指标梯度$g$。而对于Conv-BN-ReLU构造,则将$dO$作为剪枝指标$g$。这样,两种构造的剪枝指标都可对立为正态分布。假如$g$的数量为$n$,能够计算梯度的绝对值的均值,并失去该均值的冀望为:
这里的冀望为从散布中采样$n$个点的冀望,而非散布的整体冀望,再定义以下公式
将公式2代入公式1中,能够失去:
从公式3能够看出$\tilde{\sigma}$为参数$\sigma$的无偏预计,靠近于实在的均值,且$\tilde{\sigma}$的整体计算耗费是能够承受的。基于下面的剖析,论文联合正态分布的累积函数$\Phi$、剪枝率$p$和$\tilde{\sigma}$计算阈值$\tau$:
Stochastic Pruning
剪枝大量值较小的梯度简直对权值的更新没有影响,但如果将这些值较小的梯度全副设为零,则会对特征值梯度的散布影响很大,进而影响梯度更新,造成重大的精度损失。参考Stochastic Rounding算法,论文采纳随机剪枝来解决这个问题。
随机剪枝逻辑如算法1所示,对于小于阈值$\tau$的梯度值,随机采样一个缩放权重来计算新阈值,再依据新阈值将梯度值置为零或$\pm \tau$。
随机剪枝的成果如图2所示,可能在放弃梯度散布的数学冀望的状况下进行剪枝,与以后的办法相比,论文提出的办法的长处如下:
- Lower runtime cost:DBTD的计算复杂度$O(n)$小于top-k算法$O(nlogk)$,且DBTD对硬件更敌对,可能在异构平台实现。
- Lower memory footprint:随机裁剪能放弃收敛性,且不须要存储而外的内存。
至此,Sparsification Algorithms在梯度回传时的特征值梯度计算为:
Experimental Results
在CIFAR-10、CIFAR-100以及ImageNet上进行准确率验证。
在CIFAR-10和ImageNet上进行收敛性验证。
在不同的设施上进行减速成果验证。
Conclustion
论文通过DBTD办法计算过滤阈值,再联合随机剪枝算法对特征值梯度进行裁剪,稠密化特征值梯度,可能升高回传阶段的计算量,在CPU和ARM上的训练别离有3.99倍和5.92倍的减速成果。论文提出的特征值稠密化算法看似很简略,其实进行了充沛的实践推导以及试验验证,才失去最终正当的过滤办法,惟一惋惜的是没在GPU设施上进行试验验证。论文对算法的收敛性以及冀望有具体的实践验证,不过这里没有列出来,有趣味的能够去看看原文。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】