人工神经网络的剪枝方法、装置、设备及可读存储介质与流程

文档序号:14678169发布日期:2018-06-12 21:47阅读:205来源:国知局
人工神经网络的剪枝方法、装置、设备及可读存储介质与流程

本发明涉及人工神经网络技术领域,特别是涉及一种人工神经网络的剪枝方法。本发明还涉及一种人工神经网络的剪枝装置、设备及可读存储介质。



背景技术:

人工神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,已被广泛用于数据挖掘,web挖掘,生物信息学以及多媒体数据处理等领域。

一般来说,人工神经网络有三层组成,即输入层、隐含层和输出层,隐含层中节点数一般取决于问题的复杂性。具有大量的隐含节点的神经网络能够快速学习,并且可以避免系统陷入局部极小值,但泛化能力有可能受影响。通过小型网络可以有很好的泛化性能,不过训练时间会加大,因为没有足够多的网络处理单元。从运行方面来看,小型网络只需要有限的资源,同时大型网络在极端条件下,可能表现出很好的容错度。由此可以看出,两者各有千秋,最佳神经网络结构应该是既能够处理复杂问题,又是简单直观的神经网络。

为了能够提高网络的性能以及效率,现有技术中提出了一种剪枝方法,此剪枝方法是先通过公式计算出每个神经元的贡献值,然后将每个神经元的贡献值按照从大到小进行排序,把贡献值较小的神经元去掉,最终找到最优神经网络结构。现有技术中的剪枝方法是通过不带余项的一阶泰勒公式来计算每个神经元的贡献值,由于不带余项的一阶泰勒公式计算出的值是一个近似值,而不是每个神经元真实的贡献值,因此通过现有技术的剪枝方法剪枝后的网络在实际运用中会出现误差,从而使得网络的精准度低。

因此,如何提供一种精准度高的人工网络剪枝方法、装置、设备及可读存储介质是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的是提供一种人工神经网络的剪枝方法,其使得经过剪枝后的人工神经网络减少了精度的损失,并且还提高了处理速度;本发明的另一目的是提供一种包括上述方法的人工神经网络剪枝装置、设备及可读存储介质,其也使得经过剪枝后的人工神经网络减少了精度的损失,并且还提高了处理速度。

为解决上述技术问题,本发明提供了一种人工神经网络的剪枝方法,包括:

步骤S1:根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;

步骤S2:按照所述贡献值从小到大的顺序去除所述人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值;

步骤S3:使用预先存储的第一数据集对去除神经元后的人工神经网络进行训练。

优选地,在所述步骤S3之后,还包括:

判断所述步骤S2执行的次数是否达到第二预设阈值,若否,则返回所述步骤S1,若是,则使用预先存储的第二数据集对已经完成训练的人工神经网络再次进行训练。

优选地,所述余项为皮亚诺型余项。

优选地,在所述步骤S2之后,所述步骤S3之前,还包括:

计算已经去除的神经元的数量与初始的人工神经网络中的神经元的数量的比例,在所述比例达到第三预设阈值时发出告警消息。

为了解决上述技术问题,本发明还提供了一种人工神经网络的剪枝装置,包括:

获取单元,用于根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;

剪枝单元,用于按照所述贡献值从小到大的顺序去除所述人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值;

训练单元,用于使用预先存储的第一数据集对去除神经元后的人工神经网络进行训练。

优选地,还包括:

微调单元,用于判断所述剪枝单元按照所述贡献值从小到大的顺序去除所述人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值执行的次数是否达到第二预设阈值,若否,则触发所述获取单元根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;若是,则使用预先存储的第二数据集对已经完成训练的人工神经网络再次进行训练。

优选地,所述余项为皮亚诺型余项。

优选地,还包括:

告警单元,用于计算已经去除的神经元的数量与初始的人工神经网络中的神经元的数量的比例,在所述比例达到第三预设阈值时发出告警消息。

