首页 / 专利库 / 人工智能 / 人工神经网络 / 用于执行LSTM运算的装置和方法

用于执行LSTM运算的装置和方法

阅读:493发布:2020-05-14

专利汇可以提供用于执行LSTM运算的装置和方法专利检索,专利查询,专利分析的服务。并且本 发明 提出一种用于执行循环神经网络和LSTM的装置,包括指令存储单元、 控制器 单元、数据 访问 单元、互连模 块 、主运算模块以及多个从运算模块。所述从运算模块用于将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入将结果返回给主运算模块;主运算模块用于在正向过程时对从运算模块返回的和进行插值激活,在反向过程时插值得到激活导数并且与梯度相乘。本发明能够解决CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层 人工神经网络 正向运算的支持。,下面是用于执行LSTM运算的装置和方法专利的具体信息内容。

1.一种用于执行LSTM运算的装置,包括控制器单元、数据访问单元、互连模、主运算模块和从运算模块,其中,所述LSTM运算的一个块block包括:输入、输出门、忘记门和单元cell;所述输入门和所述忘记门,用于控制cell的输出里对于当前时间输入和上一时间cell的权重;所述输出门,用于控制cell的输出;
所述数据访问单元,用于访问外部地址空间,完成数据的加载和存储,读入指令;
所述控制器单元,用于读取指令,将指令译码成控制其他单元或模块行为的微指令,然后将各自的微指令分发至各个单元或模块;
所述互连模块,用于将所述主运算模块的输入向量发送给所述从运算模块,以及将从运算模块的运算结果返回给主运算模块;
所述从运算模块,用于将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入后将所有的部分和通过所述互连模块返回给主运算模块;
所述主运算模块,用于在正向运算时对计算结果进行插值激活;
所述装置用于执行LSTM单层计算,所述LSTM单层计算包括:
所述装置,用于计算出输入门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在神经元缓存单元,最后将它们三个相加并且激活得到输入门值;
所述装置,用于计算出忘记门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在神经元缓存单元;最后将它们三个相加并且激活得到忘记门值;
所述装置,用于计算出输入门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算上一时刻隐层与对应权值乘积和都存在神经元缓存单元,最后将它们两个个相加并且激活得到单元状态中间值缓存到神经元缓存单元;然后让中间值和输入门值对应相乘,缓存在运算单元的缓存单元内,再让上一时刻的单元状态和忘记门值对应相乘,在运算单元与上一次缓存对应相加,得到单元状态值;
所述装置,用于计算出输出门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算当前时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存单元,最后将它们三个相加并且激活,得到输出门值;将单元状态和输出门值对应相乘得到LSTM单层输出。
2.根据权利要求1所述的装置,其特征在于,所述装置还包括:指令存储单元,用于缓存读入的指令。
3.根据权利要求1所述的装置,其特征在于,所述装置包括多个从从运算模块,所述互连模块,将所述主运算模块的输入向量分发给所述从运算模块,以及将从运算模块的运算结果逐级拼接成运算结果返回给主运算模块。
4.根据权利要求3所述的装置,其特征在于,所述互连模块包括多个节点构成的二叉树通路;
每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。
5.根据权利要求4所述的装置,其特征在于,
所述主运算模块,还用于在反向运算时,将计算结果进行插值激活并求导得到的导数与梯度相乘。
6.如权利要求5所述的装置,其特征在于,所述主运算模块包括:运算单元、数据依赖关系判断单元和神经元缓存单元,其中,
所述运算单元,用于接收控制器单元发出的微指令并进行算数逻辑运算;
所述数据依赖关系判断单元,用于对神经元缓存单元进行读写操作,保证指令之间所用的数据不存在读写一致性冲突;
所述神经元缓存单元,用于缓存输入神经元数据和输出神经元数据。
7.如权利要求4所述的用于执行LSTM运算的装置,其特征在于,所述从运算模块包括运算单元、数据依赖关系判断单元、从神经元缓存单元、权值存储单元和权值梯度存储单元,所述数据依赖关系判断单元,用于对从神经元缓存单元进行读写操作,保证指令之间所用的数据不存在读写一致性冲突;
所述从神经元缓存单元,用于缓存输入神经元数据和输出神经元数据;
所述权值存储单元,用于缓存该从运算模块在计算过程中需要的权值数据;
所述权值梯度存储单元,用于缓存相应从运算模块在更新权值过程中需要的权值梯度数据;
所述运算单元,用于接收控制器单元发出的微指令并对输入神经元数据以及权值数据进行算数逻辑运算。
8.根据权利要求6或7所述的装置,其特征在于,
所述数据依赖关系判断单元,具体用于判断未执行的控制信号的第一数据与正在执行过程中的控制信号的第二数据之间是否存在依赖关系,如果不存在依赖关系,允许该未执行的控制信号立即执行,如果存在依赖关系;在与未执行的控制信号存在依赖关系的所有控制信号全部执行完成后,允许该未执行的控制信号执行。
9.一种执行LSTM运算的方法,其特征在于,所述方法应用于LSTM运算装置,所述装置包括控制器单元、互连模块、数据访问单元、主运算模块和从运算模块,所述LSTM运算的一个块block包括:输入门、输出门、忘记门和单元cell;所述输入门和所述忘记门,用于控制cell的输出里对于当前时间输入和上一时间cell的权重;所述输出门,用于控制cell的输出;所述方法包括如下步骤:
所述数据访问单元访问外部地址空间,完成数据的加载和存储,读入指令;所述控制器单元读取指令,将指令译码成控制其他单元或模块行为的微指令,然后将各自的微指令分发至各个单元或模块;
所述互连模块将所述主运算模块的输入向量发送给所述从运算模块,以及将从运算模块的运算结果返回给主运算模块;所述从运算模块将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入后将所有的部分和通过所述互连模块返回给主运算模块;所述主运算模块在正向运算时对计算结果进行插值激活;
所述方法还包括:用于执行LSTM单层计算,所述LSTM单层计算包括:
所述装置计算出输入门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在神经元缓存单元,最后将它们三个相加并且激活得到输入门值;
所述装置计算出忘记门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在神经元缓存单元;最后将它们三个相加并且激活得到忘记门值;
所述装置计算出输入门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算上一时刻隐层与对应权值乘积和都存在神经元缓存单元,最后将它们两个个相加并且激活得到单元状态中间值缓存到神经元缓存单元;然后让中间值和输入门值对应相乘,缓存在运算单元的缓存单元内,再让上一时刻的单元状态和忘记门值对应相乘,在运算单元与上一次缓存对应相加,得到单元状态值;
所述装置计算出输出门对应的当前时刻输入与权值的乘积和,缓存在神经元缓存单元,再计算当前时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存单元,最后将它们三个相加并且激活,得到输出门值;将单元状态和输出门值对应相乘得到LSTM单层输出。
10.根据权利要求9所述的方法,其特征在于,所述装置还包括:指令存储单元,用于缓存读入的指令。
11.根据权利要求9所述的方法,其特征在于,所述装置包括多个从运算模块,所述互连模块将所述主运算模块的输入向量发送给所述从运算模块,以及将从运算模块的运算结果返回给主运算模块具体包括:
所述互连模块将所述主运算模块的输入向量分发给所述从运算模块,以及将从运算模块的运算结果逐级拼接成运算结果返回给主运算模块。
12.根据权利要求11所述的方法,其特征在于,所述互连模块包括多个节点构成的二叉树通路;所述互连模块将所述主运算模块的输入向量分发给所述从运算模块,以及将从运算模块的运算结果逐级拼接成运算结果返回给主运算模块具体包括:
每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
所述主运算模块在反向运算时,将计算结果进行插值激活并求导得到的导数与梯度相乘。
14.如权利要求12所述的方法,其特征在于,所述主运算模块包括:运算单元、数据依赖关系判断单元和神经元缓存单元,所述方法具体包括:
所述运算单元接收控制器单元发出的微指令并进行算数逻辑运算;
所述数据依赖关系判断单元对神经元缓存单元进行读写操作,保证指令之间所用的数据不存在读写一致性冲突;所述神经元缓存单元缓存输入神经元数据和输出神经元数据。
15.如权利要求12所述的方法,其特征在于,所述从运算模块包括:运算单元、数据依赖关系判断单元、从神经元缓存单元、权值存储单元和权值梯度存储单元,所述方法具体包括:
所述数据依赖关系判断单元对从神经元缓存单元进行读写操作,保证指令之间所用的数据不存在读写一致性冲突;
所述从神经元缓存单元缓存输入神经元数据和输出神经元数据;
所述权值存储单元缓存该从运算模块在计算过程中需要的权值数据;
所述权值梯度存储单元缓存相应从运算模块在更新权值过程中需要的权值梯度数据;
所述运算单元接收控制器单元发出的微指令并对输入神经元数据以及权值数据进行算数逻辑运算。
16.根据权利要求14或15所述的方法,其特征在于,所述方法还包括:
所述数据依赖关系判断单元判断未执行的控制信号的第一数据与正在执行过程中的控制信号的第二数据之间是否存在依赖关系,如果不存在依赖关系,允许该未执行的控制信号立即执行,如果存在依赖关系;在与未执行的控制信号存在依赖关系的所有控制信号全部执行完成后,允许该未执行的控制信号执行。

