一种人工神经网络计算装置和方法与流程

文档序号:14686896发布日期:2018-06-15 03:53阅读:154来源:国知局

本公开涉及人工神经网络技术领域,更具体地涉及一种人工神经网络计算装置和方法。



背景技术:

人工神经网络(Artificial Neural Networks,ANNs)简称为神经网络 (NNs),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间的相互连接关系,从而达到处理信息的目的。神经网络用到的算法就是向量乘法,并且广泛采用符号函数及其各种逼近。

就像大脑里的神经网络一样,神经网络由一些互相连接的节点组成,如图1所示,每个圆圈表示一个神经元,每个箭头表示两个神经元之间的连接,连接又被称为权值。

神经元的计算公式可以简单的描述成:其中,xi表示所有和输出神经元相连接的输入神经元,wi表示xi和输出神经元之间对应的权值。f(x)是一个非线性函数,通常称作激活函数,常用的函数如:等。

神经网络被广泛应用于各种应用场景:计算视觉、语音识别和自然语言处理等。在近几年的时间里,神经网络的规模一直在增长。在1998年, Lecun用于手写字符识别的神经网络的规模小于1M个权值;在2012年, krizhevsky用于参加ImageNet竞赛的规模是60M个权值。

公开内容

(一)要解决的技术问题

有鉴于此,本公开的主要目的在于提供一种人工神经网络计算装置和方法,以克服上述现有技术的缺陷。

(二)技术方案

根据本公开的一个方面,提供了一种人工神经网络计算方法,利用人工神经网络计算装置对多层人工神经网络的进行训练,所述人工神经网络计算装置包括:映射单元、存储单元和运算单元,所述人工神经网络计算方法包括:对多层人工神经网络中的各层依次执行正向运算,对于多层人工神经网络的每一层,所述正向运算包括:所述映射单元对输入数据进行处理,删除输入数据中小于或等于阈值或者输入数据的绝对值小于或等于阈值的输入数据,以得到处理后的输入数据;所述存储单元存储所述处理后的输入数据;所述运算单元读取所述处理后的输入数据,进行人工神经网络运算,得到人工神经网络的输出数据;按照与正向运算相反的顺序,对多层人工神经网络中的各层依次执行反向运算;对多层人工神经网络中的各层进行权值更新;重复执行上述各个步骤多次,完成多层人工神经网络的训练。

在本公开的一些实施例中,所述人工神经网络计算装置还包括:第一输入缓存和第二输入缓存;所述对多层人工神经网络中的各层进行权值更新包括:对于人工神经网络的每一层,所述第一输入缓存和所述第二输入缓存分别存储该层的权值和权值梯度;所述运算单元从所述第二输入缓存接收所述权值梯度,然后使用所述权值梯度对所述权值进行更新,得到更新后的权值。

在本公开的一些实施例中,所述输入数据包括输入神经元和权值;所述映射单元对输入数据进行处理,以得到处理后的输入数据包括:所述映射单元由权值得到权值的连接关系数据,并将所述权值中数值或绝对值小于或者等于第一阈值的权值删除,得到处理后的权值;所述映射单元基于权值的连接关系数据对输入神经元进行处理,得到处理后的输入神经元。

在本公开的一些实施例中,所述输入数据包括输入神经元和权值;所述映射单元对输入数据进行处理,以得到处理后的输入数据包括:所述映射单元由输入神经元得到输入神经元的连接关系数据,并将所述输入神经元中数值或绝对值小于或者等于第二阈值的输入神经元删除,得到处理后的输入神经元;所述映射单元基于输入神经元的连接关系数据对权值进行处理,得到处理后的权值。

在本公开的一些实施例中,所述输入神经元的连接关系数据和所述权值的连接关系数据以直接索引或者步长索引的形式表示。

在本公开的一些实施例中,当所述输入神经元的连接关系数据以直接索引的形式表示时,所述连接关系数据为由0和1组成的字符串,0表示所述输入神经元的数值或绝对值小于或者等于第二阈值,1表示所述输入神经元的数值或绝对值大于所述第二阈值;当所述输入神经元的连接关系数据以步长索引形式表示时,所述连接关系数据为值为非零的输入神经元与上一个值为非零的输入神经元之间的距离值组成的字符串。

在本公开的一些实施例中,当所述权值的连接关系数据以直接索引的形式表示时,所述连接关系数据为由0和1组成的字符串,0表示所述权值的数值或绝对值小于或者等于所述第一阈值,1表示所述权值的数值或绝对值大于所述第一阈值;当所述权值的连接关系数据以步长索引的形式表示时,所述连接关系数据为与输出神经元有连接的输入神经元的与上一个与所述输出神经元有连接的输入神经元之间的距离值组成的字符串。

在本公开的一些实施例中,对于多层人工神经网络的每一层,所述反向运算包括:权值梯度计算步骤和输入神经元梯度计算步骤;所述权值梯度计算步骤包括:所述运算单元由人工神经网络每一层的输出神经元梯度和输入神经元得到该层的权值梯度;所述输入神经元梯度计算步骤包括:所述映射单元将输出神经元梯度和处理后的权值存储至存储单元;所述运算单元读取输出神经元梯度和处理后的权值,进行人工神经网络运算,得到输入神经元梯度。

