一种神经网络压缩方法及装置与流程

文档序号:18743042发布日期:2019-09-21 02:01阅读:259来源:国知局
一种神经网络压缩方法及装置与流程

本发明涉及人工智能领域和金融科技(Fintech),尤其涉及一种神经网络压缩方法及装置。



背景技术:

随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。目前,金融科技领域中,神经网络压缩是深度学习技术的重要组成部分,神经网络压缩是一个降低神经网络的计算代价和存储空间的过程,随着神经网络在越来越多领域应用,神经网络压缩越来越有重要意义。

神经网络压缩的现有方法,在减少神经网络参数的过程中,并没有考虑结合神经网络参数的可能变化,以及参数对神经网络准确率的影响,便对参数进行了删除。显然,这种神经网络压缩的方式,会导致压缩后的神经网络预测准确率较低。因此,现有技术中,神经网络压缩后预测准确率较低是一个亟待解决的问题。



技术实现要素:

本申请实施例提供一种神经网络压缩方法及装置,解决了现有技术中神经网络压缩后预测准确率较低的问题。

第一方面,本申请实施例提供一种神经网络压缩方法,包括:将训练数据集中的每个样本值输入至预设的神经网络,对所述神经网络进行深度学习训练,通过所述神经网络输出的每个样本值的训练值,对所述神经网络中预设的至少一个参数进行更新;获取所述深度学习训练过程中,所述至少一个参数中每个参数的至少一个更新值;针对所述至少一个参数中的任一参数,对该参数的至少一个更新值进行变分后验推断,获取该参数的变分后验分布的均值,并用该均值替换该参数;对所述神经网络的所述至少一个参数进行聚类、裁剪、量化及霍夫曼编码,获得压缩后的神经网络。

上述方法中,通过对预设的神经网络进行深度学习训练,对所述神经网络中预设的至少一个参数进行更新,获取了所述神经网络每个参数更新过程中的至少一个更新值,所述神经网络中每个参数的至少一个更新值表征了该参数的变化规律,所述神经网络中每个参数的变分推断后验分布的均值相对该参数更加准确,因此在所述神经网络更新后的每个变分推断后验分布的均值的基础上,对所述神经网络进行压缩,极大提升了压缩后的神经网络预测准确率。

一种可选实施方式中,所述对所述至少一个参数进行聚类、裁剪、量化及霍夫曼编码,获得压缩后的神经网络,包括:对所述至少一个参数进行聚类,并根据所述聚类结果,将所述至少一个参数删除至N个参数;N为正整数;将所述N个参数按照预设裁剪规则裁剪为P个参数;P为小于或等于N的正整数;将所述P个参数量化为Q个参数,对所述Q个参数进行霍夫曼编码,并将所述神经网络的所述Q个参数进行霍夫曼编码后的神经网络作为所述压缩后的神经网络;Q为小于或等于P的正整数。

上述方法中,对所述至少一个参数进行聚类,并根据所述聚类结果,将所述至少一个参数删除至N个参数,减少了参数的数目,再将所述N个参数按照预设裁剪规则裁剪为P个参数,将所述P个参数量化为Q个参数,进一步减少参数数目,另外再对所述Q个参数进行霍夫曼编码,减少了所述Q个参数的存储空间,从而使得压缩后的神经网络存储空间和计算代价更小。

一种可选实施方式中,所述根据所述聚类结果,将所述至少一个参数删除至N个参数,包括:将所述至少一个参数中每个参数替换为该参数在所述聚类结果中所属类的中心点;若所述至少一个参数的所述聚类结果中存在中心点为0的类,则将该中心点为0的类中所有参数删除,并将删除后所述至少一个参数中剩余的参数作为所述N个参数。

上述方法中,由于所述至少一个参数中每个参数在该参数在所述聚类结果中所属类的中心点是与该类别中所有参数距离最小的点,因此将每个参数替换为该参数在所述聚类结果中所属类的中心点后,每个参数的误差更小,由于一部分中心点可能为0,则将该中心点为0的类中所有参数删除,并且降低了神经网络的参数数目。

一种可选实施方式中,对于所述N个参数中在所述神经网络中任意相邻两层的参数,若其中一层的第i行的参数全为0,则删除所述相邻两层中另一层中第i列的所有参数;或者,若其中一层的第i列的参数全为0,则删除所述相邻两层中另一层中第i行的所有参数;i为正整数。

