一种支撑基于RRAM的神经网路训练的外围电路及系统的制作方法

文档序号:16507160发布日期:2019-01-05 09:06阅读:470来源:国知局
一种支撑基于RRAM的神经网路训练的外围电路及系统的制作方法

本发明涉及神经网络训练领域,尤其涉及用于支持基于rram的神经网路训练的外围电路。



背景技术:

近些年,神经网络尤其是深度神经网络在计算视觉、语音识别、智能控制等领域得到了广泛应用。深度神经网络训练计算具备两个典型特点:访存密集和计算密集。对于访存密集的特性,首先,神经网络训练往往需要依赖海量的训练数据,如imagenet2012包含1400万幅图片;其次,深度神经网络包含上亿级的神经元的连接参数,尤其在训练过程中需要频繁更新;再者,深度神经网络在运算过程中会产生大量的中间结果,如梯度信息。训练数据、连接权重、中间结果等大量数据的访存开销对于数据存储结构和计算性能优化提出迫切要求。对于计算密集的特性,深度神经网络的典型运算为多维矩阵乘法(运算复杂度为o(n3))及图优化;例如,22层的googlenet网络需要6gflops的计算量,因此对计算硬件和性能优化提出了较高要求。

阻变存储器(resistiverandomaccessmemory,rram)被认为是提升神经网络计算能效的器件之一。首先,rram具备非常高的集成密度;其次,rram是一种非易失性的存储器,可实现存储与计算的融合,从而大大减小访存开销;再者,rram存储单元利用阻值可变特性能够表征多值,而非传统存储单元的0和1二值。基于rram以上这些特性,通过rram组建一种交叉阵列结构,如图1所示,能够非常适应神经网络本身的矩阵向量乘运算。现有工作表明,利用rram存储单元搭建的交叉阵列结构对神经网络计算进行加速,同cpu或者gpu相比可提升100-1000倍的能效。

然而,现有工作还未充分地挖掘rram的优势,现有技术中的rram交叉阵列目前只能用于加速神经网络的前向计算,不能用于对计算要求更高的神经网络训练过程进行加速,神经网络训练主要包括前向计算、反向传播和权值更新三个步骤,现有技术缺少支撑相应计算的外围电路。

因此,需要一种外围电路以支撑基于raam的神经网络训练,提高神经网络训练的能效。



技术实现要素:

针对现有技术中存在的问题,本申请提供了一种用于支撑基于rram交叉阵列的神经网路训练的外围电路,旨在通过该外围电路支撑基于rram交叉阵列的神经网络训练,加速神经网络计算。

第一方面,本申请提供了一种外围电路,用于支撑基于阻变存储器rram交叉阵列的神经网络训练,其特征在于,包括:数据准备电路,用于将输入所述数据准备电路的第一数据进行第一预处理,且根据第一控制信号选择地将经所述第一预处理后得到的预处理数据导入所述rram交叉阵列的行或列中,所述第一数据包括用于所述神经网络训练的样本数据;数据选择电路,用于根据第二控制信号选择地从所述rram交叉阵列的行或列中导出第二数据,且对所述第二数据进行第二预处理得到第三数据;其中,所述第二数据为所述预处理数据在所述rram交叉阵列中经计算后得到的数据;所述第一控制信号与所述第二控制信号存在对应关系,所述对应关系用于指示:所述数据准备电路根据所述第一控制信号将所述第一数据进行第一预处理后导入所述rram交叉阵列的行中对应于所述数据选择电路根据所述第二控制信号从所述rram交叉阵列的列中导出所述第二数据,和,所述数据准备电路根据所述第一控制信号将所述第一数据进行第一预处理后导入所述rram交叉阵列的列中对应于所述数据选择电路根据所述第二控制信号从所述rram交叉阵列的行中导出所述第二数据;数据读取电路,用于权值更新控制操作和根据输入所述数据读取电路的第四数据进行最大池化操作得到第五数据,所述第四数据包括所述第三数据;反向训练计算电路,用于根据输入所述反向训练计算电路中的第六数据进行误差计算和求导计算,所述第六数据包括包括所述第五数据。

进一步地,该外围电路还包括:存储介质,用于存储所述样本数据及所述数据准备电路、所述数据选择电路、所述数据读取电路和所述反向训练计算电路中至少一个存入的数据。可选的,所述存储介质包括:缓冲寄存单元和样本数据存储单元;所述样本数据存储单元用于存储所述样本数据;所述缓冲寄存单元用于存储所述数据准备电路、所述数据选择电路、所述数据读取电路和所述反向训练计算电路中至少一个存入的数据。其中,所述数据准备电路、所述数据选择电路、所述数据读取电路和所述反向训练计算电路均通过高数据带宽与所述缓冲寄存单元进行数据的读取和写入。其中,缓冲寄存单元与该外围电路的各个电路通过高数据带宽(高带宽)进行数据的交互,其中,高带宽为技术领域一般意义上的理解,也可能随着技术发展而变化,在此不作具体限定,因此神经网络训练过程中产生的各种数据可以暂存于缓冲寄存单元,这样能提高计算数据读写效率。可选的,缓冲寄存单元可以是独立于存储电路的存储单元。

该外围电路能够支撑基于rram交叉阵列的神经网络训练的前向计算、反向传播、权值更新三个步骤的计算,加速神经网络训练。