在本公开的一些实施例中,将人工神经网络上一层的输出数据作为下一层的输入数据;或者,对人工神经网络上一层的输出数据进行层间操作,将操作结果作为下一层的输入数据;其中,对于人工神经网络的任意相邻两层:第一层与第二层,在正向运算中,所述上一层指所述第一层,所述下一层指所述第二层;在反向运算中,所述上一层指所述第二层,所述下一层指所述第一层。

在本公开的一些实施例中,所述层间操作包括向量运算、非线性运算。

(三)有益效果

从上述技术方案可以看出,本公开的人工神经网络计算装置和方法具有以下有益效果:

(1)将输入神经元与权值、输出神经元与输入神经元、输出神经元与权值以数据集的格式进行存储,进行前向运算和反向运算时,可以直接对二者进行运算,无需通过索引数组寻找对应的输入、输出神经元和权值,减少了访问存储器的次数,简化了运算,提高了运算速度和性能。

(2)可以对人工神经网络的连接关系数据进行更新,提高了人工神经网络运算的精度;

(3)采用针对多层人工神经网络运算的专用指令和运算单元,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;

(4)通过采用针对多层人工神经网络运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。

附图说明

图1是一种人工神经网络的示意图;

图2是本公开一实施例的人工神经网络计算装置的结构示意图;

图3是图2所示实施例的映射关系示意图;

图4是本公开一实施例的一种人工神经网络的示意图;

图5是图4所示的人工神经网络计算装置连接关系示意图;

图6是本公开另一实施例的人工神经网络计算装置的结构示意图;

图7是图6所示实施例的映射关系示意图;

图8是本公开又一实施例的人工神经网络计算装置的结构示意图;

图9是图8所示实施例的映射关系示意图;

图10是本公开再一实施例的人工神经网络计算装置的结构示意图;

图11是图10所示实施例的映射关系示意图;

图12是本公开实施例的一种人工神经网络计算方法的正向运算流程图;

图13是本公开实施例的一种人工神经网络计算方法的权值更新流程图;

图14是本公开实施例的一种人工神经网络计算方法的反向运算流程图;

图15是本公开实施例的一种人工神经网络计算方法的流程图。

图16是本公开又一实施例的一种运算方法的流程图。

图17是本公开又一实施例运算方法相邻两层的运算过程图。

符号说明

1-映射单元;2-存储单元;3-DMA;4-指令缓存;5-控制单元;6-第一输入缓存;7-运算单元;8-第二输入缓存;9-输出缓存。

具体实施方式

本公开的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本公开的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

本公开一个实施例提出了一种人工神经网络计算装置,参见图2,包括:存储单元2、映射单元1、运算单元7、DMA3、指令缓存4、第一输入缓存6、第二输入缓存8、输出缓存9和控制单元5。

上述映射单元1,用于接收输入数据之后,对所述输入数据进行处理,以得到处理后的输入数据,所述输入数据包括至少一个输入神经元和至少一个权值,所述处理后的输入数据包括处理后的输入神经元和处理后的权值。

进一步地,上述映射单元1将上述处理后的输入神经元中的每个处理后的输入神经元与其对应的处理后的权值作为一个输入神经元-权值对,所有的输入神经元-权值对组成一个数据集,将该数据集存储到上述存储单元 2中。

具体来说,上述映射单元1将数值或绝对值小于或等于第一阈值的权值删除,得到处理后的权值,映射单元1还得到权值的连接关系数据,根据权值的连接关系数据对输入神经元进行处理,得到处理后的输入神经元。

例如,当权值的形式为wij,该wij表示第i个输入神经元与第j个输出神经元之间的权值;映射单元1根据权值确定上述权值的连接关系数据,并将权值或权值的绝对值小于或者等于第一阈值的权值删除,得到处理后的权值。

上述映射单元1还可以将数值或绝对值小于或等于第二阈值的输入神经元删除,以得到去零后的输入神经元,作为处理后的输入神经元,映射单元1还得到输入神经元的连接关系数据,根据输入神经元的连接关系数据对权值进行处理,得到处理后的权值。

可选地,上述第一阈值可为0.1、0.08、0.05、0.02、0.01、0或者其他值。

可选地,上述第二阈值可为0.1、0.08、0.06、0.05、0.02、0.01、0或者其他值。

需要指出的是,上述第一阈值和上述第二阈值可以一致,也可以不一致。

其中,上述连接关系数据可以步长索引或者直接索引的形式表示。

具体地,以直接索引形式表示的连接关系数据为由0和1组成的字符串,对于权值连接关系数据,0表示该权值或该权值的绝对值小于或者等于上述第一阈值,即该权值对应的输入神经元与输出神经元之间没有连接, 1表示该权值或该权值的绝对值大于上述第一阈值,即该权值对应的输入神经元与输出神经元之间有连接。以直接索引形式表示的连接关系数据有两种表示顺序:以每个输出神经元与所有输入神经元的连接状态组成一个 0和1的字符串来表示权值的连接关系;或者每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示权值的连接关系。

