深度神经网络模型压缩方法及装置、存储介质、终端与流程

文档序号:15801328发布日期:2018-11-02 21:27阅读:146来源:国知局
深度神经网络模型压缩方法及装置、存储介质、终端与流程

本发明涉及信息处理技术,尤其涉及一种深度神经网络模型的压缩方法及装置、终端、存储介质。

背景技术

随着深度神经网络相关技术研究的迅速发展,相关领域内涌现了大批与深度神经网络相关的技术,如应用于视觉领域的卷积神经网络和应用于语音识别或自然语言处理领域的递归神经网络等,这些神经网络技术均极大地提高了相应领域的处理精度。

深度神经网络与浅层学习相比,深度神经网络具有巨大的开发潜力。通过深度神经网络模型的多层处理结构可以提取和分析样本的表征特征,由浅入深地逐层变换和计算样本特征并计算处理结果。通过对深度神经网络模型进行增宽增长处理,可以使深度神经网络模型获得相对更优的处理结果。

深度神经网络模型的参数通常在百万、千万或上亿数量级,因此对计算和存储设备的要求较高。由于深度神经网络模型存储及计算时深度神经网络模型的参数传输等问题,限制了深度神经网络模型在移动设备上的应用。目前,通常采用减少深度神经网络模型的参数、节点数目以及改变多样性类方法,达到压缩深度神经网络模型的目的。但是,压缩后的深度神经网络模型存在着精度和有效性较低的问题。



技术实现要素:

本发明解决的技术问题是在对深度神经网络模型压缩时,如何兼顾精度及有效性。

为解决上述技术问题,本发明实施例提供一种深度神经网络模型的压缩方法,包括:获取已训练的深度神经网络模型;对所述深度神经网络的所有层进行遍历,获取遍历到的当前层的参数;基于参数的密集度和延展范围对遍历到的当前层的参数进行量化,直至所述深度神经网络的所有层遍历完成,得到量化后的深度神经网络模型。

可选地,所述基于参数的密集度和延展范围对遍历到的当前层的参数进行量化,包括:对当前层的参数进行聚类分析,得到当前层对应的聚类中心数和聚类中心值;基于聚类分析结果中的聚类中心数目及聚类中心值,确定当前层对应的量化范围;采用所确定的量化等级,将当前层的量化范围内的参数进行量化,得到当前层的量化参数。

可选地,在得到当前层的量化参数之后,所述方法还包括:计算得到当前层的量化补偿系数;采用计算计算得到的量化补偿系数对当前层的量化参数进行补偿,得到当前层补偿后的量化参数,并作为当前层的量化参数。

可选地,采用如下的公式计算得到当前层的量化补偿系数,包括:其中,wi表示量化前的参数矩阵,表示量化前的参数的转置矩阵,qi表示量化后的参数矩阵,表示量化后的参数的转置矩阵。

可选地,所述方法还包括:对量化后的深度神经网络模型进行重新训练。

本发明实施例还提供了一种深度神经网络模型的压缩装置,包括:获取单元,适于获取已训练的深度神经网络模型;量化单元,适于对所述深度神经网络的所有层进行遍历,获取遍历到的当前层的参数;基于参数的密集度和延展范围对遍历到的当前层的参数进行量化,直至所述深度神经网络的所有层遍历完成,得到量化后的深度神经网络模型。

可选地,所述量化单元,适于对当前层的参数进行聚类分析,得到当前层对应的聚类中心数和聚类中心值;基于聚类分析结果中的聚类中心数目及聚类中心值,确定当前层对应的量化范围;采用所确定的量化等级,将当前层的量化范围内的参数进行量化,得到当前层的量化参数。

可选地,所述装置还包括:补偿单元,适于在得到当前层的量化参数之后,计算得到当前层的量化补偿系数;采用计算计算得到的量化补偿系数对当前层的量化参数进行补偿,得到当前层补偿后的量化参数,并作为当前层的量化参数。

可选地,所述补偿单元,适于采用如下的公式计算得到当前层的量化补偿系数:其中,wi表示量化前的参数矩阵,表示量化前的参数的转置矩阵,qi表示量化后的参数矩阵,表示量化后的参数的转置矩阵。

可选地,所述装置还包括:训练单元,适于对量化后的深度神经网络模型进行重新训练。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述的任一种深度神经网络模型的压缩方法的步骤。

本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令;所述处理器运行所述计算机指令时执行上述的任一种深度神经网络模型的压缩方法的步骤。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

