神经网络运算装置转让专利

申请号 : CN201610556380.6

文献号 : CN106203622B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 费旭东

申请人 : 杭州华为数字技术有限公司

摘要 :

本发明公开了一种神经网络运算装置,属于电子芯片领域。神经网络运算装置包括:第一运算处理器和第二运算处理器:第一运算处理器,用于在神经网络的训练运算中,进行第一运算或第二运算,第一运算包括向量点积运算,第二运算包括向量点积运算和非线性变换运算;第二运算处理器,用于根据至少一个修正值对神经网络的至少一个权向量进行修正,得到至少一个修正权向量,其中,每一个修正值与神经网络的权向量中的一个向量元素对应,至少一个修正值根据第一运算处理器的运算结果得到。本发明提供的神经网络运算装置可以提升神经网络运算的效率。

权利要求 :

1.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括第一运算处理器和第二运算处理器:

所述第一运算处理器,用于在神经网络的训练运算中,将所述神经网络的权向量和通过所述神经网络的输入层输入的样本向量进行正向运算得到所述神经网络每一层的正向输出向量,所述正向运算包括第一运算或第二运算,所述第一运算包括向量点积运算,所述第二运算包括向量点积运算和非线性变换运算;

所述第一运算处理器,还用于将所述神经网络的权向量和通过所述神经网络的输出层输入的误差向量进行反向运算得到所述神经网络每一层的反向输出向量,所述误差向量为所述输出层的正向输出向量与所述样本向量对应的目标输出向量的差向量,所述反向运算包括所述第一运算;

所述第二运算处理器,用于根据至少一个修正值对所述神经网络的至少一个权向量进行修正,得到至少一个修正权向量,其中,每一个修正值与所述神经网络的权向量中的一个向量元素对应,所述至少一个修正值根据所述第一运算处理器的运算结果得到。

2.根据权利要求1所述的神经网络运算装置,其特征在于,所述第一运算处理器,还用于根据所述第一运算或所述第二运算的运算结果计算所述至少一个修正值;

对应地,所述第二运算处理器,用于根据所述第一运算处理器计算得到的所述至少一个修正值对所述至少一个权向量进行修正,得到所述至少一个修正权向量。

3.根据权利要求1所述的神经网络运算装置,其特征在于,所述第二运算处理器,还用于根据所述第一运算或所述第二运算的运算结果计算所述至少一个修正值,并根据所述至少一个修正值对所述至少一个权向量进行修正,得到所述至少一个修正权向量。

4.根据权利要求1所述的神经网络运算装置,其特征在于,所述第二运算处理器,还用于根据目标修正值对所述至少一个权向量进行修正,得到所述至少一个修正权向量,所述目标修正值为大于第一预设阈值的所述修正值。

5.根据权利要求1或2所述的神经网络运算装置,其特征在于,所述第一运算处理器,还用于根据所述神经网络每一层的正向输出向量和所述神经网络每一层的反向输出向量计算所述至少一个修正值。

6.根据权利要求1所述的神经网络运算装置,其特征在于,所述第一运算处理器,还用于在神经网络的正向推理运算过程中,进行所述第一运算或所述第二运算。

7.根据权利要求1所述的神经网络运算装置,其特征在于,所述第二运算处理器,还用于在所述反向输出向量中至少有一个反向输出向量大于第二预设阈值时,根据所述至少一个修正值对所述至少一个权向量进行修正,得到至少一个修正权向量。

8.根据权利要求4所述的神经网络运算装置,其特征在于,所述第一运算处理器,用于在神经网络的训练运算中,获取所述神经网络第i层的正向输出向量,并将所述第i层的正向输出向量与由所述第i层指向第i+1层的有向弧对应的至少一个权向量分别进行向量点积运算得到第一向量,并根据所述第一向量得到所述第i+1层的正向输出向量,当i为1时所述第i层的正向输出向量为所述样本向量,i为大于或等于1的正整数。

