主题:【深度卷积神经网络的加速】
Accelerating Very Deep Convolutional Networks for Classification and Detection
附上论文链接:
https://www.semanticscholar.org/paper/Accelerating-Very-Deep-Convolutional-Networks-for-Zhang-Zou/3259b108d516f4700411f92e574a0f944462f0bc
摘要:没什么说的,要做的就是对深层的卷积神经网络进行加速。特点是本论文中的加速方法考虑到了非线性单元。为所得到的非线性优化问题提供了除SGD之外的新的解题思路。通过非对称重建的方法,在多个卷积层近似的情况下,该非对称重建的方法有效减少了累积的误差,并且在应用广泛的VGG-16模型中得到了检验。
一.Introduction
1.还是说了一遍关于CNN通过这些年的发展,准确率越来越高但是需要的计算成本也越来越大,移动设备我发承担这样的计算需求,所以我们要开始关注神经网络的压缩。
2.前面的很多成熟的研究生只针对了一两层的或者是浅层的神经网络的加速优化,本文和他们不同是针对深层的神经网络的。
3.基于随机梯度下降法的数据重建方法以及反向传播的方法在简单的分类问题上面性能很出色,但是在例如ImageNet这样复杂的图像分类问题上,由于SGD过于依赖初始化以及学习率,所以再进行回归的时候会陷入局部最优解,即使成功加速某一层,这样会使累积误差的速度加快,同时由于各层的权重,特征的size,冗余,都不相同,所以很难一统到所有层。
4.本文提出一种响应重建的方法,考虑到了非线性神经元和低秩约束。针对这个非线性问题,抛开了SGD,使用广义奇异值分解的方法,该方法可以进行非对称重建,有效减少累计误差。理论在VGG-16这样一个神经网络上得到验证,速度提高四倍,在top-5的分类中,误差提高百分之0.3.
二.Related Work
通常来说,CNN的test-time(???是预测过程么)加速重点在两个方面:1) layer decomposition 2)针对这种分解问题的优化算法
E. Denton, W. Zaremba, J. Bruna, Y. LeCun, and R. Fergus, “Exploiting linear structure within convolutional networks for efficient evaluation,” in Proc. Adv. Neural Inf. Process. Syst., 2014,
pp. 1269–1277.(低秩分解)
M. Jaderberg, A. Vedaldi, and A. Zisserman, “Speeding up convolutional neural networks with low rank expansions,” in Proc. British Mach. Vis. Conf., 2014.(提出了两种优化方案:(i)最小化滤波器权重误差的“滤波器重建”,以及(ii)使响应误差最小化的“数据重建”。)
[18] V. Lebedev, Y. Ganin, M. Rakhuba, I. Oseledets, and V. Lempitsky, “Speeding-up convolutional neural networks using fine-tuned cp-decomposition,” in Proc. Int. Conf. Learn. Represent., 2015(将一层分解为5层)
三.Approaches
论文利用了之前提到的利用了低秩的分解假设。证明了这种分解对于线性神经元具有闭合形式解(SVD),同时对于非线性神经元这种方法相对复杂。论文设计的solver使用非对称重建方法能够减少深层深度模型的累积误差。
3.1 Low-Rank Approximation of Responses
假设layer上的像素的filter response在低秩子空间上,然后通过低秩分解降低了时间复杂度。那么我们的目的是找到近似的低秩子空间(??最小化响应的重建误差)。
Filter size k*k*c (C是channel数)
使用向量来表示要和权重权重相乘的特征向量 (+1是bias)
W是权重, d是卷积核的数量
假定y在低秩子空间上上,可写成这个形式:M是d*d矩阵,秩小于d, yba 是y的均值。
等式可以重写为
对矩阵M进行分解,Q,P均为d*d’
设
è
从上图中可以看出所需计算的时间复杂度降低为d’/d/
PS:M矩阵的分解是任意的,不会影响最后的结果。,所以我们可以选择SVD分解。另外的,由于低秩子空间的并不严格,所以我们通过将等式变为约束问
题找到近似的低秩子空间。
Yi是训练集中单一样本的响应,求解这个问题可以使用SVD或者主成分分析的方法。为了检验低秩假设有多好,我们选择了一个在ImageNet上训练出来的7层的CNN。对于每层的响应,我们计算其协方差矩阵的特征值,然后绘制最大特征值的总和。通过下图可以看到大量的能量被集中在了一小部分特征当中,这就表明了低秩化处理是可行的有依据的,我们确实是可以使用一个尺寸更小的filter来代替原有的filter
Y的低秩性是由于输入的低秩性和权重W的低秩性,之前很多文献都是针对W的低秩性来进行优化的,这篇论文主要是对输出y进行低秩化处理,(他说这样更有效)
3.2 nonlinear case
本节讨论非线性单元,r(.)表示非线性操作。比如ReLu函数 r(.) = max(. , x)
根据公式重建非线性响应的最小误差:
(1)
针对这个优化问题,提出辅助变量{Z},惩罚系数λ
(2)
{Z} M b 交替求解(固定一个求另外的):
1)固定{z}求解M,b
b的求解显而易见
2)M,b固定求解{z}:因为集合{Z}中的组成元素是相互独立的
所以我们可以单独求解,将一个完整的优化问题化解成n个一维优化问题
以上两个步骤交替迭代。给定λ一个初始值,然后设定迭
代次数,根据理论λ越大越好。但是这样一来迭代很难取得进展,所以论文中设定为λ=1
3.3 多层次非对称重构
为了解决对每一层单独优化,误差累计过快的问题。
步骤:由浅至深对每一层应用算法,以某一层为例,由于映射的近似性,得到的本层输入是一个近似值:^x. 所以(2)可变为:
(3)
(3)中第一项是一个精确值,不是近似的,第二项是近似值,为本层的近似输出
3.4 Rank Selection for Whole-Model Acceleration(怎样选择合适的d’)
d’是每一层决定优化复杂度的唯一参数,所以如何确定一个合适的d’作为模型的统一参数很重要。
主成分分析的能量与最后肺类的准确性相关。
100%的准确性代表着不使用近似估计,所以对于分类的准确性来看没有影响,从图中可以看出两者的关系大大约为线性关系。
为了能够确定d’,大致假定整个模型的分类的准确性与每一层的pca能量的乘积相关。
è代表的式第l层中,第a大的特征值,然后对同一层的第1到第d’的特征值求和,在对不同层进行相乘。
对算法进行优化:
Dl式第l层的原始filter的数量,dl’式估计过后的数量,Cl是为估计之前的时间复杂,根据之前的推论,得到的结果是估计之后的时间复杂性,C是在估计之后整个模型的复杂性。在时间复杂性的约束条件下,求累积能量的最值。
求解过程使用贪婪算法:
之前都是针对channel这个维度进行操作,优势:
But,由于压缩程度决定于d’,而这个值越大,会带来acc的损失,所以需要对d’的值进行一个约束。解决办法:
3. 非对称重建也将解决空间分解的近似误差,这对于缓解累积误差非常重要。
通过ImageNet数据集对祭祀的模型进行微调,这个过程与训练很相似。近似模型就是初始化设置。所以近似模型(初始化的值)和learning rate都很重要。
四.实验过程
是要在两个模型上进行验证:VGG-16 和SPPnet (OverFeat-7)(10层的神经网络)
在ImageNet验证集上,SPP-10的错误率为12.51%,在我们的测试中,VGG-16的错误率为10.09%