上述的方案,基于参数的密集度和延展范围对深度神经网络模型的各层参数进行量化,可以避免人为定义的量化等级可能引入的精度损失,并兼顾各层参数对深度神经网络模型的重要性,可以在不减少深度神经网络模型中的各层参数以及节点的数量的同时,提高深度神经网络模型压缩的有效性及精度。

进一步地,在对深度神经网络模型的各层参数量化后,获取当前层对应的补偿系数,并采用所获取的补偿参数对量化后的参数进行补偿,可以有效的减小量化过程中深度神经网络模型的精度损失,可以进一步提高神经网络模型压缩的精度。

进一步地,对量化后的深度神经网络模型进行重新训练,可以提高量化后的深度神经网络模型的性能。

附图说明

图1是本发明实施例中一种深度神经网络模型的压缩方法的流程图;

图2是本发明实施例中另一种深度神经网络模型的压缩方法的流程图;

图3是本发明实施例中一种深度神经网络模型的压缩装置的结构示意图。

具体实施方式

如背景技术所述,目前的深度神经网络模型的精简压缩方法主要分为两类:改变深度神经网络模型密度类方法及改变深度神经网络模型的参数的多样性类方法。

改变深度神经网络模型密度类方法,通过改变神经网络的稀疏程度达到压缩的目的。在一些算法中,通常给定一个比较小的阈值来删除深度神经网络模型中的小幅值参数,主观性较大,对不同结构的神经网络需要进行过多的参数调整才可能获得理想的精简效果。另一些算法针对输入节点与输出响应间的贡献关系,对输入节点进行筛选,此类算法只针对单隐藏层神经网络且没有对隐藏层参数进行足够的处理,不适合网络结构较深的深度神经网络。

上述方法仅针对单层内或部分网络层间的关系进行精简,没有对深度神经网络进行整体性地考虑,因此难以保证模型精简的有效性。此外,对于较大的深度神经网络或多个深度神经网络组成的模型,难以在有限的时间内获得期望的精简结果。

为解决上述问题,本发明实施例的技术方案通过基于参数的密集度和延展范围对深度神经网络模型的各层参数进行量化,可以避免人为定义量化等级时可能引入的精度损失,并兼顾各层参数对深度神经网络模型的重要性,可以在不减少深度神经网络模型中的各层参数以及节点的数量的同时,提高深度神经网络模型压缩的有效性及精度。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

图1示出了本发明实施例中的深度神经网络模型的压缩方法的流程图。请参见图1,本实施例的深度神经网络模型的压缩方法可以包括如下步骤:

步骤s101:获取已训练的深度神经网络模型。

在具体实施中,可以将所获取的已训练的深度神经网络模型作为待压缩的深度神经网络模型。

步骤s102:对所述深度神经网络的所有层进行遍历,获取遍历到的当前层的参数。

在具体实施中,可以按照从输入到输出响应,即从前至后的顺序对深度神经网络的所有网络层进行遍历,也可以按照从输出响应至输入的顺序对深度神经网络模型的网络层进行逐层遍历。

步骤s103:基于参数的密集度和延展范围对遍历到的当前层的参数进行量化,直至所述深度神经网络的所有层遍历完成,得到量化后的深度神经网络模型。

在具体实施中,通过参数的密集度和延展范围,逐次逐层地对深度神经网络模型的各层参数量化进行量化,并兼顾各层参数对深度神经网络模型的重要性,可以避免人为定义量化等级时可能引入的精度损失,确保量化处理结果能够在压缩度和精度做到均衡,可以在不减少深度神经网络模型中的各层参数以及节点的数量的同时,提高深度神经网络模型压缩的有效性及精度。

下面将结合图2,对本发明实施例中的深度神经网络模型的压缩过程进行详细的描述。

参见图2,本发明实施例中本发明实施例中的深度神经网络模型的压缩方法,适于对深度神经网络模型的参数进行逐层量化,具体可以包括如下的步骤:

步骤s201:获取已训练完成的深度神经网络模型。

步骤s202:对所述已训练的深度神经网络模型的所有层进行遍历,获取遍历到的当前层的参数。

步骤s203:对遍历到的当前层中的参数进行聚类分析,根据聚类分析结果确定对应的量化范围及量化等级。

在具体实施中,可以采用聚类算法对所述已训练的深度神经网络模型中的当前层参数进行聚类分析,确定对应的聚类中心数目和聚类中心值,并根据所确定的聚类中心数目及聚类中心值,确定当前层参数对应的量化范围。