对于输入神经元的连接关系数据,0表示该输入神经元或该输入神经元的绝对值小于或者等于上述第二阈值,1表示该输入神经元或该输入神经元的绝对值大于上述第二阈值。

对于权值的连接关系数据,以步长索引形式表示的连接关系数据为与输出神经元有连接的输入神经元与上一个与该输出神经元有连接的输入神经元之间的距离值组成的字符串。对于输入神经元,以步长索引表示的连接关系数据以当前非零的输入神经元与上一个非0的输入神经元之间的距离值组成的字符串表示。

举例说明,假设上述第一阈值为0.01,输入神经元为i1、i2、i3和i4,对于输出神经元o1,权值为w11,w21,w31和w41;对于输出神经元o2,权值为w12,w22,w32和w42,其中权值w21,w12和w42的值为0,其绝对值均小于上述第一阈值0.01,映射单元1确定上述输入神经元i2和输出神经元o1没有连接,上述输入神经元i1和i4与输出神经元o2没有连接,上述输入神经元i1、i3和i4与上述输出神经元o1有连接,上述输入神经元i2和i3与输出神经元o2有连接。以每个输出神经元与所有输入神经元的连接状态表示上述连接关系数据,则上述输出神经元o1的连接关系数据为“1011”,输出神经元o2的连接关系数据为“0110”(即上述连接关系数据为“10110110”);以每个输入神经元与所有输出神经元的连接关系,则输入神经元i1的连接关系数据为“10”,输入神经元i2的连接关系数据为“01”,输入神经元i3的连接关系数据为“11”,输入神经元i4的连接关系数据为“10”(即上述连接关系数据为“10011110”)。在本实施例中,连接关系数据可以用高维动态数组,可以用链表等等表示。

对于上述输出神经元o1,上述映射单元101将上述i1与w11,i3与 w31和i4与w41分别作为一个输入神经元-权值对,所有的输入神经元-权值对组成一个数据集,并将该数据集存储到上述存储单元2中;对于输出神经元o2,上述映射单元101将上述i2与w22和i3与w32分别作为一个输入神经元-权值对,所有的输入神经元-权值对组成一个数据集,并将该数据集存储到上述存储单元2中。

所述输入神经元-权值对不是一种真正的数据存储结构,仅仅是表示输入神经元和权值的对应关系。例如,输入神经元存储于向量A中,权值存储于向量B中,向量A和B的长度相同,向量A和B的同一位置的分量组合在一起被认为是一个输入神经元-权值对。

在另一个示例中,上述映射单元101对至少一个输入神经元进行处理,得到输入神经元的连接关系数据,对至少一个权值进行处理,得到权值的连接关系数据,并基于输入神经元的连接关系数据和权值的连接关系数据得到第三连接关系数据,根据第三连接关系数据对输入神经元和权值进行处理,得到处理后的输入神经元和处理后的权值。

输入神经元的连接关系数据为用于表示该至少一个输入神经元中值为非0的输入神经元的位置的字符串;权值的连接关系数据为用于表示输入神经元与输出神经元之间是否有连接的字符串。

需要说明的是,上述输入神经元的连接关系数据和权值的连接关系数据均可以步长索引或者直接索引的形式表示,具体可参见上一示例中相关的描述。

具体地,当上述输入神经元的连接关系数据和权值的连接关系数据均以直接索引的形式表示时,上述映射单元1对上述输入神经元的连接关系数据和权值的连接关系数据进行与操作。

当上述输入神经元的连接关系数据和权值的连接关系数据均以步长索引的形式表示时,上述映射单元1从左到右将上述输入神经元的连接关系数据字符串中的每一个元素与位于其之前的元素进行累加,得到的新的元素组成输入神经元的连接关系数据;同理,上述映射单元1对上述权值的连接关系数据的字符串进行同样的处理。然后上述映射单元1从上述输入神经元的连接关系数据和权值的连接关系数据的字符串中,选取相同的元素,按照其在上述输入神经元的连接关系数据的顺序或权值的连接关系数据的顺序,组成一个新的字符串。上述映射单元1将上述新的字符串中将每一个元素与其相邻的前一个元素进行相减,以得到一个新的元素。按照该方法,对上述新的字串中的每个元素进行相应的操作,以得到上述第三连接关系数据。

举例说明,假设以步长索引的形式表示上述输入神经元的连接关系数据和权值的连接关系数据,上述权值的连接关系数据的字符串为“01111”,上述输入神经元的连接关系数据的字符串为“022”,将上述权值的连接关系数据的字符串中的每个元素与其相邻的前一个元素相加,得到第四连接关系数据“01234”;同理,对上述输入神经元的连接关系数据的字符串进行相同的处理后得到的第五连接关系数据为“024”。从上述第四连接关系数据“01234”和上述第五连接关系数据“024”选组相同的元素,以得到新的字符串“024”。将该新的字符串中的每个元素与其相邻的前一个元素进行相减,即0,(2-0),(4-2),以得到上述第三连接数据“022”。