上述方法中,在对参数进行替换以及聚类的基础上,一些参数为0,对于所述N个参数中在所述神经网络中任意相邻两层的参数,若其中一层的第i行或第i列的参数全为0,则删除所述相邻两层中另一层中第i列或第i行的所有参数,从而减少了神经网络的参数数目。

一种可选实施方式中,按照以下方式将所述P个参数量化为所述Q个参数:通过预设映射规则,将所述P个参数映射为所述Q个参数,所述Q个参数中每个参数均不为0;Q为小于或等于P的正整数。

上述方法中,通过预设映射规则,将所述P个参数映射为所述Q个参数,即将参数全P个参数转化为更少数目的不为0的参数,进一步降低了神经网络的参数数目。

第二方面,本申请实施例提供一种神经网络压缩装置,包括:获取模块,用于将训练数据集中的每个样本值输入至预设的神经网络,对所述神经网络进行深度学习训练,通过所述神经网络输出的每个样本值的训练值,对所述神经网络中预设的至少一个参数进行更新;获取所述深度学习训练过程中,所述至少一个参数中每个参数的至少一个更新值;处理模块,用于针对所述至少一个参数中的任一参数,对该参数的至少一个更新值进行变分后验推断,获取该参数的变分后验分布的均值,并用该均值替换该参数;对所述神经网络的所述至少一个参数进行聚类、裁剪、量化及霍夫曼编码,获得压缩后的神经网络。

一种可选实施方式中,所述处理模块具体用于:对所述至少一个参数进行聚类,并根据所述聚类结果,将所述至少一个参数删除至N个参数;N为正整数;将所述N个参数按照预设裁剪规则裁剪为P个参数;P为小于或等于N的正整数;将所述P个参数量化为Q个参数,对所述Q个参数进行霍夫曼编码,并将所述神经网络的所述Q个参数进行霍夫曼编码后的神经网络作为所述压缩后的神经网络;Q为小于或等于P的正整数。

一种可选实施方式中,所述处理模块具体用于:将所述至少一个参数中每个参数替换为该参数在所述聚类结果中所属类的中心点;若所述至少一个参数的所述聚类结果中存在中心点为0的类,则将该中心点为0的类中所有参数删除,并将删除后所述至少一个参数中剩余的参数作为所述N个参数。

一种可选实施方式中,所述处理模块具体用于:对于所述N个参数中在所述神经网络中任意相邻两层的参数,若其中一层的第i行的参数全为0,则删除所述相邻两层中另一层中第i列的所有参数;或者,若其中一层的第i列的参数全为0,则删除所述相邻两层中另一层中第i行的所有参数;i为正整数。

一种可选实施方式中,所述处理模块具体用于:按照以下方式将所述P个参数量化为所述Q个参数:通过预设映射规则,将所述P个参数映射为所述Q个参数,所述Q个参数中每个参数均不为0;Q为小于或等于P的正整数。

上述第二方面及第二方面各个实施例的有益效果,可以参考上述第一方面及第一方面各个实施例的有益效果,这里不再赘述。

第三方面,本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。

第四方面,本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。

附图说明

图1为本申请实施例中一种神经网络压缩方法的步骤流程示意图;

图2为本申请实施例中一种神经网络压缩装置的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。

为便于本领域技术人员理解,下面对本申请实施例中涉及到的基本概念介绍如下。

一个深度学习模型通常包含数以百万计甚至千万计的参数和十几层甚至几十层的网络,通常需要非常大的计算代价和存储空间。神经网络压缩是指通过改变网络结构或利用量化、近似的方法来减少网络的参数或存储空间,在不影响神经网络性能的情况下,降低网络计算代价和存储空间。

神经网络压缩是深度学习技术的重要组成部分。网络压缩技术对于神经网络的工业应用至关重要。一是因为目前的移动设备上的带宽比较有限,较小的模型更有利于网络传输;二是目前的移动设备上的计算能力和电池电量比较有限,小的模型更有利于提升计算效率和降低电池损耗。

然而目前神经网络压缩方法中,压缩后的神经网络不够准确,为此,如图1所示,为本申请实施例提供一种神经网络压缩方法。

步骤101:将训练数据集中的每个样本值输入至预设的神经网络,对所述神经网络进行深度学习训练,通过所述神经网络输出的每个样本值的训练值,对所述神经网络中预设的至少一个参数进行更新。

步骤102:获取所述深度学习训练过程中,所述至少一个参数中每个参数的至少一个更新值。

步骤103:针对所述至少一个参数中的任一参数,对该参数的至少一个更新值进行变分后验推断,获取该参数的变分后验分布的均值,并用该均值替换该参数。