为了解决上述技术问题,本发明还提供了一种人工神经网络的剪枝设备,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述任一项所述的人工神经网络的剪枝方法的步骤。

为了解决上述技术问题,本发明还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的人工神经网络的剪枝方法的步骤。

本发明提供了一种人工神经网络的剪枝方法、装置、设备及可读存储介质,包括:根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;按照贡献值从小到大的顺序去除人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值;使用预先存储的第一数据集对去除神经元后的人工神经网络进行训练。本发明在计算人工神经网络中各个神经元的贡献值的时候采用的是携带有余项的泰勒公式,泰勒公式是一种用多项式逼近待计算函数的真实值的方法,泰勒公式中含有的n阶导数项目越多,则计算得到的值就越接近待计算函数的真实值,由于泰勒公式存在这一特性,因此本发明用携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值就会比现有技术中使用不携带余项的泰勒公式计算得到的人工神经网络中的神经元的贡献值更加接近真实的贡献值,同时,经过去除神经元后的人工神经网络由于整个网络的模型减小了,所以人工神经网络的处理速度也会得到提高,因此,本发明依据用携带余项的泰勒公式计算得到的贡献值进行剪枝后得到的人工神经网络减少了精度损失,并且还提高了处理速度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种人工神经网络的剪枝方法的流程图;

图2为本发明提供的一种人工神经网络的剪枝装置的结构示意图。

具体实施方式

本发明的核心是提供一种人工神经网络的剪枝方法,其使得经过剪枝后的人工神经网络减少了精度的损失,并且还提高了处理速度;本发明的另一核心是提供一种包括上述方法的人工神经网络剪枝装置、设备及可读存储介质,其也使得经过剪枝后的人工神经网络减少了精度的损失,并且还提高了处理速度。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种人工神经网络的剪枝方法,如图1所示,图1为本发明提供的一种人工神经网络的剪枝方法的流程图,该方法包括以下步骤:

步骤S1:根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值。

需要说明的是,人工神经网络的剪枝问题可以当做是一个组合优化的问题,即从众多的权重参数中选择一个最优组合B,使得被剪枝的模型的代价函数损失最小,例如,有一组训练实例,D={x={x0,x1,…,xn},y={y0,y1,…,yn}},其中x和y分别表示输入和目标输出,网络的参数为w,其中C为代价函数,相应的公式如下:

在公式(1)中,使用代价函数损失的绝对值作为优化目标,可以保证被剪枝的模型在性能上不会损失过多。剪枝神经元需要对原有模型的网络中的神经元进行重要性评估,这就先要计算每个神经元的贡献值,具体计算贡献值的详细说明如下:

要使公式(1)取值最小,即在C(D,hi=0)时,使公式(2)取值最小,即可使得公式(1)取值最小。

|ΔC(hi)|=|C(D,hi=0)-C(D,hi)| (2)

这样我们就需要用到一阶泰勒公式,在本发明中使用的是带余项的一阶泰勒公式,相应的公式如下:

其中RP(x)为余项,这里利用公式(3),当p=1,a取hi=0时,就把公式 (2)变成了公式(4):

对神经元hi做剪枝实际上就是对其赋值为0。C(w,D)表示在数据集D上的人工神经网络的代价函数的平均值,w为人工神经网络的权重参数。现在我们可以通过计算对各个神经元剪枝时的C(w,D,hi=0)来表示C(w,D),这些值应该是非常接近的(因为仅将一个神经元赋值为0所带来的影响不大)。对神经元hi的排序指标为abs(C(w,D,hi=0)-C(w,D)),具体公式如下:

这里公式(5)是由公式(4)代入公式(2)所得。这样一来每个神经元的贡献值就可以通过公式(5)计算得到,这里为hi=0时的梯度值,hi为激活值。

步骤S2:按照贡献值从小到大的顺序去除人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值。