上述映射单元1将上述处理后的输入神经元中的每个处理后的输入神经元与其对应的处理后的权值作为一个输入神经元-权值对,所有的输入神经元-权值对组成一个数据集,将该数据集存储出上述存储单元2中。

可以看出,在本公开实施例的方案中,上述映射单元对输入神经元和权值进行处理,剔除值为0的输入神经元和权值,减少了输入神经元和权值的数量,减少了额外的开销,运算单元根据处理后的输入神经元和权值进行人工神经网络运算,提高了运算的效率。

在本实施例中,当人工神经网络计算装置用于正向运算时,

映射单元1读取存储单元2存储的输入神经元和权值并进行处理,获取人工神经网络的连接关系数据。

该连接关系数据可以采用上述直接索引的形式表示。例如对于如图4 所示的人工神经网络,有4个输入神经元:i1、i2、i3、i4,有2个输出神经元:o1、o2。对于该人工神经网络,如图5所示,o1与i1、i3、i4有连接,o1与i2无连接,则输出神经元o1与输入神经元i1、i2、i3、i4的连接状态为:1011。类似地,o2与i2、i3有连接,o2与i1、i4无连接,则输出神经元o2与输入神经元i1、i2、i3、i4的连接状态为:0110,将输出神经元o1、o2与所有输入神经元的连接状态依次排列,第一直接索引形式存储的人工神经网络的连接关系数据为10110110。

该连接关系数据也可以采用第二直接索引形式存储。

例如对于如图5所示的人工神经网络,i1与o1有连接、i1与o2无连接,i2与o1无连接、i2与o2有连接,i3与o1、o2有连接,i4与o1有连接、i4与o2无连接,则输入神经元i1与输出神经元o1、o2、o3、o4的连接状态为:10,类似地,输入神经元i2与输出神经元o1、o2、o3、o4的连接状态为:01,输入神经元i3与输出神经元o1、o2、o3、o4的连接状态为11,输入神经元i4与输出神经元o1、o2、o3、o4的连接状态为10,将输入神经元i1、i2、i3、i4与所有输出神经元的连接状态依次排列,第二直接索引形式存储的人工神经网络的连接关系数据为10011110。

该连接关系数据还可以采用步长索引形式存储。

例如对于如图4所示的人工神经网络,输出神经元o1与输入神经元 i1、i3、i4有连接,输出神经元o1的连接状态第一个字符为0,即和o1 有连接的第一个输入神经元i1,与人工神经网络的第一个输入神经元,也是i1,的距离为0,和o1有连接的第二个输入神经元i3与和o1有连接的第一个输入神经元i1的距离为2,和o1有连接的第三个输入神经元i4与和o1有连接的第二个输入神经元i3的距离为1,因此,输出神经元o1的连接状态为021。输出神经元o2与输入神经元i2、i3有连接,类似地,输出神经元o2的连接状态为11,则将输出神经元o1、o2与所有输入神经元的连接状态依次排列,步长索引形式存储的人工神经网络的连接关系数据为02111。

得到人工神经网络的连接关系数据后,可以据此得到处理后的输入神经元和权值。映射单元1基于连接关系数据,将将处理后的权值与输入神经元组成的数据集存储至存储单元2,处理后的权值是指数值或绝对值大于第一阈值的权值。例如,第一直接索引形式存储的人工神经网络的连接关系数据为10110110,处理后的权值w11、w31、w41、w22、w32对应的输入神经元分别为i1、i3、i4、i2、i3,则将输入神经元与处理后的权值组成数据集:i1、w11,i3、w31,i4、w41,i2、w22,i3、w32,并存储至存储单元2。

第二直接索引形式存储的人工神经网络的连接关系数据为10011110,将输入神经元与处理后的权值组成数据集:i1、w11,i2、w22,i3、w31, i3、w32,i4、w41,并存储至存储单元2。步长索引形式存储的人工神经网络的连接关系数据为02111,将输入神经元与处理后的权值组成数据集: i1、w11,i3、w31,i4、w41,i2、w22,i3、w32,并存储至存储单元2。

在其他示例中,也可以如图3所示,映射单元1读取存储单元2的输入神经元、权值和连接关系数据并进行处理,映射单元1将处理后的权值与输入神经元组成的数据集格式分别存储至第一输入缓存6和第二输入缓存8。

控制单元5控制指令缓存4读取存储单元2中的指令,并基于指令控制运算单元7运算。运算单元7在控制单元5的控制下,将存储单元2中存储的数据集的输入神经元和权值分别存入第一输入缓存6和第二输入缓存8,运算单元7分别从第一输入缓存6和第二输入缓存8中读取输入神经元和权值,并进行人工神经网络前向运算,得到输出神经元并存入输出缓存9,输出缓存9中的输出神经元经DMA3存入存储单元2。