9.根据权利要求8所述的神经网络运算装置,其特征在于,所述第一运算处理器,用于将所述第一向量中的向量元素进行非线性变换运算得到所述第i+1层的正向输出向量。

10.根据权利要求1所述的神经网络运算装置,其特征在于,所述第一运算处理器,用于在神经网络的训练运算中,获取所述神经网络第j层的反向输出向量,并将所述第j层的反向输出向量与由所述第j层指向第j-1层的有向弧对应的至少一个权向量分别进行向量点积运算,得到所述第j-1层的反向输出向量,当所述第j层为所述神经网络的最后一层时,所述第j层的反向输出向量为所述误差向量,j为大于1的正整数。

说明书 :

神经网络运算装置

技术领域

[0001] 本发明涉及电子芯片领域,特别涉及一种神经网络运算装置。

背景技术

[0002] 神经网络是一种常见的分类算法,其在在语音识别、图像识别、自然语言处理等多个领域已经取得了较大的成功,而且还在迅速发展的过程中。神经网络本质上可以看成是一种有向图,如图1所示,其包括多个节点和连接这些节点的有向弧。其中,神经网络中的多个节点分为多个层,神经网络最下一层节点称为输入层,神经网络最上一层节点称为输出层,输入层和输出层之间的层称为隐含层。神经网络中的每一层节点可以通过有向弧与相邻层的节点连接,但同一层节点之间没有有向弧连接,其中,每一个有向弧对应于一个权值。神经网络中某一节点的输出值可以由该某一节点下一层所有节点的输出值组成的输出向量和该下一层所有节点指向该某一节点的所有有向弧对应的权值组成的权向量经过向量点积计算得到。在神经网络中各有向弧对应的权值已经确定的情况下,神经网络可以进行分类运算,而为了确定神经网络中各有向弧对应的权值,神经网络则需要进行训练运算。
[0003] 相关技术中,神经网络运算装置包括运算处理器,该运算处理器可以执行神经网络的训练运算,同时该运算处理器还可以执行神经网络的分类运算。
[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005] 现有的神经网络运算装置的运算处理器在进行神经网络的训练运算的过程中,其需要执行多种不同模式的运算任务,这导致其硬件电路较为复杂,从而使得其运算效率难以得到提升。

发明内容

