一种深度神经网络压缩方法技术

技术编号:17265782 阅读:144 留言:0更新日期:2018-02-14 13:25
本申请公开了一种改进的神经网络压缩方法,该方法可以用于将神经网络剪枝技术融入神经网络的原始训练过程中以减少训练迭代次数,从而缩短稀疏化神经网络的训练周期。该方法还可以用于将剪枝技术融入对训练好的模型的压缩重训过程中,从而在保证模型精度的前提下实现神经网络的压缩。

A compression method for deep neural networks

This application discloses an improved neural network compression method, which can be used to integrate neural network pruning technology into the original training process of neural network, so as to reduce the number of training iterations, and shorten the training period of sparse neural network. This method can also be applied to pruning technology into the compression training process of a trained model, so as to achieve the compression of neural network on the premise of guaranteeing the accuracy of the model.

【技术实现步骤摘要】
一种深度神经网络压缩方法专利
本专利技术涉及一种深度神经网络的压缩方法及装置。
技术介绍
人工神经网络人工神经网络(ArtificialNeuralNetworks,ANNs),又称神经网络(NNs),是一种模仿动物神经网络的行为特征,进行分布式并行信息处理的数学计算模型。近年来,神经网络得到快速发展,被广泛应用于诸多领域,如图像识别、语音识别、自然语言处理、基因表达、内容推送等等。在神经网络模型,存在大量彼此连接的节点(也称“神经元”)。每个神经元,通过某种特定的输出函数(也称“激活函数”(ActivationFunction))计算处理来自其它相邻神经元的加权输入值,并且神经元之间的信息传递强度用“权值”来定义。算法通过自我学习,调整该权值。早期的神经网络只有输入和输出层两层,无法处理复杂的逻辑,限制了其实用性。深度神经网络(DeepNeuralNetwork,DNNs)通过在输入和输出层之间添加隐藏的中间层,有效提升了网络在处理复杂问题时的表现。图1示出了深度神经网络的示意图。为了适应不同的应用场景,深度神经网络进而衍生出多种不同的结构。例如,循环神经网络(RecurrentNeuralNetworks,RNNs)是一种常用的深度神经网络模型。不同于传统前向神经网络(Feed-forwardNeuralNetworks),循环神经网络本身具有记忆性,神经元既可以从上一层神经元获取信息,又可以从自身所在的隐层获取信息,这使其能够广泛应用于与时序相关的问题处理上。例如,在语音识别中,信号的前后关联很强,即,识别句子中的单词和该单词前面的单词序列关系十分紧密。因此,循环神经网络在语音识别领域有着非常广泛的应用。深度神经网络的应用包括“训练”(training)、“推断”(inference)两个过程。训练神经网络旨在提升网络的学习能力。输入特征通过前向传播过程计算预测结果,该计算结果与标准答案比较后将残差通过反向传播回传,并将比较结果用于更新网络权值参数,从而达到修正网络的目的。神经网络训练完成后,可以将训练好的神经网络应用到实际场景中,即推断,在该过程中,根据输入特征通过前向传播过程计算得到合理的预测结果。人工神经网络的压缩通过近几年的迅速发展,神经网络的规模不断增长,已公开的比较先进的神经网络可达数百层、数亿个连接,属于计算和访存密集型应用。在神经网络逐渐变大的情况下,模型压缩变得极为重要。在深度神经网络中,神经元的连接关系在数学上可以表示为一系列矩阵。经过训练后的网络虽然能够准确地进行预测,但是神经网络的矩阵是稠密的,即,矩阵中充满了非零元素。这会导致大量的存储和计算资源被消耗,因而计算速度降低,同时成本增加,使其难以在移动端推广应用,进而制约神经网络的发展。因此,通常对稠密的神经网络进行压缩。图2是示出了神经网络的训练和压缩的示意图。如图2所示,通常首先对神经网络进行训练,得到具有所需精度的训练好的神经网络。然后,利用剪枝、重训的方法对训练好的神经网络进行压缩,得到最终稀疏化的神经网络。近年来,广泛的研究表明,通过训练得到的神经网络模型矩阵中,仅有部分权值较大的元素代表着重要连接,而其他权值较小的元素可以被移除(置为零)。将权值较小的元素置为零的操作被称为剪枝(pruning)。剪枝后的神经网络精度会下降,但是可以通过重训(finetune),对仍然保留在模型矩阵中权值的大小进行调整,从而减小精度损失。图3示出了神经网络稀疏化的示意图。模型压缩可以将神经网络中的稠密矩阵稀疏化,能够有效地降低存储量、减少计算量,从而在保持精度的同时实现加速。神经网络模型压缩对于专用的稀疏神经网络加速器而言,显得尤为重要。语音识别SpeechRecognition语音识别是将语言的模拟信号顺序映射到一个具体的单词集合上。近年来,深度神经网络在语音识别领域有着非常广泛的应用。图4示出了一种使用神经网络的语音识别引擎的例子。在图4的模型中,利用深度学习模型来计算语音输出概率,即输入语音串与各匹配候选之间得相似度预测。此外,可以利用例如FPGA来加速实现图4的DNN部分。图5a和图5b进一步示出了应用于图4的语音识别引擎的深度学习模型。其中,图5a的深度学习模型显示了包含CNN(卷积神经网络)、LSTM(长短时记忆模型)、DNN(深度神经网络)、Softmax等模块。图5b的深度学习模型使用了多层长短时记忆(LSTM)模型。LSTM(长短时记忆)模型在语音识别领域,为了解决对长期信息的记忆问题,Hochreiter&Schmidhuber于1997年提出了长短时记忆(LongShort-TermMemory,LSTM)模型。LSTM神经网络是RNN的一种。与DNN不同,RNN是时间依赖型的。具体而言,时刻T的输入依赖于时刻T-1的输出,即,当前帧的计算需要前一帧的计算结果。进一步地,LSTM神经网络将普通RNN当中简单的重复神经网络模块改变为复杂的连接交互关系。LSTM神经网络在语音识别中取得了非常好的应用效果。关于LSTM的更多信息,可以参见如下文章:SakH,SeniorAW,BeaufaysF.Longshort-termmemoryrecurrentneuralnetworkarchitecturesforlargescaleacousticmodeling[C]//INTERSPEECH.2014:338-342,SakH,SeniorA,BeaufaysF.Longshort-termmemorybasedrecurrentneuralnetworkarchitecturesforlargevocabularyspeechrecognition[J].arXivpreprintarXiv:1402.1128,2014.图6示出了在语音识别领域中使用的一种LSTM网络模型。在图6所示的LSTM的结构中,各个参数的意义如下:-i、f、o分别代表三个门,即输入门(inputgate)、遗忘门(forgetgate)以及输出门(outputgate),状态变量单元(cell)对信息进行长时间记忆,g为单元的特征输入;-实线代表上一帧的输出;-每个门有一个权值矩阵,T时刻输入与T-1的输出经过门时的计算量较大;-虚线代表peephole,peephole以及三个叉乘符号对应的操作均为向量与对角矩阵的乘法,计算量较小。图7示出了在语音识别领域中使用的一种改进的LSTM网络模型。如图7所示,为了减小LSTM层的计算量,额外引入一个投影层用于降维。图7对应的计算公式为:it=σ(Wixxt+Wiryt-1+Wicct-1+bi)ft=σ(Wfxxt+Wrfyt-1+Wcfct-1+bf)ct=ft⊙ct-1+it⊙g(Wcxxt+Wcryt-1+bc)ot=σ(Woxxt+Woryt-1+Wocct+bo)mt=ot⊙h(ct)yt=Wyrmt其中,σ()表示sigmoid激活函数,而个g()与h()则表示tanh激活函数,Wic,Wcf,Woc为peephole,对应图6中的三条虚线。在实际计算中,cell作为操作数的运算均为向量与对角矩阵的乘法,此时权值矩阵是对角矩阵。另外,公式中的最后一步在LSTM本文档来自技高网...
一种深度神经网络压缩方法