在本发明一实施例中,采用减法聚类对当前层参数进行聚类分析。例如,对于一个m层的深度神经网络模型,假定遍历到的当前层为第i层,对应的节点数目为ni,第i层的第n个节点可采用如下公式计算得到:

其中,σ(*)为激活函数,为第i层第n个节点和第i-1层第j个节点的权连接,为第i层的第n个偏置,1≤n≤ni,1≤j≤ni-1,ni-1为第i-1层的节点数目。

在具体实施中,减法聚类将每一个参数都作为一个潜在的聚类中心,之后减去已完成的聚类中心的影响,再次寻找新的聚类中心。其中,所述参数可以为权连接,也可以为偏置,还可以同时包括权连接及偏置。

以所获取的当前层的参数为权连接为例,在对第i层的权连接进行聚类分析时,可以采用如下的公式计算聚类中心w为时的聚类中心值:

其中,β为影响范围调节系数,为第i层第n个节点与第i-1层第m个节点的权连接。

这里需要指出的是,计算得到的聚类中心值越大,表征当前权连接为聚类中心的可能性将比其余权连接大。因此,可以选择聚类中心值最大的权连接为聚类中心,并在后续的寻找其他聚类中心时,需要去除已选择过的聚类中心的影响。在本发明一实施例中,可以采用如下公式寻找新的聚类中心:

其中,β为影响范围调节系数;mk为第k次迭代时计算聚类中心的函数;w*为第k次迭代时发现的新的聚类中心;mk-1为第k-1次迭代时计算聚类中心的函数;mk-1为第k-1次迭代时的最大值。

迭代执行公式(2)、(3)及(4),直至满足减法聚类预设的停止条件。

在具体实施中,由于量化等级通常对应于偶数,如32bit、8bit等,故当计算得到的聚类中心的数目为奇数时,可以采用向上取偶的方式,确定最终的聚类中心的数目。例如,当采用减法聚类得到的聚类中心的数目为3时,可以将聚类中心的数目设置为4。

在得到聚类中心数目之后,可以根据各聚类中心对应的聚类中心值,确定第i层参数对应的量化范围,并根据所确定的聚类中心数目及对应的量化范围,确定量化等级。其中,第i层参数对应的量化等级的数目可以与聚类中心数目相同也可以不同。在实际应用中,可以将量化范围均分为与聚类中心数目相同的量化等级,也可以根据各聚类中心对应的聚类中心值,结合聚类中心数目确定量化等级的数目。

在具体实施中,当采用其他的聚类算法对第i层参数进行聚类分析时,可以基于聚类中心的数目初始化所采用其他的聚类算法,根据聚类分析结果确定量化范围及量化等级。例如,采用无监督聚类对第i层参数进行聚类分析。

步骤s204:根据所确定的量化等级对当前层量化范围内的参数进行量化。

在具体实施中,得到第i层对应的量化等级时,可以根据所得到的量化等级对第i层的量化范围内的参数进行量化。

例如,当所确定的第i层的量化范围为(-1,1),量化等级为2bit时,可以采用平均分配的原则,将第i层量化后参数对应的数值设置为以下4个中的任意一个:-0.75、-0.25、0.25和0.75。本领域的技术人员可以理解的是,也可以采用非平均分配的原则确定4个在-1至1范围内的其他数值,在此不做限制。

采用上述方案,在首次对深度神经网络模型进行量化时,分别根据深度神经网络模型中的各层参数的聚类分析结果,可以快速地得到与各层参数的匹配度较高的量化范围及量化等级,并依照所确定的量化范围及量化等级对深度神经网络模型中的各层参数进行量化。采用此种方式,根据对应层参数的聚类分析结果确定各层参数对应的量化等级,可以避免人为定义量化等级时可能引入的精度损失,且可以兼顾到各层参数对深度神经网络模型的重要性。在确定各层的量化等级后,逐层对所述深度神经网络模型中的各层参数进行量化,可以在不减少深度神经网络模型中的各层参数以及节点的数量的同时,提高深度神经网络模型压缩的有效性及精度。

同时,由于各层对应的量化等级与对应层的参数相关联,根据聚类分析结果所确定的量化等级将与对应层参数的匹配度更佳,因而可以提高对深度神经网络模型的压缩速度,减少迭代次数,从而实现快速的对深度神经网络模型的量化压缩。

