一种基于忆阻器的神经网络在线学习系统的制作方法

文档序号:17742827发布日期:2019-05-24 20:20阅读:246来源:国知局
一种基于忆阻器的神经网络在线学习系统的制作方法

本发明属于人工神经网络硬件领域,更具体地,涉及一种基于忆阻器的神经网络在线学习系统。



背景技术:

为了应对传统的基于cmos技术的神经网络硬件平台在面积、速度、功耗以及“冯·诺依曼瓶颈”等方面的挑战,研究人员希望利用非易失存储器件忆阻器来构建神经网络硬件加速器,从而大幅度的提高神经网络硬件系统的性能。忆阻器用于实现神经网络硬件加速器,一方面是利用忆阻器的模拟电导特性来更好的表示突触或神经网络算法中的权重;另一方面是基于忆阻器的交叉阵列能够实现并行的矩阵向量乘法运算和权重更新。

目前,基于忆阻器的神经网络研究主要有三个方向:①基于忆阻器的脉冲神经网络,主要采用stdp无监督或stdp有监督的学习算法来训练神经网络,但是受制于神经科学的研究进展,如何有效的根据stdp规则来更新神经网络中的权重依然是脉冲神经网络需要探索和解决的主要问题。②基于忆阻器的多层感知机和卷积神经网络,其输入信息采用基于脉冲频率的编码方式,突触权重的更新方式采用更加有效的有监督的反向传播算法,训练误差能够从输出神经元层逐层反馈到输入神经元层。基于这种信息编码和权重学习规则的神经网络在训练与推断的过程中涉及大量的矩阵向量乘法运算。为了加速矩阵向量乘法运算(乘法和累加计算)以及最小化硬件中数据移动的能量消耗,基于忆阻器的硬件神经网络,通过欧姆定律和基尔霍夫电流定律,在忆阻器交叉阵列中实现并行的矩阵向量乘法运算以及原位的权重更新与存储功能。但是基于不同的输入信息编码方式以及外围神经元电路的设计方式,在实现神经网络推断和权重更新方式上具有很大的不同。③基于忆阻器的二值神经网络,它是在cnn的基础上对权重和激活函数做二值处理,即:将权值限制为+1和-1,激活函数输出值限制为+1和0或者+1和-1。由于二值神经网络在训练的过程中仍然需要对实数型的权值和激活函数值进行求梯度,并以此更新权值,所以基于忆阻器的二值神经网络主要用于离线学习过程。相对于忆阻器不稳定的模拟特性而言,实现可区分的两个权值状态的忆阻器技术要稳定很多。因此,基于忆阻器的二值神经网络实现方案在短期内更具可行性。

然而,上述基于忆阻器的神经网络大多只能进行离线的学习过程,不能够适用于权重反复更新的在线训练学习任务。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于解决现有技术基于忆阻器的神经网络存在速度慢,无法适用于在线学习的技术问题。

为实现上述目的,本发明实施例提供了一种基于忆阻器的神经网络在线学习系统,所述系统包括:输入模块,权重存储与计算模块,输出模块,计算模块,驱动电路;

所述输入模块用于将输入信号转换为k位2进制数字,对每一位上的数值0和1用低电平0和高电平vread表示,并将每一位对应脉冲编码的周期扩展为2m个,形成连续的k*2m个编码脉冲的电信号,vread为忆阻器的读取电压,m为小于k的非负整数;

所述权重存储与计算模块,一方面通过所述编码脉冲电信号与忆阻器阵列中器件电导值进行并行矩阵向量乘法运算,实现神经网络前向传播过程中的加权求和,并将加权求和后电流转化为数字信号,另一方面用于存储神经网络中权重值;

所述输出模块用于将权重存储与计算模块输出的数字信号进行归一化,输出加权求和的实际数值;

所述计算模块,一方面用于对输出模块输出的结果进行非线性的激活函数运算,另一方面用于在反向传播计算过程中,通过驱动电路读取权重存储与计算模块中存储的权重值,并计算权重的改变量;