[0006] 为了解决现有技术的问题,本发明实施例提供了一种神经网络运算装置。所述神经网络运算装置包括第一运算处理器和第二运算处理器:
[0007] 所述第一运算处理器,用于在神经网络的训练运算中,进行第一运算或第二运算,所述第一运算包括向量点积运算,所述第二运算包括向量点积运算和非线性变换运算;
[0008] 所述第二运算处理器,用于根据至少一个修正值对所述神经网络的至少一个权向量进行修正,得到至少一个修正权向量,其中,每一个修正值与所述神经网络的权向量中的一个向量元素对应,所述至少一个修正值根据所述第一运算处理器的运算结果得到。
[0009] 在第一种可能的实施方式中,所述第一运算处理器,还用于根据所述第一运算或所述第二运算的运算结果计算所述至少一个修正值;
[0010] 对应地,所述第二运算处理器,用于根据所述第一运算处理器计算得到的所述至少一个修正值对所述至少一个权向量进行修正,得到所述至少一个修正权向量。
[0011] 在第二种可能的实施方式中,所述第二运算处理器,还用于根据所述第一运算或所述第二运算得到的运算结果计算所述至少一个修正值,并根据所述至少一个修正值对所述至少一个权向量进行修正,得到所述至少一个修正权向量。
[0012] 在第三种可能的实施方式中,所述第二运算处理器,还用于根据目标修正值对所述至少一个权向量进行修正,得到所述至少一个修正权向量,所述目标修正值为大于第一预设阈值的所述修正值。
[0013] 在第四种可能的实施方式中,所述第一运算处理器,用于将所述神经网络的权向量和通过所述神经网络的输入层输入的样本向量进行正向运算得到所述神经网络每一层的正向输出向量,所述正向运算包括所述第一运算或所述第二运算;
[0014] 所述第一运算处理器,还用于将所述神经网络的权向量和通过所述神经网络的输出层输入的误差向量进行反向运算得到所述神经网络每一层的反向输出向量,所述误差向量为所述输出层的正向输出向量与所述样本向量对应的目标输出向量的差向量,所述反向运算包括所述第一运算。
[0015] 在第五种可能的实施方式中,所述第一运算处理器,还用于根据所述神经网络每一层的正向输出向量和所述神经网络每一层的反向输出向量计算所述至少一个修正值。
[0016] 在第六种可能的实施方式中,所述第一运算处理器,还用于在神经网络的正向推理运算过程中,进行所述第一运算或所述第二运算。
[0017] 在第七种可能的实施方式中,所述第二运算处理器,还用于在所述反向输出向量中至少有一个反向输出向量大于第二预设阈值时,根据所述至少一个修正值对所述至少一个权向量进行修正,得到至少一个修正权向量。
[0018] 在第八种可能的实施方式中,所述第一运算处理器,用于在神经网络的训练运算中,获取所述神经网络第i层的正向输出向量,并将所述第i层的正向输出向量与由所述第i层指向第i+1层的有向弧对应的至少一个权向量分别进行向量点积运算得到第一向量,根据所述第一向量得到所述第i+1层的正向输出向量,当i为1时所述第i层的正向输出向量为所述样本向量,i为大于或等于1的正整数。
[0019] 在第九种可能的实施方式中,所述第一运算处理器,用于将所述第一向量中的向量元素进行非线性变换运算得到所述第i+1层的正向输出向量。
[0020] 在第十种可能的实施方式中,所述第一运算处理器,用于在神经网络的训练运算中,获取所述神经网络第j层的反向输出向量,并将所述第j层的反向输出向量与由所述第j层指向第j-1层的有向弧对应的至少一个权向量分别进行向量点积运算,得到所述第j-1层的反向输出向量,当所述第j层为所述神经网络的最后一层时,所述第j层的反向输出向量为所述误差向量,j为大于1的正整数。
[0021] 本发明实施例提供的技术方案带来的有益效果是:
[0022] 通过在神经网络运算装置中设置第一运算处理器和第二运算处理器,且第一运算处理器仅用于在神经网络的训练运算中进行向量点积运算,或者,第一运算处理器仅用于在神经网络的训练运算中进行向量点积运算和非线性变换运算,使得第一运算处理器可以只处理一种模式的运算任务,因此,其可以只包含针对该模式的运算所设计的特殊电路,从而达到了简化第一运算处理器硬件电路的目的,使得第一运算处理器的运算效率得到了较大的提升。同时,神经网络训练运算中不同于向量点积运算的其他模式的运算,如修正权向量的运算可以由第二运算处理器来执行,由于神经网络的训练运算中绝大部分的运算都为向量点积运算或者都为向量点积运算和非线性变换运算,因此,第一运算处理器运算效率的提升可以大大促进神经网络训练运算的效率的提升。

附图说明

[0023] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0024] 图1是本发明实施例提供的神经网络的示意图。
[0025] 图2是本发明实施例提供的一种神经网络运算装置的结构示意图。
[0026] 图3是本发明实施例提供的一种神经网络的局部示意图。
[0027] 图4是本发明实施例提供的一种神经网络的局部示意图。

具体实施方式