说明书全文

用于执行LSTM运算的装置和方法

技术领域

[0001] 本发明人工神经网络技术领域,具体涉及LSTM,特别是一种用于执行LSTM的装置和方法。

背景技术

[0002] 循环神经网络和LSTM被广泛应用于语音识别语言建模,翻译,图片描述等领域,近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
[0003] 一种支持循环神经网络和LSTM的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的循环神经网络和LSTM运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把循环神经网络和LSTM的反向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销
[0004] 另一种支持循环神经网络和LSTM的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,循环神经网络和LSTM的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上缓存,循环神经网络和LSTM的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。

发明内容

[0005] 本发明的一个方面提供了一种用于执行循环神经网络和LSTM的装置,包括指令存储单元、控制器单元、数据访问单元、互连模、主运算模块、以及多个从运算模块,其中:指令存储单元用于缓存指令;控制器单元用于从指令存储单元读取指令,并将该指令译码成控制互连模块、主运算模块、以及从运算模块行为的微指令;数据访问单元用于从内存向主运算模块和各从运算模块的相应数据存储单元中写数据或从所述数据存储单元向内存读数据;互连模块用于,在每层神经网络反向训练开始计算的阶段,主运算模块通过互连模块向所有的从运算模块传输本层的输入梯度向量,在从计算模块的计算过程完成后,互连模块逐级将各从计算模块的输出梯度向量部分和两两相加得到本层的输出梯度向量;从运算模块用于将输入数据进行乘加得到部分和并保存,直到神经元数据全都输入将结果返回给主运算模块;主运算模块用于在正向过程时对从运算模块返回的和进行插值激活,在反向过程时插值得到激活导数并且与梯度相乘。
[0006] 本发明还提供了一种使用上述装置执行循环神经网络和LSTM运算的方法。
[0007] 该装置可以应用于以下(包括但不限于)场景中:数据处理机器人、电脑、打印机扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调微波炉、箱、电饭煲、加湿器洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。附图说明
[0008] 图1示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置的整体结构的示例框图
[0009] 图2示意性示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置中互连模块的结构;
[0010] 图3示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置中主运算模块结构的示例框图;
[0011] 图4示出了根据本发明实施例的用于执行循环神经网络和LSTM的装置中从运算模块结构的示例框图;
[0012] 图5示出了根据本发明实施例的循环神经网络和LSTM正反向过程的示例框图;
[0013] 图6示出了利用本发明的执行循环神经网络和LSTM的装置的运算的过程;
[0014] 图7是循环神经网络的结构;
[0015] 图8是LSTM算法的一个block的结构;
[0016] 图9示出了本发明的循环神经网络和LSTM单层流程图
[0017] 图10示出了本发明的循环神经网络和LSTM的单层运算的梯度反向传递流程图。