步骤104:对所述神经网络的所述至少一个参数进行聚类、裁剪、量化及霍夫曼编码,获得压缩后的神经网络。

上述方法中,通过对预设的神经网络进行深度学习训练,对所述神经网络中预设的至少一个参数进行更新,获取了所述神经网络每个参数更新过程中的至少一个更新值,所述神经网络中每个参数的至少一个更新值表征了该参数的变化规律,所述神经网络中每个参数的变分推断后验分布的均值相对该参数更加准确,因此在所述神经网络更新后的每个变分推断后验分布的均值的基础上,对所述神经网络进行压缩,极大提升了压缩后的神经网络预测准确率。

步骤101中,需要说明的是,预设的至少一个参数可以为所述神经网络的所有参数,也可以是所述神经网络的其中一部分参数。对所述神经网络进行深度学习训练的算法有多种,在此不做限定,举例来说,通过梯度下降算法对所述神经网络进行深度学习训练。

步骤102中,所述深度学习训练过程中,所述至少一个参数中每个参数会产生很多个更新值,步骤102中获取的就是这些更新值。

步骤103中,针对所述至少一个参数中的任一参数w为例,本申请采用以下方法对w进行变分推断。在贝叶斯模型中,很多情况下需要求解后验概率(Posterior),然而,在实际模型中很难通过简单的贝叶斯理论求得后验概率的公式解,这时就需要用近似解来代替后验概率。

针对神经网络中的参数w,首先设定其先验概率分布为p(w)、变分后验估计为q(w)。其中,p(w)和q(w)的分布不做限定,举例来说,p(w)服从均值为0其方差为v的高斯分布,其中z服从对数-均匀分布p(z),对数-均匀分布即为对一个均匀分布取对数的分布。本申请可以采用q(w|z)近似p(w|z)并进行变分推断,变分推断执行完毕后,会有w的一个变分后验分布,然后将原始的参数w替换为变分推断的后验w’。

步骤104中,所述对所述至少一个参数进行聚类、裁剪、量化及霍夫曼编码,获得压缩后的神经网络,一种具体的可选实施方式如下:

第一步:对所述至少一个参数进行聚类,并根据所述聚类结果,将所述至少一个参数删除至N个参数;N为正整数。

聚类分析(Cluster analysis)亦称为群集分析,是对于统计数据分析的一门技术,在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息。聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集(subset),这样让在同一个子集中的成员对象都有相似的一些属性,根据相似的属性,确定一个相似的距离,进而确定分类。

举例来说,K均值(K-means)聚类算法是先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。

第一步的一种具体可选实施方式如下:

将所述至少一个参数中每个参数替换为该参数在所述聚类结果中所属类的中心点;若所述至少一个参数的所述聚类结果中存在中心点为0的类,则将该中心点为0的类中所有参数删除,并将删除后所述至少一个参数中剩余的参数作为所述N个参数。

上述方法中,由于所述至少一个参数中每个参数在该参数在所述聚类结果中所属类的中心点是与该类别中所有参数距离最小的点,因此将每个参数替换为该参数在所述聚类结果中所属类的中心点后,每个参数的误差更小,由于一部分中心点可能为0,则将该中心点为0的类中所有参数删除,并且降低了神经网络的参数数目。

第二步:将所述N个参数按照预设裁剪规则裁剪为P个参数;P为小于或等于N的正整数。需要说明的是,预设裁剪规则可以根据具体场景设定,在此不做限定。比如,如果神经网络第一层的第k列参数都为0,那么该网络第二层的第k行的参数都可以删除掉,因为在做矩阵运算时行列相乘时结果为0,并不影响计算结果。同理,如果神经网络第一层的第j行参数都为0,那么该神经网络第二层搞的第j列的参数都可以删除掉。k,j为正整数。采用上述策略对神经网络的参数进行裁剪,从而进一步缩小参数空间。上述方式对神经网络中两个相邻的两层都适用,如第3层和第4层、第M层和第M+1层均可以,M为正整数。

第二步的一种具体可选实施方式如下:

对于所述N个参数中在所述神经网络中任意相邻两层的参数,若其中一层的第i行的参数全为0,则删除所述相邻两层中另一层中第i列的所有参数;或者,若其中一层的第i列的参数全为0,则删除所述相邻两层中另一层中第i行的所有参数;i为正整数。

上述方法中,在对参数进行替换以及聚类的基础上,一些参数为0,对于所述N个参数中在所述神经网络中任意相邻两层的参数,若其中一层的第i行或第i列的参数全为0,则删除所述相邻两层中另一层中第i列或第i行的所有参数,从而减少了神经网络的参数数目。

