aihot  2017-05-07 22:02:07  智能硬件 |   查看评论   

 赢咖4

深层神经网络已经演变为用于机器学习任务的最先进的技术,从计算机视觉和语音识别到自然语言处理。然而,深度学习算法是计算密集型和存储器密集型的,使得它们难以部署在具有有限硬件资源的嵌入式系统上。
 
为了解决这个限制,深度压缩显着减少了神经网络所需的计算和存储。例如,对于具有完全连接的层的卷积神经网络,例如Alexnet和VGGnet,其可以将模型尺寸减小35x-49x。即使对于完全卷积的神经网络,如GoogleNet和SqueezeNet,深度压缩仍然可以将模型尺寸减少10倍。这两种情况都不会导致预测精度的损失。
 
目前的培训方法不足
 
压缩而不失准确度意味着在训练模型中有显着的冗余,这表明当前训练方法的不足。为了解决这个问题,我曾与NVIDIA的Jeff Pool,百度的Sharan Narang和Facebook的Peter Vajda合作开发了Dense-Sparse-Dense(DSD)训练,一种新颖的训练方法,模型通过稀疏约束优化,并通过恢复和重新训练修剪权重来提高预测精度。在测试时,由DSD训练产生的最终模型仍然具有与原始密集模型相同的架构和尺寸,并且DSD训练不会引起任何推断开销。我们对主流CNN / RNN / LSTM的DSD训练进行了图像分类,图像标题和语音识别的实验,并发现了显着的性能改进。

在本文中,我们首先介绍深度压缩,然后介绍密集稀疏密集训练。
 
深度压缩
 
深度压缩的第一步是突触修剪。 人类大脑具有固有的修剪过程。 5x突触被从婴儿年龄修剪到成年。
 
类似的规则是否适用于人工神经网络? 答案是肯定的。 在早期的工作中,网络修剪证明是减少网络复杂性和过度拟合的有效方法。 这种方法也适用于现代神经网络。 我们从通过正常网络训练学习连接性开始。 接下来,我们修剪小重量连接:从网络中删除所有具有低于阈值的权重的连接。 最后,我们重新训练网络,以了解剩余稀疏连接的最终权重。 修剪将AlexNet和VGG-16模型的参数数量减少了9x和13x。

深度压缩的下一步是权重分配。 我们发现神经网络具有对低精度的真正高容差:对权重值的积极近似不会损害预测精度。 如图2所示,蓝色权重最初为2.09,2.12,1.92和1.87; 通过让它们中的四个共享相同的值,即2.00,网络的精度仍然可以恢复。 因此,我们可以节省非常少的权重,称为“码本”,并且让许多其他权重共享相同的权重,只存储索引到码本。
 
索引可以用非常少的位来表示; 例如,在下图中,存在四种颜色,因此仅需要两个位来表示权重,而不是原始的32位。 另一方面,码本占用可忽略的存储空间。 我们的实验发现这种权重分配技术比线性量化更好,相对于压缩比和精度权衡。

图3显示了深度压缩的总体结果。 Lenet-300-100和Lenet-5在MNIST数据集上评估,而AlexNet,VGGNet,GoogleNet和SqueezeNet在ImageNet数据集上评估。 压缩比范围从10x到49x - 即使对于那些完全卷积神经网络,如GoogleNet和SqueezeNet,深度压缩仍然可以压缩它一个数量级。 我们强调SqueezeNet,它比AlexNet少50倍的参数,但具有相同的精度,仍然可以压缩10倍,使其只有470KB。 这使得它容易适合片上SRAM,这比DRAM更快且更节能地访问。
 
我们已经尝试了其他压缩方法,例如基于低秩近似的方法,但是压缩比不是那么高。 完整的讨论可以在深度压缩论文中找到。
 
DSD培训
 
深度神经网络可以被积极地修剪和压缩的事实意味着我们当前的训练方法具有一些限制:它不能充分利用密集模型的全部容量来找到最佳局部最小值,而是修剪的稀疏模型,更少的突触可以实现相同的准确性。这带来了一个问题:我们可以通过恢复这些权重并再次学习来实现更好的准确性吗?
让我们来比喻一下奥运会赛道的训练。教练将首先在高原山地训练赛跑者,那里有很多限制:低氧,寒冷的天气等。结果是当跑步者再次返回高原区时,他/她的速度增加。类似于神经网络,给定严格约束的稀疏训练,网络执行以及密集模型;一旦释放约束,模型就可以更好地工作。
理论上,以下因素有助于DSD训练的有效性:
1.逃生鞍点:优化深度网络最大的困难之一是鞍点的扩散。 DSD训练通过修剪和重新填充框架来克服鞍点。修剪收敛模型干扰学习动力学,并允许网络跳离鞍点,这使网络有机会收敛在更好的局部或全局最小值。这个想法也类似于模拟退火。虽然模拟退火在搜索图上随着概率减小而随机跳跃,但是DSD确定性地偏离在第一稠密训练阶段中实现的收敛解,通过去除小权重并实施稀疏支持。
2.规则化和稀疏训练:稀疏训练步骤中的稀疏正则化将优化移动到较低维空间,其中损失表面更平滑并且趋于对噪声更鲁棒。更多的数值实验验证了稀疏训练和最终的DSD减少方差,并导致更低的误差。
3.强大的重新初始化:重量初始化在深度学习中起着重要的作用。常规训练只有一次初始化的机会。 DSD在训练过程期间给予优化第二(或更多)机会以从更鲁棒的稀疏训练解决方案重新初始化。我们从稀疏解决方案重新致密网络,这可以被看作是修剪权重的零初始化。其他初始化方法也值得尝试。
4.断裂对称:隐藏单位的置换对称性使得权重对称,因此在训练中易于共适应。在DSD中,修剪权重打破了与权重相关联的隐藏单元的对称性,并且权重在最终密集相中是不对称的。
我们检查了几个主流的CNN / RNN / LSTM架构对图像分类,图像字幕和语音识别数据集,发现这种密集稀疏的训练流程提供了显着的精度改进。我们的DSD培训采用三个步骤:密集,稀疏,密集;每个步骤在图4中示出。

1.初始密集训练:第一个D步骤通过在密集网络上的正常网络训练来学习连接性。然而,与常规训练不同,该D步骤的目的不是学习权重的最终值;相反,我们正在学习哪些连接是重要的。
2.稀疏训练:S步骤修剪低重量连接并重新训练稀疏网络。我们对实验中的所有图层应用相同的稀疏度,因此有一个单一的超参数:稀疏度。对于每个层,我们对参数进行排序,从网络中去除最小的N *稀疏参数,将密集网络转换成稀疏网络。我们发现稀疏比率为50%-70%的效果非常好。然后,我们重新训练稀疏网络,这可以在稀疏约束下完全恢复模型精度。
3.最终密集训练:最后的D步骤恢复被修剪的连接,使网络再次密集。这些先前剪枝的连接初始化为零并重新训练。恢复修剪的连接增加了网络的维度,并且更多的参数使得网络更容易向下滑动鞍点以获得更好的局部最小值。
我们将DSD训练应用于来自不同领域的数据集上的不同种类的神经网络。我们发现DSD训练提高了所有这些网络的精度相比,神经网络没有训练与DSD。神经网络选自CNN,RNN和LSTM;从图像分类,语音识别和字幕生成中选择数据集。结果如图5所示。DSD模型可以在DSD Model Zoo下载。
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自深层神经网络

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]