高效神经网络的参数与连接的学习外文翻译资料

 2022-09-09 04:09

英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料


高效神经网络的参数与连接的学习

作者

Song Han

Stanford University

songhan@stanford.edu

Jeff Pool

NVIDIA

jpool@nvidia.com

John Tran

NVIDIA

johntran@nvidia.com

William J. Dally

Stanford University

NVIDIA

dally@stanford.edu

摘要

神经网络的计算量和存储量都是比较大的,这使得在嵌入式设备上使用它们变得比较困难。而且,卷积神经网络在网络训练的开始阶段就已经固定了其网络结构,之后的训练并不会改善它的结构。为了解决这些问题,我们提出了一种可以大量减少神经网络的计算量和存储量的方法,这种方法的主要思想是只学习网络中比较重要的连接,而不学习非重要的连接,并且这种方法对最后的准确率并没有什么影响。我们的方法通过三个步骤来去除网络之中冗余的,不重要的连接。首先,我们训练网络,使其学习哪些连接是重要的,而哪些连接是不重要的。接下来,我们去除掉网络中这些不重要的连接。最后,我们保持剩余的网络连接不变,对其进行再训练,最终达到目的。在ImageNet数据集上,通过我们的方法,我们将AlexNet的连接数据量压缩了9倍,没有准确率的损失。另一个试验中,我们将VGG-16网络的数据量压缩了13倍,也没有准确率的损失。

1 背景介绍

神经网络在计算机视觉领域,说话人识别和自然语言处理领域已经应用的十分广泛。我们来看看卷积神经网络在计算机视觉领域的发展。在1998年,Lecun等提出了一个只有1M参数的卷积神经网络Lenet-5,用来对手写的数字进行识别。但是到了2012年,Krizhevsky等通过一个60M的卷积神经网络获得了ImageNet数据集竞赛的第一名。Deepface神经网络用来进行人脸识别,有120M参数。Coates等提出的一个神经网络竟然达到了10B的参数量。

虽然这些神经网络是十分强大的,但是它们需要可观的存储空间,内存带宽和计算资源。对于嵌入式设备来说,这些资源是很难获得的。图一显示了在一个45 nm的CMOS处理器上的基本的算术运算和内存操作所需要的能量消耗。从这张图中我们可以看出每一个连接所消耗的能量是由内存读取的次数所决定的,从SRAM上的每32位5 pJ到DRAM上的每32位640 pJ之间不等。大型的神经网络显然不支持片上的存储,必须要用到能量消耗更大的DRAM。运行一个有1M连接的神经网络,如果时钟为20Hz的话,那么仅仅是DRAM上的读取操作就需要12.8W的功率,大大超出了可移动设备的可提供的能量功率。我们的目标是减少神经网络的能量消耗,使得其可以运行在实时的可移动设备上。通过我们的方法去除冗余连接的网络模型也更便于存储和传输。

为了达到这一目标,我们提出了一种按照一定规则去除网络冗余连接并且可以保持原始准确率的方法。经过一个初始化的训练之后,我们移除所有权值小于某个阈值的连接。这种剪除连接的方法使得原来稠密的,全连接的网络层变成了稀疏的网络层。这第一步学习的是网络的拓扑结构,也就是,学习网络中哪些连接是重要的,并且去除不重要的连接。然后我们对修剪之后的稀疏网络进行再训练,使得剩余的连接可以补偿去除掉的连接。修剪和再训练这两步可以迭代进行更进一步减小网络的复杂度。实际上,这种训练过程学习了网络的复杂度,这和哺乳动物大脑的学习过程相类似。研究发现哺乳动物的神经突触都是在出生之后的几个月之内生长出来的,随后随着个体的不断成长,大脑就会不断修剪掉一些不常用的神经连接,变成一个成熟的大脑。

2 相关研究

神经网络很明显是过参数化的,对于深度神经网络,其中更是有巨大的冗余。这导致了神经网络计算和存储的浪费。现在有很多不同的方法来去除网络中的冗余:Vanhoucke等研究了一种8位定点数代替32位浮点数的激活方法;Denton等探索了通过寻找神经网络线性结构的合适低秩近似,并且保持准确率损失在1%以内的方法。Gong等通过向量量化的方法来压缩深度卷积神经网络,也能将准确率损失控制在1%以内。这些方法和我们的剪除连接的方法是相正交的,可以结合起来达到更大的压缩倍数。

还有一种减少网络参数的方法是用一个全局的平均池化来代替网络中的全连接层。网中网和GoogLenet采取了这种方法在一些数据集上取得了state of art的结果。但是传输学习,也就是,利用在ImageNet上学习到的特征,而只对最后的网络的全连接层进行微调的方法比这个方法困难得多。这个问题是Szegedy等提出的,这促使他们在他们的网络之上又加了一个线性层来使传输学习变成可能。

