一种稀疏训练方法与流程

文档序号:16432626发布日期:2018-12-28 20:15阅读:2678来源:国知局
一种稀疏训练方法与流程

本公开涉及人工智能技术领域,尤其涉及一种稀疏训练方法。

背景技术

深度神经网络是目前许多人工智能应用的基础,其在语音识别、图像处理、数据分析、广告推荐系统、汽车自动驾驶等多方面得到了突破性的应用,使得深度神经网络被应用在了生活的各个方面。但是,深度神经网络的运算量巨大,一直制约着其更快速的发展和更广泛的应用。当考虑运用加速器设计来加速深度神经网络的运算时,巨大的运算量,必然会带了很大的能耗开销,同样制约着加速器的进一步的广泛应用。

在神经网络的运算中,主要分为两个部分,正向推测和反向训练。而现有的技术往往通过优化正向推测部分的运算部分来达到降低计算量的目的,而对于反向训练部分,没有什么有效的方式对其进一步降低计算量。因而无法进一步降低计算量,提升运算速度。



技术实现要素:

(一)要解决的技术问题

为了解决或者至少部分缓解上述技术问题,本公开提供了一种神经网络稀疏训练方法。本公开稀疏训练方法,通过一定的方式,将一些神经元的前传梯度值置零,从而使得和该神经元相连的突触不更新该神经元带来的误差值,和该神经元相连的上层神经元也不累加该神经元带来的误差值。从而降低了计算量,提升了计算速度。无论突触为稠密状态或稀疏状态,均不会对该方法产生影响。同时,该方法也不会影响正向推测阶段的正常运算和相关优化。

(二)技术方案

根据本公开的一个方面,提供了一种稀疏训练方法,包括:

根据置零条件对神经网络第i层所包括的n个神经元对应的梯度值进行选择性置零;其中,i为大于1的整数,n为正整数;

利用未置零的梯度值进行训练运算,得到更新后的梯度值及突触。

在一些实施例中,所述置零条件包括:置零概率条件,或置零阈值条件,或置零百分比条件。

在一些实施例中,在根据置零条件将筛选出的神经元对应的梯度值置零之前,还包括:采用随机方式对第i层所包括的n个神经元进行筛选。

在一些实施例中,所述随机方式包括:高斯随机方法、贝叶斯概率随机方法、或等距抽样方法。

在一些实施例中,所述置零条件为置零概率条件,该置零概率为p,采用所述随机方式筛选出n*p个神经元,将其对应的梯度值置0。

在一些实施例中,所述置零条件为置零阈值条件,该置零阈值条件包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。

在一些实施例中,所述置零阈值条件为小于一给定阈值,给定阈值为th,若梯度值小于所述给定阈值th,则将该梯度值置0;否则,保持梯度值不变。

在一些实施例中,在训练过程中,通过一启发方式并根据一启发条件对所述置零阈值的大小进行调整。

在一些实施例中,所述启发方式包括:利用测试样例或验证样例进行测试,对多次测试中其中至少两次测试结果信息进行比较,该结果信息包括:准确率或损失值。

在一些实施例中,对其中本次测试的的准确率与前一次测试的准确率进行比较,得到准确率差值;或对本次测试的准确率与此前多次测试的平均准确率进行比较,得到准确率差值。

在一些实施例中,所述启发条件包括:启发阈值判断条件或启发映射判断条件。

在一些实施例中,所述启发阈值判断条件包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。

在一些实施例中,所述启发条件为启发阈值判断条件,若本次测试得到的准确率和前一次测试的准确率的差值大于一给定启发阈值,则对置零阈值进行调整。

在一些实施例中,采用模拟退火算法、蚁群算法、遗传算法、列表搜索算法、进化规划、或进化策略对置零阈值进行调整。

在一些实施例中,所述置零条件为置零百分比条件,该置零百分比为q,将第i层的n个神经元的梯度值按一给定排序规则进行排序,筛选出n*q个神经元,将其对应的梯度值置0。

在一些实施例中,所述排序规则包括:从小到大排序规则、从大到小的排序规则,或映射排序规则。

在一些实施例中,所述映射排序规则为取绝对值后排序。

在一些实施例中,排序之后,筛选出排序在前、在后或在指定位置的n*q个神经元。

在一些实施例中,所述神经网络为卷积神经网络,利用未置零的梯度值进行训练运算,得到更新后的梯度值及突触,包括:

对于卷积层,利用原输入的神经元和未置零的梯度值相乘后累加得到突触更新量;对于全连接层,利用原输入的神经元和未置零的梯度值相乘后得到突触更新量;

将该突触更新量与给定的学习率相乘,而后累加回到原突触上,得到更新后的突触值;

