一种用于执行全连接层神经网络训练的装置和方法制造方法及图纸

技术编号:20426475 阅读:21 留言:0更新日期:2019-02-23 08:56
本发明专利技术提供了一种用于执行人工神经网络全连接层反向训练的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块。使用该装置可以实现人工神经网络全连接层的反向训练。对于每一层来说,首先对输入梯度向量进行加权求和计算出本层的输出梯度向量。该输出梯度向量乘以下一层在正向运算时的激活函数的导数值可以得到下一层的输入梯度向量。将输入梯度向量与正向运算时的输入神经元对位相乘得到本层权值的梯度,然后可以根据所得到的本层权值的梯度来更新本层的权值。

【技术实现步骤摘要】
一种用于执行全连接层神经网络训练的装置和方法
本专利技术总体上涉及人工神经网络,具体地涉及一种用于执行人工神经网络全连接层的反向训练的装置和方法。
技术介绍
人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。人工神经网络全连接层是一种常见的人工神经网络类型,就像大脑里的神经网络一样,人工神经网络全连接层由一些互相连接的节点组成,如图1所示,每个圆圈表示一个神经元,每个箭头表示两个神经元之间的连接又被称为权值,所有的输入与输出之间互相都有连接。神经元的计算公式可以简单的描述成:其中,x表示所有和输出神经元相连接的输入神经元,w表示x和输出神经元之间对应的权值,b是一个常数。f(x)是一个非线性函数,通常称作激活函数。一种支持人工神经网络全连接层反向训练的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的人工神经网络全连接层反向训练的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把人工神经网络全连接层反向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销。另一种支持人工神经网络全连接层反向训练的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对人工神经网络全连接层反向训练的专门支持,仍然需要大量的前端译码工作才能执行人工神经网络全连接层的运算,带来了大量的额外开销。另外GPU只有较小的片上存储,人工神经网络全连接层的模型数据(权值)需要反复从片外读取,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上存储,人工神经网络全连接层的模型数据(权值)需要反复从片外读取,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
技术实现思路
本专利技术的一个方面提供了一种用于执行人工神经网络全连接层反向训练的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、多个从运算模块,其中:指令存储单元用于存储指令;控制器单元用于从指令存储单元读取指令,并将该指令译码成控制互连模块、主运算模块、以及所述多个从运算模块行为的控制信号;数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;在每层人工神经网络反向训练开始计算的阶段,主运算模块通过互连模块向所有的从运算模块传输本层的输入梯度向量;每个从运算模块计算输入梯度向量中相应的部分标量元素与权值矩阵的对应列的乘积,得到输出梯度向量部分和;在从运算模块的计算过程完成后,互连模块逐级将各从运算模块的输出梯度向量部分和拼接得到本层的输出梯度向量;主运算模块在每一层的计算过程中,利用本层的输出梯度向量完成后续计算。本专利技术的另一个方面提供了一种使用上述装置执行单层人工神经网络全连接层反向训练的方法。本专利技术的另一方面提供了一种使用上述装置执行多层人工神经网络全连接层反向训练的方法。本专利技术可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。附图说明为了更完整地理解本专利技术及其优势,现在将参考结合附图的以下描述,其中:图1示出了人工神经网络全连接层的结构图。图2示出了根据本专利技术实施例的用于执行人工神经网络全连接层反向训练的装置的整体结构的示例框图。图3示意性示出了根据本专利技术实施例的用于执行人工神经网络全连接层反向训练的装置中H树模块(互连模块的一种实施方式)的结构。图4示出了根据本专利技术实施例的用于执行人工神经网络全连接层反向训练的装置中主运算模块结构的示例框图。图5示出了根据本专利技术实施例的用于执行人工神经网络全连接层反向训练的装置中从运算模块结构的示例框图。图6示出了根据本专利技术实施例的人工神经网络全连接层反向训练过程的示例框图。图7示出了根据本专利技术实施例的单层人工神经网络全连接层反向训练的流程图。在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。具体实施方式根据结合附图对本专利技术示例性实施例的以下详细描述,本专利技术的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。在本专利技术中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。在本说明书中,下述用于描述本专利技术原理的各种实施例只是说明,不应该以任何方式解释为限制专利技术的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本专利技术的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本专利技术的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。根据本专利技术实施例的人工神经网络全连接层的反向训练,对于每一层来说,首先对输入梯度向量进行加权求和计算出本层的输出梯度向量。该输出梯度向量乘以下一层在正向运算时的激活函数的导数值可以得到下一层的输入梯度向量。将输入梯度向量与正向运算时的输入神经元对位相乘得到本层权值的梯度,然后可以根据所得到的本层权值的梯度来更新本层的权值。图2示出了根据本专利技术实施例的用于执行人工神经网络全连接层反向训练的装置的整体结构的示例框图。如图2所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。指令存储单元1通过数据访问单元3读入指令并存储读入的指令。控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的控制信号并发送给其他模块如数据访问单元3、主运算模块5和从运算模块6等。数据访问单元3能够访问外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。互连模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连,总线结构等)。图3示意性示出了互连模块4的一种实施方式:H树结构。互连模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有H树型的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在人工神经网络全连接层反向运算过程中,下游两个节点返回的向量会在当前节点相加成一个向量并返回给上游节点本文档来自技高网
...