具体实施方式

[0018] 图1示出了本发明实施例的用于执行循环神经网络和LSTM运算的装置的整体结构示意图。如图1所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器)实现。
[0019] 指令存储单元1通过数据访问单元3读入指令并缓存读入的指令。指令存储单元1可以通过各种不同存储器件(SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等)实现。
[0020] 控制器单元2从指令存储单元1中读取指令,将指令译码成控制其他单元或模块行为的微指令,并发送给所述单元或模块,例如数据访问单元3、主运算模块5和从运算模块6等。
[0021] 数据访问单元3用于访存外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。
[0022] 述互连模块用于将所述主运算模块的输入向量分发给所述多个从运算模块,以及将各从运算模块的计算结果合并后返回给主运算模块。图2示意性示出了互连模块的结构的一种实施方式的结构示意图。互连模块4构成主运算模块5和多个从运算模块6之间的数据通路,在该实施例中具有H树型的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。
[0023] 以典型的循环神经网络和LSTM的计算out=∑w*in_data
[0024] 为例,主运算模块5内的神经元数据通过互连模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,每个从运算模块输出的神经元数据的值会在H树中逐级拼成一个完整的由神经元数据组成的向量,作为中间结果向量。假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过互连模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。
[0025] 在本发明中,主运算模块在正向对从运算模块返回的和进行插值激活,在反向插值得到激活导数并且与梯度相乘。
[0026] 在本发明中,从运算模块用于将输入数据进行乘加得到部分和并保存,直到神经元全都输入将结果返回给主运算模块。
[0027] 图3示出了根据本发明用于执行循环神经网络和LSTM运算的装置中主运算模块5的结构的示例框图。如图3所示,主运算模块5包括运算单元51、数据依赖关系判断单元52和神经元存储单元53。
[0028] 神经元存储单元53用于缓存主运算模块5在计算过程中用到的输入神经元数据和输出神经元数据。运算单元51完成主运算模块的各种运算功能。数据依赖关系判断单元52是运算单元51读写神经元存储单元53的端口,同时能够保证对神经元存储单元53中数据的读写不存在一致性冲突。
[0029] 具体地,数据依赖关系判断单元52判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。例如,所有发往数据依赖关系单元52的微指令都会被存入数据依赖关系单元52内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。同时,数据依赖关系判断单元52也负责从神经元存储单元53读取输入梯度向量通过互连模块4发送给从运算模块6,而从运算模块6的输出数据通过互连模块4直接发送给运算单元51。控制器单元2输出的指令发送给运算单元51和依赖关系判断单元52,来控制其行为。
[0030] 图4示出了根据本发明的用于执行循环神经网络和LSTM的装置的从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括运算单元61、数据依赖关系判断单元62、从神经元缓存单元63、权值存储单元64和权值梯度存储单元65。
[0031] 运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。
[0032] 数据依赖关系判断单元62负责计算过程中对存储单元的读写操作。数据依赖关系判断单元62保证对存储单元的读写不存在一致性冲突。具体地,数据依赖关系判断单元62判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。例如,所有发往数据依赖关系单元62的微指令都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
[0033] 从神经元缓存单元63缓存输入向量数据中与该从运算模块6相对应的标量数据以及该从运算模块6计算得到的输出向量部分和。
[0034] 权值缓存单元64缓存该从运算模块6在计算过程中需要的权值数据。对于每一个从运算模块,都只会存储权值矩阵中与该从运算模块6所存储的标量数据相对应的列。
[0035] 权值梯度缓存单元65缓存相应从运算模块在更新权值过程中需要的权值梯度数据。每一个从运算模块6存储的权值梯度数据与其存储的权值梯度数据相对应。
[0036] 从运算模块6实现循环神经网络和LSTM的输出梯度向量的过程中可以并行的前半部分以及权值的更新。
[0037] 以out=∑w*in_data为例,其中权值矩阵w和输入梯度向量in_data的乘法可以划分为不相关的并行计算子任务,out与in_data是列向量,每个从运算模块只计算in_data中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在H树中逐级两两相加得到最后的结果。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出输出向量的部分和,所有的部分和在互连模块4中完成求和运算得到最后的输出向量。每个从运算模块6同时将输入向量和正向运算时每层的输出值相乘,计算出权值,以更新本从运算模块6存储的权值。正向运算和反向训练是神经网络算法的两个主要过程,神经网络要训练(更新)网络中的权值,首先需要计算输入向量在当前权值构成的网络中的正向输出,这是正向过程,然后根据输出值与输入向量本身的标注值之间的差值,反向逐层训练(更新)每层的权值。在正向计算过程中会保存每一层的输出向量以及激活函数的导数值,这些数据是反向训练过程所需要的,所以在反向训练开始时,这些数据已经保证存在。正向运算中每层的输出值是反向运算开始时已有的数据,可以通过数据访存单元缓存在主运算模块中并通过H树发送给从运算模块。主运算模块5基于输出梯度向量进行后续计算,例如将输出梯度向量乘以正向运算时的激活函数的导数得到下一层的输入梯度值。正向运算时的激活函数的导数是在反向运算开始时已有的数据,可以通过数据访存单元缓存在主运算模块中。
[0038] 根据本发明实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
[0039] CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
[0040] COMPUTE指令完成每层人工神经网络的算术逻辑计算;
[0041] IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
[0042] NOP指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
[0043] JUMP指令负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
[0044] MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
[0045] 图5示出了根据本发明实施例的循环神经网络和LSTM正反向过程的示例框图。在不同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量,该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=∑w*in_data
[0046] ,每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的列向量。互连模块将输入神经元向量[in0,…,inN]发送给所有的从运算单元,暂存在从神经元缓存单元中。对于第i个从运算单元,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量的点积。从运算单元输出的结果经过互连模块拼成完整的输出向量并返回给主运算单元,在主运算单元中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,…,outN]。
[0047] 图6显示了利用本发明的装置和指令集实现循环神经网络和LSTM运算的过程。
[0048] 在步骤S1,在指令存储单元1的首地址处预先存入一条IO指令。
[0049] 在步骤S2,运算开始,控制器单元2从指令存储单元1的首地址读取该条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取相应的所有人工神经网络运算指令,并将其缓存在指令存储单元1中。
[0050] 在步骤S3,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算模块5的神经元存储单元53。
[0051] 在步骤S4,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取从运算模块6需要的权值矩阵数据。
[0052] 在步骤S5,控制器单元2接着从指令存储单元读入下一条CONFIG指令,根据译出的微指令,装置配置该层神经网络计算需要的各种常数。例如,运算单元51、61根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位)。
[0053] 在步骤S6,控制器单元2接着从指令存储单元读入下一条COMPUTE指令,根据译出的微指令,主运算模块5首先通过互连模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的从神经元缓存单元63。
[0054] 在步骤S7,根据COMPUTE指令译出的微指令,从运算模块6的运算单元61从权值存储单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从神经元缓存单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过互连模块返回。
[0055] 在步骤S8,在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间结果向量。
[0056] 在步骤S9,主运算模块5得到互连模块4的返回值,根据COMPUTE指令译出的微指令,从神经元存储单元53读取偏置向量,与互连模块4返回的向量相加,然后再对相加结果做激活,并将最后的输出神经元向量写回至神经元存储单元53。
[0057] 在步骤S10,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3将神经元存储单元53中的输出神经元向量存至外部地址空间指定地址,运算结束。
[0058] 图7是循环神经网络的结构。为了解决传统神经网络在时间上对于以前的输入的依赖,正向运算的时候,循环神经网络的输入来自当前时刻的输入以及上一时刻的隐层输出。公式中I为输入数量,H为隐层数量,K为输出数量。其中αh是t时刻第h个输出的中间值,bh是激活后t时刻的第h个输出,δh表示残差对αh的偏导数,θ表示激活函数。
[0059] 正向传播的公式表达为:
[0060]
[0061] bh=θ(αh)
[0062] 反向传播的公式表达:
[0063]
[0064] 其中。通过对于上一时刻的隐层和本层输出的连接来达到综合时间序列的作用。但是这样的循环神经网络存在时间衰减的问题。
[0065] 图8是LSTM算法的一个block的结构。相对于传统循环神经网络,LSTM引入了一个cell来记录当前时间点的信息。可以看出在LSTM算法里,一个block由三个门和一个cell组成,输入门、输出门、忘记门。LSTM算法的主要思想是利用cell来记录当前时间的状态,对上一时刻传入cell值来达到在不同时间直接传递信息的功能。用输入门和忘记门来控制cell的输出里对于当前时间输入和上一时间cell的权重。用输出门来控制cell的输出。在输入门和忘记门的控制下,合适的信息将会被保存很长时间,一直记录在cell里面,这样就解决了循环神经网络随着时间衰减的问题。
[0066] 图9示出了本发明的循环神经网络和LSTM单层的流程图。
[0067] 在步骤A1,计算出输入门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存区。最后将它们三个相加并且激活得到输入门值。
[0068] 在步骤A2,计算出忘记门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算上一时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存区。最后将它们三个相加并且激活得到忘记门值。
[0069] 在步骤A3,计算出输入门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算上一时刻隐层与对应权值乘积和都存在缓存区。最后将它们两个个相加并且激活得到单元状态中间值缓存到神经元缓存区。然后让中间值和输入门对应相乘,缓存在运算单元(图7的51)缓存区内,再让上一时刻的单元状态和忘记门对应相乘,在运算单元与上一次缓存对应相加,得到单元状态值。
[0070] 在步骤A4,计算出输出门对应的当前时刻输入与权值的乘积和缓存在神经元缓存区,再计算当前时刻单元状态与对应权值的乘积和以及上一时刻隐层与对应权值乘积和都存在缓存区。最后将它们三个相加并且激活,得到输出门值。
[0071] 在步骤A5,单元状态和输出门对应相乘得到本层输出。
[0072] 图10示出了本发明的循环神经网络和LSTM的单层运算的梯度反向传递流程图。
[0073] 在步骤B1,计算出下一时刻隐层梯度和对应位置的权值相乘相加加上本层残差和对应权值相乘之和,得到本层输出梯度。
[0074] 在步骤B2,让输出梯度和cell激活值对应乘加,缓存在神经元缓存区最后乘以激活函数导数得到输出门梯度。
[0075] 在步骤B3将cell的状态梯度由当前输出梯度乘上当前输出门值和状态激活的导数存入神经元,再计算上下一时刻cell的梯度,输入门和忘记门的梯度以及本时刻输出门梯度乘以对应权值都存入神经元缓存,最后相加得到单元状态梯度。cell中间值的梯度由当前时刻输入门激活值,cell激活函数导数以及cell状态梯度相乘得到。
[0076] 在步骤B4,将当前时刻所有cell的状态梯度对应乘以上一时刻cell状态输出相加最后与忘记门导数相乘得到忘记门的梯度。
[0077] 在步骤B5,将当前时刻所有cell的状态梯度对应乘以本时刻cell中间值的激活值输出相加最后与输入门导数相乘得到输入门的梯度。
[0078] 值得一提的是,传统循环神经网络算法应用在此装置上是极大简化了的LSTM算法,计算输出的时候只依赖当前时刻输入和上一时刻输出,正反向表达与LSTM的运行子过程类似,在此不做赘述。
[0079] 对于一次完整的循环神经网络和LSTM算法,其实现过程与以上典型的计算类似,按照公式取出相应的权值和数据进行加权求和,长时间的时候,下一层的运算指令会将主运算单元中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
[0080] 通过采用用于执行循环神经网络和LSTM的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络正向运算的支持。
[0081] 通过采用针对循环神经网络和LSTM的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