网络修剪技术已经被用来减小模型的复杂度和减小过拟合上。早先的修剪方法是偏置的权值衰减。优化的大脑损伤和大脑手术在损失函数的Hessian基础上进行网络连接的修剪,并且暗示这种修剪比基于值的修剪更加的准确,但是二阶导数需要额外的计算。

HashedNets是最近提出的一种减小模型大小的方法,它通过一个哈希函数来将连接分成几个组,属于同一组的连接拥有同样的权值。这种技术也许可以通过修剪技术来进行优化。正如Shi等和Weinberger等指出的,稀疏性可以将哈希时的冲突最小化,使得哈希更加有效率。HashedNets可以和权值修剪来获得更好的结果。

3 连接学习

我们的修剪方法有三个步骤,如图2所示,首先通过正常的网络训练来进行连接学习。但是与传统的训练不同的是,我们学习的不是网络的最终权值,而是学习哪些连接时重要的,哪些连接是不重要的。

第二步是剪除掉这些不重要的权值比较小的连接,所有权值小于某一个阈值的连接都被从网络中移除掉。这使得稠密的网络变得稀疏,如图3所示。

最后一步是对经过修剪之后的网络进行再训练。这一步是必须的,如果没有这最后一步的再训练,准确率会极大地下降。

3.1 正则化

选择正确的正则化方法影响网络修剪和再训练的效果。L1正则化方法惩罚非零的参数,这使得更多的参数趋近于0。这在修剪之后,再训练之前可以获得更好的准确率。但是,剩余的连接则不如使用L2正则化方法好,通过L2正则化再训练之后获得了更好的准确率。总之,L2正则化可以得到最好的修剪结果。这一点在后面的实验章节有讨论。

3.2 Dropout比率的调整

Dropout是一种广泛用来防止过拟合的方法,而且这种方法也被用在再训练过程中。在再训练过程中,dropout比率必须进行调整来适应模型容量的变化。在dropout方法中,每一个参数在训练的过程中都有一定的概率被去除,但是在前向的过程中还是可以回来的。在修剪的过程中,参数被去除掉是永久的,在前向的过程中也不会回来。

定量来说的话,假设表示第层的连接数,表示原始网络的第层的连接数,而表示再训练之后的网络的第层的连接数,表示第层的神经元的个数。因为dropout是在神经元上进行的,并且和是密切相关的根据公式(1),那么再训练时的dropout比率应该由公式(2)给出,其中表示原始的dropout比率,而表示再训练过程中应采取的dropout比率。

3.3 局部剪切和参数协同适应

在再训练的过程中,通过哪些经过剪切之后的连接的权值来初始化训练网络比重新初始化这些经过修剪之后的网络层要好一些。卷积神经网络具有脆弱的协同适应特性:当网络经过初始训练之后,梯度下降可以找到一个好的解,但是当重新初始化某些层之后,就不一定可以找到好的解了。所以当我们重新训练这些修剪过的层时,应该保持这些保留下来的连接的权值,而不是对它们进行重新初始化。

因为对经过修剪之后的网络进行训练,我们不需要对那些修剪掉的连接进行后向计算梯度,因此比之前没有修剪过的网络需要更少的计算量。同样的,当网络越来越深的时候,梯度弥散的问题就会更严重,这使得深度网络更难弥补修剪所带来的误差。为了避免这个问题,我们固定卷积层的网络参数,而只重新训练修剪之后的全连接层,反之亦然。

3.4 迭代修剪

学习哪些连接是重要的是一个迭代的过程。一个迭代包含一次修剪和一次再训练。经过很多个这种迭代之后,剩余的连接将逐渐固定不变。这种方法和仅一次猛烈的剪切相比,可以将AlexNet压缩5到9倍。每一个迭代都是一次寻找最佳连接的贪婪搜索。我们也试验了基于参数绝对值的随机修剪方法,但是这种方法得到的结果很差。

3.5 剪除神经元

经过剪除连接之后,一些没有输入连接或输出连接的神经元将被移除掉。而经过修剪之后的神经元,与其相关的连接也将进一步修剪掉,再训练会自动达到这样的结果。这样的结果的出现时由于梯度下降算法和正则化方法的使用。因为如果一个神经元没有输入连接,或者没有输出连接,那么它对最终的损失函数将没有任何贡献,这将使得它的输出连接,或者输入连接的梯度变为0。而只有正则化项可以使得权值变为0。因此在再训练过程中那些死去的神经元将被自动从网络之中移除。

4 实验