需要说明的是,在去除神经元之前,需要对人工神经网络中的所有神经元进行编号,然后根据贡献值从大到小的顺序进行排序,根据第一预设阈值将贡献值最小的若干个神经元对应的编号返回至拟剪枝列表,例如:第一预设阈值为512,则将所有神经元中贡献值最小的512个神经元对应的编号返回至拟剪枝列表。然后根据拟剪枝列表中的神经元的编号,将对应的神经元在人工神经网络中去除,在去除神经元后,要使得去除的神经元的前后的神经元相连,这里以卷积神经网络为例,剪枝后的卷积神经网络需要使得第一卷积层输出通道数与第二层输入通道数相同(通道即为神经元),最后一个卷积层输出需与第一个全连层输入通道数相同,这里全连层不计算贡献值。

步骤S3:使用预先存储的第一数据集对去除神经元后的人工神经网络进行训练。

需要说明的是,对于完成剪枝后的人工神经网络,需要用预先存储的第一数据集中的数据对其进行训练,剪枝后的人工神经网络才能正常使用,首先,将第一存储中的数据输入完成剪枝后的人工神经网络,人工神经网络在输出结果的过程中会不断改变自身内部的各个参数,使得完成剪枝后的人工神经网络能够投入使用。

可以理解的是,由于人工神经网络去除了一些贡献值低的神经元,因此人工神经网络的模型就会变小,从而使得处理速度会加快,处理速度加快的程度与人工神经网络的模型有关,设计简单,层数较多的模型会加速的程度较大,设计复杂的模型加速的程度较小。

作为优选的,在步骤S3之后,还包括:

判断步骤S2执行的次数是否达到第二预设阈值,若否,则返回步骤S1,若是,则使用预先存储的第二数据集对已经完成训练的人工神经网络再次进行训练。

需要说明的是,有时因为需要人工神经网络需要剪枝的规模比较大,此时如果直接一次将所有需要去除的神经元直接去除会导致人工神经网络的精度损失过大,因此我们可以将剪枝过程重复若干次,使得剪枝过程能够循序渐进,减少精度的损失。在步骤S3后,判断步骤S2执行的次数是否达到第二预设阈值,该第二预设阈值可以根据实际情况设置,若否,则返回步骤S1,若是,则使用预先存储的第二数据集对已经完成训练的人工神经网络再次进行训练,这里也是将第二数据集中的数据输入完成第一次训练的人工神经网络中,并且输出相应的结果,在输出结果的过程中,完成第一次训练的人工神经网络中的各个参数也会相适应的改变,这是一个人工神经网络的微调的过程。

可以理解的,用另外的一个数据集对已经完成训练的人工神经网络再次进行训练能够提高该人工神经网络的迁移能力,同时也能提高识别精度。

作为优选的,余项为皮亚诺型余项。

需要说明的是,本发明实施例中采用的是皮亚诺型余项,相应的泰勒公式如下:

对应的,用于计算贡献值的公式具体如下:

在本发明优选实施例中,皮亚诺型余项的具体实现是0.1*(hi*hi),通过皮亚诺型余项计算的到神经元的贡献值,在计算神经元的贡献值时,使用皮亚诺型余项计算的速度大于用其他形式的余项计算神经元贡献值的速度,从而提高了工作效率,并且使用本发明的方法进行剪枝后的人工神经网络的FRR (False Rejection Rate,不匹配率,即将能够匹配成功的认为是不能匹配成功的概率,通常FRR指标的值越小越好)指标的参数相比于现有技术中的剪枝方法有所降低,说明经过本发明剪枝后的人工神经网络的不匹配率下降了,因此,提高了识别的精准度。当然,本发明不限定余项的具体形式。

作为优选的,在步骤S2之后,步骤S3之前,还包括:

计算已经去除的神经元的数量与初始的人工神经网络中的神经元的数量的比例,在比例达到第三预设阈值时发出告警消息。