运算单元7将输入神经元和权值数据一一对应相乘得到加权输出神经元,将加权输出神经元通过加法树逐级相加得到求和输出神经元,或者,将加权输出神经元通过和偏置相加得到加偏置输出神经元,将求和输出神经元或加偏置输出神经元进行激活函数运算,得到人工神经网络的输出神经元,完成人工神经网络的前向运算。激活函数可以是sigmoid函数、tanh 函数或ReLU函数。

本实施例中,运算单元7、指令缓存4、第一输入缓存6、第二输入缓存8、输出缓存9和控制单元5由专用处理器实现,第一输入缓存6、第二输入缓存8、输出缓存9均为片上缓存。

当人工神经网络计算装置用于权值更新时,

映射单元1基于处理后的权值将其对应的有连接的输出神经元梯度与输入神经元存储至存储单元2。

运算单元7在控制单元5的控制下,将存储单元2中存储的输出神经元梯度和输入神经元分别存入第一输入缓存6和第二输入缓存8,运算单元7分别从第一输入缓存6和第二输入缓存8中读取输出神经元梯度和输入神经元,将输出神经元梯度和输入神经元一一对应相乘,并将相乘结果乘以学习率,得到处理后的权值的更新量;将处理后的权值减去对应的更新量,得到更新的处理后的权值并存入输出缓存9,输出缓存9中的更新的处理后的权值经DMA3存入存储单元2。

例如,第一直接索引形式存储的人工神经网络的连接关系数据为 10110110,处理后的权值w11、w31、w41、w22、w32对应的输入神经元分别为i1、i3、i4、i2、i3,则将处理后的权值对应的输出神经元梯度与输入神经元组成数据集:To1、i1,To1、i3,To1、i4,To2、i2,To2、i3,并存储至存储单元2,To1和To2分别表示输出神经元o1和o2的梯度。To1与i1,To1与i3,To1与i4,To2与i2,To2与i3对应相乘,相乘结果再乘以学习率,得到处理后的权值的更新量Δw11、Δw31、Δw41、Δ w22、Δw32,处理后的权值w11、w31、w41、w22、w32分别减去更新量,得到更新的处理后的权值w11’、w31’、w41’、w22’、w32’。

类似地,第二直接索引形式存储的人工神经网络的连接关系数据为 10011110,处理后的权值为w11,w22,w31,w32,w41对应的输入神经元分别为i1、i2、i3、i3、i4,则将输出神经元梯度与输入神经元组成数据集:To1、i1,To2、i2,To1、i3,To2、i3,To1、i4,并存储至存储单元2。 To1与i1,To2与i2,To1与i3,To2与i3,To1与i4对应相乘,相乘结果再乘以学习率,得到处理后的权值的更新量Δw11,Δw22,Δw31,Δ w32,Δw41,处理后的权值w11,w22,w31,w32,w41分别减去更新量,得到更新的处理后的权值w11’,w22’,w31’,w32’,w41’。

步长索引形式存储的人工神经网络的连接关系数据为02111,处理后的权值w11、w31、w41、w22、w32对应的输入神经元分别为i1、i3、i4、 i2、i3,则将输出神经元梯度与输入神经元组成数据集:To1、i1,To1、i3, To1、i4,To2、i2,To2、i3,并存储至存储单元2。To1与i1,To1与i3, To1与i4,To2与i2,To2与i3对应相乘,相乘结果再乘以学习率,得到处理后的权值的更新量Δw11、Δw31、Δw41、Δw22、Δw32,处理后的权值w11、w31、w41、w22、w32分别减去更新量,得到更新的处理后的权值w11’、w31’、w41’、w22’、w32’。

当人工神经网络计算装置用于反向运算时,

映射单元1将输出神经元梯度和处理后的权值存储至存储单元2。

映射单元1选取处理后的权值所对应的输出神经元,并将输出神经元梯度与处理后的权值存储至存储单元2,其中处理后的权值是指在更新前数值或绝对值大于第一阈值的权值。

例如,第一直接索引形式存储的人工神经网络的连接关系数据为 10110110,将输出神经元梯度与处理后的权值组成数据集:To1,w11,To1, w31,To1,w41,To2,w22,To2,w32,并存储至存储单元2。第二直接索引形式存储的人工神经网络的连接关系数据为10011110,将输出神经元梯度与处理后的权值组成数据集:To1、w11,To2、w22,To1、w31,To2、w32,To1、w41,并存储至存储单元2。步长索引形式存储的人工神经网络的连接关系数据为02111,将输出神经元梯度与处理后的权值组成数据集:To1,w11,To1,w31,To1,w41,To2,w22,To2,w32,并存储至存储单元2。

运算单元7从存储单元2中读取输出神经元梯度和处理后的权值,并分别存入第一输入缓存6和第二输入缓存8,运算单元7读取第一输入缓存6和第二输入缓存8中的输出神经元梯度和处理后的权值,将输出神经元梯度和处理后的权值一一对应相乘,并将相乘结果通过加法树逐级相加,对相加结果进行激活函数反运算,得到输入神经元梯度并存入输出缓存9,输出缓存9中的输入神经元梯度经DMA3存入存储单元2,完成人工神经网络的反向运算。