我们在caffe上实现了我们的网络修剪方法。我们对caffe进行了修改,使其对修剪掉的连接加一个mask。修剪时的阈值通过一个参数和该层参数的标准差相乘得到。我们在NVIDIA TitanX GPU和GTX980 GPU上进行了实验。

我们对4个具有代表性的神经网络进行了修剪:MNIST数据集上的LeNet-300-100和LeNet-5,以及ImageNet上的AlexNet和VGG-16。修剪之前和修剪之后的网络的参数量以及准确率见表一。

4.1 MNIST数据集上的LeNet

我们首先在MNIST数据集上对LeNet-300-100和LeNet-5神经网络进行了实验。LeNet-300-100是一个具有两个隐层的全连接的神经网络,在MNIST数据集上达到了1.6%的错误率。而LeNet-5是一个具有两个卷积层和两个全连接层的卷积神经网络,在MNIST数据集上达到了0.8%的错误率。经过修剪之后,网络在学习率设置为原来的1/10的情况下进行了再训练。表1显示了,这些网络在修剪之后参数量压缩到了原来的1/12。对于表2和表3,每一层从左到右表示原始网络中的参数量、计算该层输出所需的浮点数操作量、非0输出的平均百分比、修剪之后非0权值的百分比、实际需要的浮点数操作的百分比。

一个有趣的副产品是,我们发现网络修剪检测到了视觉的焦点区域。图4显示的是LeNet-300-100网络的第一个全连接层的稀疏性,这个矩阵的大小是。它有28个波段,每一个波段的宽度是28,对应于的输入像素。图中着色的区域,表示的是非0的参数,与输入图片的中心一致。因为手写数字是在输入图片的正中的,所以中央的这些权值是重要的。这个图的左右两边是稀疏的,对应着图片中不太重要的上边和下边区域。经过网络修剪之后,网络找到了图片的正中央更重要,而周边的区域的连接则被修剪得比较多。

4.2 ImageNet 上的AlexNet

我们进一步在ImageNet ILSVRC-2012数据集上进行了实验,这个数据集有1.2M个训练样本和50000个测试样本。我们使用caffe官网上训练好的AlexNet网络模型来进行实验,这个网络有6100万的参数量,有5个卷积层和3个全连接层,top-1准确率为57.2%,top-5准确率为80.3%,需要在NVIDIA Titan X GPU上训练75个小时。对连接进行修剪之后,对原始网络以原始学习率的1/100进行了再训练,再训练耗时173个小时。表1显示了AlexNet模型大小可以压缩到原来的1/9,计算量减少到原来的1/3。

4.3 ImageNet上的VGG-16

在AlexNet模型上取得不错的结果之后,我们考虑了在现在比较新的VGG-16上进行了实验,这个网络也是针对ImageNet ILSVRC-2012数据集的。VGG-16有更多的卷积层,但是也只有三个全连接层。使用相同的方法对其进行了比较猛烈的修剪,如表5所示,我们进行了5次迭代修剪,并进行了再训练。

VGG-16修剪的结果也是很好的。整个模型被压缩到原来的7.5%,压缩了13倍之多。尤其是对于两个最大的全连接层,将它们压缩到了原来的4%。这种减少对于图像的实时处理来说是十分有意义的,因为在实时图像处理中,全连接层的连接重用是十分少的(这和训练时的批处理不一样)。

5 讨论

准确率和参数量之间的关系曲线图如图5所示。参数修剪掉的越多,准确率损失也会越大。我们根据L1和L2正则化、有无再训练给出了5条这样的关系曲线。对比实线和虚线,可以很清楚的看出再训练的重要性。如果没有再训练,准确率会下降得更快,当参数量为原始的1/3时就已开始下降而不是1/10。但可以看到不经过再训练,我们也可以将原始模型压缩2倍而不带来准确率的损失,这看起来像是“免费的午餐”一样,十分有趣。如果加上再训练过程的话,我们可以将其压缩9倍。

L1正则化给出的修剪之后、再训练之前的结果要比L2正则化给出的结果好(紫线蓝点),因为L1正则化促使更多的参数趋近于0。但是对比黄线和绿线的话,可以发现采用L2比L1正则化,再训练之后的结果要好一些。一种扩展方法是修剪连接的时候采用L1正则化,而再训练的时候采用L2正则化。但是这还是不如统一采用L2正则化方法好。经过一种正则化之后的参数并不适应另外一种正则化方法。

最好的结果是采用了迭代修剪的(红色实线、实心圆)。我们选取已经修剪、再训练过的网络(绿色实线、圆形),然后对其再进行修剪和再训练。曲线上最左端的点对应着绿线上位于80%(压缩

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[146169],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。