在具体实施中,当对深度神经网络模型中的一层或多层参数进行量化后,将会对神经神经网络模型的精度产生影响。为降低量化对深度神经网络模型的精度的影响,在本发明一实施例中,在根据所确定的量化等级对深度神经网络模型中相应层的量化范围内的参数进行量化后,还可以获取对应的补偿系数,分别对各层量化后的参数进行补偿,并将补偿后的量化参数作为对应层的量化参数。

在具体实施中,可以根据相应层量化前的参数及量化后的参数,计算得到对应的补偿系数。在本发明一实施例中,可以采用如下的公式得到相应层对应的补偿系数:

其中,wi表示量化前的参数矩阵,表示量化前的参数的转置矩阵,qi表示量化后的参数矩阵,表示量化后的参数的转置矩阵。

可以理解的是,在实际应用中,还可以采用其他的计算方式得到第i层的补偿系数,本领域的技术人员可以根据实际的需要选取,不再赘述。

步骤s205:判断深度神经网络模型中的所有层是否遍历完成;当判断结果为是时,可以执行步骤s207;反之,则可以执行步骤s206。

在具体实施中,每完成对一层参数的聚类分析后,可以对聚类分析过的层进行标记。

步骤s206:获取下一层的参数,并从执行步骤s202开始执行。

在具体实施中,获取到第i+1层参数后,继续执行步骤s202,对第i+1层参数进行量化。可以理解的是,在获取下一待量化层参数时,可以采用顺序获取的方式,依次对各层参数进行量化,也可以根据预设的获取条件,获取下一待量化层参数。例如,采用随机的方式确定下一待量化层参数,这里不再赘述。

步骤s207:对量化后的深度神经网络模型进行重新训练。

在具体实施中,对量化后的深度神经网络模型进行重新训练的过程中,可以采用批均衡化的方法来缩放、平移规范化网络,以提高训练得到的深度神经网络模型的性能。

上述对本发明实施例中的方法进行了详细的描述,下面将对上述的方法对应的装置进行介绍。

参见图3,本发明实施例中的一种深度神经网路模型的压缩装置300可以包括获取单元301和所述量化单元302,其中:

获取单元301,适于获取已训练的深度神经网络模型;

量化单元302,适于对所述深度神经网络的所有层进行遍历,获取遍历到的当前层的参数;基于参数的密集度和延展范围对遍历到的当前层的参数进行量化,直至所述深度神经网络的所有层遍历完成,得到量化后的深度神经网络模型。

在本发明一实施例中,所述量化单元302,适于对当前层的参数进行聚类分析,得到当前层对应的聚类中心数和聚类中心值;基于聚类分析结果中的聚类中心数目及聚类中心值,确定当前层对应的量化范围;采用所确定的量化等级,将当前层的量化范围内的参数进行量化,得到当前层的量化参数。

在具体实施中,所述装置300还可以包括补偿单元303,其中:

补偿单元303,适于在得到当前层的量化参数之后,计算得到当前层的量化补偿系数;采用计算计算得到的量化补偿系数对当前层的量化参数进行补偿,得到当前层补偿后的量化参数,并作为当前层的量化参数。

在本发明一实施例中,所述补偿单元303,适于采用如下的公式计算得到当前层的量化补偿系数:其中,wi表示量化前的参数矩阵,表示量化前的参数的转置矩阵,qi表示量化后的参数矩阵,表示量化后的参数的转置矩阵。

在本发明一实施例中,所述装置300还可以包括训练单元304,其中:

训练单元304,适于对量化后的深度神经网络模型进行重新训练。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述实施例中的深度神经网络模型的压缩方法的步骤,不再赘述。

本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令;所述处理器运行所述计算机指令时执行上述实施例中的深度神经网络模型的压缩方法的步骤,不再赘述。

采用本发明实施例中的上述方案,基于参数的密集度和延展范围对深度神经网络模型的各层参数进行量化,可以避免人为定义的量化等级可能引入的精度损失,并兼顾各层参数对深度神经网络模型的重要性,可以在不减少深度神经网络模型中的各层参数以及节点的数量的同时,提高深度神经网络模型压缩的有效性及精度。

进一步地,在对深度神经网络模型的各层参数量化后,获取当前层对应的补偿系数,并采用所获取的补偿参数对量化后的参数进行补偿,可以有效的减小量化过程中深度神经网络模型的精度损失,可以进一步提高神经网络模型压缩的精度。

进一步地,对量化后的深度神经网络模型进行重新训练,可以提高量化后的深度神经网络模型的性能。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1