第一方面的一种可能的实现方式,所述数据准备电路包括:字线驱动和解码器wdd、两个第一传输门tg;所述wdd用于接收所述第一数据,且将所述第一数据进行所述第一预处理得到预处理;所述两个第一tg并联,且与所述wdd的输出端口连接;其中,所述两个第一tg包括第一行tg和第一列tg,且所述第一行tg和所述第一列tg不在同一时刻导通;所述第一行tg用于根据所述第一控制信号导通所述wdd连接所述rram交叉阵列的各行的通路,且将所述wdd输出的预处理数据导入所述rram交叉阵列的各行;所述第一列tg用于根据所述控制信号导通所述wdd连接所述rram交叉阵列的各列的通路,且将所述所述wdd输出的预处理数据导入所述rram交叉阵列的各列。

在wdd与rram交叉阵列之间设置两个传输门,根据具体计算需求通过控制信号控制不同的传输门的导通与闭合,选择地将wdd与rram交叉阵列的各行之间的通路打开或者将wdd与rram交叉阵列的各列之间的通路打开,通路打开后进行相应的数据交互;这种传输门的设计,可以在不增加电路复杂程度的情况下,可以通过复用wdd及数据准备电路中其他单元能够实现将数据导入rram交叉阵列中的行还是列中。可选的,在wdd与rram交叉阵列之间设置一种二选一的导通开关电路来替代上述的两个传输门,或者其他类似能实现同样目的电路。

第一方面的另一种可能的实现方式,所述数据选择电路包括:预处理电路、多路选择器和两个第二tg;所述两个第二tg并联,且与所述多路选择器的输入端口连接;其中,所述第二tg包括第二行tg和第二列tg,且所述第二行tg和所述第二列tg不在同一时刻导通;所述第二行tg用于根据所述第二控制信号导通所述多路选择器连接所述rram交叉阵列的各行的通路;所述第二列tg用于根据所述第二控制信号导通所述多路选择器连接所述rram交叉阵列的各列的通路;所述多路选择器用于通过所述两个第二tg中导通的通路从所述rram交叉阵列导出所述第二数据;所述预处理电路用于对所述多路选择器导出的所述第二数据进行所述第二预处理得到所述第三数据,且将所述第三数据存入所述缓冲寄存单元中。

在多路选择器与rram交叉阵列之间设置两个传输门,根据具体计算需求通过控制信号控制不同的传输门的导通与闭合,选择地将多路选择器与rram交叉阵列的各行之间的通路打开或者将多路选择器与rram交叉阵列的各列之间的通路打开,通路打开后进行相应的数据交互;这种传输门的设计,可以在不增加电路复杂程度的情况下,可以通过复用多路选择器、预处理电路及数据读取电路的其他单元能够实现从rram交叉阵列中的行或是列中导出经过rram交叉阵列计算的结果。可选的,在多路选择器与rram交叉阵列之间设置一种二选一的导通开关电路来替代上述的两个传输门,或者其他类似能实现同样目的电路。

第一方面的另一种可能的实现方式,所述数据读取电路包括:读取放大电路、最大池化操作电路;所述读取放大电路用于从所述缓冲寄存单元或所述数据选择电路中读取所述第四数据;所述最大池化操作电路用于根据所述读取放大电路读取的所述第四数据进行最大池化操作得到所述第五数据,且将所述第五数据存入所述缓冲寄存单元中,所述第五数据为前向计算的值;其中,所述最大池化操作电路包括至少一个第一寄存器;所述至少一个第一寄存器中的每个第一寄存器的输入端口连接一个第一选择器,所述第一选择器用于根据第三控制信号选择地读取0或从所述缓冲寄存单元中读取待最大池化操作的操作数,且将所述操作数输入相应的所述第一寄存器。

在每一个寄存器的输入端口连接一个二选一的选择器,通过控制二选一的选择器能够选择地向寄存器输入不同数据;当某个二选一选择器读取0时,意味着相应的寄存器不参与最大池化操作,等同于最大池化操作电路不存在该输入为0的寄存器;通过二选一选择器控制寄存器的个数,满足不同位数的待最大池化操作数据的计算。可选的,所述最大池化操作电路还包括四个第二寄存器,第二寄存器用于指示没有连接选择器的寄存器,第二寄存器用于从所述缓冲寄存单元中读取待最大池化操作的操作数。一般而言,需要进行最大池化操作的计算的操作数是4位,也就是说,一般情况下至少有4个寄存器用于读取待最大池化操作的数据,这样能够减少不必要的选择器,降低相应成本。

第一方面的另一种可能的实现方式,所述反向训练计算电路包括:误差计算电路和求导计算电路;所述误差计算电路,用于根据从所述数据读取电路或所述缓冲寄存单元中读取所述第六数据计算误差,且将计算得到的误差存入所述缓冲寄存单元中;所述求导计算电路,用于根据从所述数据读取电路或所述缓冲寄存单元中读取所述第六数据计算非线性函数的导数,且将计算得到的导数存入所述缓冲寄存单元中;其中,所述第六数据包括前向计算的值。该反向训练计算电路能够支撑基于rram交叉阵列的神经网络训练实现求导与误差两个重要的计算。可选的,所述非线性函数包括:relu函数、sigmoid函数。