所述驱动电路,一方面用于读取权重存储与计算模块中忆阻器件的电导值并转换为权重值,另一方面用于将计算模块输出的权重的改变量转换映射为脉冲个数,并驱动权重存储与计算模块更新忆阻器电导值。

具体地,所述忆阻器电导值更新方式如下:通过施加正向和负向脉冲个数来调节,施加正向脉冲时电导逐渐增大,施加负向脉冲时电导逐渐减小。

具体地,所述权重存储与计算模块通过以下方式实现编码脉冲电信号与忆阻器阵列中器件电导值矩阵向量乘法运算:

神经网络层与层之间的权重矩阵的权值映射为权重存储与计算模块中忆阻器阵列中对应交叉点处忆阻器的电导值;

在忆阻器阵列的所有行施加相应的读电压;

读电压与忆阻器阵列交叉点处每一个忆阻器电导值相乘,经过加权求和后的电流值从对应的列输出;

整个加权求和的运算过程可以通过下面的矩阵运算公式表示:

式中,gnm表示对应阵列交叉点处忆阻器的电导值,vm表示为施加在每一行上的输入信号编码读电压,in表示经过加权求和后忆阻器阵列对应列的输出电流。

具体地,所述加权求和运算以完全并行的方式进行。

具体地,所述权重存储与计算模块包含两部分,一是包含多阶特性的忆阻器件或是具有多阶特性忆阻器件与其他器件的组合单元构成的忆阻器阵列,二是用于辅助完成大规模矩阵向量乘法运算的外围电路。

具体地,外围电路包含模数转换电路、加法器、计数器和移位器。

具体地,所述权重存储与计算模块通过以下方式实现神经网络前向传播过程中的加权求和:

首先模数转换电路将电流信号转换为有限精度的数字信号,然后在计数器的控制下,加法器将连续2m个周期内的输出数字信号进行累加,再将累加结果通过移位器进行右移m位进行求平均值,最后再根据当前计算位具有的权重大小,通过移位器进行左移操作进行加权,至此完成输入数字信号中一位的完整计算过程;依次对输入的数字信号每一位进行计算,最后将所有位的计算结果累加到一起得到最终的加权求和输出结果。

具体地,所述驱动电路包括:控制与转换电路、矩阵选择开关、读写电路和脉冲发生器。

具体地,所述驱动电路通过以下方式实现驱动权重存储与计算模块更新权重值忆阻器电导值:

控制与转换电路将权重的改变量映射为调节权重所需的脉冲个数;脉冲发生器则根据控制与转换电路确定的脉冲个数来施加正负脉冲驱动权重存储与计算模块更新权重值;矩阵选择开关在更新权重时对权重存储与计算模块任意的一行进行选通和读取权重值时对单个忆阻器进行选通。

具体地,反向传播过程采用串行的方式进行计算。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

1.本发明在k位输入向量的脉冲编码方式上进行了改进,将每一位对应的编码脉冲扩展为2m个脉冲,这样总共所需的编码脉冲为k*2m个,并且每一位加权求和计算实际进行了2m次,最后在输出端进行求和取平均运算,通过此种方式减小了计算过程中偶然因素和噪声对计算结果的影响,从而提高计算的精度。

2.本发明中忆阻器阵列同时用于前向的加权求和计算和神经网络中的权重大小存储,与离线学习只进行一次的权重写入和更新操作不同,在线学习每输入信号,忆阻器阵列中的权重就要更新一次,通过将权重的改变量映射为脉冲个数,然后施加脉冲进行一次的权重写入操作,不仅能够提高神经网络训练的速度,而且能够降低硬件成本,减少神经网络训练的功耗。

附图说明

图1为本发明实施例提供的一种基于忆阻器的神经网络在线学习系统结构示意图;

图2为本发明实施例提供的权重存储与计算模块基本结构示意图;

图3为本发明实施例提供的输入模块对输入信息编码示意图。