【技术保护点】
一种稠密神经网络的压缩方法,所述稠密神经网络的神经元之间的连接关系由多个权重矩阵表示,所述方法包括:初始训练步骤,用于对初始稠密神经网络进行初始训练,使原始稠密神经网络收敛到中间稠密神经网络;压缩策略确定步骤,用于确定一个压缩周期的压缩策略,所述压缩策略至少包括:所述压缩周期内每次剪枝操作的压缩率、剪枝操作的次数和所述压缩周期的目标压缩率;和剪枝及重训步骤,用于基于所述压缩策略对中间稠密神经网络进行剪枝和重训操作,直到所述中间稠密神经网络被压缩为具有所述压缩周期的目标压缩率的稀疏神经网络。

【技术特征摘要】
1.一种稠密神经网络的压缩方法,所述稠密神经网络的神经元之间的连接关系由多个权重矩阵表示,所述方法包括:初始训练步骤,用于对初始稠密神经网络进行初始训练,使原始稠密神经网络收敛到中间稠密神经网络;压缩策略确定步骤,用于确定一个压缩周期的压缩策略,所述压缩策略至少包括:所述压缩周期内每次剪枝操作的压缩率、剪枝操作的次数和所述压缩周期的目标压缩率;和剪枝及重训步骤,用于基于所述压缩策略对中间稠密神经网络进行剪枝和重训操作,直到所述中间稠密神经网络被压缩为具有所述压缩周期的目标压缩率的稀疏神经网络。2.根据权利要求1所述的压缩方法,还包括:把所述压缩策略确定步骤和所述剪枝及重训步骤作为一个压缩周期,迭代执行多个压缩周期,直到所述中间稠密神经网络被压缩为具有最终的目标压缩率的稀疏神经网络。3.根据权利要求1所述的压缩方法,其中,每次剪枝操作的压缩率随剪枝次数线性下降至目标压缩率。4.根据权利要求1所述的压缩方法,其中,所述中间稠密神经网络是已经收敛但尚未达到所需精度的稠密神经网络。5.根据权利要求1所述的压缩方法,其中,所述剪枝及重训步骤进一步包括:剪枝步骤,用于基于本次剪枝操作的压缩率对各个矩阵进行剪枝,以获得剪枝后的神经网络;和重训步骤,用于使用训练集训练所述剪枝后的神经网络并进行权值矩阵更新,以恢复神经网络的精度。6.根据权利要求5所述的压缩方法,其中,所述剪枝及重训步骤进一步包括:迭代执行所述剪枝步骤和所述重训步骤,直到所述中间稠密神经网络被压缩为具有所述压缩周期的目标压缩率的稀疏神经网络。7.根据权利要求5所述的压缩方法,其中,所述剪枝步骤进一步包括:对每个矩阵中的所有元素按照绝对值从小到大进行排序;保留与本次剪枝的压缩率对应比例的绝对值较大的元素;以及将其余元素置零。8.根据权利要求5所述的压缩方法,其中,所述重训步骤进一步包括:获得掩码矩阵步骤,用于获得对应于所述剪枝后的神经网络的掩码矩阵,所述掩码矩阵记录所述剪枝后的神经网络的矩阵的非零元素的分布信息;和带掩码重训步骤,用于对所述剪枝后的神经网络带掩码矩阵进行重训,以恢复神经网络的精度。9.一种稠密神经网络的压缩装置,所述稠密神经网络的神经元之间的连接关系由多个权重矩阵表示,所述装置包括:初始训练模块,用于对初始稠密神经网络进行初始训练,使原始稠密神经网络收敛到中间稠密神经网络;压缩策略确定模...

【专利技术属性】
技术研发人员:李鑫孟通
申请(专利权)人:北京深鉴科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1