第一方面的另一种可能的实现方式,所述求导计算电路包括:第二选择器、第三选择器、比较器、第一减法器和乘法器;所述第二选择器的输出端口与所述第一减法器的输入端口连接;所述第一减法器的输出端口与所述乘法器的输入端口连接;所述乘法器的输出端口与所述第三选择器的第一输入端口连接;所述比较器的输出端口与所述第三选择器的第二输入端口连接;其中,所述第二选择器用于从所述数据读取电路或所述缓冲寄存单元中读取前向计算的值;所述第一减法器用于将所述第二选择器输入的所述前向计算的值与1进行相减得到第一差值;所述乘法器用于将输入的所述第一差值进行相乘的第一乘积;所述比较器用于将所述数据读取电路输入的所述前向计算的值进行比较操作得到比较结果;所述第三选择器用于根据第四控制信号选择地从所述比较器中选取所述比较结果或从所述乘法器中选取所述第一乘积作为导数存入所述缓冲寄存单元。

神经网络训练采用的典型的非线性函数主要包括relu(rectifiedlinearunits)函数和sigmoid函数,其中,由比较器进行比较操作后输出的结果是针对relu函数的求导计算结果,经过减法器及乘法器相应操作由乘法器输出的结果是针对sigmoid函数的求导计算,通过控制第三选择器选择输出针对relu函数的求导还是针对sigmoid函数的求导,能够满足基于rram交叉阵列的神经网络训练中两种主要的求导计算;可选的,所述求导计算电路也可以应用于其他非基于rram交叉阵列的神经网络的求导计算。

第一方面的另一种可能的实现方式,所述误差计算电路包括:第四选择器、加法器、第二减法器;所述第四选择器的输出端口与所述加法器的输入端口连接;所述加法器的输出端口与所述第二减法器的输入端口连接;其中,所述第四选择器用于根据第五控制信号选择地读取0或读取偏重r,且将读取的0或r输入所述加法器;所述加法器用于从所述数据读取电路或所述缓冲寄存单元中读取第七数据,且将所述第四选择器输入的数据与读取的所述第七数据进行相加得到第一和值;所述第二减法器用于从所述数据读取电路或所述缓冲寄存单元中读取第八数据,且将所述加法器输入的所述第一和值与所述第八数据进行相减得到误差。

通过第四选择器根据不同的控制信号选取不同数据,能够满足基于rram交叉阵列的监督学习神经网络训练和强化学习神经网络训练两种神经网络训练的误差计算;可选的,所述误差计算电路也可以应用于其他非基于rram交叉阵列的神经网络的求导计算。

可选的,所述神经网络训练为监督学习神经网络训练;所述第四选择器具体用于根据所述第五控制信号读取0,且将读取的0输入所述加法器;所述加法器具体用于从所述缓冲寄存单元中读取所述样本数据对应的真值y*,且将所述样本数据对应的真值y*与所述第四选择器输入的0进行相加得到所述第一和值并输入所述第二减法器;所述第二减法器具体用于从所述数据读取电路或所述缓存寄存单元读取前向计算的值为f(x),且将所述前向计算的值f(x)与所述加法器输入的所述第一和值进行相减得到误差。

可选的,所述神经网络训练为深度强化学习神经网络训练;所述第四选择器具体用于根据第五控制信号读取r,且将所述r输入所述加法器;所述加法器具体用于从所述数据读取电路或所述数据缓存寄存单元中读取前向计算的值γmaxaq'(s',a';wb),且将所述前向计算的值γmaxaq'(s',a';wb)与所述r相加后得到所述第一和值并输入所述第二减法器;

所述第二减法器具体用于从所述数据读取电路或所述缓冲寄存单元读取q(s,a;wa),且将所述q(s,a;wa)所述加法器输入的所述第一和值相减得到误差。

第一方面的另一种可能的实现方式,所述数据读取电路还包括权值更新控制电路;

所述权值更新控制电路用于判别权重值是正值还是负值,且根据判别结果分别输出第一reset信号和第二reset信号;其中,所述权重值用第一权重值w+和第二权重值w-的差值表示,所述第一权重值w+和所述第二权重值w-均为正值,所述第一reset信号用于指示所述权重值是正值,所述第二reset信号用于指示所述权重值是负值,所述第一reset信号用于控制存储所述第二权重值w-的所述rram交叉阵列的对应节点进行reset操作,所述第二reset信号用于控制存所述第一权重值w+的所述rram交叉阵列的对应节点进行所述reset操作,所述reset操作用于指示从低阻值向高阻值进行调整。神经网络训练具有访问密集的特性,在rram用于神经网络训练时,频繁的写操作会大幅降低rram的可靠性,尤其对于rram的set操作,即从高阻值调到低阻值,通过权值更新控制电路判别权重值是正值还是负值,并将结果作为控制信号控制连接存储w-或w+的rram交叉阵列的开关,对rram交叉阵列进行reset操作,避免对rram进行set操作,提高rram用于神经网络训练的可靠性。

相对于现有技术,本申请提供了一种用于支撑基于rram交叉阵列的神经网路训练的外围电路,旨在通过该外围电路支撑基于rram交叉阵列的神经网络训练,加速神经网络计算。

第二方面,本申请提供了一种神经网络训练系统,该系统包括:控制电路、阻变存储器rram交叉阵列、上述第一方面各可能的实现方式中的任一个所描述的外围电路;所述控制电路用于产生多种控制信号,所述多种控制信号至少包括:第一控制信号、第二控制信号、第三控制信号、第四控制信号、第五控制信号。

本申请提供的神经网络系统能够加速神经网络训练,相比由中央处理器(centralprocessingunit,cpu)或者图形处理器(graphicsprocessingunit,gpu)进行神经网络训练中的运算,提升了至少5.7倍。