本公开的人工神经网络计算装置,将处理后的权值与输入神经元、输出神经元与输入神经元、输出神经元与处理后的权值进行存储,进行前向运算和反向运算时,可以直接对二者进行运算,无需通过索引数组寻找对应的输入、输出神经元和权值,减少了访问存储器的次数,简化了运算,提高了运算速度和性能;并且通过采用针对多层人工神经网络运算的专用指令和运算单元7,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;通过采用针对多层人工神经网络运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。

进一步地,上述运算单元7包括但不限定于三个部分,分别为乘法器、一个或多个加法器(可选的,多个加法器组成加法树)和激活函数单元。上述乘法器将第一输入数据(in1)和第二输入数据(in2)相乘得到第一输出数据(out1),过程为:out1=in1*in2;上述加法树将第三输入数据(in3) 通过加法树逐级相加得到第二输出数据(out2),其中in3是一个长度为N 的向量,N大于1,过称为:out2=in3[1]+in3[2]+...+in3[N],和/或将第三输入数据(in3)通过加法树累加之后得到的结果和第四输入数据(in4) 相加得到第二输出数据(out2),过程为:out2=in3[1]+in3[2]+...+in3[N]+in4,或者将第三输入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过称为:out2=in3+in4;上述激活函数单元将第五输入数据(in5) 通过激活函数(active)运算得到第三输出数据(out3),过程为: out3=active(in5),激活函数active可以是sigmoid、tanh、relu、softmax等函数,除了做激活操作,激活函数单元可以实现其他的非线性函数运算,可将输入数据(in)通过函数(f)运算得到输出数据(out),过程为:out=f(in)。

本公开另一个实施例的人工神经网络计算装置,与前述实施例相同的特征不再重复描述。

在反向运算中,映射单元1将输出神经元梯度与全部输入神经元存储至存储单元2。

例如,当采用第一直接索引形式和步长索引形式存储连接关系数据时,输出神经元梯度与输入神经元的数据集为:To1、i1,To1、i2,To1、i3, To1、i4,To2、i1,To2、i2,To2、i3,To2、i4,并存储至存储单元2,当采用第二直接索引形式存储连接关系数据时,输出神经元梯度与输入神经元的数据集为:T01、i1,To2、i1,To1、i2,To2、i2,To1、i3,To2、i3, To1、i4,T02、i4。

运算单元7从存储单元2中读取输出神经元梯度和输入神经元,并分别存入第一输入缓存6和第二输入缓存8,运算单元7读取第一输入缓存 6和第二输入缓存8的输出神经元梯度和输入神经元,将输出神经元梯度和输入神经元一一对应相乘,并将相乘结果乘以学习率,得到所有权值的更新量;将所有权值减去对应的更新量,得到更新后的所有权值。

运算单元7将更新后的权值与第一阈值进行比较,若更新后的权值或权值的绝对值大于第一阈值,则将该权值保留,即该权值对应的输入神经元与输出神经元之间有连接;否则,则将该权值删除,即该权值对应的输入神经元与输出神经元之间无连接,得到更新的处理后的权值。

映射单元1还基于更新的处理后的权值选取其对应的输出神经元,并将处理后的权值与输出神经元梯度存储至存储单元2,其中处理后的权值是指该处理后的权值在更新之前的值。

运算单元7从存储单元2中读取输出神经元梯度和处理后的权值,并分别存入第一输入缓存6和第二输入缓存8,运算单元7读取第一输入缓存6和第二输入缓存8的输出神经元梯度和处理后的权值,并进行人工神经网络反向运算,得到输入神经元梯度。

由此可见,本公开还可以对人工神经网络的连接关系数据进行更新,提高了人工神经网络运算的精度。

本公开又一个实施例的人工神经网络计算装置,与前述实施例相同的特征不再重复描述。如图6所示,本实施例中,映射单元1也位于专用处理器片内。

当人工神经网络计算装置用于正向运算时,

映射单元1读取存储单元2存储的输入神经元和权值并进行处理,得到输入神经元-权值对,所有的输入神经元-权值对组成一个数据集,数据集分别存储至第一输入缓存6和第二输入缓存8。在其他示例中,也可以如图7所示,映射单元1读取存储单元2的输入神经元、权值和连接关系数据并进行处理,得到输入神经元-权值对,所有的输入神经元-权值对组成一个数据集,数据集分别存储至第一输入缓存6和第二输入缓存8。

当人工神经网络计算装置用于权值更新时,

映射单元1基于处理后的权值将其对应的有连接的输出神经元梯度与输入神经元分别存储至第一输入缓存6和第二输入缓存8。

当人工神经网络计算装置用于反向运算时,

映射单元1将输出神经元梯度和处理后的权值分别存储至第一输入缓存6和第二输入缓存8。

