一种神经网络训练方法和装置制造方法及图纸

技术编号:20026730 阅读:28 留言:0更新日期:2019-01-06 05:28
本申请提供了一种神经网络训练方法,应用于阻变存储器RRAM上,该方法包括:将神经网络中第r层的神经元输入值输入到RRAM中,根据RRAM中的过滤器对神经元输入值进行计算,得到神经网络中第r层的神经元输出值,根据RRAM的核值、神经网络中第r层的神经元输入值、神经网络中第r层的神经元输出值以及神经网络中第r层的反向传播误差值进行计算,得到神经网络中第r层的反向传播更新值,将神经网络中第r层的反向传播更新值与预设阈值进行比较,当神经网络中第r层的反向传播更新值大于预设阈值,则根据神经网络中第r层的反向传播更新值对RRAM中的过滤器进行更新。本申请旨在通过设置预设阈值减少神经网络训练中的更新操作,从而延长RRAM的使用寿命。

【技术实现步骤摘要】
一种神经网络训练方法和装置
本申请数据处理领域,并且更具体地,涉及一种神经网络训练方法和装置。
技术介绍
神经网络(如深度神经网络)在计算机视觉、自然语言处理、大数据挖掘等领域得到广泛应用。神经网络计算具有如下两个典型特点:1)计算密集神经网络主要进行的运算为多维矩阵乘法,其计算复杂度一般为O(N3),即完成对N个数据的操作需要耗费的时间跟N的三次方成正比。例如,22层的googlenet(谷歌网络,一种神经元网络结构,由谷歌的研究者提出)一般需要6GFLOPS(Floating-pointOperationsPerSecond,每秒所执行的浮点运算)的计算量。因此对计算硬件和性能优化提出了较高要求。2)访存密集首先,神经网络的训练过程往往需要依赖海量的训练数据,如imagenet2012包含1400万幅图片;其次,神经网络包含上亿级的神经元的连接参数,尤其在训练过程中需要频繁更新;再者,神经网络在运算过程中会产生大量的中间结果,如梯度信息。训练数据、连接权重、中间结果等大量数据的访存开销对于数据存储结构和计算性能优化提出迫切要求。新兴的RRAM器件(阻变式存储器,ResistiveRandomAccessMemory)被认为是提升神经网络计算能效的器件之一。首先,RRAM是一种非易失性的存储器,且具备较高的集成密度,相比闪存FLASH设备有更高的存取速度,且耗电量更低,更合适于进行靠近处理器的数据存取,从而十分适合应用于手机终端等设备中的非易失性的数据存储介质。再者,RRAM存储单元利用阻值可变特性能够表征多值,而非传统存储单元的0和1二值。基于RRAM以上这些特性,通过RRAM组建一种交叉阵列结构,如图1利用RRAM单元的交叉阵列结构所示,非常适应神经网络本身的矩阵向量乘运算。通过使用RRAM的模拟电路形式,可以快速的实现数字电路中的乘加工作。例如,矩阵运算C=AxB中,产生某一列的n个目标数据,所对应的计算复杂度为O(n2),上述目标数据可以认为是矩阵A的所有数据乘以矩阵B的对应的列数据获得的。假设矩阵A为nxn大小,矩阵B的一列为nx1大小,则C矩阵(结果矩阵)的这一个对应列的n个目标数据,每一个元素的获得都需要一次n次乘加,总共的需要nxn次计算。而RRAM的计算中,可以通过DAC(DigitaltoAnalogConverter,数字/模拟转换器)和ADC(AnalogtoDigitalConverter,模拟/数字转换器)的协同作为,将此过程转换到基于RRAM的模拟电路计算的过程中。对所有的元素现有工作表明,利用RRAM存储单元搭建的交叉阵列结构对神经网络计算进行加速,同CPU或者GPU相比可提升100-1000倍的能效。然而RRAM的应用受到RRAM寿命的制约,即RRAM中单个单元的寿命受可擦写次数的限制,当单个单元的阻抗改变次数达到一定次数之后,阻抗的改变能力将变弱,从而影响RRAM的寿命,并产生错误。尤其是,在神经网络训练过程中,通常有大数据量的训练集进行大量的突触和神经元强度的训练,这个过程中将有大量的更新操作,从而产生大量的擦写任务,直接影响RRAM的使用寿命,并且,频繁的更新操作也会大幅增加硬错误的潜在发生可能性,从而影响RRAM的可靠性,其中,硬错误指的是RRAM中的阻抗已经不能够完成改变,从而在电路上永远呈现为断路(阻抗无穷大)或短路(阻抗无穷小)。对应的数值即为Stuck-at-0,即恒为0错误,或者stuck-at-1,即恒为1错误。
技术实现思路
本申请提供一种神经网络训练的方法和装置,以提高进行神经网络训练的RRAM的使用寿命。第一方面,提供一种神经网络训练方法,该方法应用于阻变存储器(ResistiveRandomAccessMemory,RRAM)上,包括:将神经网络中第r层的神经元输入值<ri1、ri2……rin>输入到所述RRAM中,根据所述RRAM中的过滤器(filter)对所述神经元输入值<ri1、ri2……rin>进行计算,得到所述神经网络中第r层的神经元输出值<ro1、ro2……rom>,其中,n为大于0的正整数,m为大于0的正整数;根据所述RRAM的核值、所述神经网络中第r层的神经元输入值<ri1、ri2……rin>、所述神经网络中第r层的神经元输出值<ro1、ro2……rom>以及所述神经网络中第r层的反向传播误差值<B1、B2……Bm>进行计算,得到所述神经网络中第r层的反向传播更新值<C1、C2……Cm>;其中,所述RRAM的核值为所述RRAM中的过滤器的矩阵值,所述神经网络中第r层的反向传播误差值<B1、B2……Bm>是根据所述神经网络第r层的神经元输出值<ro1、ro2……rom>和所述神经网络第r层的神经元参考输出值<rt1、rt2……rtm>得到的;将所述神经网络中第r层的反向传播更新值<C1、C2……Cm>与预设阈值进行比较,当所述神经网络中第r层的反向传播更新值<C1、C2……Cm>大于所述预设阈值,则根据所述神经网络中第r层的反向传播更新值<C1、C2……Cm>对所述RRAM中的过滤器进行更新。本方案通过设置预设阈值对神经网络训练中的更新操作进行判断,当该更新值大于该预设阈值时才执行该更新操作,由于在神经网络训练中权值更新的幅度整体上并不太大,因此该方案可以大大减少由神经网络训练中大量更新操作带给RRAM的擦写操作,从而延长了RRAM的使用寿命,也由于更少的更新操作,减少了RRAM发生更多硬错误的可能性,从而保障了RRAM的可靠性。结合第一方面,在第一方面的某些实现方式中,所述预设阈值为静态阈值或动态阈值;当所述预设阈值为静态阈值时,所述神经网络中所有层级的预设阈值的值相同,当所述预设阈值为动态阈值时,所述神经网络中不同层级的预设阈值的值不同或部分不同。本实现方式中的静态阈值为神经网络的更新操作提供了一个固定的比较阈值,即该神经网络中每一层的反向传播更新值都与该静态阈值进行比较,减少很多该静态阈值以下的擦写操作,从而延长RRAM的使用寿命,本实现方式中的动态阈值为神经网络中的不同层提供不同或部分不同的阈值,这是由于神经网络的误差传递使得神经网络中不同层网络的更新敏感度不同,为不同层的神经网络层设置不同或部分不同的阈值,可以更有针对性的进行更新操作,从而进一步保证了RRAM的使用寿命。结合第一方面,在第一方面的某些实现方式中,对所述RRAM进行错误测试,输出所述RRAM的硬错误分布图,根据所述RRAM的硬错误分布图对所述神经网络进行数据重排。由于RRAM的应用受很多非易失性存储的自然特性的制约,比如产生较多硬错误,又由于神经网络具有稀疏性,因此在本实现方式中,根据对RRAM进行错误测试得到RRAM的硬错误分布图,并进一步根据该硬错误分布图对神经网络进行数据重排,本文档来自技高网
...