附图说明

图1是本申请的提供的一种rram交叉阵列结构的示意图;

图2是本申请的一个实施例提供的一种神经网络训练系统的结构示意图;

图3是本申请的一个实施例提供的一种数据准备电路的示意图;

图4是本申请的一个实施例提供的一种数据选择电路的示意图;

图5是本申请的一个实施例提供的一种数据读取电路的示意图;

图6是本申请的一个实施例提供的一种最大池化操作电路的示意图;

图7是本申请的一个实施例提供的一种最大池化操作电路的示意图;

图8是本申请的一个实施例提供的一种权值更新控制电路的示意图;

图9是本申请的一个实施例提供的一种求导计算电路的示意图;

图10是本申请的一个实施例提供的一种误差计算电路的示意图;

图11是本申请的一个实施例提供的一种前向计算的数据流向示意图;

图12是本申请的一个实施例提供的一种数据流入和流出rram交叉阵列的示意图;

图13是本申请的一个实施例提供的一种反向传播数据流向示意图;

图14是本申请的一个实施例提供的一种数据流入和流出rram交叉阵列的示意图

图15是本申请的一个实施例提供的一种权值更行数据流向示意图;

图16是本申请的一个实施例提供的一种深度强化学习神经网络训练的示意图。

具体实施方式

下面将结合附图,对本申请实施例中的技术方案进行描述。

本申请提供的一种外围电路可以应用基于阻变存储器(resistiverandomaccessmemory,rram)交叉阵列(crossbar)的神经网络训练,当然也可以应用到基于类似于rram性能的其他器件的神经网络训练,以支撑神经网络训练主要的三个步骤:前向计算、反向传播和权值更新的计算,当然地,也可以仅用于前向计算、反向传播和权值更新的步骤中的一个或多个步骤的计算,神经网络训练不限于监督学习神经网络训练、深度强化学习神经网络训练,也可以应用于其他的神经网络训练或新出现的神经网络训练。如图2所示,是本申请的一种可能的应用场景下的系统架构示意图。存储介质(,memorysubarray,memsubarray)与功能电路(fullfunctionsubarray,ffsubarray)进行通信,实现功能电路将数据存入存储介质或从存储介质中读取数据。存储介质可以是任何形式的非易失性存储介质,在此不作限制。缓冲寄存单元可以是存储介质中的一部分,也可以是单独的存储介质,当缓冲寄存单元作是单独的存储接介质时,可以是任何形式的非易失性或易失性存储介质,该易失性存储介质是指能暂时存数数据,断电后会丢失数据的存储介质。缓冲寄存单元与该外围电路的功能电路可以通过高数据带宽(高带宽)进行数据的交互,其中,高带宽为技术领域一般意义上的理解,也可能随着技术发展而变化,在此不作具体限定,因此将神经网络训练过程中产生的一些中间数据可以暂存于缓冲寄存单元,这样能提高计算数据读写效率。功能电路的划分是为更方便的描述该应用场景下的系统架构,功能电路主要包括:数据准备电路、数据选择电路、数据读取电路和反向训练计算电路。功能电路中的各电路之间可以进行通信用于数据传输,且功能电路中的各电路可以与存储介质、缓冲寄存单元进行通信用于读取或写入数据。其中,数据准备电路与rram交叉阵列进行通信,用于向rram交叉阵列导入数据;数据选择电路与rram交叉阵列进行通信,用于从rram交叉阵列中导出数据。rram具有阻值可变特性,能够表征多值,不同于传统存储介质只能表达0和1二值,有rram构成的交叉阵列结构,非常适应神经网络中的矩阵向量乘运算,特别指出的是,rram交叉阵列的构造可以根据神经网络结构具体排布,以及rram交叉阵列与神经元的具体运算,本申请均不作任何限制。控制电路controller用于通过控制信号控制功能电路的各个电路的一系列操作,可选的,控制电路还用于以及rram阵列的操作,具体地,例如,控制电路向数据准备电路发送一个控制信号,数据准备电路接收到该控制信号后导通与控制信号相应的开关以使得数据电路与rram交叉阵列的各行的通路打开,实现数据准备电路向rram交叉这列的各行导入数据。

上述实施例描述的数据准备电路、数据选择电路、数据读取电路、反向训练计算电路的形式通常情况下是一种可以实现上述实施例所描述的相应功能的电路结构或是硬件结构,控制电路可以是能够产生控制信号的任何一种控制器,也可以是中央处理器、图像处理器等器件,并且上述数据准备电路、数据选择电路、数据读取电路、反向训练计算电路以及控制电路可以装配在一个基板上或多个基板上,值得注意的是也可以制作成一种集成电路。上述实施例描述的系统架构整体可以组成一个专门用于神经网络训练的设备;也可以将该系统架构组装在一台设备中,例如计算机、服务器、终端;在技术可实现的情况下,也可以将整个系统架构整体高度集成在硅片上;需要注意的,该系统架构中的各电路在不影响其功能的前提下也可以分别置于不同的设备中,通过无线或有线进行通信,例如将存储介质与缓冲寄存单元、功能电路、rram交叉阵列分别置于两个设备。总之,其系统架构本质上没有发生变化,任何形式的呈现都落入本申请的保护范围内。该系统应用于支撑基于rram的神经网络训练,包括前向计算、反向传播和权值更新,相比由中央处理器(centralprocessingunit,cpu)或者图形处理器(graphicsprocessingunit,gpu)进行神经网络训练中的运算,提升了至少5.7倍。