【技术保护点】
1.一种用于执行人工神经网络全连接层反向训练的装置,所述装置用于执行人工神经网络全连接层反向训练的指令;所述装置包括指令存储单元、控制器单元、直接内存访问单元、互连模块、主运算模块、从运算模块,其中:直接内存访问单元,用于执行数据的读写操作,从外部存储空间读取指令;指令缓存单元,用于缓存指令;控制器单元,用于从指令存储单元读取指令,并将该指令译码成控制互连模块、主运算模块、以及所述从运算模块行为的控制信号;所述互连模块,用于连接主运算模块和从运算模块;主运算模块,用于依据该控制信号将上一层的输出神经元梯度向量乘以本层激活函数导数得到输入神经元梯度向量,通过互连模块向从运算模块传输本层的输入神经元梯度向量;从运算模块,用于计算输入神经元梯度向量与权值矩阵中该从运算模块对应列的乘积,得到本层输出神经元梯度向量部分和;互连模块,用于依据从运算模块的输出神经元梯度向量部分和得到本层的输出神经元梯度向量;主运算模块,在下一层的计算过程中,利用本层的输出神经元梯度向量完成后续计算;从运算模块,还用于将输入神经元梯度向量与该从运算模块对应的输入神经元数据计算得到本层的权值梯度;主运算模块,用于对本层的权值梯度进行处理得到本层的第二权值梯度,依据第二权值梯度进行本层权值的更新。...