利用原突触和未置零的梯度值相乘并累加后得到前一层,即第i-1层的神经元的梯度值。

在一些实施例中,若第i-1层不含有激活函数,那么计算得到的第i-1层梯度值即为所求的梯度值;否则,将这些计算得到的第i-1层梯度值与激活函数的导数相乘,得到激活后的梯度值即为所求的梯度值。

根据本公开的另一个方面,提供了一种处理器,包括存储单元和运算单元;所述处理器能够执行所述的稀疏训练方法。

根据本公开的另一个方面,提供了一种芯片,其包括所述的处理器。

根据本公开的另一个方面,提供了一种芯片封装结构,其包括所述的芯片。

根据本公开的另一个方面,提供了一种板卡,其包括所述的芯片封装结构。

根据本公开的另一个方面,提供了一种电子装置,其包括所述的板卡。

(三)有益效果

从上述技术方案可以看出,本公开稀疏训练方法至少具有以下有益效果其中之一:

(1)通过一定的方式,将一些神经元的前传梯度值置零,使该神经元在次轮反向训练过程中不传递梯度值,从而降低了计算量,提升了计算速度。

(2)本公开能够根据用户的不同需求,来选择不同的方式对神经元进行置零,同时能够调整置零的比例,具有一定的灵活性。

(3)无论突触为稠密状态或稀疏状态,均可以适用本公开稀疏训练方法。

(4)本公开稀疏训练方法不会影响正向推测阶段的正常运算和相关优化。

附图说明

通过附图所示,本公开的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的装置。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本公开的主旨。

图1为依据本公开实施例稀疏训练方法流程图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。

需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。

本公开主要提出了一种神经网络稀疏训练方法,通过一定的方式,将一些神经元的前传梯度值置零,从而使得和该神经元相连的突触不更新该神经元带来的误差值,和该神经元相连的上层神经元也不累加该神经元带来的误差值,从而降低了计算量,提升了计算速度。无论突触为稠密状态或稀疏状态,均不会对该方法产生影响。同时,该方法也不会影响正向推测阶段的正常运算和相关优化。

图1是本公开稀疏训练方法流程图。如图1所示,本公开稀疏训练方法,包括:

根据置零条件对神经网络第i层所包括的n个神经元对应的梯度值进行选择性置零;其中,i为大于1的整数,n为正整数;

利用未置零的梯度值进行训练运算,得到更新后的梯度值及突触。

所述置零条件包括:置零概率条件,或置零阈值条件,或置零百分比条件。其中,所述置零阈值条件,包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。

在训练过程中,通过一启发方式并根据一启发条件对所述置零阈值的大小进行调整。所述启发方式包括:利用测试样例或验证样例进行测试,对多次测试中其中至少两次测试结果信息进行比较,该结果信息包括:准确率或损失值。优选的,对其中本次测试的的准确率与前一次测试的准确率进行比较,得到准确率差值;或对本次测试的准确率与此前多次测试的平均准确率进行比较,得到准确率差值。

所述启发条件包括:启发阈值判断条件或启发映射判断条件。所述启发阈值判断条件包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。以启发阈值判断条件为大于一给定阈值示例说明:若本次测试得到的准确率和前一次测试的准确率的差值大于一给定启发阈值,则对置零阈值进行调整。

以下结合实施例详细介绍本公开稀疏训练方法。为了便于后续的描述,在此先对各变量进行说明。在神经网络的正向运算时,已知神经元nin,突触数据w,得到的结果为nout。反向时,已知nout对应的梯度值gradient,计算得到nin对应的梯度值为gradient’,计算并更新后的突触数据为w’。

实施例1

采用随机的方式,用户给定一个置零的概率将前传梯度置零。不妨以全连接层为例,其具体过程如下:

不妨假设现已知第i层的梯度值gradient,更新前一层(i-1),得到前一层的梯度gradient’和突触w’。不妨假定该第i层包括n个神经元(nout),置零概率为p。那么采用一种随机方式,如高斯随机方法、贝叶斯概率随机方法、等距抽样方法等来随机选出[n*p]个神经元(nout)。将其对应的gradient置0。而后进行运算,即利用原已知神经元(nin)和gradient相乘后得到突触更新量,将该更新量与给定的学习率相乘,而后累加回到原来的突触w上,得到更新后的突触值w’。利用更新前的突触w和gradient相乘并累加后得到前一层(i-1)神经元(nin)对应的梯度值。如果第(i-1)层不含有激活函数,那么计算得到的梯度值即为所求的梯度值gradient’。否则,如果含有激活函数,那么,将这些计算得到的数值与激活函数的导数相乘,得到激活后的梯度值即为所求的梯度值gradient’。该方法可以考虑运用在神经网络的整个训练之中,也可以选择并只运用在部分层之中。