下面对本申请实施例中可能所涉及的一些通用概念或者定义作出解释,需要说明的是,本文中的一些英文简称可能随着神经网络技术演进发生变化,具体演进可以参考相应标准或权威学术的描述;客观地,一个概念或定义也可能存在不同的名称,例如阻变存储器的英文简称可以是rram,也可以是reram。

本申请文本及附图可能涉及的英文简称及其对应的中文名称和英文全称,如下:

rramresistiverandomaccessmemory阻变存储器

volvoltagesource电压源

adcanalogtodigitalconverter模拟/数字转换器

dacdigitaltoanalogconverter数字/模拟转换器

wddwordlinedriveranddecoder字线驱动和解码器

tgtransfergate传输门

ampamplifier放大器

wdwritedriver写驱动器

swswitch开关

regregister寄存器

compcomparer比较器

mulmultiplier乘法器

addadder加法器

subsubtractor减法器

sasensingamplifier读出放大器

附图中涉及的一些英文描述均为本技术领域的技术人员可以理解的,在此未能全部地释明,并不影响理解本申请所描述的技术方案。

本申请中所述的“数据”,通常情况下以电信号的形式传递,例如电流信号、电压信号,电信号可以用于指示与神经网络训练相关的样本数据、预处理结果、各环节的计算结果等。

本申请的附图中涉及的buffer,通常情况下对应的是图2对应的实施例中的缓冲寄存单元。

下面将结合附图,对本申请实施例所提供的技术方案进行更为详细的描绘。

本申请的一个实施例描述了一种用于支撑基于rram的神经网络训练的外围电路结构,该外围结构包括:数据准备电路、数据选择电路、数据读取电路、反向训练计算电路;可选的,该外围电路还包括存储器,该存储器可以划分出缓冲寄存单元。

本申请的一个实施例描述了一种数据准备电路,如图3所示。该数据准备电路用于根据控制信号选择地将输入数据准备电路中的数据进行预处理后,导入rram交叉阵列的行还是列中。可选的,上述控制信号可以由控制单元根据当前计算过程产生,具体的是前向计算和反向传播对应的控制信号是不同的,数据准备电路接收不同的控制信号分别作出相应的操作,例如,若当前计算为神经网络前向计算时,控制单元发送给数据准备电路的控制信号,使得数据准备电路将连接rram交叉阵列的各行的通路打开,且将其预处理的结果导入rram交叉阵列的各行中;若当前计算为神经网络反向传播时,控制单元发送给数据准备电路的控制信号,使得数据准备电路将连接rram交叉阵列的各列的通路打开,且将其预处理的结果导入rram交叉阵列的各列中。需要注意的,连接rram交叉阵列的各行或各列的通路在同一时刻只有一路可以打开。

进一步地,数据准备电路划分为两个传输门(transfergate,tg)和字线驱动和解码器(wordlinedriveranddecoder,wdd)两个组成部分,图3中除了两个tg之外的电路结构构成该字线驱动和解码器wdd。其中,wdd用于对输入数据准备电路中的数据进行预处理,预处理后的结果经过来两个tg中的一个tg传输给rram交叉阵列中。通过控制信号对上述数据准备电路中的两个tg的导通还是闭合进行控制,其中一个tg导通可以使得数据准备电路将连接rram交叉阵列的各行的通路打开,对应上述的当前计算为神经网络前向计算;另一个tg导通可以使得数据准备电路将连接rram交叉阵列的各列的通路打开,对应上述的当前计算为神经网络反向传播。两个tg不在同一时刻同时导通,具体地根据当前计算过程产生的控制信号导通或闭合。可选的,用一种二选一的开关器件代替两个tg。

通过在两个传输门tg控制数据准备电路与rram交叉阵列的通路,复用一个wdd电路,根据当前计算选择地将数据导入rram交叉阵列的各行或是各列,即可以支撑神经网络的前向计算和反向传播,这样的电路结构更为简单,成本低。

本申请的一个实施例描述了一种数据选择电路,如图4所示。该数据选择电路用于根据控制信号选择地从rram交叉阵列的各行还是rram交叉阵列的各列中导出数据,且对导出的数据进行相应的非线性计算和减法操作,并将处理后数据输出给下一个电路单元,例如数据选择电路。与数据准备电路类似,其中数据选择电路接收到的控制信号由控制单元根据当前计算过程产生,不再赘述。

进一步地,数据选择电路也可以划分为两个tg和多路选择器(columnmux)、预处理电路两个组成部分,图4中除了两个tg和多路选择器之外的电路结构构成预处理电路。其中,多路选择器用于从rram交叉阵列中经过两个tg中的一个tg导出的数据,预处理电路用于进行非线性函数计算和减法操作等预处理。与数据准备电路中的两个tg类似,不同之处在于,数据选择电路在两个tg中的一个tg导通时是从rram交叉阵列中的行或列中导出数据,具体如何控制tg可以参见数据准备电路的相应描述,在此不再赘述。

通过两个传输门tg控制数据选择电路与rram交叉阵列的通路,复用一个多路选择器和预处理上电路,根据当前计算选择地从rram交叉阵列的各行或是各列导出数据,即可以支撑神经网络的前向计算和反向传播,这样的电路结构更为简单,成本低。