需要说明的是,为了避免人工设置的剪枝次数过大而造成的去除神经元的数量过大,本发明在执行步骤S2以后,计算已经去除的神经元的数量在初始的人工神经网络中的神经元数量的比例,这个比例越高,说明去除的神经元越多,当该比例达到第三预设阈值时,则发出告警消息进行提示,此时,工作人员可以停止剪枝过程,以保护人工神经网络被去除过多的神经元,第三预设阈值可以根据实际情况进行设置。

本发明提供了一种人工神经网络的剪枝方法,包括:根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;按照贡献值从小到大的顺序去除人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值;使用预先存储的第一数据集对去除神经元后的人工神经网络进行训练。本发明在计算人工神经网络中各个神经元的贡献值的时候采用的是携带有余项的泰勒公式,泰勒公式是一种用多项式逼近待计算函数的真实值的方法,泰勒公式中含有的n阶导数项目越多,则计算得到的值就越接近待计算函数的真实值,由于泰勒公式存在这一特性,因此本发明用携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值就会比现有技术中使用不携带余项的泰勒公式计算得到的人工神经网络中的神经元的贡献值更加接近真实的贡献值,同时,经过去除神经元后的人工神经网络由于整个网络的模型减小了,所以人工神经网络的处理速度也会得到提高,因此,本发明依据用携带余项的泰勒公式计算得到的贡献值进行剪枝后得到的人工神经网络减少了精度损失,并且还提高了处理速度。

本发明还提供了一种人工神经网络的剪枝装置,如图2所示,图2为本发明提供的一种人工神经网络的剪枝装置的结构示意图,该装置包括:

获取单元1,用于根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;

剪枝单元2,用于按照贡献值从小到大的顺序去除人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值;

训练单元3,用于使用预先存储的第一数据集对去除神经元后的人工神经网络进行训练。

作为优选的,该装置还包括:

微调单元,用于判断剪枝单元按照贡献值从小到大的顺序去除人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值执行的次数是否达到第二预设阈值,若否,则触发获取单元1根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;若是,则使用预先存储的第二数据集对已经完成训练的人工神经网络再次进行训练。

作为优选的,余项为皮亚诺型余项。

作为优选的,该装置还包括:

告警单元,用于计算已经去除的神经元的数量与初始的人工神经网络中的神经元的数量的比例,在比例达到第三预设阈值时发出告警消息。

本发明提供了一种人工神经网络的剪枝装置,包括:获取单元,用于根据携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值;剪枝单元,用于按照贡献值从小到大的顺序去除人工神经网络中对应的神经元,直至被去除的神经元的数量达到第一预设阈值;训练单元,用于使用预先存储的第一数据集对去除神经元后的人工神经网络进行训练。本发明在计算人工神经网络中各个神经元的贡献值的时候采用的是携带有余项的泰勒公式,泰勒公式是一种用多项式逼近待计算函数的真实值的方法,泰勒公式中含有的n阶导数项目越多,则计算得到的值就越接近待计算函数的真实值,由于泰勒公式存在这一特性,因此本发明用携带余项的泰勒公式计算得到人工神经网络中的神经元的贡献值就会比现有技术中使用不携带余项的泰勒公式计算得到的人工神经网络中的神经元的贡献值更加接近真实的贡献值,同时,经过去除神经元后的人工神经网络由于整个网络的模型减小了,所以人工神经网络的处理速度也会得到提高,因此,本发明依据用携带余项的泰勒公式计算得到的贡献值进行剪枝后得到的人工神经网络减少了精度损失,并且还提高了处理速度。

本发明还提供了一种人工神经网络的剪枝设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上述任一项的人工神经网络的剪枝方法的步骤。

本发明还提供了一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任一项的人工神经网络的剪枝方法的步骤。

对于本发明提供的一种人工神经网络的剪枝设备及可读存储介质的介绍请参照上述方法实施例,本发明在此不在赘述。

以上对本发明所提供一种人工神经网络的剪枝方法、装置、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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