【技术保护点】
1.一种神经网络训练方法,其特征在于,应用于阻变存储器(Resistive Random Access Memory,RRAM)上,所述方法包括:将神经网络中第r层的神经元输入值

【技术特征摘要】
1.一种神经网络训练方法,其特征在于,应用于阻变存储器(ResistiveRandomAccessMemory,RRAM)上,所述方法包括:将神经网络中第r层的神经元输入值<ri1、ri2……rin>输入到所述RRAM中,根据所述RRAM中的过滤器(filter)对所述神经元输入值<ri1、ri2……rin>进行计算,得到所述神经网络中第r层的神经元输出值<ro1、ro2……rom>,其中,n为大于0的正整数,m为大于0的正整数;根据所述RRAM的核值、所述神经网络中第r层的神经元输入值<ri1、ri2……rin>、所述神经网络中第r层的神经元输出值<ro1、ro2……rom>以及所述神经网络中第r层的反向传播误差值<B1、B2……Bm>进行计算,得到所述神经网络中第r层的反向传播更新值<C1、C2……Cm>;其中,所述RRAM的核值为所述RRAM中的过滤器的矩阵值,所述神经网络中第r层的反向传播误差值<B1、B2……Bm>是根据所述神经网络第r层的神经元输出值<ro1、ro2……rom>和所述神经网络第r层的神经元参考输出值<rt1、rt2……rtm>得到的;将所述神经网络中第r层的反向传播更新值<C1、C2……Cm>与预设阈值进行比较,当所述神经网络中第r层的反向传播更新值<C1、C2……Cm>大于所述预设阈值,则根据所述神经网络中第r层的反向传播更新值<C1、C2……Cm>对所述RRAM中的过滤器进行更新。2.如权利要求1所述的方法,其特征在于,所述预设阈值为静态阈值或动态阈值;当所述预设阈值为静态阈值时,所述神经网络中所有层级的预设阈值的值相同,当所述预设阈值为动态阈值时,所述神经网络中不同层级的预设阈值的值不同或部分不同。3.如权利要求1或2所述的方法,其特征在于,对所述RRAM进行错误测试,输出所述RRAM的硬错误分布图,根据所述RRAM的硬错误分布图对所述神经网络进行数据重排。4.如权利要求3所述的方法,其特征在于,所述根据所述RRAM的硬错误分布图对所述神经网络进行数据重排包括:将所述神经网络的稀疏数据排布到所述RRAM上恒为0的硬错误区域。5.如权利要求3或4所述的方法,其特征在于,所述对所述RRAM进行错误测试,输出所述RRAM的硬错误分布图包括:对所述RRAM中各个单元分别写入测试值,将所述各个单元的测试值与所述各个单元的实际读出值分别进行比较,得到所述RRAM中各个单元的硬错误情况,所述RRAM中各个单元的硬错误情况构成所述RRAM的硬错误分布图。6.如权利要求2至5任一所述的方法,其特征在于,所述当所述预设阈值为动态阈值时,所述神经网络中不同层级的预设阈值的值不同或部分不同,具体的,所述神经网络中不同层级的预设阈值的值不同包括:所述预设阈值的值随所述神经网络层级的由后至前逐层递减;所述神经网络中不同层级的预设阈值的值部分不同包括:所述神经网络中靠前层级的预设阈值的值小于所述神经网络中靠后层级的预设阈值的值,其中,所述神经网络中靠前层级为靠近所述神经网络输入层的层级,具体为第1层至第X层;所述神经网络中靠后层级为靠近所述神经网络输出层的层级,具体为第R-X层至第R层,其中,所述R为所述神经网络的总层数,X大于1且小于R。7.一种神经网络训练装置,其特征在于,应用于阻变存储器(ResistiveRandomAccessMemory,RRAM)上,所述装置包括:前向计算模块,用于将神经网络中第r层的神经元输入值<ri1、ri2……rin>输入到所述RRAM中,根据所述RRAM中的过滤器(filter)对所述神经元输入值<ri1、ri2……rin>进行计算,得到所述神经网络中第R层的神经元输出值<ro1、ro2……rom>,其中,n为大于0的正整数,m为大于0的正整数;反向计算模块,用于根据所述RRAM的核值、所述神经网络中第r层的神经元输入值<ri1、ri2……rin>、所述神经网络中第r层的神经元输出值<ro1、ro2……rom>以及所述神经网络中第r层的反向传播误差值<B1、B2……Bm>进行计算,得到所述神经网络中第r层的反向传播更新值<C1、C2……Cm>;其中,所述RRAM的核值为所述RRAM中的过滤器的矩阵值,所述神经网络中第r层的反向传播误差值<B1、B2……Bm>是根据所述神经网络第r层的神经元输出值<ro1、ro2……rom>和所述神经网络第r层的神经元参考输出值<rt1、rt2……rtm>得到的;比较模块,用于将所述神经网络中第r层的反向传播更新值<C1、C2……Cm>与预设阈值进行比较;更新模块,用于当所述神经网络中第r层的反向传播更新值<C1、C2……Cm>大于所述预设阈值,则根据所述神经网络中第r层的反向传播更新值<C1、C2……Cm>对所述RRAM中的过滤器进行更新。8.如权利要求7所述的装置,其特征在于,所述装置还包括阈值生成...

【专利技术属性】
技术研发人员:姚骏刘武龙汪玉夏立雪
申请(专利权)人:华为技术有限公司清华大学
类型:发明
国别省市:广东,44

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

1