技术简介:
本专利针对忆阻器非线性特性导致的权重更新误差问题,提出基于差分电路和单步脉冲的权重训练方法。通过构建差分电路,利用两忆阻器电导差异映射神经元权重,根据更新方向选择性施加单向脉冲,无需计算具体脉冲数,简化了硬件实现并降低能耗,提升了神经网络训练效率。
关键词:忆阻器权重训练,差分电路优化
1.本技术涉及脉冲神经网络技术领域,尤其是涉及一种忆阻器卷积神经网络权重训练方法及装置。
背景技术:2.忆阻器是一种新型的双端口纳米器件,其电导状态具有一定的记忆特性,因而被称之为记忆型电阻器件(即忆阻器)。忆阻器件阵列可以借助电路的欧姆定律和基尔霍夫定律,进而高性能、低功耗地实现乘法累加的功能,这与神经网络计算体系中的核心运算形式(矩阵乘法)十分匹配,因而忆阻器为神经网络的硬件实现方案提供了新的研究思路,并已得到研究学者们的广泛关注。
3.如图1所示,是对于神经网络的推理过程(即正向传播),忆阻器网络可以利用欧姆定律和基尔霍夫定律可以很容易地实现矩阵乘法。对于网络训练过程(反向传播),可以根据随机梯度下降算法(sgd)计算待更新的权重量,并通过在器件终端施加相应数量的电脉冲来更新突触权值。
4.但是,忆阻器件及阵列具有几乎无法避免的电导随机波动特性和非线性权重更新特性的缺陷,使其难以直接应用于神经网络的在线学习过程,同时也大幅降低了其在离线推理过程中的准确率。
5.忆阻器的非线性更新特性,是指在忆阻器的电导-脉冲调制曲线中,其电导的变化量与脉冲数量非线性相关的现象(如下图2所示)。通常而言,给非线性符合指数函数的形式。忆阻器的电导状态函数可以用五个参数表示:gmax(最大电导值)、gmin(最小电导值)、pmax(电导状态数量)、ap(权重增加ltp过程中的非线性度)-参见图2(a)、ad(权重降低ltd过程中的非线性度)-参见图2(b)。可用下式表示:
[0006][0007]
上式中x代表器件的当前状态参数,且0≤x≤pmax;a在权重增加过程(ltp过程)中等于ap;在权重减小过程(ltd过程)中等于ad。
[0008]
忆阻器神经网络的在线学习方案大体如下图3所示。首先,前向传播计算出误差,再根据标准的神经网络反向传播(back propagation)算法和梯度下降(sgd)算法,计算出当前权重所需的更新量;然后,根据忆阻器器件的非线性更新特性曲线,计算出所需的脉冲数量;紧接着,通过选通手段在该忆阻器两端施加一定数量的电脉冲,以调整忆阻器当前的电导值。
[0009]
当前基于忆阻器网络的常规学习方案中至少存在有如下缺陷:
[0010]
1.忆阻器神经网络的常规学习方案过于复杂:网络需要在更新之前计算出所需的电脉冲的数量,这将大大增加系统计算的复杂度,尤其对于大规模的卷积神经网络,其参数量往往数以百万计甚至数以亿计,这一非线性计算过程将消耗巨量的计算资源和能耗。
[0011]
2.忆阻器网络阵列自身无法完成电脉冲更新这一任务:需要增设大量的外围控制
逻辑电路才能得以实施。例如,计算当前所需的权重更新量和脉冲数量往往由安装计算软件的电脑端给出,随后通过matlab和单片机控制器mcu等软、硬件控制手段辅助完成器件的电导权重更新的计算和换算等操作。
[0012]
3.对于忆阻器自身具有的非线性更新特性没有采用有效措施:施加一定数量的电脉冲进行电导权重更新后,忆阻器的实际电导状态与理想状态具有偏差,导致忆阻器神经网络的学习性能较低。
技术实现要素:[0013]
为简化忆阻神经网络权重更新计算过程并降低该过程中计算资源的消耗,第一方面,本技术提供一种忆阻器卷积神经网络权重更新方法,采用如下的技术方案:
[0014]
通过若干差分电路构成神经网络硬件系统的忆阻器阵列,每两个器件构成一差分电路,该两器件中至少有一个包括忆阻器;所述方法包括:
[0015]
绑定构成每个差分电路的两器件形成一个神经元;
[0016]
根据两器件的电性参数之差映射神经元的权重;
[0017]
通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向;
[0018]
在权重的更新方向为正向时,对忆阻器施加正向单步脉冲对神经元权重进行再次更新;
[0019]
在权重的更新方向为负向时,对忆阻器施加负向单步脉冲对神经元权重进行再次更新;
[0020]
在所有神经元的权重更新迭代达到收敛条件时,结束迭代完成训练。
[0021]
通过采用上述技术方案,相对于相关技术取消学习速率、权重更新量和所需施加脉冲数量等计算,在通过梯度下降算法得到权重更新的方向后,通过单脉冲方案进行权重更新。知道每次学习中权重的更新方向后,往对应的忆阻器器件施加一个脉冲完成本次权重的更新。在每次权重更新(学习)的过程中,通过对电导值变化幅度较大的忆阻器施加单步脉冲,能够使得权重参数都以一定的步长向着最优值靠拢,直至达到或无限靠近最优值。这种在数据处理的过程中,根据处理数据的不同特征而不断的自动调整处理方法,从而使其一直处于或朝着最优运行状态靠拢的系统称为自适应系统,基于自适应系统的学习方法称为自适应学习方法。对于忆阻器神经网络来说,其需要一定的学习能力,并且能够利用网络的能力连续的调整网络参数。只根据梯度下降算法给出参数建议更新的方向(权重需要增加还是降低),这样无疑能大幅度降低更新所需的计算复杂度,也更利于硬件实现。
[0022]
可选的,作为上述方案的一实施方式,构成差分电路的两器件均包括忆阻器;形成差分电路的两忆阻器的参数不同,以满足在施加电脉冲后以获得变化量差异趋势可预期的电导值;所述方法包括:
[0023]
绑定构成每个差分电路的两忆阻器形成一个神经元;
[0024]
根据两忆阻器的电导值之差映射神经元的权重;
[0025]
通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向;
[0026]
在权重的更新方向为正向时,对电导值变化幅度较大的忆阻器施加正向单步脉冲对神经元权重进行再次更新;
[0027]
在权重的更新方向为负向时,对电导值变化幅度较大的忆阻器施加负向单步脉冲
对神经元权重进行再次更新;
[0028]
在所有神经元的权重更新迭代达到收敛条件时,结束迭代完成训练。
[0029]
通过采用上述的方案,采用两忆阻器构成神经网络硬件系统的差分电路构架,利用忆阻器参数对于电导值变化幅度产生的定向趋势影响,基于权重更新的方向有选择的向电导值变化幅度较大的忆阻器逐次施加单步电脉冲,对权重进行迭代更新,从而使得神经网络各神经元的权重整体在大概率范围内向最优值靠近,相对于单忆阻器差分电路构架的神经网络,其灵活性更佳,可以基于具体需要灵活调整步进的幅度,从而加速迭代进程。
[0030]
可选的,每个差分单元均由两个彼此独立的忆阻器构成;所述根据两忆阻器的电导值映射神经元的权重的步骤包括:
[0031]
其中一半神经元的权重映射为正向权重;另一半神经元的权重映射为负向权重;
[0032]
所述在权重的更新方向为正向时,对电导值变化幅度较大的忆阻器施加正向单步脉冲对神经元权重进行再次更新的步骤中:
[0033]
电导值变化幅度较大的忆阻器包括正向权重映射中权重变化幅度较大的忆阻器;
[0034]
所述在权重的更新方向为负向时,对电导值变化幅度较大的忆阻器施加负向单步脉冲对神经元权重进行再次更新的步骤中:
[0035]
电导值变化幅度较大的忆阻器包括负向权重映射中权重变化幅度较大的忆阻器。
[0036]
通过采用上述技术方案,在神经网络中,首先预设一半的权重参数为正值,其余为负值。因为神经网络的在线学习过程本质上是一类多变量方程组的求解过程,其未知数的个数远多于方程的个数,因而满足条件的解有无穷多组的,这即是神经网络鲁棒性的来源。因此,在我们预设一半的权重参数为正值另一半为负值,并不会影响网络最终性能。
[0037]
在预设的正定权重中,采用忆阻器件w1-忆阻器件w2的电路方案(也即w1-w2);在预设的负定权重中,采用忆阻器件w2-忆阻器件w1的电路方案(也即w2-w1)。其中忆阻器件w1和忆阻器件w2的器件参数(如器件横截面的面积)不同。在获得权重更新的变化方向后,基于变化方向,对正向权重映射的差分电路中,电导值变化幅度较大的忆阻器,在接收正向电脉冲后,其映射的神经单元中权重变化幅度也较大,且向着优化目标更进一步,故向该忆阻器施加正向单步脉冲,能够大概率范围内快速实现网络权重的优化迭代;基于负向变化,对负向权重映射的差分电路中,电导值变化幅度较大的忆阻器,在接收负向电脉冲后,其映射的神经单元中权重变化幅度也较大,且向着优化目标更进一步,故向该忆阻器施加负向单步脉冲,能够大概率范围内快速实现网络权重的优化迭代。
[0038]
可选的,所述差分电路由两横截面积不同的忆阻器构成;其中第一忆阻器在施加单脉冲后权重变化幅度相对第二忆阻器较大;其中第一忆阻器的电导值为w1,第二忆阻器的电导值为w2;
[0039]
所述映射正向权重的步骤包括:
[0040]
以第一忆阻器的电导值w1与第二忆阻器的电导值w2之差映射神经元的正向权重:w1-w2;
[0041]
所述映射负向权重的步骤包括:
[0042]
以第二忆阻器的电导值w2与第一忆阻器的电导值w1之差映射神经元的负向权重:w2-w1。
[0043]
通过采用上述技术方案,方案在电路设计之初即限定两个忆阻器的面积尺寸不相
同(例如可以设计w1的面积是w2面积的2倍),于是器件w1的电导值本征情况下(大概率)会大于w2的电导值。这时,设定器件w=w1-w2作为网络的正权重映射,器件w=w2-w1作为网络的负权重映射。值得注意的是,在上述设定中,但是由于权重的随机初始化,正权重映射中的权重数值只是大概率为正,并不能保证一定为正,同理也适用于负权重的映射。这便引入了一定程度的概率更新行为,可作为网络权重更新的一个补偿机制。
[0044]
可选的所述在权重的更新方向为正向时,对正向权重映射中权重变化幅度较大的忆阻器施加正向单脉冲的步骤包括:
[0045]
向第一忆阻器和第二忆阻器均施加正向单步脉冲,或
[0046]
向第一忆阻器施加正向单步脉冲,向第二忆阻器施加负向单步脉冲。
[0047]
通过采用上述技术方案,网络权重在每次更新过程中,构成差分对的两个器件的变化方向是相同的,但其变化幅度是不相等的,这样就不能保证每次施加脉冲后所得的新权重变化量与预期的权值变化量是一致的,但合适的参数设计(主要为器件w1和器件w2的面积参数)能保证上述需求在大概率条件是满足的。当器件w1的器件面积是器件w2的器件面积的两倍时,器件w1的变化幅度大概率大于器件w2的变化幅度。因此网络中的权重值大概率是按照算法给定的要求进行更新的,即网络中权值的更新大概率是成功的。这样的设定引入了另一种概率更新行为,可作为网络权重更新的又一个补偿机制。相对于上述方案,在权重的更新方向为正向时,同时向第一忆阻器和第二忆阻器均施加正向单步脉冲适合步进幅度较小的权重更新,向第一忆阻器施加正向单步脉冲,向第二忆阻器施加负向单步脉冲,适合步进幅度较大的权重更新,基于不同的适用场景,提供了多种训练方式,提高训练方法的适应性和灵活性。
[0048]
可选的所述在权重的更新方向为负向时,对负向权重映射中权重变化幅度较大的忆阻器施加负向单脉冲的步骤包括:
[0049]
向第一忆阻器和第二忆阻器均施加负向单步脉冲,或
[0050]
向第一忆阻器施加负向单步脉冲,向第二忆阻器施加正向单步脉冲。
[0051]
通过采用上述技术方案,同上,相对于上述方案,在权重的更新方向为负向时,同时向第一忆阻器和第二忆阻器均施加负向单步脉冲适合步进幅度较小的权重更新,向第一忆阻器施加负向单步脉冲,向第二忆阻器施加正向单步脉冲,适合步进幅度较大的权重更新,基于不同的适用场景,提供了多种训练方式,提高训练方法的适应性和灵活性。
[0052]
可选的,作为上述方案的另一实施方式,构成所述差分电路的另一器件包括共享电阻;所述通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向的步骤之前还包括:
[0053]
随机初始化所有神经元中所述共享电阻的电阻值为r,其中r为恒定值;
[0054]
所述忆阻器的电导值为w’,所述根据两器件的电性参数之差映射神经元的权重的步骤包括:
[0055]
根据忆阻器的电导值与共享电阻的初始值之差映射神经元的权重,神经元的权重w为:w
’–
r。
[0056]
通过采用上述技术方案,相对于上一实施方式,神经网络硬件系统电路结构显著的减少了电路的面积。因为1t1r-1t1r结构需要双倍的器件数量,而1t1r-1r结构的不同差分对可以共享同一个电阻。采用这种电路结构后,理论上相同网络有望减少50%的电路面
积消耗。同时,不需要计算具体的电压脉冲数量。我们所需要的是判别出训练过程中权重更新量δw的正负。这种简单的学习规则使亿阻器网络能够地更新参数,从而获得自优化的能力。可以使忆阻神经网络芯片在性能、面积、功耗三个重要参数上都有提升。
[0057]
可选的,作为上述方案的另一实施方式,构成所述差分电路的另一器件包括共享电阻;所述通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向的步骤之前还包括:
[0058]
预定所有神经元中所述共享电阻的电阻值r,其中为r为所述忆阻器最大电导值g
max
与最小电导值g
min
之和的一半,r=(g
max
/2+g
min
/2);
[0059]
所述忆阻器的电导值为w’,所述根据两器件的电性参数之差映射神经元的权重的步骤包括:
[0060]
根据忆阻器的电导值与共享电阻的初始值之差映射神经元的权重,神经元的权重w为:w
’–
(g
max
/2+g
min
/2)。
[0061]
通过采用上述技术方案,与上一实施方式的硬件构架相同,不同之处在于将所有行忆阻器的共享电阻的阻值均确定为同一值,这种方式相对于上一实施例方式中随机初始化各行忆阻器的供电电阻的阻值,在迭代计算过程中,有利于获得均匀对称的神经元权重分布,相对于随机初始化的权重,有利于高精度在线学习,优化权重与最优权重之间的误差相对较小。
[0062]
第二方面,本技术还提供一种忆阻器卷积神经网络权重训练装置,采用如下的技术方案,包括:
[0063]
存储器,存储有权重训练程序;
[0064]
处理器,在运行所述权重训练程序时执行上述方法的步骤。
[0065]
采用上述技术方案,将上述权重训练方法以计算机可读代码的形式呈现并存储于计算机存储介质上,在处理器运行该介质上的计算机代码时,执行上述方法的步骤既能减小忆阻器非线性更新特性带来的误差,有效提升忆阻器神经网络的在线学习性能,同时又能兼顾系统整体的高能效和低功耗特性,具有良好的硬件友好性。
附图说明
[0066]
图1是相关技术中忆阻器神经网络的前向传播过程图。
[0067]
图2(a)是相关技术中忆阻器的非线性权重增加过程更新模型图。
[0068]
图2(b)是相关技术中忆阻器的非线性权重减小过程更新模型图。
[0069]
图3是相关技术中忆阻器神经网络权重训练流程图。
[0070]
图4是本技术实施例一提供的忆阻器卷积神经网络权重训练方法的流程图。
[0071]
图5为本技术实施例二提供的忆阻器卷积神经网络权重训练方法实施的硬件框架图。
[0072]
图6为本技术实施例二提供的忆阻器卷积神经网络权重训练方法的流程图。
[0073]
图7(a)是本技术实施例二提供的忆阻器卷积神经网络权重训练方法中忆阻器神经网络采用的差分电路架构。
[0074]
图7(b)是本技术实施例二提供的忆阻器卷积神经网络权重训练方法中两忆阻器在施加电脉冲状态下电导值的变化趋势图;
[0075]
图8(a)是本技术实施例二提供的忆阻器卷积神经网络权重训练方法中两忆阻器的非线性权重增加过程更新模型图。
[0076]
图8(b)是本技术实施例二提供的忆阻器卷积神经网络权重训练方法中两忆阻器的非线性权重减小过程更新模型图。
[0077]
图9是实施例二中两忆阻器最大电导值的比值与每次权重成功更新的概率曲线图。
[0078]
图10是本技术实施例三提供的忆阻器卷积神经网络权重训练方法实施的硬件框架图;
[0079]
图11是本技术实施例三提供的忆阻器卷积神经网络权重训练方法的流程图;
[0080]
图12是采用不同算法神经网络权重优化的准确率示意图。
[0081]
图13是采用不同方案训练的lenet-5网络在不同非线性度ap和ad下的精度示意图。
具体实施方式
[0082]
以下结合附图对本技术作进一步详细说明。
[0083]
本具体实施例仅仅是对本技术的解释,其并不是对本技术的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本技术的权利要求范围内都受到专利法的保护。为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0084]
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
[0085]
下面结合说明书附图对本技术视力检测终端的实施例作进一步详细描述。
[0086]
实施例一
[0087]
忆阻器神经网络的硬件构架采用差分电路,通过若干差分电路构成神经网络硬件系统的忆阻器阵列,每两个器件构成一差分电路,该两器件中至少有一个包括忆阻器;如图4所示,上述方法包括:
[0088]
步骤s1,绑定构成每个差分电路的两器件形成一个神经元;
[0089]
在软件系统中将每个差分电路的组成器件绑定为一个神经元,通过神经元之间的连接构成卷积神经网络,神经元与神经元之间的联系通过权重表示。
[0090]
步骤s2,根据两器件的电性参数之差映射神经元的权重;
[0091]
需要说明的是,这里的电性参数在不同的差分电路构架中,为不同的电性参数,具体为阻性参数,若忆阻器则采用电导值,若是电阻则采用电阻值。
[0092]
步骤s3,通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向;
[0093]
相对于相关技术,本技术的关键是向忆阻器阵列中每行忆阻器施加单脉冲对各神经元权重进行更新,更新过程中计算神经元权重的方法可采用现有的梯度下降算法,例如
线性sgd算法、非线性sgd算法等。与相关技术不同的是,每次更新均输入单步脉冲,不需要计算施加在每一忆阻器两端的电脉冲的数量;而仅仅需要获得每个神经元的权重更新方向,然后基于权重更新方向获得下一步施加单步脉冲的方向,进而大大简化权重更新的流程和计算量,从而达到节约计算资源的目的。
[0094]
步骤s4,在权重的更新方向为正向时,对忆阻器施加正向单步脉冲对神经元权重进行再次更新;
[0095]
在获得正向的权重更新方向时,通过向忆阻器两端施加正向单步脉冲从而获得更为接近最优值的权重。
[0096]
步骤s5,在权重的更新方向为负向时,对忆阻器施加负向单步脉冲对神经元权重进行再次更新;
[0097]
在获得负向的权重更新方向时,通过向忆阻器两端施加负向单步脉冲从而获得更为接近最优值的权重。
[0098]
步骤s6,在所有神经元的权重更新迭代达到收敛条件时,结束迭代完成训练。
[0099]
循环上述s2-s5,通过对权重不断进行更新迭代,在达到收敛条件时结束迭代完成网络权重训练,这里的收敛条件可以是设定的权重误差,也可以是迭代次数等。
[0100]
实施例二
[0101]
作为实施例一的第一优选方式,忆阻器卷积神经网络权重训练方法的硬件系统,如图5所示,包括权重训练装置和忆阻器卷积神经网络硬件架构,权重训练装置可以理解为网络系统外部的计算设备,该设备至少包括存储器和处理器,存储器存储有软件程序,处理器运行该程序时执行忆阻器卷积神经网络权重训练方法。
[0102]
下面结合上述系统对忆阻器卷积神经网络权重训练方法的实施进行详细说明:
[0103]
忆阻器卷积神经网络的硬件构架如图5所示,本方案中通过若干差分电路(参见图5中虚线框所示)构成神经网络硬件系统的忆阻器阵列,每两个忆阻器构成一差分电路,形成差分电路的两忆阻器的参数不同,以满足在施加电脉冲后以获得变化量差异趋势可预期的电导值;本方案中忆阻器神经网络采用差分电路架构,由于忆阻器的电导没有负值,而神经网络中的权值参数可能为负(一般情况下,网络中权重参数的正负数量是相当的),因此在忆阻器神经网络中,通常采用差分设计(differential-pair),将两个忆阻器(分别记为w1和w2)绑定形成一组新的权重w=w1-w2用于网络计算。具体的,如下图7(a)所示,两列忆阻器阵列分别利用电流-电压转换电路计算出各自的电压输出数据和再利用计算电路(具体可采用差分电路)计算出两者之差,便可得到该神经元的最终输出
[0104]
常规方案(我们将其命名为“方案0”)在进行权重更新时:如果要增加权重w,则根据标准的随机梯度下降(stochastic gradient descent)即sgd算法先后计算出权重变化量和对应的所需施加的电脉冲数量,在向器件w1施加若干个正向电脉冲,在该过程中w2保持搁置状态;如果要降低权重w,则根据标准的sgd算法先后计算出权重变化量和对应的所需施加的电脉冲数量,在向器件w1施加若干个负向电脉冲,在该过程中w2同样保持搁置状态。其复杂的计算将严重降低系统的能效。其次,上述更新过程中始终未操作对应的第二个
忆阻器(w2),未能达到物尽其用的设计原则。此外,器件非线性特性对网络性能所造成的损失没有补偿措施。
[0105]
基于上述考虑,本技术提出了一种新的忆阻器差分电路架构,如图7(b)所示,引入不同参数的忆阻器件w1和忆阻器件w2,然后将其组合为一个新的差分架构单元。
[0106]
如图6所示,所述方法包括:
[0107]
s10,绑定构成每个差分电路的两忆阻器形成一个神经元;
[0108]
在软件系统中,在神经网络中,首先预设一半的权重参数为正值,其余为负值。因为神经网络的在线学习过程本质上是一类多变量方程组的求解过程,其未知数的个数远多于方程的个数,因而满足条件的解有无穷多组的,这即是神经网络鲁棒性的来源。因此,预设一半的权重参数为正值另一半为负值,并不会影响网络最终各性能。对应每个差分电路绑定形成一个神经元,通过两忆阻器的电导值表示其构成的神经元的权重,在预设的正定权重中,我们采用忆阻器件w1-忆阻器件w2的电路方案(也即w1-w2);在预设的负定权重中,我们采用忆阻器件w2-忆阻器件w1的电路方案(也即w2-w1)。其中忆阻器件w1和忆阻器件w2的器件参数(如器件横截面的面积)不同。
[0109]
s20,根据两忆阻器的电导值之差映射神经元的权重;
[0110]
在相关技术的常规方案(“方案0”)中,每组差分器件中的两个忆阻器(w1和w2)在物理实体上并没有任何区别,而本技术提供的方案在电路设计之初即限定两个忆阻器的面积尺寸不相同(例如可以设计w1的面积是w2面积的2倍),于是器件w1的电导值本征情况下(大概率)会大于w2的电导值。这时,设定器件w=w1-w2作为网络的正权重映射,器件w=w2-w1作为网络的负权重映射。值得注意的是,在上述设定中,但是由于权重的随机初始化,正权重映射中的权重数值只是大概率为正,并不能保证一定为正,同理也适用于负权重的映射。
[0111]
这便引入了一定程度的概率更新行为,可作为网络权重更新的一个补偿机制。此概率命名为概率1。
[0112]
该概率值可通过以下方法计算:假设w1和w2是按照函数f(x)的函数分布而随机初始化,w1的取值范围为[gmin1,gmax1],w2的取值范围为[gmin2,gmax2],则w=w1-w2》0的概率可以表示为:
[0113][0114]
特殊的,如果f(x)代表均匀分布,并且gmin1=gmin2=0,gmax1=2,gmax2=1,该概率值为75%。
[0115]
需要说明的是,这里构成差分电路的两忆阻器可以是由两独立的忆阻器构成,也可由一个独立忆阻器和一个共享忆阻器构成:其中在采用前者差分电路构架时,步骤s20包括s21:其中一半神经元的权重映射为正向权重;另一半神经元的权重映射为负向权重;有利于大概率准确预测权重更新方向;该方案适用于1t1r-1t1r电路结构;采用后者差分电路构架时,在步骤s20之前还包括s200:所有神经元中所述共享忆阻器的电导值r进行初始化,初始化的方式包括两种,其中s201为随机初始化所有神经元中所述共享忆阻器的电导值为r,其中r为恒定值;s202预定所有神经元中所述共享忆阻器的电导值r,其中为r为所述独立忆阻器最大电导值与最小电导值之和的一半,r=(g
max
/2+g
min
/2);该方案适用于1t1r-1r电
路结构。
[0116]
s30,通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向;
[0117]
通过上述设定之后,忆阻器网络采用我们的学习算法进行参数训练。具体来说,网络权重在每次更新过程中,构成差分对的两个器件的变化方向是相同的,但其变化幅度是不相等的,这样就不能保证每次施加脉冲后所得的新权重变化量与预期的权值变化量是一致的,但合适的参数设计(主要为器件w1和器件w2的面积参数)能保证上述需求在大概率条件是满足的。例如当器件w1的器件面积是器件w2的器件面积的两倍时,器件w1的变化幅度大概率大于器件w2的变化幅度。因此网络中的权重值大概率是按照算法给定的要求进行更新的,即网络中权值的更新大概率是成功的。这样的设定引入了另一种概率更新行为,可作为网络权重更新的又一个补偿机制。此概率命名为概率2。
[0118]
在单脉冲更新方案中,我们不能保证每次脉冲施加后所得的新权重变化量(δw
actual
)与预期的权重变化量(δw
predict
)是一致的,甚至不能保证其更新的方向是一致的,但是合适的参数设计(主要为器件w1和器件w2的面积参数)能保证上述要求在大概率条件是可以满足的。下面,我们以正权值的一次正向更新为例,推导该概率的求解方式。
[0119]
以上图8(a)中δw》0时,网络中“正权重”的更新过程为例,电导值可被表示为:
[0120]wold
=w
1_old-w
2_old
=g(x1)-g(x2)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0121]wnew
=w
1_new-w
2_new
=g(x1+1)-g(x2+1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0122]
δw=w
new-w
old
>0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0123]
其中g(x)为公式(1)中的忆阻器件电导-脉冲状态函数,x代表忆阻器的脉冲状态。公式(5)代表本权重参数在本轮权重更新过程中完成了一次成功的更新,其可根据泰勒函数的低阶展开式得到近似情况,对于一阶线性近似,其可等价为:
[0124]
δw=[g(x1+1)-g(x1)]-[g(x2+1)-g(x2)]≈g'(x1)-g'(x2)>0
ꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0125]
其中g'(x)为公式(1)的导函数。通过遍历x1和x2,求积分可得一次成功的更新的概率为:
[0126][0127]
其中,pmax为器件w1和器件w2的电导状态数量,可理解有施加单步脉冲的最终数量,本方案中器件w1和器件w2的电导状态数量相同即每次均向两个器件施加一个单脉冲,a1为器件w1在权重更新过程中的非线性系数,gmax1为器件w1的最大电导值,gmin1为器件w1的最小电导值;a2为器件w2在权重更新过程中的非线性系数,gmax2为器件w2的最大电导值,gmin2为器件w2的最小电导值,这里的器件w1可以理解为第一忆阻器,器件w2可以理解为第二忆阻器。临时变量定义为:
[0128][0129][0130]
我们发现,g'(x1)-g'(x2)>0的概率与gmax1和gmax2的比值g
max 1
/g
max 2
有着紧密的关系。例如,当gmax1和gmax2的比值g
max 1
/g
max 2
=1(同时g
min1
=g
min2
=0)时,g'(x1)-g'
(x2)>0的概率将达到50%,这与我们的直观认识相符合。当器件w1的最大电导值gmax1是器件w2的最大电导值gmax2的2倍时,该概率值将达到图9中所示的95.4%。这意味着在单脉冲更新后,实际上w
new
的值是大概率大于w
old
的值,即本次权值更新成功的概率是相当高的,这也保证了神经网络能够很好的完成学习的过程,并最终能获得较好的网络性能。
[0131]
通过计算,g'(x1)-g'(x2)>0的概率与gmax1和gmax2的比值g
max 1
/g
max 2
的关系如下图9所示。由此可以获得,当构成同一差分电路中的两忆阻器的最大电导值比值越大,则单次权重更新成功的概率越高。图8(b)中δw<0时,通过上述公式推导,同样可以获得上述结论,在此不再赘述。
[0132]
s40,在权重的更新方向为正向时,对电导值变化幅度较大的忆阻器施加正向单步脉冲对神经元权重进行再次更新;
[0133]
基于上述推导计算,本方案采用单步脉冲迭代训练的方法对网络各神经元权重进行训练,在获得神经元的大概率更新为正向时,对电导值变化幅度较大的忆阻器施加正向单步脉冲能够使得其向最优值方向靠近。
[0134]
s50,在权重的更新方向为负向时,对电导值变化幅度较大的忆阻器施加负向单步脉冲对神经元权重进行再次更新;
[0135]
同上,在获得神经元的大概率更新为负向时,对电导值变化幅度较大的忆阻器施加负向单步脉冲能够使得其向最优值方向靠近。
[0136]
在s20采用两独立忆阻器时,步骤s40中电导值变化幅度较大的忆阻器实质上为正向权重映射中权重变化幅度较大的忆阻器;步骤s50中电导值变化幅度较大的忆阻器为负向权重映射中权重变化幅度较大的忆阻器;
[0137]
在s20采用一独立忆阻器与一共享忆阻器组合时,步骤s40、s50均对独立忆阻器施加单脉冲。
[0138]
s60,在所有神经元的权重更新迭代达到收敛条件时,结束迭代完成训练。
[0139]
重复步骤s20-s50,在达到预设的迭代次数或达到设定的收敛条件时,停止迭代,完成训练。
[0140]
在本技术的算法中,简化了传统忆阻器网络算法中网络权重更新量等计算。在原始“方案0”的更新方案中,每个权重每次的更新量由反向传播机制和随机梯度下降算法确定,而学习速率作为网络的超参数也被引入忆阻神经网络之中,这与常规的人工智能领域的神经网络研究思路一致。然而,忆阻神经网络作为人工神经网络的一种专用电路架构,如果其前向传播和反向传播机制完全照搬原始的人工神经网络,只将忆阻器件作为可变电阻器件进行应用,则不能充分利用到忆阻器自身的特性。此外,受限于忆阻器自身的电导波动现象以及电导状态数量有限等限制,权重更新过程中产生的误差将在神经网络中逐层累积,利用该方案实现的网络性能必定有其上限。基于这些思考,我们将在更新方案中取消学习速率、权重更新量和所需施加脉冲数量等计算,只根据梯度下降算法给出参数建议更新的方向(权重需要增加还是降低),这样无疑能大幅度降低更新所需的计算复杂度,也更利于硬件实现。
[0141]
在通过梯度下降算法得到权重更新的方向后,我们还提出了单脉冲方案进行权重更新。知道每次学习中权重的更新方向后,往对应的忆阻器器件施加一个脉冲完成本次权重的更新。在每次权重更新(学习)的过程中,权重参数都以一定的步长向着最优值靠拢,直
至达到或无限靠近最优值。这种在数据处理的过程中,根据处理数据的不同特征而不断的自动调整处理方法,从而使其一直处于或朝着最优运行状态靠拢的系统称为系统,基于系统的学习方法称为学习方法。对于忆阻器神经网络来说,其需要一定的学习能力,并且能够利用网络的能力连续的调整网络参数。
[0142]
实施例三
[0143]
作为实施例一的第二优选方式,忆阻器卷积神经网络权重训练方法的硬件系统,参见图10,与实施例二的不同之处在于,构成差分电路的两器件中其中有一个器件包括忆阻器,另一器件包括一共享电阻,忆阻器阵列中每行忆阻器共用一个共享电阻,改行每个忆阻器均与该共享电阻构成一差分电路,每个差分电路中忆阻器与共享电阻绑定形成一个神经元,参见图11,该电路构架权重训练方法包括如下步骤:
[0144]
步骤s100,绑定构成每个差分电路的忆阻器和共享电阻形成一个神经元;
[0145]
对于忆阻器阵列中每行忆阻器,分别将该行中每一忆阻器与该行的共享电阻绑定形成一个神经元;若忆阻器阵列中有n行忆阻器,则该硬件系统配置n个共享电阻,每行忆阻器配置一个共享电阻;绑定过程中针对行忆阻器有序配对。本方案相对于实施例二,由于共享电阻改变了差分电路的连接关系,大大减少了器件的数量,减小了电路面积和功耗。
[0146]
步骤s200,根据忆阻器的电导值与共享电阻的阻值之差映射神经元的权重;
[0147]
忆阻器的电导值在接收电脉冲状态下呈现非线性变化,利用该特性,每个神经元利用差分电路中忆阻器电导值与共享电阻的电阻值之差映射神经元权重。其中共享电阻的阻值可以通过初始化赋值,赋值范围在忆阻器最小电导值与最大电导值之间。
[0148]
步骤s300,通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向;
[0149]
该步骤与实施例二的步骤相同,不再赘述。
[0150]
步骤s400,在权重的更新方向为正向时,对忆阻器施加正向单步脉冲对神经元权重进行再次更新;
[0151]
步骤s500,在权重的更新方向为负向时,对忆阻器施加负向单步脉冲对神经元权重进行再次更新;
[0152]
步骤s600,在所有神经元的权重更新迭代达到收敛条件时,结束迭代完成训练。
[0153]
通过步骤s300获得权重的更新方向后,步骤s400、s500与实施例二的区别在于,本方案中仅需向差分电路中的一个忆阻器施加单步脉冲,而实施例二中,可以向差分电路中的一个忆阻器施加单步脉冲,也可以向差分电路中的两个忆阻器同时施加单步脉冲;前者需要有选择的向忆阻器两端施加脉冲,即需要向电导值变化幅度较大的忆阻器施加才能实现收敛。由此,本方案相对于实施例二,能够简化神经网络硬件电路和功耗,但更新的灵活性相对较弱。
[0154]
作为实施例三的第一具体实施方案:
[0155]
步骤s101,绑定构成每个差分电路的忆阻器和共享电阻形成一个神经元;
[0156]
步骤sa,随机初始化共享电阻的阻值r,其中gmin≤r≤gmax,其中gmax为忆阻器最大电导值,gmin为忆阻器最小电导值;需要说明的是,这里每一行的共享电阻其阻值为系统随机设定的,只要初次设定,后续训练过程中是不会改变的,因此可以认定为恒定值,但是每一行的共享电阻的阻值可能不同。
[0157]
步骤s201,根据忆阻器的电导值w’与共享电阻的阻值r之差映射神经元的权重w;
[0158]
神经元的权重w为:w
’–
r。
[0159]
步骤s300,通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向;
[0160]
步骤s400,在权重的更新方向为正向时,对忆阻器施加正向单步脉冲对神经元权重进行再次更新;
[0161]
步骤s500,在权重的更新方向为负向时,对忆阻器施加负向单步脉冲对神经元权重进行再次更新;
[0162]
步骤s600,在所有神经元的权重更新迭代达到收敛条件时,结束迭代完成训练。
[0163]
作为实施例三的第二具体实施方案:
[0164]
步骤s101,绑定构成每个差分电路的忆阻器和共享电阻形成一个神经元;
[0165]
步骤sa,预定所有神经元中所述共享电阻的电导值r,其中为r为所述忆阻器最大电导值g
max
与最小电导值g
min
之和的一半,r=(g
max
/2+g
min
/2);
[0166]
需要说明的是,与第一实施方案的区别在于:这里每一行的共享电阻其阻值相同,且均为忆阻器最大电导值g
max
与最小电导值g
min
之和的一半。
[0167]
步骤s201,根据忆阻器的电导值w’与共享电阻的阻值r之差映射神经元的权重w;
[0168]
神经元的权重w=w
’–
r=w
’‑
(g
max
/2+g
min
/2)。
[0169]
步骤s300,通过施加单步脉冲对神经元权重进行更新,获得神经元权重的更新方向;
[0170]
步骤s400,在权重的更新方向为正向时,对忆阻器施加正向单步脉冲对神经元权重进行再次更新;
[0171]
步骤s500,在权重的更新方向为负向时,对忆阻器施加负向单步脉冲对神经元权重进行再次更新;
[0172]
步骤s600,在所有神经元的权重更新迭代达到收敛条件时,结束迭代完成训练。
[0173]
在该算法的基础上,基于两种不同电路结构的四种不同的权重更新方案。将其命名为方案1、方案2、方案3、方案4,下面对其一一叙述:
[0174]
基于1t1r-1t1r电路结构的方案1和方案2:
[0175]
方案1和方案2的电路基础是基于1t1r-1t1r(1-transistor-1-memristor+1-transistor-1-memristor)结构的差分电路结构。不过,对其进行了一些修改。在原始的“方案0”中,每组差分器件中的两个忆阻器(w1和w2)在物理实体上并没有任何区别,而方案1和方案2将在电路设计之初即限定两者的面积尺寸不相同(例如可以设计w1的面积是w2面积的2倍),于是器件w1的电导值本征情况下(大概率)会大于w2的电导值。这时,设定器件w=w1-w2作为网络的正权重映射,器件w=w2-w1作为网络的负权重映射。值得注意的是,在上述设定中,正权重映射中的权重数值只是大概率为正,并不能保证一定为正,同理适用于负权重映射。这便引入了一定程度的概率更新行为,可作为网络权重更新的一个补偿机制。此概率命名为概率1。
[0176]
通过上述设定之后,忆阻器网络采用本技术学习算法进行参数训练。虽然方案1和方案2具有相同的电路架构,它们的不同在于构成差分对中的两个器件在每次权重更新过程中电导的变化方式不同。
[0177]
具体来说,采用方案1时,网络权重在每次更新过程中,构成差分对的两个器件的变化方向是相同的,但其变化幅度是不相等的,这样就不能保证每次施加脉冲后所得的新权重变化量与预期的权值变化量是一致的,但合适的参数设计(主要为器件w1和器件w2的面积参数)能保证上述需求在大概率条件是满足的。例如当器件w1的器件面积是器件w2的器件面积的两倍时,器件w1的变化幅度大概率大于器件w2的变化幅度。因此网络中的权重值大概率是按照算法给定的要求进行更新的,即网络中权值的更新大概率是成功的。这样的设定引入了另一种概率更新行为,可作为网络权重更新的又一个补偿机制。此概率命名为概率2。
[0178]
方案1的更新方法如下表1所示:
[0179]
表1方案1的权重更新步骤
[0180][0181][0182]
方案1的权重更新方法为:
[0183]
第一步:将网络中的权重随机设置为两部分:“正权重”和“负权重”,对应于“正权重”,硬件电路中的差分对被设计为“w=w1-w2”,相反,“负权重”对应的硬件电路中的差分对被设计为“w=w2-w1”,其中器件w1和器件w2有着不同的器件尺寸,且w1的器件尺寸要大于w2的器件尺寸。
[0184]
第二步:网络权重随机初始化。因为器件w1的器件面积要大于器件w2的器件面积,故器件w1的最大电导值gmax1要大于器件w2的最大电导值gmax2。假设w1的取值范围为[gmin1,gmax1],w2的取值范围为[gmin2,gmax2],那么gmax1》gmax2。
[0185]
第三步:利用单步脉冲的更新方法进行网络权值的更新。利用标准的sgd算法获得权重的更新方向,确定δw的正负。具体的:如果δw》0,将向表示网络中“正权重”的差分对中的两个器件w1和w2施加一个正脉冲,另外向表示网络中“负权重”的差分对中的两个器件w1和w2施加一个负脉冲。如果δw《0,将向表示网络中“正权重”的差分对中的两个器件w1和w2施加一个负脉冲,另外向表示网络中“负权重”的差分对中的两个器件w1和w2施加一个正脉冲。
[0186]
第四步:判断所有的迭代次数是否完成,如完成则停止学习过程。
[0187]
方案2有着与方案1相同的电路结构。方案2与方案1的不同在于上述“第三步”的不同。方案2权值更新的步骤如下:
[0188]
第一步:将网络中的权重随机设置为两部分:“正权重”和“负权重”,“正权重”表示
硬件电路中的差分对被设计为“w=w1-w2”,“负权重”表示硬件电路中的差分对被设计为“w=w2-w1”,其中w1的器件尺寸要大于w2的器件尺寸。
[0189]
第二步:网络权重随机初始化。器件w1的电导取值范围为[gmin1,gmax1],w2的电导取值范围为[gmin2,gmax2],与方案1类似的有gmax1》gmax2。
[0190]
第三步:利用单步脉冲的更新方法进行网络权值的更新。利用标准的sgd算法获得权重的更新方向,确定δw的正负。具体的:如果δw》0,将向表示网络中“正权重”的差分对中的器件w1施加一个正脉冲,同时向器件w2施加一个负脉冲。另外向表示网络中“负权重”的差分对中的器件w1施加一个负脉冲,同时向器件w2施加一个正脉冲。如果δw《0,将向表示网络中“正权重”的差分对中的器件w1施加一个负脉冲,同时向器件w2施加一个正脉冲。另外向表示网络中“负权重”的差分对中的器件w1施加一个正脉冲,同时向器件w2施加一个负脉冲。
[0191]
第四步:判断所有的迭代次数是否完成,如完成则停止学习过程。
[0192]
基于1t1r-1r电路结构的方案3和方案4:
[0193]
方案1和方案2之后,我们又相继提出了基于不同电路结构的两种方案(方案3和方案4),在方案1和方案2的基础上进一步降低忆阻神经网络芯片的电路复杂度和电路面积。相较于方案1和方案2的1t1r-1t1r电路结构,方案3和方案4采用了基于1t1r-1r(1-transistor-1-memristor+1-resistor)的差分电路结构,这样的电路结构显著的减少了电路的面积。因为1t1r-1t1r结构需要双倍的器件数量,而1t1r-1r结构的不同差分对可以共享同一个电阻。采用这种电路结构后,理论上相同网络有望减少50%的电路面积消耗。同时,方案3和方案4的权重更新方案仍采用方案1和方案2中的学习方法,可以使忆阻神经网络芯片在性能、面积、功耗三个重要参数上都有提升。
[0194]
方案3和方案4的不同之处在于电阻阻值的初始方法。具体来说,在方案3中,所有的电阻值(对应于器件w2)都将在一开始随机初始化,并且在整个权值更新过程中,这些值都是不变的(等于初始值),这与原始的“方案0”极其相似。对于方案4来说,在整个权值更新的过程中,所有的电阻值都是固定的,其值被固定为(g
max
/2+g
min
/2)。
[0195]
以上4种不同模式的权值更新方案与“方案0”的权值更新方法不同,主要是因为不需要计算具体的电压脉冲数量。我们所需要的是判别出训练过程中权重更新量δw的正负。这种简单的学习规则使亿阻器网络能够地更新参数,从而获得自优化的能力。
[0196]
下面,我们将对四种权值更新方案做一个总结,四种方案的实现细节如下表2所示:
[0197]
表2四种权值更新方案
[0198][0199]
我们在经典的lenet-5卷积神经网络上,分别采用本技术算法和其它基于忆阻器网络的算法对网络进行训练,并对mnist手写体数据集进行了识别准确度测试,对比了不同算法下网络的性能。
[0200]
从上图12可以看出,我们的算法可获得与标准线性随机梯度下降算法相当的高识别准确率,学习速率也相差无几。同时也明显超过了采用非线性sgd算法所获得的识别准确率,且收敛速度快于非线性sgd算法。
[0201]
另外,我们全面具体的比较了使用四种不同的权值更新方案时,网络的性能。我们测试了四种方案下,49种典型ap(ltp过程非线性度)和ad(ltd过程非线性度)值组合情况下的实验结果。其中,ap的变化范围为0~6,ad的变化范围为0~-6,具体如下图13所示。
[0202]
从上图13我们可以发现,方案1表现出了最好的网络性能,方案2表现出了比方案1更坏的网络性能。这是因为方案2的权值更新方法中,网络中的权值更新量是由差分对中两个器件沿相反方向更新后的差值得到,这将使实际的更新量将大概率大于算法要求的更新量。这种情况与随机梯度下降算法中学习速率选择过大非常类似,我们知道,在随机梯度下降算法中,若学习速率选择过大,将导致网络在极值点附近震荡,造成难以收敛的后果。方案2中情况类似,每次迭代中,过大的权值更新量使得权值一直在最优值附近震荡,但是与随机梯度算法不同的是,由于采用了本论文的算法,通过不断地迭代训练,方案2可使权值逐渐靠近最优值,并最终停在最优值附近,达到接近收敛的效果。上图12方案2中,在ap=1,ad=-1情况下,网络的识别准确率超过90%,这证明了采用方案2训练的网络是收敛的。
[0203]
方案3和方案4是采用了1t1r-1r结构的差分对架构,是为了减小电路面积而设计,在上述两种权重更新方案中,差分对中的第二权重(w2)始终未被涉及。因此,它们的性能也低于方案1。虽然如此,但是也表现出了不错的网络性能。需要说明的是:方案4比方案3具有更高的精度,因为方案4具有均匀对称的权重分布。设置gmax=1,gmin=0,权重状态数pmax为11。在模式4中,w2=(gmax+gmin)/2=0.5,因此每个差分对(w=w1-w2=w1-0.5)的可能权重值在w=-0.5、-0.4、-0.3、-0.2、-0.1、0、0.1、0.2、0.3、0.4、0.5的集合中。而在方案3中,w的分布通常是不对称的。例如,如果w2被(随机)初始化为w2=gmax(或gmin),则差分对(w=w1-w2)的权值将始终为负(或正),这对高精度在线学习是不利的。
[0204]
下表3显示了四种权值更新方案的7组典型ap、ad组合的具体识别准确率数值:
[0205]
表3不同方案训练的lenet-5网络在典型ap和ad值下的精度
[0206][0207][0208]
上表说明我们的算法非常适合忆阻器网络,基于该算法的四种权值更新方案都显示出了不错的网络性能。即使是方案2,在非线性度ap和ad值为
±
1的典型情况下,其网络识别准确率仍高达92.42%。证明该算法在很大程度上抑制了忆阻器非线性权值更新特性带来的权值更新误差。
[0209]
仿真实验结果证明,对比基于忆阻器神经网络的常规学习方案,采用我们的算法,能够很好的减少因忆阻器非线性特性引起的权重更新误差,表现出更好的网络性能;同时,由于本专利采取的算法无需计算对应于权重变化的具体脉冲数,避免了因冗余计算而产生的复杂外围电路,因而更加的硬件友好。
[0210]
以上所述,以上实施例仅用以对本技术的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本技术的方法及其核心思想,不应理解为对本技术的限制。本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。