具体实施方式

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

如图1所示,一种基于忆阻器的神经网络在线学习系统,所述系统包括:输入模块,权重存储与计算模块,输出模块,计算模块,驱动电路;

所述输入模块用于将输入信号转换为k位2进制数字,对每一位上的数值0和1用低电平0和高电平vread表示,并将每一位对应脉冲编码的周期扩展为2m个,形成连续的k*2m个编码脉冲的电信号,vread为忆阻器的读取电压,m为小于k的非负整数;

所述权重存储与计算模块,一方面通过所述编码脉冲电信号与忆阻器阵列中器件电导值进行并行矩阵向量乘法运算,实现神经网络前向传播过程中的加权求和,并将加权求和后电流转化为数字信号,另一方面用于存储神经网络中权重值;

所述输出模块用于将权重存储与计算模块输出的数字信号进行归一化,输出加权求和的实际数值;

所述计算模块,一方面用于对输出模块输出的结果进行非线性的激活函数运算,另一方面用于在反向传播计算过程中,通过驱动电路读取权重存储与计算模块中存储的权重值,并计算权重的改变量;

所述驱动电路,一方面用于读取权重存储与计算模块中忆阻器件的电导值并转换为权重值,另一方面用于将计算模块输出的权重的改变量转换映射为脉冲个数,并驱动权重存储与计算模块更新忆阻器电导值。

输入模块用于将输入信号转换为有限位数的电信号。通常这种转化可以通过电脉冲幅值表示,也可以是电脉冲个数表示。为了提高计算的精度,确保计算过程中不影响忆阻器的电导值,本发明首先将输入信号数字化,然后将对应位上的数字0和1用具有一定周期的低电平和高电平表示,一般低电平为0,高电平为vread,同时确保高电平不影响忆阻器的电导值。另外,本发明为了减少每一位计算过程中的随机噪声干扰,采取将每一位对应脉冲编码的周期扩展为2m个(m为整数),即:实际上每一位计算2m次,最后输出值经过移位运算求平均值。

权重存储与计算模块,一方面为前向传播过程提供电信号与忆阻器电导值的矩阵向量乘法运算,另一方面为反向传播过程提供权值大小。所述权重存储与计算模块的一个单元应当包含一个或多个忆阻器件,也可以是1t1r、1s1r等多个不同器件的组合单元,但至少包含一个具有多阶特性的忆阻器件。忆阻器阵列基于基尔霍夫电流定律实现矩阵向量乘法运算。忆阻器件是一种电导值能够随着所施加的电信号而连续改变的可塑物理器件,这种特性一方面可以作为存储器存储神经网络的权值,另一方面电导还可以与输入的电压信号作用实现矩阵向量乘法运算。所述的忆阻器依靠不同的电导状态来区分不同的存储状态。所述忆阻器电导更新方式通过施加的正向和负向脉冲个数来调节,施加正向脉冲时电导逐渐增大,施加负向脉冲时电导逐渐减小。

忆阻器被用于神经网络,一方面是忆阻器具有多阶特性,能够类比成神经网络中的突触,用来存储突触的权值,另一方面是基于多阶特性的权重存储与计算模块,可以实现并行的加权求和运算(矩阵向量乘法),而频繁的加权求和运算通常被认为是大多数神经网络算法中最耗时的步骤。如图2所示,权重存储与计算模块中忆阻器阵列由垂直的行和列组成,其中每一个交叉点都有一个具有多阶特性的忆阻器件。神经网络层与层之间的权重矩阵的权值就可以映射成为权重存储与计算模块中对应交叉点处忆阻器的电导值。如果将输入信息编码成忆阻器的读电压,那么加权求和运算将以完全并行的方式进行。首先在忆阻器阵列的所有行施加相应的读电压,接着读电压会与忆阻器阵列交叉点处每一个忆阻器电导值相乘,导致经过加权求和后的电流值从对应的列输出。整个加权求和的运算过程可以通过下面的矩阵运算公式表示:

式中,g表示对应阵列交叉点处忆阻器的电导值,v表示为施加在每一行上的输入信息编码读电压,i表示经过加权求和后忆阻器阵列对应列的输出电流。一般而言,神经元电路将放在权重存储与计算模块每一列的末端,用于将模拟的电流信号转换为数字信号或者尖峰脉冲。通常阵列与阵列之间的通信仍然是以数字信号进行的,所以权重存储与计算模块只是作为整个计算模块的核心,执行大规模并行的模拟计算。

权重存储与计算模块包含两部分,一是包含多阶的特性的忆阻器件或是具有多阶特性忆阻器件与其他器件的组合单元构成的忆阻器阵列,二是用于辅助完成大规模矩阵向量乘法运算的外围电路。进行矩阵向量乘法运算时,首先在阵列的每一行输入编码后的脉冲信号,通过输入的电平与忆阻器电导的作用,最后在忆阻器阵列的每一列中输出计算后的电流信号,这个电流信号只是整个一次计算过程中的一部分,为了将连续的脉冲信号计算结果叠加到一起,必须通过外围电路辅助完成。外围电路包含模数转换电路,加法器,计数器,移位器等主要组成部件,首先模数转换电路将电流信号转换为有限精度的数字信号,然后在计数器的控制下,加法器完成每一位计算包含的2m(m为非负整数)个计算结果的累加,再将累加结果通过移位器进行右移m位进行求平均值,最后再根据当前计算位具有的权重大小进行加权(左移操作),至此完成输入数字信号中一位的完整计算过程。依次对输入的数字信号每一位进行计算,最后将所有位的计算结果累加到一起得到最终的输出结果。

计算模块,一方面用于对输出模块输出的结果进行非线性的激活函数运算,另一方面用于在反向传播计算过程中,通过驱动电路读取权重存储与计算模块中存储的权重值,并计算权重的改变量。计算反向传播过程中权重的更新值,首先当计算模块收到来自输出模块输出结果,然后立刻通过驱动电路的读写电路读取层与层之间的权重大小,最后计算权重的更新值,再传递给驱动电路。

驱动电路则主要实现权重的读写操作,一方面读取忆阻器的电导值并转换为权重,另一方面通过权重的更新值映射为脉冲个数,并驱动权重存储与计算模块更新权重值。所述驱动电路用于对权重存储与计算模块中的权重进行更新为对应的权重更新所需施加的电信号量,并驱动权重存储与计算模块更新权值。其主要包括:控制与转换电路、矩阵选择开关、读写电路和脉冲发生器。其中,控制与转换电路主要将权重的更新值映射为调节权重所需的脉冲个数,将权重更新值转换为更新忆阻器电导值对应的电信号。矩阵选择开关主要用于更新权重时对权重存储与计算模块任意的一行进行选通和读取忆阻器权重时对某一个忆阻器单元的选通。读写电路主要是读取忆阻器阵列中任意一个忆阻器件对应的权重值,完成对权重存储与计算模块中连接权重的读写操作。脉冲发生器则根据控制与转换电路确定的脉冲个数来施加正负脉冲驱动权重存储与计算模块更新权重值。

在线学习是指神经网络的训练过程和前向推断过程都是通过忆阻器组成的硬件实现的。为了达到这一目的,这就需要忆阻器阵列不仅要进行前向的加权求和计算,而且还要作为存储器用来存储神经网络中的权重大小。这种将忆阻器阵列同时用于计算和存储的方式,不仅能够提高神经网络训练的速度,而且能够降低硬件成本,减少神经网络训练的功耗。与离线学习只进行一次的权重写入和更新操作不同,在线学习在训练的过程中,每输入一张图片,忆阻器阵列中的权重就要更新一次。因此,为了实现并行的权重写入方式和提高权重更新的速度,我们在权重的写入过程中,就不能采用离线学习中权重写入的方式,不能通过反复的读写操作实现忆阻器阵列中权重写入的准确性。相反的,在线学习过程中,我们不希望在写入权重的过程中去读取当前权重的大小,而是直接将权重的改变量△w线性映射为脉冲个数,然后施加脉冲进行一次的权重写入操作(不保证写入的准确性)。所以,对于在线学习,一般要求忆阻器件电导调节过程具有统一的方式,即:调节电导的电脉冲必须是相同的。由于权重写入方式的不同,使得在线学习的过程中,忆阻器件的非线性特性对神经网络的识别率产生了一定的影响,并且忆阻器阵列还要用作存储器,所以对忆阻器的精度(电导阶数)也有了更高的要求。