其中,若对于卷积层,则是利用原输入的神经元和未置零的梯度值相乘后累加得到突触更新量。

实施例2

采用给定阈值的方式,根据用户给定一个阈值将前传梯度置零,并采用启发式的方式来调整阈值的大小。不妨以全连接层为例,其具体过程如下:

不妨假设现已知第i层的梯度值gradient,更新前一层(i-1),得到前一层的梯度gradient’和突触w’。假设置零阈值为th。那么依次判断每个gradient的绝对值是否小于th,如果小于,则将该值置零,否则,保持gradient不变。而后进行运算,即利用原已知神经元(nin)和gradient相乘后得到突触更新量,将该更新量与给定的学习率相乘,而后累加回到原来的突触w上,得到更新后的突触值w’。利用更新前的突触w和gradient相乘并累加后得到前一层(i-1)神经元的梯度值。如果第(i-1)层不含有激活函数,那么计算得到的梯度值极为所求的梯度值gradient’。否则,如果含有激活函数,那么,将这些计算得到的数值与激活函数的导数相乘,得到激活后的梯度值即为所求的梯度值gradient’。该方法可以考虑运用在神经网络的整个训练之中,也可以选择并只运用在部分层之中。

其中,若对于卷积层,则是利用原输入的神经元和未置零的梯度值相乘后累加得到突触更新量。

在训练过程中,我们采用简单启发的方式调整阈值大小。即训练过程中,有一个启发式条件,当启发式条件满足时,就会对阈值大小进行修改。不妨这里假定启发式条件为不定期的利用测试样例(或验证样例)对当前模型进行测试时,如果测试得到的准确率和上一次测试的准确率相比损失大于给定阈值的时候,我们考虑将阈值调整,如降低10%,具体数据均可调整,也可以连续多次平均的准确率差过大。这里的启发式条件还可以是新一次测试准确率比上一次损失在一定范围内,或者比较连续多次测试的平均准确率,准确率差值大于给定阈值等。此外,还可以利用其他常见的启发式算法,如模拟退火算法、蚁群算法、遗传算法、列表搜索算法、进化规划、进化策略等进行判断是否修改置零阈值及具体修改多少。

实施例3

采用给定置零百分比的方式,根据用户给定一个置零百分比将前传梯度置零。不妨以全连接层为例。其具体过程如下:

不妨假设现已知第i层的梯度值gradient,更新前一层(i-1),得到前一层的梯度gradient’和突触w’。假设该i层有n个神经元(nout),置零百分比为q。那么将gradient按一给定排序规则进行排序,该排序规则包括:从小到大排序规则、从大到小的排序规则,或映射排序规则;该映射排序规则为取绝对值后排序。本实施例中例如是将gradient的绝对值进行从小到大排序;而后将前[n*q]个gradient,即gradient的绝对值较小的[n*q]个神经元(nout)的gradient置零;其中,排序之后,根据排序规则的不同,也可以是筛选出排序在后或在指定位置的[n*q]个神经元。其他的不变。而后进行运算,即利用原已知神经元(nin)和gradient相乘后得到突触更新量,将该更新量与给定的学习率相乘,而后累加回到原来的突触w上,得到更新后的突触值w’。利用更新前的突触w和gradient相乘并累加后得到前一层(i-1)神经元(nin)的梯度值。如果第(i-1)层不含有激活函数,那么计算得到的梯度值极为所求的梯度值gradient’。否则,如果含有激活函数,那么,将这些计算得到的数值与激活函数的导数相乘,得到激活后的梯度值即为所求的梯度值gradient’。该方法可以考虑运用在神经网络的整个训练之中,也可以选择并只运用在部分层之中。

其中,若对于卷积层,则是利用原输入的神经元和未置零的梯度值相乘后累加得到突触更新量。

本公开还提供了一种处理器,包括存储单元和运算单元,所述处理器能够执行上述稀疏训练方法。

所述处理器可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))。处理器还可以包括用于缓存用途的板载存储器。优选的,采用专用的神经网络处理器。

在一个实施例里,本公开公开了一个芯片,其包括了上述神经网络处理器。

在一个实施例里,本公开公开了一个芯片封装结构,其包括了上述芯片。

在一个实施例里,本公开公开了一个板卡,其包括了上述芯片封装结构。

在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡。

电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

另外,本公开人工神经网络不限于卷积神经网络,还可以是全连接神经网络、rbm神经网络、及循环神经网络(rnn,recurrentneuralnetworks)等;且不限于全连接层,还可以是卷积层、pooling层等。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

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