应用于长短时记忆神经网络的计算装置和计算方法与流程

文档序号:15388082发布日期:2018-09-08 00:48阅读:366来源:国知局

本发明涉及深度学习技术领域,尤其涉及一种应用于长短时记忆神经网络的计算装置和计算方法。



背景技术:

长短时记忆神经网络(lstm)是一种特殊的循环神经网络,具有能够学习的长期依赖的能力,可应用于学习语言翻译、机器人控制、图像分析、文档摘要、语音识别、手写识别等。lstm在目标数据处理过程中,可记住很长时间的信息。在lstm应用过程中,通常是在算法中加入一个具有判断能力的处理单元,该处理单元中包含输入门、遗忘门与输出门,依据规则判断输入信息是否有用,将符合算法认证的信息保留,而将不符合的信息通过遗忘门遗忘,lstm计算过程的主要占用部分为各门值向量的乘累加运算与各层的迭代运算过程,该过程主要是将门值向量与权重进行乘累加等处理,将结果传输作为下一层网络的输入,并执行相同的运算。

然而,在现有的lstm网络计算过程中,由于通常采用简单的门电路结构来进行计算,从而导致向量与权重的乘累加过程与部分门值向量的运算存在串联关系,计算资源的利用率与数据处理的快速性难以同时保持,不可避免的出现计算资源的闲置状态,降低了资源利用率,此外,lstm网络中存在访存次数高和运行功耗低的问题。

因此,需要对现有技术进行改进,以提高lstm神经网络的数据处理的实时性和计算资源利用率,并降低计算功耗,以将lstm神经网络推向例如智能穿戴、智能机器人、自动驾驶以及模式识别等更广泛的领域。



技术实现要素:

本发明的目的在于克服上述现有技术的缺陷,提供一种应用于lstm网络中矩阵运算和向量运算的计算装置。

根据本发明的第一方面,提供了一种应用于长短时记忆神经网络的计算装置。该计算装置包括:

计算单元,用于执行长短时记忆神经网络的遗忘门函数、输入门函数、输出门函数以及记忆单元状态的计算,获得当前时刻的遗忘门值向量、当前时刻的输入门值向量、当前时刻的输出门值向量和当前时刻的记忆单元的即时状态值向量,其中,所述当前时刻的记忆单元的即时状态值向量用于反映长短时记忆神经网络的短期记忆;

向量计算单元,用于基于长短时记忆神经网络的上一时刻的记忆单元状态值向量和所述当前时刻的遗忘门值向量、当前时刻的输入门值向量、当前时刻的输出门值向量和当前时刻的记忆单元的即时状态值向量获得长短时记忆神经网络的当前时刻的输出值向量以及当前时刻的记忆单元状态值向量,其中,所述上一时刻的记忆单元状态值向量用于反映长短时记忆神经网络的长期记忆。

在一个实施例中,本发明的计算装置包括四个所述计算单元,其并行执行相关计算,其中,第一计算单元执行遗忘门函数的计算,得到所述当前时刻的遗忘门值向量;第二计算单元执行输入门函数的计算,得到所述当前时刻的输入门值向量;第三计算单元执行记忆单元状态的计算,得到所述当前时刻的记忆单元的即时状态值向量;第四计算单元执行输出门函数的计算,得到所述当前时刻的输出门值向量。

在一个实施例中,所述向量计算单元包括:

第一乘法单元,用于接收所述上一时刻的记忆单元状态值向量以及来自于所述第一计算单元的所述当前时刻的遗忘门值向量;

第二乘法单元,用于接收来自于所述第二计算单元的所述当前时刻的输入门值向量和所述第三计算单元的所述当前时刻的记忆单元的即时状态值向量;

加法单元,用于接收来自于所述第一乘法单元和所述第二乘法单元的输出并执行相加运算,获得所述当前时刻的记忆单元状态值向量;

激活处理单元,用于对来自于所述加法单元的所述当前时刻的记忆单元状态值向量进行激活处理;

第三乘法单元,用于接收来自于所述激活处理单元的结果以及来自于所述第四计算单元的所述当前时刻的输出门值向量,获得所述长短时记忆神经网络的当前时刻的输出值向量。

在一个实施例中,所述激活处理单元采用tanh激活函数进行处理。

在一个实施例中,所述四个计算单元具有相同的电路结构。

在一个实施例中,所述计算单元包括:

多个乘法器,用于执行长短时记忆网络的权重矩阵和输入向量的对应元素的相乘操作;

由多个加法器构成的加法树结构,用于对所述多个乘法器的结果执行相加操作,以获得所述权重矩阵和输入向量的相乘结果;