本发明实施例的输入信号来自mnist数据集。mnist手写体字库是由纽约大学courant研究所的yannlecun、纽约google实验室的corinnacortes和雷德蒙德微软研究部的christopherjcburges共同收集汇总完成的。它总共收录了60000张训练数据图片和10000张测试数据图片,每一张图片都是包含0~255像素值的灰度图片。并且每张图片为28×28像素大小。为了保证数据集中数据不重复,在收录的过程中,所有的数字都是由不同的志愿者手写完成的,并且还保证了训练集和测试集的手写字体来源于不同的作者。自从该数据集被建立以来,就基本上成为了机器学习和神经网络入门学习使用的标准数据集,并且在各种科研工作中也被广泛的使用。因此,考虑到该数据集的广泛使用性,本文中所有的神经网络仿真都将以此数据集作为训练和测试神经网络性能的数据集。同时,为了进一步的提高数据集中数据的特征,以及减小神经网络的规模,本文将mnist数据集做了简单的处理,通过裁剪的方式,将原先28×28像素大小的图片裁剪为20×20大小的图片

如图3所示,本发明首先将输入数字图片的像素值转换为2进制数,然后每一位对应的数字0和1分别用低电平0和高电平vread表示,为了减少每一位计算中随机噪音对输出结果的干扰,本发明采用将每一位脉冲编码周期扩展为2m个(m为非负整数),即:将以前在一个周期内完成一位的计算过程,变成在2m个周期内完成2m次计算,然后通过外围电路在输出端累加2m次的计算结果,并通过移位器右移m位进行求平均值,最终得到一位上的实际计算结果。此种编码方式即减少了偶然噪声干扰造成的计算误差,同时也能有效的减少对外界输入信息编码的脉冲个数。另外,对于二进制数字不同位自身带有的权重大小,在输出端同样需要移位操作进行加权,例如b2(2进制数右起第三位)位上的计算结果经过累加和求平均后还需进行两步左移操作进行加权。当然,对于每一位计算的输出结果加权和求平均操作也可以合并到一起进行统一的操作。

本发明设计了2层的感知机神经网络模型,学习算法采用了随机梯度下降算法,激活函数采用了sigmoid函数。输入层包含400个神经元,对应裁剪后手写字体图片的400个像素值,输出层包含10个神经元,表示0~9十个不同的数字符号。经实验验证,隐层神经元数目在100~120个、学习率在0.1~0.3之间的情况下,基于随机梯度下降算法的2层感知机神经网络对mnist手写字体数据集的识别效果最好。

基于2层的感知机神经网络,主要包含前向传播和反向传播计算。前向传播计算主要包含矩阵向量乘法运算和输出端激活函数的计算。反向传播运算虽然也主要是矩阵向量乘法运算,但输入方向与前向传播正好相反(权重矩阵互为转置矩阵),并且反向传播的计算精度要比前向传播的要求高,所以为了减少权重存储与计算模块的设计复杂度,反向传播过程采用串行的方式进行计算。此时,权重存储与计算模块充当了存储器的作用,可以从中读取权重的大小。

本发明充分考虑了硬件实现神经网络在线学习时,正向传播和反向传播计算难以在同一块权重存储与计算模块上实现的问题,采用一种存储与计算的混合架构,使得硬件实现神经网络在线学习即简单又高效,具有很强的实用性。

以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

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