[0028] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0029] 请参考图2,其示出了本发明一个实施例提供的神经网络运算装置200的结构示意图。如图2所示,该装置可以包括:第一运算处理器210和第二运算处理器220。
[0030] 该第一运算处理器210,用于在神经网络的训练运算中,进行第一运算或第二运算,该第一运算包括向量点积运算,该第二运算包括向量点积运算和非线性变换运算。
[0031] 该第二运算处理器220,用于根据至少一个修正值对该神经网络的至少一个权向量进行修正,得到至少一个修正权向量,其中,每一个修正值与该神经网络的权向量中的一个向量元素对应,该至少一个修正值根据该第一运算处理器的运算结果得到。
[0032] 综上所述,本实施例提供的神经网络运算装置,通过在神经网络运算装置中设置第一运算处理器和第二运算处理器,且第一运算处理器仅用于在神经网络的训练运算中进行向量点积运算,或者,第一运算处理器仅用于在神经网络的训练运算中进行向量点积运算和非线性变换运算,使得第一运算处理器可以只处理一种模式的运算任务,因此,其可以只包含针对该模式的运算所设计的特殊电路,从而达到了简化第一运算处理器硬件电路的目的,使得第一运算处理器的运算效率得到了较大的提升。同时,神经网络训练运算中不同于向量点积运算的其他模式的运算,如修正权向量的运算可以由第二运算处理器来执行,由于神经网络的训练运算中绝大部分的运算都为向量点积运算或者都为向量点积运算和非线性变换运算,因此,第一运算处理器运算效率的提升可以大大促进神经网络训练运算的效率的提升。
[0033] 请继续参考图2,其示出了本发明一个实施例提供的神经网络运算装置200的结构示意图。为了利于读者理解本发明,下面本实施例将结合上一实施例对神经网络运算装置200进行具体说明。
[0034] 神经网络训练运算的目的是得到神经网络的一组权向量,使得训练后的神经网络能基于该组权向量对任一输入都能得到一个接近理想的输出。为了达到这一目的,神经网络的训练运算需要对神经网络的权向量进行多次修正,直至修正后的权向量能够满足上述要求。而上述修正需要基于使用中的神经网络的状态来进行,也即是需要基于神经网络的正向运算的运算结果进行,其中,神经网络的正向运算指的是输入向量从神经网络的输入层输入并一直运算到神经网络的输出层,从而得到各层的输出向量的运算过程,该运算过程一般包括向量点积运算和非线性变换运算。
[0035] 根据上述分析可知,神经网络的训练运算一般可以包括两个部分,第一部分为向量点积运算和非线性变换运算,即反映使用中的神经网络的状态的运算,第二部分为权向量修正运算,即基于使用中的神经网络的状态进行权向量修正的运算。其中,在神经网络的训练运算中,绝大部分的运算都为第一部分的运算,即向量点积运算和非线性变换运算,因此,提升向量点积运算和非线性变换运算的运算效率将能显著地提升神经网络训练运算的运算效率。
[0036] 而发明人发现,向量点积运算和非线性变换运算是一种特殊的运算模式,处理器可以基于特定的硬件电路执行该运算模式,则上述第一部分运算可以单独由第一运算处理器210执行,即第一运算处理器210,用于在神经网络的训练运算中,进行第一运算或第二运算,该第一运算包括向量点积运算,该第二运算包括向量点积运算和非线性变换运算。由于第一运算处理器210仅执行上述特殊运算模式的运算,使得第一运算处理器210的硬件电路大大简化,从而使得第一运算处理器210的运算效率大大提升。当然,在实际应用中,第一运算处理器210可以仅执行向量点积运算,而非线性变换运算可以由神经网络运算装置的其他模块来执行,或者,第一运算处理器210可以既执行向量点积运算又执行非线性变换运算,本发明对此不做具体限定。
[0037] 上述第二部分运算则可以由第二运算处理器220执行,即第二运算处理器220,用于根据至少一个修正值对神经网络的至少一个权向量进行修正,得到至少一个修正权向量,其中,每一个修正值与神经网络的权向量中的一个向量元素对应,至少一个修正值根据第一运算处理器的运算结果得到。例如,神经网络中某一权向量为(a,b,c),其中,向量元素a对应的修正值为Δa,向量元素b对应的修正值为Δb,向量元素c对应的修正值为Δc,则经过修正后的向量元素分别为a+Δa,b+Δb,c+Δc,修正权向量为(a+Δa,b+Δb,c+Δc)。其中,“该修正值根据第一运算处理器210的运算结果得到”指的是,第一运算处理器210根据第一运算或第二运算的结果计算得到该修正值,或者,第二运算处理器220根据第一运算处理器210的第一运算或第二运算的结果计算得到该修正值,对此,本发明下文将进行详细说明,在此不再赘述。
[0038] 需要说明的是,对于不同的神经网络训练算法而言,上述修正值的计算方式不同,但不论是何种神经网络训练算法,上述修正值均是基于使用中的神经网络的状态计算得到的,也即是均是基于第一运算处理器210进行的第一运算或者第二运算得到的。本发明下文将以较为常见的反向传播训练算法为例对上述修正值的计算进行说明,在此不再赘述。
[0039] 在实际应用中,神经网络的训练算法多种多样,而且还在不断的发展中,不同训练算法的区别就在于权向量修正策略不同,因此,第二运算处理器220可以根据不同的神经网络训练算法进行配置,从而能够满足不同的神经网络训练算法的需求,使得神经网络运算装置更加灵活。
[0040] 进一步地,上述神经网络训练运算的第二部分,即权向量修正运算,具体可以包括如下两个步骤:一、根据向量点积运算和非线性变换运算的结果和修正策略,计算至少一个修正值;二、令神经网络至少一个权向量中的至少一个向量元素与各自对应的修正值相加得到至少一个修正向量元素,并基于该至少一个修正向量元素得到至少一个修正权向量。
[0041] 其中,上述第二步的运算由第二运算处理器220执行,而上述第一步的运算可以由第一运算处理器210执行,也可以由第二运算处理器220执行,本发明对此不做具体限定。
[0042] 在上述第一步的运算由第一运算处理器210执行时,该第一运算处理器210,还用于根据上述第一运算或第二运算的运算结果计算该至少一个修正值。对应地,第二运算处理器220,用于根据第一运算处理器210计算得到的该至少一个修正值对上述至少一个权向量进行修正,得到至少一个修正权向量。
[0043] 在上述第一步的运算由第二运算处理器220执行时,该第二运算处理器220,还用于根据上述第一运算或第二运算得到的运算结果计算该至少一个修正值,并根据该至少一个修正值对上述至少一个权向量进行修正,得到至少一个修正权向量。
[0044] 进一步地,在实际应用中,神经网络中的权向量数量可能十分庞大,且,每一个权向量中向量元素的数量也可能十分庞大,如果对每一权向量中每一向量元素都进行修正,则第二运算处理器220的运算强度将非常大,所耗费的运算时间也将非常长。同时,由于第二运算处理器220得到修正权向量后需要将修正权向量传输至第一运算处理器210中,以使第一运算处理器210能基于修正权向量进行向量点积运算或者进行向量点积运算和非线性变换运算,并基于运算结果反映使用中的神经网络的状态,从而使得第二运算处理器220继续对该修正权向量进行修正,因此,若第二运算处理器220对神经网络每一权向量中每一向量元素都进行修正,则修正权向量的数量将十分庞大,从而使得第二运算处理器220和第一运算处理器210之间需要非常大的通信带宽。
[0045] 由此,为了减轻第二运算处理器220的运算强度,减小第二运算处理器220的运算时间,也为了减小第二运算处理器220和第一运算处理器210之间所需的通信带宽,第二运算处理器220可以只对神经网络权向量中的部分向量元素进行修正。具体地,该第二运算处理器220可以根据目标修正值对至少一个权向量进行修正,得到至少一个修正权向量,其中,目标修正值为大于第一预设阈值的修正值。也即是,该第二运算处理器220可以获取该至少一个修正值,并获取该至少一个修正值中大于第一预设阈值的修正值,即上述目标修正值,而后,第二运算处理器220可以利用该目标修正值对该目标修正值对应的向量元素进行修正。简而言之,第二运算处理器220可以仅修正对应的修正值大于第一预设阈值的那部分向量元素。
[0046] 进一步地,在实际应用中,除了神经网络的训练运算需要进行向量点积运算和非线性变换运算外,神经网络的正向推理运算也需要进行向量点积运算和非线性变换运算。其中,神经网络的正向推理运算指的是已经结束训练的神经网络正常使用时的运算,即将输入向量通过神经网络的输入层输入,并基于上述输入向量和神经网络经过训练后得到的多个权向量进行运算后得到通过神经网络输出层输出的输出向量的运算过程。
[0047] 由于神经网络的正向推理运算也需要进行向量点积运算和非线性变换运算,则神经网络的正向推理运算可以复用上述第一运算处理器210,也即是该第一运算处理器210还可以在神经网络的正向推理运算的过程中执行向量点积运算(上述第一运算)或者执行向量点积运算和非线性变换运算(上述第二运算)。
[0048] 第一运算处理器210可以在神经网络的正向推理运算和神经网络的训练运算中复用,从而节约了神经网络运算的硬件开销,同时也使得本发明提供的神经网络运算装置既能够进行神经网络的训练运算又能够进行神经网络的正向推理运算,从而增强了神经网络运算装置的适用性。
[0049] 进一步地,在实际应用中,一种较为常见的神经网络训练算法为反向传播训练算法,反向传播训练算法包括前向传播运算、反向传播运算和权向量修正运算,所谓前向传播运算指的是通过神经网络的输入层输入样本向量,并从输入层至输出层的方向逐层计算神经网络隐含层和输出层的输出向量,所谓反向传播运算指的是通过神经网络的输出层输入误差向量,并从输出层至输入层的方向逐层计算神经网络隐含层的输出向量,所谓权向量修正运算指的是根据前向传播运算和后向传播运算的结果对神经网络的权向量进行修正,其中,误差向量指的是正向传播运算中输出层输出的向量值和理想值之间的差值。反向传播训练算法中的反向传播运算目的是得到神经网络每一层的估计误差,即由后面一层的误差推导前面一层的误差,如此将误差逐层反传即可得到神经网络每一层的估计误差,而后根据每一层的估计误差和前向传播运算的结果对权向量进行修正。
[0050] 针对该反向传播训练算法而言,第一运算处理器210,用于将神经网络的权向量和通过神经网络的输入层输入的样本向量进行正向运算得到神经网络每一层的正向输出向量,正向运算包括第一运算或第二运算。
[0051] 所谓的正向运算指的就是从神经网络的输入层至输出层这一方向进行的运算,所谓的神经网络每一层的正向输出向量指的是在正向运算过程中计算得到的每一层的输出向量。由于反向传播训练算法中的前向传播运算仅包括向量点积运算和非线性变换运算,则可以由第一运算处理器210执行该前向传播运算。换言之,上文所述的第一运算处理器210执行的即为该前向传播运算。需要说明的是,在第一运算处理器210执行该前向传播运算的过程中,该第一运算处理器210可以既执行向量点积运算又执行非线性变换运算,在本发明的一个实施例中,该第一运算处理器210可以仅执行向量点积运算,而由神经网络运算装置200的其他模块执行非线性变换运算。
[0052] 下面,本发明将对第一运算处理器210执行前向传播运算的具体技术过程进行说明,具体地:
[0053] 第一运算处理器210,用于在神经网络的训练运算中,获取神经网络第i层的正向输出向量,并将第i层的正向输出向量与由第i层指向第i+1层的有向弧对应的至少一个权向量分别进行向量点积运算得到第一向量,并根据第一向量得到第i+1层的正向输出向量,当i为1时第i层的正向输出向量为样本向量,i为大于或等于1的正整数。其中,该第一运算处理器210,用于将上述第一向量中的向量元素进行非线性变换运算得到该第i+1层的正向输出向量。
[0054] 如图3所示为某一神经网络的局部示意图,在图3中包括神经网络的第i层和第i+1层。其中,第i层包括两个节点,第i层的正向输出向量为(ai,bi),第i+1层包括三个节点,第i层指向第i+1层的有向弧对应的权值非别为w11,w21,w12,w22,w13,w23,其中,wpq指的是第i层的第p个节点指向第i+1层的第q个节点的有向弧对应的权值,则上述各有向弧对应的权值组成的权向量分别为(w11,w21),(w12,w22),(w13,w23)。在前向传播运算中,第一运算处理器210可以将(ai,bi)与(w11,w21),(w12,w22),(w13,w23)分别进行向量点积运算:ci+1=ai×w11+bi×w21,di+1=ai×w12+bi×w22,ei+1=ai×w13+bi×w23,从而得到第一向量,该第一向量为(ci+1,di+1,ei+1),第一运算处理器210可以将该第一向量中的每一个向量元素进行非线性变换运算:c′i+1=f(ci+1),d′i+1=f(di+1),e′i+1=f(ei+1),即可得到第i+1层的输出向量(c′i+1,d′i+1,e′i+1)。
[0055] 需要说明的是,上述图3所示的神经网络的局部示意图仅仅是示例性的,在实际应用中,神经网络的每一层可以包含任意数量的节点,本发明对此不作具体限定。
[0056] 还需要说明的是,上述举例中,由第一运算处理器210将该第一向量中的每一个向量元素进行非线性变换运算,也即是第一运算处理器210既执行向量点积运算又执行非线性变换运算,但在实际应用中,第一运算处理器210可以仅执行向量点积运算,而非线性变换运算可以由神经网络运算装置的其他模块执行,对此,本发明不作具体限定。
[0057] 还需要说明的是,上述i为大于等于1的正整数,当i等于1时,第i层的正向输出向量指的就是通过神经网络输入层输入的样本向量。
[0058] 此外,针对该反向传播训练算法而言,第一运算处理器210,还用于将神经网络的权向量和通过神经网络的输出层输入的误差向量进行反向运算得到神经网络每一层的反向输出向量,误差向量为输出层的正向输出向量与样本向量对应的目标输出向量的差向量,反向运算包括第一运算。
[0059] 所谓的反向运算指的就是从神经网络的输出层至输入层这一方向进行的运算,所谓的神经网络每一层的反向输出向量指的是在反向运算过程中计算得到的该每一层的输出向量。由于反向传播训练算法中的反向传播运算仅包括向量点积运算,则可以由第一运算处理器210执行该反向传播运算。换言之,上文所述的第一运算处理器210执行的即为该反向传播运算。
[0060] 下面,本发明将对第一运算处理器210执行反向传播运算的具体技术过程进行说明,具体地:
[0061] 该第一运算处理器210,用于在神经网络的训练运算中,获取该神经网络第j层的反向输出向量,并将该第j层的反向输出向量与由第j层指向第j-1层的有向弧对应的至少一个权向量分别进行向量点积运算,得到该第j-1层的反向输出向量,当该第j层为该神经网络的最后一层时,该第j层的反向输出向量为该误差向量,j为大于1的正整数。
[0062] 如图4所示为某一神经网络的局部示意图,在图4中包括神经网络的第j层和第j-1层。其中,第j层包括两个节点,第j层的反向输出向量为(aj,bj),第j-1层包括三个节点,第j层指向第j-1层的有向弧对应的权值非别为h11,h21,h12,h22,h13,h23,其中,hpq指的是第j层的第p个节点指向第j-1层的第q个节点的有向弧对应的权值,则上述各有向弧对应的权值组成的权向量分别为(h11,h21),(h12,h22),(h13,h23)。在反向传播运算中,第一运算处理器210可以将(aj,bj)与(h11,h21),(h12,h22),(h13,h23)分别进行向量点积运算:cj-1=aj×h11+bj×h21,dj-1=aj×h12+bj×h22,ej-1=aj×h13+bj×h23,从而得到第j-1层的反向输出向量为(cj-1,dj-1,ej-1)。
[0063] 需要说明的是,上述图4所示的神经网络的局部示意图仅仅是示例性的,在实际应用中,神经网络的每一层可以包含任意数量的节点,本发明对此不作具体限定。
[0064] 还需要说明的是,上述j为大于1的正整数,当该第j层为该神经网络的最后一层时,该第j层的反向输出向量为该误差向量。
[0065] 由于神经网络训练运算的目的是得到神经网络的一组权向量,使得训练后的神经网络能基于该组权向量对任一输入都能得到一个接近理想的输出,因此,若第一运算处理器210在反向传播运算中得到反向输出向量,也即是各层的误差向量较小,则说明当前神经网络的权向量已经能够满足神经网络训练运算的目的,此时,第二运算处理器220不需要执行权向量修正的运算了。具体地,该第二运算处理器220,还用于在第一运算处理器210计算得到的反向输出向量中至少有一个反向输出向量大于第二预设阈值时,根据该至少一个修正值对该至少一个权向量进行修正,得到至少一个修正权向量。
[0066] 此外,针对该反向传播训练算法而言,神经网络运算装置还需要进行权向量修正的运算,也即是根据前向传播运算和后向传播运算的结果对神经网络的权向量进行修正,该权向量修正的运算包括以下两个步骤:一、根据前向传播运算和后向传播运算的结果,计算该至少一个修正值;二、令神经网络至少一个权向量中的至少一个向量元素与各自对应的修正值相加得到至少一个修正向量元素,并基于该至少一个修正向量元素得到至少一个修正权向量。
[0067] 其中,上述第一步可以由第一运算处理器210执行,也可以由第二运算处理器220执行,而上述第二步可以由第二运算处理器220执行。示例的,以第一运算处理器210执行上述第一步为例,则该第一运算处理器210,还用于根据该神经网络每一层的正向输出向量和该神经网络每一层的反向输出向量计算该至少一个修正值。
[0068] 具体地,以神经网络的激活函数为Sigmoid函数,且该神经网络包含输入层、隐含层和输出层为例,该第一运算处理器210可以利用以下公式计算上述修正值:
[0069] Δwkj=ε1δkaj
[0070]
[0071] 其中,δk=(tk-ak)ak(1-ak),Δwkj为隐含层指向输出层的有向弧对应的权向量中向量元素的修正值,Δwij为输入层指向隐含层的有向弧对应的权向量中向量元素的修正值,ε1为输出层的反向输出向量,ε2为隐含层的反向输出向量,wkj为隐含层指向输出层的有向弧对应的权向量,aj为隐含层的正向输出向量,ai为样本输入向量,tk为目标输出向量,ak为输出层的正向输出向量。
[0072] 需要说明的是,在实际应用中,该第一运算处理器210可以为ASIC(Application Specific Integrated Circuit,专用集成电路)运算芯片、FPGA(Field-Programmable Gate Array,现场可编程门阵列)运算芯片等,该第二运算处理器220可以为CPU(Central Processing Unit,中央处理器)运算芯片、GPU(Graphics Processing Unit,图形处理器)运算芯片等,本发明对此不做具体限定。
[0073] 综上所述,本实施例提供的神经网络运算装置,通过在神经网络运算装置中设置第一运算处理器和第二运算处理器,且第一运算处理器仅用于在神经网络的训练运算中进行向量点积运算,或者,第一运算处理器仅用于在神经网络的训练运算中进行向量点积运算和非线性变换运算,使得第一运算处理器可以只处理一种模式的运算任务,因此,其可以只包含针对该模式的运算所设计的特殊电路,从而达到了简化第一运算处理器硬件电路的目的,使得第一运算处理器的运算效率得到了较大的提升。同时,神经网络训练运算中不同于向量点积运算的其他模式的运算,如修正权向量的运算可以由第二运算处理器来执行,由于神经网络的训练运算中绝大部分的运算都为向量点积运算或者都为向量点积运算和非线性变换运算,因此,第一运算处理器运算效率的提升可以大大促进神经网络训练运算的效率的提升。
[0074] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0075] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。