累加器,用于对所述加法器结构获得的结果进行累加;

激活函数处理单元,用于对所述累加器的结果进行激活处理。

在一个实施例中,所述激活函数处理单元采用sigmoid函数进行激活处理。

根据本发明的第二方面,提供了一种应用于长短时记忆神经网络的计算方法,该计算方法根据本发明的计算装置来执行长短时记忆神经网络的相关计算,以获得当前时刻的输出值向量以及当前时刻的记忆单元状态值向量,

在本发明的计算方法中,所述计算装置中的计算单元执行下列计算:

ft=σ(wf·xt+uf·ht-1+bf)

it=σ(wi·xt+ui·ht-1+bi)

ot=σ(wo·xt+uo·ht-1+bo)

所述计算装置中的向量计算单元执行下列计算:

ht=ot⊙tanh(ct)

其中,“·”表示矩阵和向量的乘法操作,“⊙”表示向量和向量的乘法操作,“σ”表示sigmoid激活操作,“tanh”表示tanh激活操作,wf、uf是遗忘门的权重矩阵,bf是遗忘门的偏置项,wi和ui是输入门的权重矩阵,bi是输入门的偏置项,wc和uc是记忆单元状态的权重矩阵,bc是记忆单元状态的偏置项,wo和uo是输出门的权重矩阵,bo是输出门的偏置项,xt是当前时刻的输入向量,ht-1是长短时记忆神经网络上一时刻的输出值向量,ht是长短时记忆神经网络当前时刻的输出值向量,ft是当前时刻的遗忘门值向量,it是当前时刻的输入门值向量,ot是当前时刻的输出门值向量,是当前时刻的记忆单元的即时状态值向量,ct-1是上一时刻的记忆单元状态值向量,ct是计算的当前时刻的记忆单元状态值向量。

根据本发明的第三方面,提供了一种长短时记忆神经网络处理器。该神经网络处理器包括:

本发明提供的计算装置,用于执行长短时记忆网络的相关计算;

存储单元,用于存储数据和指令;

控制单元,用于根据保存在所述存储单元的指令来控制所述计算装置的相关计算和数据的输入输出。

与现有技术相比,本发明的优点在于:针对lstm网络中矩阵运算和向量运算的特点,提供了一种适合于执行lstm中相关计算的装置,提高了资源利用率并降低了计算功耗。

附图说明

以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:

图1示出了现有技术中长短时记忆神经网络的结构示意图;

图2示出了根据本发明一个实施例的长短时记忆神经网络的计算装置的示意图;

图3示出了图2的计算装置中计算单元的结构示意图;

图4示出了基于本发明的计算装置的神经网络处理器的结构示意图。

具体实施方式

为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

图1示出了现有技术中典型的长短时记忆网络的结构示意图,该典型结构主要由输入门(it表示t时刻的输入门值向量或门函数)、输出门(ot表示t时刻的输出门值向量或门函数)、遗忘门(ft表示t时刻的遗忘门值向量或门函数)和记忆单元(ct表示记忆单元在t时刻的状态值向量)组成。

由图1可以看出,在t时刻,lstm有三个输入值,分别是当前时刻的网络的输入值向量xt、上一时刻lstm的输出值向量ht-1以及上一时刻记忆单元的状态值向量ct-1,其中,ct-1是关于lstm的长期记忆(图1中未明确示出),lstm有两个输出值,分别是当前时刻的lstm输出值向量ht以及当前时刻的记忆单元的状态值向量ct。输入门决定当前时刻的网络输入值xt有多少保存到当前的记忆单元状态ct,遗忘门决定上一时刻的记忆单元状态ct-1有多少保存到当前时刻的记忆单元状态ct,输出门用来控制记忆单元状态ct有多少输出到lstm的当前输出值ht。上述各门值是0至1之间的实数向量,若门值为1,任何向量与其相乘都不会有任何改变,当门值为0时,任何向量与其相乘都会得到0向量。

在lstm结构中,通过输入门、输出门、遗忘门共同调节来控制在每个时间点向记忆单元传输的数据。记忆单元在多个连续时间点处理输入的数据,每个时间点相隔同样的时间间隔。典型地,在每个时间点,lstm根据以下四项确定其两个输出值ht和ct,即:

输入门函数:

it=σ(wi·xt+ui·ht-1+bi)(1)

遗忘门函数:

ft=σ(wf·xt+uf·ht-1+bf)(2)

输出门函数:

ot=σ(wo·xt+uo·ht-1+bo)(3)

当前的记忆单元的即时状态:

lstm网络的输出值可表示为:

ht=ot⊙tanh(ct)(6)

其中,“·”表示矩阵和向量的乘法操作,“⊙”表示向量和向量的乘法操作,“σ”表示sigmoid激活操作,“tanh”表示tanh激活操作,wf和uf是遗忘门的权重矩阵,bf是遗忘门的偏置项,wi和ui是输入门的权重矩阵,bi是输入门的偏置项,wc和uc是记忆单元状态的权重矩阵,bc是记忆单元状态的偏置项,wo和uo是输出门的权重矩阵,bo是输出门的偏置项,xt是当前时刻的输入向量,ht-1是长短时记忆神经网络上一时刻的输出值向量,ht是长短时记忆神经网络当前时刻的输出值向量,ft是当前时刻的遗忘门值向量,it是当前时刻的输入门值向量,ot是当前时刻的输出门值向量和是当前时刻的记忆单元的即时状态值向量(其反映关于lstm的当前记忆),ct-1是上一时刻的记忆单元状态值向量(其反映关于lstm的长期记忆),ct是计算的当前时刻的记忆单元状态值向量。

根据本发明的一个实施例,提供一种面向lstm的矩阵和向量运算的计算装置,参见图2所示,该计算装置包括四个计算单元(标记为计算单元0-3)以及一个向量计算单元200,其中,计算单元0用于执行lstm中的遗忘门函数,即计算公式(2),得到向量ft;计算单元1用于执行lstm中的输入门函数,即计算公式(1),得到向量it;计算单元2用于执行lstm中记忆单元的状态,即计算公式(4),得到向量计算单元3用于执行lstm中的输出门函数,即计算公式(3),得到向量ot。

向量计算单元200根据获得的ft、it、ot以及上一时刻的记忆单元状态值向量ct-1来获得当前的lstm的输出值向量ht,即公式(6)以及当前的记忆单元状态值向量ct,即公式(5)。

具体地,在该实施例中,向量计算单元200包括乘法单元210、乘法单元220、加法单元230、激活处理单元240以及乘法单元250,其中,乘法单元210用于接收计算单元0的输出ft和上一时刻记忆单元的状态ct-1并执行相应的向量乘法运算,得到ft⊙ct-1;乘法单元220接收计算单元1的输出it和计算单元2的输出并执行相应的向量乘法运算,得到加法单元230接收来自于乘法单元210的输出和乘法单元220的输出并执行加法运算,得到相加结果即当前记忆单元的状态ct,并且该状态ct可作为输出,以参加下一时刻的运算;激活处理单元240对加法单元230的结果进行激活处理,例如,采用f(z)=tanh(z)激活函数时,得到tanh(ct);乘法单元250对激活处理结果和来自于计算单元3的输出ot执行向量相乘,从而获得当前lstm的输出值ht=ot⊙tanh(ct)。

应理解的是,向量计算单元200中的乘法单元210、乘法单元220、加法单元230、激活处理单元240以及乘法单元250可采用通用的乘法器和加法器、fpga或其它专用器件来实现。此外,激活处理单元240也可以不作为一个单独的处理单元存在,例如,集成在加法单元230或乘法单元250中。

需要说明的是,在图2示出的计算装置,以四个计算单元为一组可以并行计算ft、it、ot,从而快速获得计算lstm输出值所需的门函数和记忆单元状态。但在另外的实施例中,也可采用多于或少于四个计算单元,例如,仅采用一个计算单元依次计算出ft、it、ot之后,再将它们同时输入到向量计算单元。

对于包括多个计算单元的情况,各计算单元可具有相同的或不同的电路结构,只要能实现本发明的功能即可。

图3示出了根据本发明在一个实施例的计算单元的结构示意图,该计算单元包括多个乘法器(标记为乘法器0-n)、由多个加法器构成的加法树结构、累加器340以及激活函数处理单元350,其中,示意了由加法器310、加法器320和加法器330组成的两级加法树结构,例如,当n为9时,乘法器0-4的结果输出到加法器310进行相加,而乘法器5-9的结果输出到加法器320进行相加。

应理解的是,本领域的技术人员可以根据计算规模和计算效率要求设计多级形式的加法树结构,以提高计算速度,例如,每两个乘法器对应一个加法器,每两个加法器对应下一级的一个加法器等。

乘法器0-n用于接收输入数据和权重并执行乘法操作,将结果输出至加法器310和加法器320,此处,输入数据包括lstm的输入向量xt中的元素或者lstm的上一时刻的输出值ht-1,权重包括遗忘门、输入门、输出门、记忆单元对应的权重矩阵中的元素。