本申请的一个实施例描述了一种数据读取电路,如图5所示,数据读取电路包括读取放大电路、最大池化操作电路和权值更新控制电路。该数据读取电路用于权值更新控制操作和对上述数据选择电路输入的数据进行最大池化操作,且将所述最大池化操作后得到的数据存入缓冲寄存单元中。图5中除了最大池化操作电路和权值更新控制电路之外的电路结构构成读取放大电路;该读取放大电路用于从缓冲寄存单元或数据选择电路读取数据并进行处理后传输给最大池化操作电路。图6所示为该数据读取电路中的最大池化操作电路,神经网络前向计算时的最大池化操作一般是4位操作数的求最大池化,而以深度强化学习为代表的神经网络训练或计算过程中,还会涉及操作数位数大于4的的求最大池化操作,图6中的最大池化操作电路不仅可以支撑4位操作数的求最大池化操作,还可以支撑大于4多位操作数的求最大池化操作,可以根据具体需求灵活调整。该最大池化操作电路包括m个寄存器(register,reg),即reg1,reg2…regm;其中,除了reg1,reg2,reg3,reg4之外的reg5-regm的寄存器中的每个寄存器还连接一个二选一的多路选择器。结合图7进一步说明,当目前为神经网络计算中典型的包含4位操作数的最大池化操作时,与reg5-regm中每个寄存器通过与其连接的二选一的多路选择器读取0,即与reg5-regm中每个寄存器相连接的二选一的多路选择器根据控制信号选择读取0输给相应的寄存器;而前4位寄存器仍从缓存寄存单元中读取待最大池化操作的4位操作数。当目前为深度强化学习的最后一层求最大值操作时,根据操作数的数目n,控制reg5-regn中的每个寄存器单元对应的二选一选择器从缓存寄存单元中读取待最大池化操作的n位操作数,reg(n+1)-regm中的每个寄存器单元对应的二选一的多路选择器根据控制信号读取0。

可选的,如图6所示的最大池化操作电路中的reg1-m都连接一个二选一的多路选择,能够更灵活地调整从缓冲寄存单元中正常读取数据的寄存器个数,实现位数小于4操作数的求最大池化操作。

通过在最大池化操作电路中增加与二选一的多路选择器连接的寄存器,能够支撑涉及多位操作数的求最大池化操作。

由于rram受工艺和制造材料的限制,对rram进行set操作,set操作是指从高阻值调整到低阻值,容易造成rram存储值的突变,降低rram的可靠性;然而神经网络训练时又需要频繁地写操作。rram交叉阵列每个存储节点无法存储负值,为了利用rram表达权重,每个权重w被分解成w+和w-两部分存储在两套rram交叉阵列对应的节点上,其中w+和w-都为正值。每个权重w的真实值和正负由两部分权重进行做差得到,即w=w+-w-。本申请的发明思路为:当神经网络反向训练时求得的权重调整为负值时,意味着需要减小权重,其中权重对应的为rram阻值的倒数,即电导,即增大减小对应rram存储节点的电导值,为减少set操作,只对存储w+的rram交叉阵列对应节点进行reset操作,reset操作是指低阻值调整到高阻值,则电导值从高到低。反之,若神经网络反向训练时求得的权重调整为正值时,意味着需要增大权重,即增大对应rram存储节点的电导值,只对存储w-的rram交叉阵列对应节点进行reset操作,则电导值从低到高。

为了实现上述权值更新的控制,可选的,数据读取电路还包括权值更新控制电路,如图8所示。该权值更新控制电路用于控制经网络训练过程中的权重值或参数的更新。

进一步地,该权值更新控制电路包括异或判别子电路,用于判别输入权值更新控制电路中的权重是正值还是负值,且根据判别结果由控制单元产生第一控制信号或第二控制信号,第一控制信号用于指示权重值是正值,第二控制信号用于指示权重值是负值,第一控制信号控制存储w-的rram交叉阵列的对应节点进行reset操作,第二控制信号用于控制存w+的rram交叉阵列的对应节点进行reset操作。更为具体地,若异或电路运算结果输出为1则代表为正,则控制连接存储w-的rram交叉阵列对应的开关打开,从而完成对应的权重更新操作。反之,若异或电路运算结果输出为0则代表为负,则控制连接存储w+的rram交叉阵列对应的开关打开,从而完成对应的权重更新操作。

通过权值更新控制电路对权值更新的方式进行优化,减少set操作,能够提高rram写的可靠性。

本申请的一个实施例描述了一种反向训练计算电路,该反向训练计算电路用于将输入反向训练计算电路中的数据进行误差计算和求导计算。反向训练计算电路包括求导计算电路和误差计算电路。

图9所示为本申请的一个实施例描述的求导计算电路。该求导计算电路包括两个两路选择器、比较器、减法器和乘法器,可以针对神经网络训练涉及的典型非线性函数进行求导计算,例如relu(rectifiedlinearunits)函数、sigmoid函数。两种非线性函数的导数如下所示:

relu函数导数:

sigmoid函数导数:f′(x)=f(x)(1-f(x))

该求导计算电路的一种具体结构参见图9,其中,一个两路选择器(位于图9中的右上区域)的输出端口与减法器的输入端口连接;减法器的输出端口与乘法器的输入端口连接;乘法器的输出端口与另一个两路选择器(位于图9中的下面区域)的一个输入端口连接;比较器的输出端口与该两路选择器的另一个输入端口连接。