第三步:将所述P个参数量化为Q个参数,对所述Q个参数进行霍夫曼编码,并将所述神经网络的所述Q个参数进行霍夫曼编码后的神经网络作为所述压缩后的神经网络;Q为小于或等于P的正整数。

第三步中可以按照以下方式将所述P个参数量化为所述Q个参数:通过预设映射规则,将所述P个参数映射为所述Q个参数,所述Q个参数中每个参数均不为0;Q为小于或等于P的正整数。

上述方法中,通过预设映射规则,将所述P个参数映射为所述Q个参数,即将参数全P个参数转化为更少数目的不为0的参数,进一步降低了神经网络的参数数目。举例来说,将(s-0.5,s+0.5]映射为s,s为正整数,参数1为1.1、参数2为1.2、参数3为1.3,将参数1、参数2、参数3均映射为1。

另外,哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字。

上述方法中,对所述至少一个参数进行聚类,并根据所述聚类结果,将所述至少一个参数删除至N个参数,减少了参数的数目,再将所述N个参数按照预设裁剪规则裁剪为P个参数,将所述P个参数量化为Q个参数,进一步减少参数数目,另外再对所述Q个参数进行霍夫曼编码,减少了所述Q个参数的存储空间,从而使得压缩后的神经网络存储空间和计算代价更小。

本申请提出的神经网络压缩方法对现有技术进行了很大的优化,现有的神经网络压缩技术中,神经网络压缩和神经网络预测准确率的优化没有很好地整合起来,神经网络压缩通常作为一个后续处理步骤。本申请提出了一种全新的神经网络压缩方法,有机融合了神经网络压缩和神经网络准确率的提升,作为一个自然的整体进行优化,可以显著提升神经网络压缩对效果,以及打破神经网络压缩的技术壁垒。

本申请提出的上述神经网络压缩方法不仅具有坚实的理论基础,在实际应用中也展现出了很好的效果。在实际实验中,在稠密的前馈网络、卷积网络以及递归神经网络中实验了上述方法,从实验结果可以发现该方法可以在更大的压缩比的条件下实现和其他神经网络压缩算法类似的实际应用效果,证明该方法具有很强的优越性。

如图2所示,本申请实施例提供一种神经网络压缩装置,包括:获取模块201,用于将训练数据集中的每个样本值输入至预设的神经网络,对所述神经网络进行深度学习训练,通过所述神经网络输出的每个样本值的训练值,对所述神经网络中预设的至少一个参数进行更新;获取所述深度学习训练过程中,所述至少一个参数中每个参数的至少一个更新值;处理模块202,用于针对所述至少一个参数中的任一参数,对该参数的至少一个更新值进行变分后验推断,获取该参数的变分后验分布的均值,并用该均值替换该参数;对所述神经网络的所述至少一个参数进行聚类、裁剪、量化及霍夫曼编码,获得压缩后的神经网络。

一种可选实施方式中,所述处理模块202具体用于:对所述至少一个参数进行聚类,并根据所述聚类结果,将所述至少一个参数删除至N个参数;N为正整数;将所述N个参数按照预设裁剪规则裁剪为P个参数;P为小于或等于N的正整数;将所述P个参数量化为Q个参数,对所述Q个参数进行霍夫曼编码,并将所述神经网络的所述Q个参数进行霍夫曼编码后的神经网络作为所述压缩后的神经网络;Q为小于或等于P的正整数。

一种可选实施方式中,所述处理模块202具体用于:将所述至少一个参数中每个参数替换为该参数在所述聚类结果中所属类的中心点;若所述至少一个参数的所述聚类结果中存在中心点为0的类,则将该中心点为0的类中所有参数删除,并将删除后所述至少一个参数中剩余的参数作为所述N个参数。

一种可选实施方式中,所述处理模块202具体用于:对于所述N个参数中在所述神经网络中任意相邻两层的参数,若其中一层的第i行的参数全为0,则删除所述相邻两层中另一层中第i列的所有参数;或者,若其中一层的第i列的参数全为0,则删除所述相邻两层中另一层中第i行的所有参数;i为正整数。

一种可选实施方式中,所述处理模块202具体用于:按照以下方式将所述P个参数量化为所述Q个参数:通过预设映射规则,将所述P个参数映射为所述Q个参数,所述Q个参数中每个参数均不为0;Q为小于或等于P的正整数。

另外,本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述神经压缩方法以及各个实施例的方法。

本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述神经压缩方法以及各个实施例的方法。

最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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