加法器330接收来自于加法器310和加法器320的结果并执行相加操作。

累加器340对来自于加法器330的结果进行多次累加,并将最终结果(例如,wi·xt+ui·ht-1+bi)输出至激活函数处理单元350。

激活函数处理单元350对来自于累加器340的累加结果执行激活函数,例如,采用sigmoid函数处理累加结果。

例如,当采用图3的计算单元计算公式it=σ(wi·xt+ui·ht-1+bi)时,首先乘法器0-n可用于执行wi和xt中对应元素的相乘操作,然后通过加法器310、加法器320以及加法器330进行求和,将计算结果wi·xt输出至累加器340;接下来,乘法器0-n执行ui和ht-1对应元素的相乘操作,类似地通过加法器310、加法器320以及加法器330进行求和,得到结果ui·ht-1并输出至累加器340;累加器340执行wi·xt和ui·ht-1的累加运算,并可进一步累加偏置项bi(未示出),得到wi·xt+ui·ht-1+bi;最后,由激活函数处理单元350进行激活处理,从而最终获得it=σ(wi·xt+ui·ht-1+bi)。类似地,利用这种计算单元的结构可执行公式(2)、(3)和(4)。

本发明的计算装置可应用于长短时记忆神经网络处理器,以加速数据运算过程,参见图4所示,该神经网络处理器400包括存储结构410、本发明的计算单元420、本发明的向量计算单元430以及控制单元440,其中,计算单元420示出为多个,标记为0-n,向量计算单元430也示出为多个,标记为0-k。

概括而言,本发明提供的神经网络处理器400基于存储-控制-计算的结构。存储结构410用于存储参与计算的数据、神经网络权重及处理器操作指令;控制结构(控制单元440)用于解析操作指令,生成控制信号,该信号用于控制神经网络处理器的数据的调度、存储以及神经网络的计算过程;计算结构(包括计算单元420和向量计算单元430)用于执行该神经网络处理器中的相关计算。

在图4所示的实施例中、存储结构410进一步细分为输入数据存储单元411、权重存储单元412、指令存储单元413和输出数据存储单元414。

输入数据存储单元411用于存储参与计算的数据,该数据包括lstm的输入数据向量和中间计算结果;输出数据存储单元414用于存储计算得到结果,例如,ct和ht;权重存储单元412用于存储lstm神经网络的权重,例如,遗忘门的权重wf、uf,输入门的权重wi和ui等;指令存储单元413存储参与计算的指令信息,指令被解析来实现lstm神经网络的计算。

控制单元440分别与输出数据存储单元414、权重存储单元412、指令存储单元413、计算单元420和向量计算单元430相连。控制单元440获得保存在指令存储单元413中的指令并且解析该指令(例如,载入数据至计算单元、计算开始、计算结束、或将计算结果存储至存储单元等指令),控制单元440可根据解析指令得到的控制信号控制计算单元420和向量计算单元430进行神经网络的计算。控制单元440本身可以是微控制器。

计算单元420和向量计算单元430根据控制单元440产生的控制信号来执行相应的神经网络计算。计算单元420和向量计算单元430与一个或多个存储单元相关联,计算单元420可以从与其相关联的输入数据存储单元411获得数据以进行计算,并且可以向该相关联的输出数据存储单元414写入数据。计算单元420和向量计算单元430完成lstm神经网络中的大部分运算,即上述的向量和矩阵的相乘、向量和向量的相乘以及激活处理等。

需要说明的是,各存储单元(包括缓存单元)、控制单元和计算单元(包括向量计算单元)之间的数据通路可采用h-tree或fat-tree等互联技术。存储单元可以是静态随机存储器(sram)、动态随机存储器(dram)、寄存器堆等常见存储介质,也可以是3d存储器件等新型的存储类型。此外,在某些情况下,计算所需要的数据可能并非存储在上述存储单元,例如,对于计算规模较大的lstm神经网络来说,也可以与外部的数据存储器交换数据(参见图4所示)。

本领域的技术人员应理解的是,尽管图4中未示出,该处理系统还包括地址寻址功能,用于将输入的索引映射到正确的存储地址,以从存储单元中获得需要的数据或指令,地址寻址功能可以实现在控制单元中或以独立单元的形式实现。

本发明提供的神经网络处理器可以是针对神经网络计算而设计的一个微处理器,也可以仅是微处理器的一部分,该神经网络处理器可应用于文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制等领域,可用作智能计算处理器、机器人、移动设备、也可用于构建大规模神经网络计算的超级计算机。

需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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