针对relu函数的求导计算,求导计算电路将从数据读取电路输出的数据输入求导计算电路的比较器(comparer,comp)中进行比较操作后输出的结果为relu函数的求导计算结果。

针对sigmoid函数的求导计算,求导计算电路将从数据读取电路或缓冲寄存单元中读取前向计算的值f(x),并将f(x)输入求导计算电路的减法器与1进行做差,在将作差的结果输上入求导计算电路的乘法器进行相乘,该乘法器输出结果为sigmoid函数的求导计算结果。

求导计算电路的根据控制信号通过与其比较器的输出端和乘法器的输出端相连的两路选择器选择地从其比较器还是乘法器中选取计算结果输出。其中,控制信号根据当前求导计算针对的函数不同由控制电路产生不同的控制信号;例如,针对relu函数进行求导计算,那么控制信号会控制与求导计算电路的比较器相连的两路选择器选取比较器输出的结果作为求导计算电路的输出结果,实现针对relu函数的求导计算;或者,针对sigmoid函数进行求导计算,那么控制信号会控制与求导计算电路的乘法器相连的两路选择器选取乘法器输出的结果作为求导计算电路的输出结果,实现针对sigmoid函数的求导计算。进一步地,求导计算电路将输出结果存入缓冲寄存单元/存储介质中。

通过求导计算电路可以支撑基于rram的神经网络训练中的求导计算,提高神经网络训练的求导计算的效率。

图10所示为本申请的一个实施例描述的误差计算电路。该误差计算电路包括两路选择器、加法器、减法器,可以用于进行神经网络训练过程中涉及的误差计算,该神经网络训练典型的为监督学习训练和深度强度学习训练。

该误差计算电路的一种具体结构参见图10,其中,误差计算电路中的两路选择器的输出端口与其加法器的输入端口连接;该加法器的输出端口与误差计算电路中的减法器的输入端口连接;两路选择器用于根据接收到的控制信号选择地读取0或读取r,其中r为偏重,存储在存储器中,可根据训练次数动态刷新;加法器用于根据控制信号选择地从缓冲寄存单元中读取y*或数据读取电路输出的γmaxaq'(s',a';wb)值;且将输入的数据进行相加操作;减法器用于根据控制信号选择地从缓冲寄存单元中读取前向计算的计算值f(x)或q(s,a;wa),且将输入的数据进行相减操作。

上述控制信号根据神经网络训练的不同产生相应的控制信号,以控制误差计算电路中的两路选择器、加法器、减法器读取的具体数据。下面以监督学习训练和深度强化学习训练为例,详细的描述误差计算电路:

若神经网络训练为监督学习神经网络训练,控制信号控制误差计算电路中的两路选择器选择0并输入与其相连的加法器,误差计算电路从缓冲寄存单元中读取神经网络训练的样本数据中的真值y*并输入加法器,加法器将y*与0相加并将相加的结果输入与其相连的减法器,误差计算电路从缓冲寄存单元读取神经网络前向计算值f(x)并输入该减法器,完成f(x)-y*的操作,得到针对监督学习神经网络训练的误差计算结果;进一步地,将得到的误差计算结果传输给数据准备电路进行法相训练计算和误差传播。

若神经网络训练为深度强化学习神经网络训练,控制信号控制误差计算电路中的两路选择器选择r并输入与其相连的加法器,误差计算电路从缓冲寄存单元中或数据读取电路中读取前向计算的值γmaxaq'(s',a';wb)并输入加法器,加法器将γmaxaq'(s',a';wb)与r相加并将相加的结果输入与其相连的减法器,误差计算电路从缓冲寄存单元读取q(s,a;wa)并输入改减法器,减法器将加法器输入的相加结果与q(s,a;wa)进行做差;进一步地,将得到的误差计算结果传输给数据准备电路进行法相训练计算和误差传播。

通过误差计算电路可以支撑基于rram的神经网络训练中的误差计算,提高神经网络训练的误差计算的效率。

本申请的一个实施例以监督学习为例,详细地描述本申请的实施例描述的外围电路支撑基于rram的监督学习神经网络训练的过程,主要包括前向计算、反向传播、权值更新。

1)前向计算

从存储器中读取用于监督学习神经网络训练的样本数据(x,y),将读取存入缓冲寄存单元(bufferarray)中,其中x为该神经网络前向计算的输入数据,y为神经网络前向计算输出对应的真值,数据流向如图11中编号为1的箭头所示。样本数据x同时被送入多个rram交叉阵列对应的数据准备电路中进行预处理,如图11中编号为2的箭头方向所示。由于是前向计算,数据经过如图3所示的数据准备电路预处理后,数据准备电路中的与rram交叉阵列的各行通路相连的tg接收到控制信号,控制tg导通使得数据准备电路将连接rram交叉阵列的各行的通路打开,样本数据x经过打开的连接rram交叉阵列的各行的通路流入rram交叉阵列中进行矩阵向量乘计算。

继而,如图12所示,将样本数据x流入rram交叉阵列的每行中与rram交叉阵列每个节点完成模拟运算,并将输出结果从rram交叉阵列的每一列输出。然后,如图4所示的数据选择电路中的与rram交叉阵列的各列通路相连的tg接收到控制信号,控制tg导通使得数据选择电路将连接rram交叉阵列的各列的通路打开,从而利用数据选择电路中的选择器columnmux有选择的将rram交叉阵列计算结果按列读出。