【技术特征摘要】
1.一种用于执行人工神经网络全连接层反向训练的装置,所述装置用于执行人工神经网络全连接层反向训练的指令;所述装置包括指令存储单元、控制器单元、直接内存访问单元、互连模块、主运算模块、从运算模块,其中:直接内存访问单元,用于执行数据的读写操作,从外部存储空间读取指令;指令缓存单元,用于缓存指令;控制器单元,用于从指令存储单元读取指令,并将该指令译码成控制互连模块、主运算模块、以及所述从运算模块行为的控制信号;所述互连模块,用于连接主运算模块和从运算模块;主运算模块,用于依据该控制信号将上一层的输出神经元梯度向量乘以本层激活函数导数得到输入神经元梯度向量,通过互连模块向从运算模块传输本层的输入神经元梯度向量;从运算模块,用于计算输入神经元梯度向量与权值矩阵中该从运算模块对应列的乘积,得到本层输出神经元梯度向量部分和;互连模块,用于依据从运算模块的输出神经元梯度向量部分和得到本层的输出神经元梯度向量;主运算模块,在下一层的计算过程中,利用本层的输出神经元梯度向量完成后续计算;从运算模块,还用于将输入神经元梯度向量与该从运算模块对应的输入神经元数据计算得到本层的权值梯度;主运算模块,用于对本层的权值梯度进行处理得到本层的第二权值梯度,依据第二权值梯度进行本层权值的更新。2.根据权利要求1所述的装置,其特征在于,所述指令包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令。3.根据权利要求1所述的装置,其特征在于,所述从运算模块为多个,所述互连模块,具体用于将多个从运算模块的输出神经元梯度逐级合并成中间向量。4.根据权利要求3所述的装置,其特征在于,如所互连模块为包括树状结构,所述树状结构为二叉树通路;所述二叉树通路包括:多个节点;其中,每个节点将上游的数据同样地发给下游的两个节点,以及将下游的两个节点返回的数据进行合并后返回给上游的节点。5.根据权利要求1所述的装置,其中,主运算模块,具体用于利用本层的输出神经元梯度向量与反向运算下一层的激活函数求导值对位相乘得到下一层的输入神经元梯度向量。6.根据权利要求4所述的装置,其中,主运算模块包括第一存储单元、第一运算单元、第一数据依赖关系判定单元,其中:第一存储单元,用于缓存主运算模块在计算过程中用到的输入神经元数据和输出数据;第一运算单元,完成主运算模块的各种运算功能;第一数据依赖关系判定单元,用于从第一存储单元读取输入的神经元向量,并通过H数模块发送给从运算模块;以及接收H数模块的中间结果向量,将中间结果向量发送到运算单元。7.根据权利要求4所述的装置,其中,每个从运算模块包括:第二运算单元、第二数据依赖关系判定单元、神经元缓存单元和权值缓存单元,其中:第二数据依赖关系判断单元,用于对神经元缓存单元和权值缓存单元的读写操作,保证对神经元缓存单元和权值缓存单元的读写不存在一致性冲突;神经元缓存单元,用于缓存输入神经元向量数据以及该从运算模块计算得到的输出神经元值;权值缓存单元,用于缓存该从运算模块在计算过程中需要的权值向量;第二运算单元,用于接收控制器单元发出的微指令并进行算数逻辑运算。8.根据权利要求1所述的装置,其中:所述将输入神经元梯度向量与该从运算模块对应的输入神经元数据计算得到本层的权值梯度具体包括:每个从运算模块,用于将输出神经元梯度向量中与该从运算模块相对应的标量数据与输出神经元向量相乘,得到本从运算模块在本层的权值梯度向量。9.根据权利要求8所述的装置,其中:所述对本层的权值梯度进行处理得到本层的第二权值梯度具体包括:在算出所有层的权值更新梯度向量之后,主运算模块,用于计算所有层的权值更新梯度的平方和sumsq_diff,然后对sumsq_diff进行开方得到l2norm_diff;如果l2norm_diff>clip_gradient,计算缩放因子scale_factor=clip_gradient/l2norm_diff,第二权值更新梯度=scale_factor*本层权值更新梯度;其中,clip_gradient为预设设定的正常数。10.根据权利要求9所述的装置,其中,所述依据第二权值梯度进行本层权值的更新具体包括:W’=η*w+α*(dw+m*dw’);其中,W’为本层更新后的权值,dw为第二权值梯度、α为指令设置的学习率,m指令设置的动量、η为指令设置的权重衰减系数;dw’为上一次更新权值时的第二权值梯度。11.根据权利要求10所述的装置,其中,每个从运算模块存储w、dw和dw’中与该从运算模块相对应的列向量。12.根据权利要求1所述的装置,其中,计算输出神经元梯度向量的过程为out_gradient=w*in_gradient,其中权值矩阵w和输入神经元梯度向量in_gradient的矩阵向量乘法可以划分为不相关的并行计算子任务,每个从运算模块计算出输出神经元梯度向量的部分和,所有的部分和在互连模块中完成拼接得到最后的输出神经元梯度向量。13.根据权利要求12所述的装置,其中,计算输出神经元梯度向量时,上一层的输出神经元梯度向量inputgradient乘以对应的激活函数导数得到本层的输入神经元梯度向量in_gradient,再与权值矩阵w相乘得到输出神经元梯度向量。14.根据权利要求13所述的装置,其中,inputgradient是第n+1层的输出神经元梯度向量,该向量首先要与正向运算过程中第n层的导数值相乘,得到第n层的输入神经元梯度向量,该过程在主运算模块中完成,由互连模块发往从运算模块,暂存在从运算模块的神经元存储单元中,然后,输入神经元梯度向量与权值矩阵相乘得到第n层的输出神经元梯度向量,在这个过程中,第i个从运算模块计算输入神经元梯度向量中第i个标量和权值矩阵中列向量的乘积,得到的输出向量在互连模块中进行拼接操作得到最后的输出神经元梯度向量outputgradient。15.一种执行人工神经网络全连接层反向训练指令的方法,其特征在于,所述方法应用于人工神经网络全连接层反向训练...

【专利技术属性】
技术研发人员:郭崎张士锦陈云霁陈天石
申请(专利权)人:北京中科寒武纪科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1