本公开再一个实施例的人工神经网络计算装置,与前述实施例相同的特征不再重复描述。如图8所示,本实施例中,映射单元1也位于专用处理器片内且连接第一输入缓存6,不连接第二输入缓存8。

当人工神经网络计算装置用于正向运算时,

映射单元1读取存储单元2存储的输入神经元和输入神经元的连接关系数据并进行处理,并将处理后的输入神经元存储至第一输入缓存6;存储单元2将处理后的权值存储至第二输入缓存8,如图9所示。

当人工神经网络计算装置用于权值更新时,

映射单元1基于处理后的权值将其对应的输出神经元梯度存储至第一输入缓存6,存储单元2直接将与输出神经元梯度有连接的输入神经元存储至第二输入缓存8。

当人工神经网络计算装置用于反向运算时,

映射单元1将输出神经元梯度存储至第一输入缓存6,存储单元2直接将处理后的权值存储至第二输入缓存8。

本公开再一个实施例的人工神经网络计算装置,与前述实施例相同的特征不再重复描述。如图10所示,本实施例中,映射单元1也位于专用处理器片内且连接第二输入缓存8,不连接第一输入缓存6。

当人工神经网络计算装置用于正向运算时,

映射单元1读取存储单元2存储的权值和权值的连接关系数据并进行处理,并将处理后的权值存储至第二输入缓存8;存储单元2将处理后的输入神经元存储至第一输入缓存6。映射单元1读取存储单元2存储的权值和权值的连接关系数据,对权值和权值的连接关系数据进行处理,并将处理后的权值存储至第二输入缓存8;存储单元2将处理后的输入神经元存储至第一输入缓存6,如图11所示。

当人工神经网络计算装置用于权值更新时,

映射单元1基于处理后的权值将其对应的输入神经元存储至第一输入缓存6,存储单元2直接将与输入神经元有连接的输出神经元梯度存储至第二输入缓存8。

当人工神经网络计算装置用于反向运算时,

映射单元1将处理后的权值存储至第一输入缓存6,存储单元2直接将输出神经元梯度存储至第二输入缓存8。需要说明的是,上述人工神经网络计算装置不仅可以进行稀疏神经网络运算,还可以进行稠密神经网络运算。上述人工神经网络计算装置特别适用于稀疏神经网络的运算,是因为稀疏神经网络里0值数据或者绝对值很小的数据非常多。通过映射单元可以提出这些数据,在保证运算精度的情况下,可提高运算的效率。

稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度。

本公开再一个实施例还提出了一种人工神经网络计算方法,其利用上述人工神经网络计算装置进行人工神经网络计算,人工神经网络计算方法包括人工神经网络的正向运算,如图12,包括:

映射单元1对输入神经元和权值进行处理,获取人工神经网络的连接关系数据;

映射单元1基于连接关系数据得到输入神经元-权值对,所有的输入神经元-权值对组成一个数据集,数据集存储至存储单元2,处理后的权值是指数值或绝对值大于第一阈值的权值。

运算单元7读取输入神经元和处理后的权值,进行人工神经网络前向运算,得到输出神经元。

人工神经网络计算方法包括人工神经网络的权值更新,如图13,包括:

映射单元1基于处理后的权值将其对应的有连接的输出神经元梯度与输入神经元存储至存储单元2。

运算单元7读取输出神经元梯度和输入神经元,对处理后的权值进行更新。

具体来说,将输出神经元梯度与输入神经元存储至存储单元;将存储单元中存储的输出神经元梯度和输入神经元分别存入第一输入缓存和第二输入缓存。

从第一输入缓存和第二输入缓存中读取输出神经元梯度和输入神经元;将输出神经元梯度和输入神经元一一对应相乘,并将相乘结果乘以学习率,得到处理后的权值的更新量;将处理后的权值减去对应的更新量,得到更新的处理后的权值。

人工神经网络计算方法包括人工神经网络的反向运算,如图14,包括:

映射单元1将输出神经元梯度和处理后的权值存储至存储单元2。

具体来说,选取处理后的权值所对应的输出神经元,并将输出神经元梯度与处理后的权值存储至存储单元2;从存储单元2中读取输出神经元梯度和处理后的权值,并分别存入第一输入缓存6和第二输入缓存8。

运算单元7读取输出神经元梯度和处理后的权值,进行人工神经网络反向运算,得到输入神经元梯度。

具体来说,运算单元7读取第一输入缓存6和第二输入缓存8中的输出神经元梯度和处理后的权值;将输出神经元梯度和有连接的权值一一对应相乘,并将相乘结果通过加法树逐级相加;对相加结果进行激活函数反运算,得到输入神经元梯度。激活函数包括sigmoid函数、tanh函数或ReLU 函数。

其中,可以仅存储处理后的权值,也可以将所有权值均进行存储,当存储所有权值时,

映射单元1将输出神经元梯度与输入神经元存储至存储单元2。

运算单元7读取输出神经元梯度和输入神经元,对处理后的权值进行更新。