再则,经由数据读取电路中的如图6所示的最大池化电路中的reg5-regm中每个寄存器所对应的二选一多路选择器接收到控制信号,接收到控制信号的二选一多路选择器输入为0,这样就可以完成针对前向计算的4位操作数的最大池化操作,最后将计算结果存入缓存寄存单元中,数据流向如图11中编号为3的箭头所示。

2)反向传播

误差计算:从缓存寄存器中读取前向计算输出结果y’与真值y,同时送入图10所示的误差计算电路,通过控制图10所示的误差计算电路,输出当前神经网络前向计算的值与真值之间的误差δy,将误差δy存入缓冲寄存单元中,具体误差计算可以参见图10对应的实施例的描述,在此不再赘述。

求导计算:如图13中编号为1的箭头所示,将存储在缓冲寄存单元中的误差计算电路计算的误差δy送入如图9所示的反向训练计算电路,用于与求导计算电路计算的导数一同输给相应单元计算梯度误差,具体地,根据误差δy与求导计算得到的导数进行点乘操作算出来梯度误差,计算梯度误差的单元,本申请不做限定,并且梯度误差用于与权重值相乘算出上一层的误差,继而可以一层一层的往前传播。求导运算过程需要根据待求导的函数为relu还是sigmoid通过控制图9所示的求导计算电路实现对应的求导计算,具体求导计算可以参见图9对应的实施例的描述,再次不再赘述。

反向传播:求导计算电路求得的导数(即梯度),一路送入神经网络对应的rram交叉阵列进行反向传播,数据流向为图13中编号为2的箭头方向。具体计算过程为:求导计算电路计算的导数经过如图3所示的数据准备电路预处理后,数据准备电路中的与rram交叉阵列的各列的通路相连的tg接收到控制信号,控制tg导通使得数据准备电路将连接rram交叉阵列的各列的通路打开,求导计算电路计算的导数经过打开的连接rram交叉阵列的各列的通路流入rram交叉阵列中。

继而,如图14所示,求导计算电路计算的导数流入rram交叉阵列的每一个列中进行反向运算(与神经网络前向计算相反),经由rram交叉阵列计算的结果从rram交叉阵列的每一行输出。然后,如图4所示的数据选择电路中的与rram交叉阵列的各行通路相连的tg接收到控制信号,控制tg导通使得数据选择电路将连接rram交叉阵列的各行的通路打开,从而利用数据选择电路中的选择器columnmux有选择的将rram交叉阵列计算结果按行读出,并将从rram交叉阵列中读取的计算结果输入数据读取电路进行处理完成数据的输出,最后将导数(即梯度)传播结果存入缓冲寄存单元中。

另外,求导计算电路计算的导数结果,另一路流入数据准备电路中用于与输入样本数据x计算权值误差,从而进行权值更新,数据流向为图13中编号为3的色箭头方向所示。

3)权值更新

当完成图11所示的额前向计算和图13所示的方向传播计算之后,将输入样本数据x与梯度误差进行向量矩阵乘运算求得对应权重的变化δw,数据流向如图15中箭头方向所示。通过控制信号控制如图8所示的权值更新控制电路完成针对相应的rram交叉阵列存储的权值的更行,具体的权值更新控制方式可以参见图8对应的实施例的描述,在此不再赘述。

通过本申请实施例描述的一种外围电路可以充分利用rram交叉阵列结构,在增加有限的电路基础上可以实现监督学习神经网络训练的加速,包括前向计算、反向传播及权值更新,能够提升在神经网络训练时rram写的可靠性。

本申请的一个实施例以深度强化学习为例,详细地描述本申请的实施例描述的外围电路支撑基于rram的深度强化学习神经网络训练的过程。

深度强化学习包含三个阶段:前向计算、反向传播、权值更新。不同于监督学习,如图16所示,深度强化学习往往使用两套神经网络以提升训练收敛效率。简要介绍下深度强化学习的计算过程:首先对a和b两套同样设置的神经网络进行前向计算,并根据梯度误差对a神经网络进行反向传播和权值更新,而同时保持b网络权重不变。经m次迭代训练之后,将a神经网络的权重拷贝至b神经网络,并替换b神经网络的原始权重。以此迭代直至训练收敛。

深度强化学习的误差反向传播和权值更新两个主要计算过程都与本申请实施例描述的监督学习相近,在此不再赘述。再次主要描述前向计算时求最大值的不同。在上述深度强化学习的计算过程中,a神经网络和b神经网络的前向计算过程都涉及求最大值操作。a神经网络需要计算最大q值的动作action,而b神经网络同样计算输出最大q’值。深度强化学习中求最大值操作不同于监督学习中的最大池化操作,操作数往往大于4个。假设深度强化学习对应的神经网络的输出纬度为n,意味着要对n个数求最大值。本发明实施例描述的外围电路,在数据读取电路中设计了多个寄存器单元(假设为m)用于存储被操作数。那么通过控制第5至n个寄存器单元对应的二选一多路选择器读取待求最大值的操作数,而其余m-n个寄存器单元对应的二选一多路选择器选择读取0。具体的最大池化过程可以参见图7对应的实施例的描述,在此不再赘述。

通过本申请实施例描述的一种外围电路可以充分利用rram交叉阵列结构,在增加有限的电路基础上可以支撑深度强化学习神经网络训练,包括前向计算、反向传播及权值更新,且能够加速神经网络训练及在神经网络训练时rram写的可靠性。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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