权值的更新量包括所有权值的更新量,将所有权值减去对应的更新量,得到更新后的所有权值;将更新后的所有权值与门限值进行比较,若更新后的权值或权值的绝对值大于第一阈值,则将保留该权值,否则,将该权值删除。

映射单元1还基于更新的处理后的权值选取其对应的输出神经元,并将处理后的权值与输出神经元梯度存储至存储单元2,其中处理后的权值是指该处理后的权值在更新之前的值。

运算单元7读取输出神经元梯度和处理后的权值,进行人工神经网络反向运算,得到输入神经元梯度。

人工神经网络计算方法可以包括人工神经网络的正向运算、权值更新和反向运算,如图15所示。

本公开又一个实施例还提出了一种运算方法,具体来说是一种利用上述人工神经网络计算装置进行人工神经网络训练的方法,参见图16,运算方法包括:

正向运算步骤:首先,对多层人工神经网络中的各层依次执行正向运算,得到各层的输出神经元。

对于人工神经网络的每一层,可以按照上一实施例的正向运算步骤进行该层的正向运算。参见图17,在该步骤中,当上一层人工神经网络的正向运算执行完毕后,在运算指令的控制下,运算单元会将上一层人工神经网络的输出数据作为下一层人工神经网络的输入数据,即将上一层人工神经网络的输出神经元作为下一层人工神经网络的输入神经元,或者是对上一层人工神经网络的输出神经元进行层间操作,将操作结果作为下一层人工神经网络的输入神经元。得到输入神经元后,下一层人工神经网络进行正向运算,同时,将权值也替换为下一层人工神经网络的权值。其中该层间操作可以是向量运算、非线性运算。

反向运算步骤:然后,按照与正向运算相反的顺序,对多层人工神经网络中的各层依次执行反向运算,得到各层的权值梯度和输入神经元梯度。

该步骤包括第一运算部分和第二运算部分。第一运算部分用于计算权值梯度。对于人工神经网络的每一层,由该层的输出神经元梯度和输入神经元通过矩阵乘法或卷积得到该层的权值梯度。

第二运算部分用于计算输入神经元梯度。对于人工神经网络的每一层,可以按照上一实施例的反向运算步骤进行该层的反向运算。参见图17,在该步骤中,当上一层人工神经网络的反向运算执行完毕后,在运算指令的控制下,运算单元会将上一层人工神经网络的输出数据作为下一层人工神经网络的输入数据,但在反向运算中,上一层人工神经网络的输出数据为输入神经元梯度,下一层人工神经网络的输入数据为输出神经元梯度,即上一层人工神经网络的输入神经元梯度作为下一层人工神经网络的输出神经元梯度,或者是对上一层人工神经网络的输入神经元梯度进行层间操作,将操作结果作为下一层人工神经网络的输出神经元梯度。得到输出神经元梯度后,下一层人工神经网络进行反向运算,同时,将权值也替换为下一层人工神经网络的权值。

需要说明的是,在反向运算中,所述的“上一层”和“下一层”与正向运算相反,即对于人工神经网络的相邻两层:第一层与第二层,如果在正向运算中,第一层是“上一层”,第二层是“下一层”,则在反向运算中,第一层是“下一层”,第二层是“上一层”。

权值更新步骤:接着,对多层人工神经网络中的各层进行权值更新,得到更新后的权值。

在执行完反向运算之后,就计算出了各层的权值梯度。在这个步骤中,对于人工神经网络的每一层,利用第一输入缓存和第二输入缓存分别存储该层的权值和权值梯度,然后在运算单元中利用权值梯度对权值进行更新,得到更新后的权值。

重复执行正向运算步骤、反向运算步骤和权值更新步骤多次,完成多层人工神经网络的训练。

整个训练方法需要多次重复执行上述过程,直至人工神经网络的参数达到要求,训练过程完毕。

举例来说,假设神经网络包括三层:输入层、中间层和输出层,其中:输入层各神经元负责接收来自外界的输入数据,并传递给中间层各神经元;中间层负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构,最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程;输出层向外界输出信息处理结果。误差的反向传播阶段:误差通过输出层,按误差梯度下降的方式修正各层权值,向中间层、输入层逐层反传。

本发明中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。

上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。如图17所示,图中虚线的箭头表示反向运算,实线的箭头表示正向运算。

需要说明的是,在训练过程中,反向运算所述的“上一层”和“下一层”与正向运算正好相反,即对于人工神经网络的相邻两层:第一层与第二层,如果在正向运算中,第一层是“上一层”,第二层是“下一层”,则在反向运算中,第一层是“下一层”,第二层是“上一层”。

需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件的定义并不仅限于实施例中提到的各种具体结构、形状,本领域普通技术人员可对其进行简单地更改或替换;本文可提供包含特定值的参数的示范,但这些参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应值;实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向,并非用来限制本公开的保护范围;上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。

各功能单元/模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如 RRAM、DRAM、SRAM、EDRAM、HBM、HMC等等。

本公开实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种神经网络处理方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本公开所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文: Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。

以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本公开的限制。

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