基于忆阻器阵列的神经网络的训练方法和装置与流程

文档序号:23340677发布日期:2020-12-18 16:36阅读:310来源:国知局

本公开的实施例涉及一种基于忆阻器阵列的神经网络的训练方法和装置。



背景技术:

神经网络在自动驾驶、语言识别、数据处理等领域获得巨大成功。忆阻器元件集存储与计算于一体的优势,使其在神经网络的硬件实现领域得到了众多关注。



技术实现要素:

本公开至少一实施例提供一种基于忆阻器阵列的神经网络的训练方法,所述神经网络包括逐一连接的多层神经元层以及在所述多层神经元层之间的权重参数矩阵,所述方法包括:获取所述神经网络的权重参数矩阵中元素的更新值;判断所述神经网络当前所处的训练阶段,所述训练阶段包括在时间上依次排列的第一训练阶段和第二训练阶段;基于所述神经网络当前所处的训练阶段和所述更新值,确定向所述忆阻器阵列中的忆阻器施加脉冲的脉冲信息;以及基于所述脉冲信息,调节所述忆阻器阵列中各个忆阻器的电导值,以更新所述神经网络的权重参数矩阵中元素的值;所述第一训练阶段中确定的脉冲信息与所述第二训练阶段中确定的脉冲信息不同。

例如,在本公开一实施例提供的训练方法中,脉冲信息包括脉冲个数、脉冲幅值、脉冲方向和脉冲宽度中的至少一个。

例如,在本公开一实施例提供的训练方法中,脉冲信息包括脉冲个数,基于所述神经网络当前所处的训练阶段和所述更新值,确定向所述忆阻器阵列中的忆阻器施加脉冲的脉冲信息,包括:根据所述神经网络当前所处的训练阶段,确定至少一个阈值端点,并且基于所述至少一个阈值端点将所述更新值的绝对值的取值范围划分为多个阈值区间;确定所述多个阈值区间与所述脉冲个数之间的对应关系;以及基于所述更新值所属的阈值区间和所述对应关系,确定向所述忆阻器阵列中的忆阻器施加脉冲的脉冲信息。

例如,本公开一实施例提供的训练方法中,根据所述神经网络当前所处的训练阶段,确定所述至少一个阈值端点,并且基于所述至少一个阈值端点将所述更新值的绝对值的取值范围划分为多个阈值区间,包括:若所述神经网络当前所处的训练阶段为所述第一训练阶段,则在所述第一训练阶段中确定至少两个阈值端点,以将所述更新值的绝对值的取值范围在所述第一训练阶段划分为依次排列的多个阈值区间;若所述神经网络当前所处的训练阶段为第二训练阶段,则在所述第二训练阶段中确定至少两个阈值端点,以将所述更新值的绝对值的取值范围在所述第二训练阶段划分为依次排列的多个阈值区间;所述第一训练阶段中的多个第一特定阈值区间的区间宽度分别大于所述第二训练阶段中的多个第二特定阈值区间的区间宽度,所述多个第一特定阈值区间为所述第一训练阶段的多个阈值区间中数值均小于第一预设值的区间,所述多个第二特定阈值区间为所述第二训练阶段的多个阈值区间中数值均小于第二预设值的区间。

例如,本公开一实施例提供的训练方法中,第一训练阶段的至少两个阈值端点包括第一阈值端点和第二阈值端点,所述第二训练阶段的至少两个阈值端点包括第三阈值端点和第四阈值端点,所述第一阈值端点的值大于所述第三阈值端点的值,所述第二阈值端点的值大于第四阈值端点的值。

例如,在本公开一实施例提供的训练方法中,第一训练阶段的多个阈值区间包括第一阈值区间、第二阈值区间和第三阈值区间,所述第二训练阶段的多个阈值区间包括在第四阈值区间、第五阈值区间和第六阈值区间,第一阈值区间的宽度大于第四阈值区间的宽度,第二阈值区间的宽度大于第五阈值区间的宽度。

例如,本公开一实施例提供的训练方法中,第一阈值区间对应的脉冲个数大于等于第四阈值区间对应的脉冲个数,第二阈值区间对应的脉冲个数大于等于第五阈值区间对应的脉冲个数,第三阈值区间对应的脉冲个数大于等于第六阈值区间对应的脉冲个数。

例如,在本公开一实施例提供的训练方法中,第一阈值区间对应的脉冲个数小于第二阈值区间对应的脉冲个数,所述第二阈值区间对应的脉冲个数小于所述第三阈值区间的对应的脉冲个数,所述第四阈值区间对应的脉冲个数小于第五阈值区间对应的脉冲个数,所述第五阈值区间对应的脉冲个数小于所述第六阈值区间的对应的脉冲个数。

例如,在本公开一实施例提供的训练方法中,在所述脉冲信息中的脉冲个数包括多个的情况下,所述多个脉冲的脉冲幅值和脉冲宽度相同。

本公开至少一个实施例还提供一种基于忆阻器阵列的神经网络的训练装置,所述神经网络包括逐一连接的多层神经元层以及在所述多层神经元层之间的权重参数矩阵,所述装置包括:获取单元,配置为获取所述神经网络的权重矩阵中元素的更新值;判断单元,配置为判断所述神经网络当前所处的训练阶段,所述训练阶段包括在时间上依次排列的第一训练阶段和第二训练阶段;脉冲信息确定单元,配置为基于所述神经网络当前所处的训练阶段和所述更新值,确定向所述忆阻器阵列中的忆阻器施加脉冲的脉冲信息;以及更新单元,配置为基于所述脉冲信息,调节所述忆阻器阵列中各个忆阻器的电导值,以更新所述神经网络的权重参数矩阵中元素的值;所述第一训练阶段中确定的脉冲信息和所述第二训练阶段中确定的脉冲信息不同。

例如,在本公开一实施例提供的训练装置中,脉冲信息包括脉冲个数,所述脉冲信息确定单元还配置为:根据所述神经网络当前所处的训练阶段,确定至少一个阈值端点,所述至少一个阈值端点将所述更新值的取值范围划分为多个阈值区间;确定所述多个阈值区间与脉冲个数之间的对应关系;以及基于所述更新值所属的阈值区间和所述对应关系,确定向所述忆阻器阵列中的忆阻器施加脉冲的脉冲信息。

例如,在本公开一实施例提供的训练装置中,脉冲信息包括脉冲个数,所述脉冲信息确定单元包括:第一多路选择器、比较器和第二多路选择器,所述第一多路选择器,配置为根据所述神经网络当前所处的训练阶段,确定至少一个阈值端点,以基于所述至少一个阈值端点将所述更新值的绝对值的取值范围划分为多个阈值区间;所述比较器,配置为将所述更新值的绝对值与所述至少一个阈值端点进行比较而确定所述更新值的绝对值所在的阈值区间;以及所述第二多路选择器,配置为确定所述多个阈值区间与脉冲个数之间的对应关系,根据所述更新值的绝对值所在的阈值区间,确定所述脉冲个数。

例如,在本公开一实施例提供的训练装置中,第一训练阶段的至少两个阈值端点包括第一阈值端点和第二阈值端点,所述第二训练阶段的至少两个阈值端点包括第三阈值端点和第四阈值端点;所述第一阈值端点大于所述第三阈值端点,所述第二阈值端点大于第四阈值端点。

例如,在本公开一实施例提供的训练装置中,第一多路选择器包括第一阈值端点多路选择器和第二阈值端点多路选择器,第一阈值端点多路选择器配置为根据所述神经网络当前所属的训练阶段选择所述第一训练阶段的第一阈值端点或所述第二训练阶段的第三阈值端点;第二阈值端点多路选择器配置为根据所述神经网络当前所属的训练阶段选择所述第一训练阶段的第二阈值端点或所述第二训练阶段的第四阈值端点。

例如,在本公开一实施例提供的训练装置中,比较器包括第一比较器和第二比较器,所述第一比较器配置为比较所述更新值的绝对值与所述第一训练阶段的第一阈值端点或所述第二训练阶段的第三阈值端点,所述第二比较器配置为比较所述更新值的绝对值和所述第一训练阶段的第二阈值端点或所述第二训练阶段的第四阈值端点。

例如,在本公开一实施例提供的训练装置中,更新单元包括选择电路,配置为从所述忆阻器阵列中选择待更新的忆阻器,以基于脉冲信息调节所述待更新的忆阻器的电导值,使所述神经网络的权重参数矩阵中元素的值得到更新。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1为一种忆阻器单元电路的示意图;

图2示出了一种忆阻器阵列的示意图;

图3a示出了本公开至少一实施例提供的一种基于忆阻器阵列的神经网络的训练方法的流程图;

图3b示出了本公开至少一实施例提供的一种神经网络的示意图;

图4a示出了图3a所示的训练方法中步骤s30的一些示例的流程示意图;

图4b示出了本公开至少一实施例提供的一种阈值端点个数与训练效果之间的关系示意图;

图4c示出了本公开至少一实施例提供的一种不同训练阶段的脉冲个数和阈值区间的示例性示意图;

图5示出了本公开至少一实施例提供的另一种基于忆阻器阵列的神经网络的训练方法的示意性流程图;

图6示出了本公开至少一实施例提供的一种基于忆阻器阵列的神经网络的训练装置600的示意框图;

图7示出了本公开至少一实施例提供的一种脉冲信息确定单元630的示意框图;以及

图8示出了本公开至少一实施例提供的一种用于实现基于忆阻器阵列的神经网络训练的硬件电路的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

忆阻器(阻变存储器、相变存储器、导电桥存储器等)是一种可以通过施加外部激励,调节其电导状态的非易失型器件。根据基尔霍夫电流定律和欧姆定律,由这类器件构成的阵列可以并行的完成乘累加计算,且存储和计算都发生在阵列各器件中。基于这种计算架构,可以实现不需要大量数据搬移的存算一体计算。同时,乘累加是运行神经网络需要的核心计算任务。因此,使用阵列中的忆阻器型器件的电导表示神经网络的权重,可以基于这种存算一体计算实现高能效的神经网络运算。

图1为一种忆阻器单元电路的示意图。例如,如图1所示,该忆阻器单元电路采用1t1r结构,即该忆阻器单元电路包括一个晶体管m1和一个忆阻器r1。

需要说明的是,本公开的实施例中采用的晶体管均可以为薄膜晶体管或场效应晶体管(例如mos场效应晶体管)或其他特性相同的开关器件。这里采用的晶体管的源极、漏极在结构上可以是对称的,所以其源极、漏极在结构上可以是没有区别的。在本公开的实施例中,为了区分晶体管除栅极之外的两极,直接描述了其中一极为第一极,而另一极为第二极。

本公开的实施例对采用的晶体管的类型不作限定,例如晶体管的栅极和字线端wl连接,当晶体管m1采用n型晶体管时,例如字线端wl输入高电平时晶体管m1导通;晶体管m1的第一极可以是源极并被配置为和源线端sl连接,例如晶体管m1可以通过源线端sl接收复位电压;晶体管m1的第二极可以是漏极并被配置为和忆阻器r1的第二极(例如负极)连接,忆阻器r1的第一极(例如正极)和位线端bl连接,例如忆阻器r1可以通过位线端bl接收置位电压。例如当晶体管m1采用p型晶体管时,字线端wl输入低电平时晶体管m1导通;晶体管m1的第一极可以是漏极并被配置为和源线端sl连接,例如晶体管m1可以通过源线端sl接收复位电压;晶体管m1的第二极可以是源极并被配置为和忆阻器r1的第二极(例如负极)连接,忆阻器r1的第一极(例如正极)和位线端bl连接,例如忆阻器r1可以通过位线端bl接收置位电压。需要说明的是,阻变存储器结构还可以实现为其他结构,例如忆阻器r1的第二极与源线端sl连接的结构,本公开的实施例对此不作限制。下面各实施例均以晶体管m1采用n型晶体管为例进行说明。

字线端wl的作用是对晶体管m1的栅极施加相应电压,从而控制晶体管m1导通或关闭。在对忆阻器r1进行操作时,例如进行置位操作或复位操作,均需要先开启晶体管m1,即需要通过字线端wl对晶体管m1的栅极施加导通电压。在晶体管m1导通后,例如,可以通过在源线端sl和位线端bl向忆阻器r1施加电压,以改变忆阻器r1的阻态。例如,可以通过位线端bl施加置位电压,以使得该忆阻器r1处于低阻态;又例如,可以通过源线端sl施加复位电压,以使得该忆阻器r1处于高阻态。

需要说明的是,在本公开的实施例中,通过字线端wl和位线端bl同时施加电压,使得忆阻器r1的电阻值越来越小,即忆阻器r1从高阻态变为低阻态,将使得忆阻器r1从高阻态变为低阻态的操作称为置位操作;通过字线端wl和源线端sl同时施加电压,使得忆阻器r1的电阻值越来越大,即忆阻器r1从低阻态变为高阻态,将使得忆阻器r1从低阻态变为高阻态的操作称为复位操作。例如,忆阻器r1具有阈值电压,在输入电压幅度小于忆阻器r1的阈值电压时,不会改变忆阻r1的电阻值(或电导值)。在这种情况下,可以通过输入小于阈值电压的电压,利用忆阻器r1的电阻值(或电导值)进行计算;可以通过输入大于阈值电压的电压,改变忆阻器r1的电阻值(或电导值)。

图2示出了一种忆阻器阵列,该忆阻器阵列由多个如图1中所示的忆阻器单元电路构成,例如多个忆阻器单元电路构成一个m行n列的阵列,m为大于1的整数,n为大于等于1的整数。图2中bl<1>、bl<2>……bl<m>分别表示第一行、第二行……第m行的位线,每一行的忆阻器单元电路中的忆阻器和该行对应的位线连接;图2中wl<1>、wl<2>……wl<n>分别表示第一列、第二列……第n列的字线,每一列的忆阻器单元电路中的晶体管的栅极和该列对应的字线连接;图2中sl<1>、sl<2>……sl<n>分别表示第一列、第二列……第n列的源线,每一列的忆阻器单元电路中的晶体管的源极和该列对应的源线连接。

图2所示的m行n列的忆阻器阵列可以表示一个m行n列大小的神经网络权重矩阵。例如,第一层神经元层具有m个神经元节点,与图2所示的忆阻器阵列的m行位线对应连接;第二层神经元层具有n个神经元节点,与图2所示的忆阻器阵列的n列源线对应连接。通过向第一层神经元层并行输入电压激励,可以在第二层神经元层得到由电压激励向量和忆阻器阵列的电导矩阵(电导为电阻的倒数)相乘得到的输出电流。

具体地,根据基尔霍夫定律,忆阻器阵列的输出电流可以根据下述公式得出:

其中,j=1,…,n,k=1,…,m。

在上述公式中,vk表示第一层神经元层中的神经元节点k输入的电压激励,ij表示第二层神经元层的神经元节点j的输出电流,gk,j表示忆阻器阵列的电导矩阵。

根据基尔霍夫定律可知,忆阻器阵列可以并行地完成乘累加计算。忆阻器阵列中每个忆阻器的电导值形成的矩阵可以作为神经网络的权重参数矩阵。

需要说明的是,例如在某些示例中,神经网络权重矩阵的每个权重也可以使用两个忆阻器来实现。也就是说,可以通过忆阻器阵列中的两列忆阻器实现一列输出电流的输出。在此情况下,表示一个m行n列大小的神经网络权重矩阵需要m行2n列的忆阻器阵列。

在神经网络训练的过程中,往往需要对神经网络的权重进行更新。例如反向传播算法(backpropagation)是一种训练人工神经网络(artificialneuralnetwork,ann)的常用且有效的算法。其主要思想是:将训练集数据输入到ann的输入层,经过隐藏层,最后达到输出层并输出估计值,这是ann的前向传播过程,由于ann的估计值与实际值有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层,在反向传播的过程中,根据误差调整神经网络权重的值。可见,在对人工神经网络进行训练的过程中,需要对神经网络的权重更新,即,需要对忆阻器阵列中每个忆阻器的电导值进行更新。

在相关技术中,通常需要采用非常复杂的硬件电路来实现神经网络训练过程中忆阻器的电导值的更新,若采用较为简单的硬件电路来实现神经训练过程中忆阻器的电导值的更新,则神经网络的训练效果较差。也就是说,在相关技术中,对基于忆阻器阵列的神经网络的训练难以实现训练效果与用于实现神经网络训练的硬件电路复杂度之间的平衡。

本公开至少一实施例提供了一种基于忆阻器阵列的神经网络的训练方法,神经网络包括逐一连接的多层神经元层以及在多层神经元层之间的权重参数矩阵,该方法包括:获取所述神经网络的权重参数矩阵中元素的更新值;判断神经网络当前所处的训练阶段,训练阶段包括在时间上依次排列的第一训练阶段和第二训练阶段;基于神经网络当前所处的训练阶段和更新值,确定向忆阻器阵列中的忆阻器施加脉冲的脉冲信息;以及基于脉冲信息,调节忆阻器阵列中各个忆阻器的电导值,以更新神经网络的权重参数矩阵中元素的值;第一训练阶段中确定的脉冲信息与第二训练阶段中确定的脉冲信息不同。

本公开至少一实施例还提供一种对应于上述基于忆阻器阵列的神经网络的训练方法的训练装置。

本公开至少一实施例提供的基于忆阻器阵列的神经网络的训练方法和装置不仅能够保证较高的训练精度和提高训练速度,并且用于实现该训练方法的硬件电路简单。

下面结合附图对本公开的实施例及其示例进行详细说明。

图3a示出了本公开至少一实施例提供的一种基于忆阻器阵列的神经网络的训练方法的流程图。如图3a所示,该训练方法可以包括步骤s10~s40。

步骤s10:获取神经网络的权重参数矩阵中元素的更新值。

步骤s20:判断神经网络当前所处的训练阶段。

步骤s30:基于神经网络当前所处的训练阶段和更新值,确定向忆阻器阵列中的忆阻器施加脉冲的脉冲信息。

步骤s40:基于脉冲信息,调节忆阻器阵列中各个忆阻器的电导值,以更新神经网络的权重参数矩阵中元素的值。

对于步骤s10,例如,神经网络包括逐一连接的多层神经元层以及在所述多层神经元层之间的权重参数矩阵。

图3b示出了本公开至少一实施例提供的一种神经网络的示意图。如图3b所示,神经网络例如包括输入层31和输出层32。需要注意的是,神经网络还可以包括隐藏层等,为了表示清楚、简洁,在此不再示出,具体可参考本领域的相关描述。

例如,如图3b所示,该神经网络还包括用于连接输入层31和输出层32的权重参数矩阵,该权重参数矩阵t为:

在本公开的一些实施例中,更新值例如可以指权重参数矩阵t中元素的元素更新值,或者也可以是指根据元素更新值得到的忆阻器阵列中忆阻器电导的电导更新值。

例如,本次神经网络训练重新确定的权重参数矩阵t中的元素值分别为w′1,1、w′1,2、w′2,1、w′2,2、w′3,1以及w′3,2,在本次神经网络训练之前的一次(即,上一次)神经网络训练重新确定的权重参数矩阵t中的元素值分别为w″1,1、w″1,2、w″2,1、w″2,2、w″3,1以及w″3,2,则元素更新值可以为本次神经网络训练重新确定的权重参数矩阵t中的元素值与上一次神经网络训练重新确定的权重参数矩阵t中对应元素值之间的差值。例如权重参数矩阵t中的元素w1,1的元素更新值可以为w′1,1-w″1,1,权重参数矩阵t中其他元素的元素更新值与元素w1,1类似,在此不再赘述。

又例如,在根据上述实施例计算得到元素更新值后,可以根据元素更新值和电导更新值之间的映射关系来确定电导更新值。该映射关系可以是本领域技术人员根据实际情况自行设计的。

在本公开的一些实施例中,例如可以利用反向传播算法进行人工神经网络的训练,以获得每次神经网络训练重新确定的权重参数矩阵t中的元素值,然后根据重新确定的权重参数矩阵t中的元素值来确定电导更新值。

在本公开的一些实施例中,例如可以从处理器或者其他计算设备中获取神经网络权重参数矩阵中元素的元素更新值或者电导更新值。

需要理解的是,图3b仅为一种神经网络的示意图,并不意味着本公开的实施例将神经网络限定为两层神经元层,输入层31的神经元个数为3,以及输出层32的神经元个数为2,实质上,神经网络可以是任意层数的,并且每个神经元层所包含的神经元的个数也是任意的。

对于步骤s20,在本公开的一些实施例中,例如可以根据神经网络的训练时长,将神经网络的训练分为第一训练阶段和第二训练阶段。例如,可以对神经网络的训练时长进行计时,以根据训练时长判断当前所处的训练阶段。例如,设定神经网络的训练时长为100小时,那么可以将前60小时作为第一训练阶段,后40小时作为第二训练阶段,而当前的计时器显示当前为神经网络训练的第30小时,那么可以确定神经网络当前所处的训练阶段为第一训练阶段。

在本公开的另一些实施例中,例如可以根据神经网络的迭代次数,将神经网络的训练分为第一训练阶段和第二训练阶段,从而在该实施例中,可以对神经网络的迭代次数进行计数,以根据迭代次数判断当前所处的训练阶段。例如,设定前500次迭代作为第一训练阶段,之后的迭代第二训练阶段,而当前的计数器显示当前迭代次数为600次,那么可以确定神经网络当前所处的训练阶段为第二训练阶段。

在本公开的一些实施例中,第一训练阶段中确定的脉冲信息与第二训练阶段中确定的脉冲信息不同。

需要说明的是,本领域技术人员可以自行设定判断神经网络当前所处的训练阶段的方法,而不局限于上述两个实施例所提供的方法。并且在上述两个实施例所提供的方法中,第一训练阶段和第二训练阶段的划分也可以根据实际情况来确定。例如设定前300次迭代作为第一训练阶段,之后的迭代第二训练阶段,或者从神经网络开始训练到训练的第300分钟为第一训练阶段,之后的训练为第二训练阶段。

需要说明的是,训练阶段可以不仅包括在时间上依次排列的第一训练阶段和第二训练阶段,还可以包括第三阶段、第四阶段等。也就是说,神经网络的训练过程可以被划分为任意数量的训练阶段,而且每个训练阶段可以具有不同的训练时长或者迭代次数,当然每个训练阶段可以具有相同的训练时长或者迭代次数。

对于步骤s30,在本公开的一些实施例中,脉冲信息可以包括脉冲个数、脉冲幅值、脉冲方向和脉冲宽度中的至少一个。

例如,可以确定与神经网络当前所处的训练阶段相对应的脉冲规则,脉冲规则可以指示针对不同的更新值应向忆阻器施加脉冲的脉冲信息,从而根据脉冲规则确定与更新值相匹配的脉冲信息。

例如,脉冲规则可以是不同的元素更新值与脉冲信息之间的对应关系。例如,第一训练阶段与第一脉冲规则相对应,第二训练阶段与第二脉冲规则相对应。第一脉冲规则例如可以是:0<元素更新值的绝对值<0.6,则施加5个脉冲,以及元素更新值的绝对值≥0.6,则施加10个脉冲,类似地,第二脉冲规则例如可以是:0<元素更新值的绝对值<0.3,则施加3个脉冲,以及元素更新值的绝对值≥0.3,则施加7个脉冲。需要注意的是,上述数值仅是示例性的,本公开的实施例对此不作限制。

例如,脉冲规则也可以是电导更新值与脉冲信息之间的对应关系。若脉冲规则是电导更新值与脉冲信息之间的对应关系。例如,脉冲规则为0μs(微西门子,简写为μs)<电导更新值的绝对值<6μs,则施加5个脉冲,以及电导更新值的绝对值≥6μs,则施加10个脉冲,类似地,第二脉冲规则例如可以是:0<电导更新值的绝对值<3μs,则施加3个脉冲,以及电导更新值的绝对值≥3μs,则施加7个脉冲。例如,若确定神经网络当前所处的训练阶段为第一训练阶段,电导更新值为4μs,则可以将更新值4μs与第一脉冲规则进行比对,根据第一脉冲规则确定更新值4μs相匹配的脉冲信息为施加5个脉冲。

在本公开的一些实施例中,脉冲信息还可以包括脉冲方向,例如若更新值为正值,则可以施加正向脉冲,若更新值为负值,则可以施加负向脉冲。换言之,若本次神经网络训练得到的元素值与上一次神经网络训练得到的元素值之间的差值小于0,则元素更新值或者电导更新值为负值,则可以向忆阻器施加负向脉冲。

需要理解的是,上述具体实施例仅为便于理解本公开的实施例,对本公开并没有限定作用,第一脉冲规则和第二脉冲规则可以是根据实际情况设定的,例如第一脉冲规则和第二脉冲规则中可以包括脉冲幅值、脉冲方向等信息。

对于步骤s40,例如,可以根据脉冲信息向各个忆阻器施加电压,通过向忆阻器施加电压来调节忆阻器的电导值,从而使得神经网络的权重参数矩阵中元素的值得到更新。

该神经网络的训练方法根据神经网络的训练特点,将神经网络的训练过程分为多个训练阶段,从而根据不同训练阶段的特点来设定脉冲信息,脉冲信息能够与训练阶段的特点相匹配,可以提升训练效果以及简化硬件电路。例如在神经网络的训练初期,权重的更新值较大,神经网络的收敛速度较快,而在神经网络的训练后期,权重的更新值较小,神经网络的收敛速度放慢,因此,可以在训练初期施加较多的脉冲个数,使得忆阻器阵列更新幅度较大,而在训练后期,权重分布基本达到了稳定状态,采用较少的更新脉冲个数,进行权重的微调,从而提高了训练的精度和速度。另外,由于根据训练阶段可以确定脉冲个数、脉冲幅值和脉冲方向等脉冲信息,因此,在向忆阻器施加脉冲后可以不用对忆阻器进行校验操作,这不仅节省了训练时间,并且也不需要设计额外的硬件电路来对忆阻器进行校验操作,从而简化了硬件电路。

在本公开的一些实施例中,在脉冲信息中的脉冲个数包括多个的情况下,多个脉冲的脉冲幅值和脉冲宽度相同。由于脉冲幅值和脉冲宽度相同,因此不需要对脉冲发生器产生的脉冲进行调整,不需要过多的硬件来产生不同的脉冲,因此,进一步地简化了硬件电路和提升了训练速度。

图4a示出了图3a所示的神经网络的训练方法中步骤s30的一些示例的流程示意图。例如,如图4a所示,在一些实施例中,脉冲信息包括脉冲个数,步骤s30可以包括步骤s31~s33。

步骤s31:根据神经网络当前所处的训练阶段,确定至少一个阈值端点,并且基于至少一个阈值端点将更新值的绝对值的取值范围划分为多个阈值区间。

例如,可以根据神经网络当前处于第一训练阶段,确定n个阈值端点,n为大于0的整数,根据神经网络当前处于第二训练阶段,确定m个阈值端点,m为大于0的整数,m可以与n相等也可以不相等。n个或者m个阈值端点可以将更新值的绝对值的取值范围划分为多个阈值区间。也就是说,第一训练阶段的阈值区间和个数和第二训练阶段的阈值区间的个数可以相同也可以不相同。

在本公开的一些实施例中,n和m的取值大于等于2。经实验表明,第一训练阶段或者第二训练阶段仅包含一个阈值端点的训练效果不如第一训练阶段或者第二训练阶段仅包含至少两个阈值端点的训练效果,因此,n和m的取值可以大于等于2。

图4b示出了本公开至少一实施例的一种阈值端点个数与训练效果之间的关系示意图。该关系示意图是经过大量实验仿真得到的。大量实验仿真例如可以是对声音定位的神经网络进行训练后,利用神经网络对声音进行定位而得到的定位角度与监督角度之间的角度偏差。

如图4b所述,2个阈值端点的训练效果远远优于1个阈值端点的训练效果,并且2个阈值端点的训练效果与3个、4个、5个或者6个阈值端点的训练效果相近。因此,可以看出当阈值端点的个数大于2个时的训练效果与2个阈值端点的训练效果相近。

因此,为例提高训练速度和简化硬件电路,可以将阈值端点的值设置为两个,即,每个训练阶段选择2个阈值端点。以下是实施例与此相同,不再赘述。

为了便于描述,在下文中以更新值为电导更新值(即,阈值端点是以电导值)为例来说明本公开的实施例。

若神经网络当前所处的训练阶段为第一训练阶段,则在第一训练阶段中确定至少两个阈值端点,以将更新值的绝对值的取值范围在第一训练阶段划分为依次排列的多个阈值区间;若神经网络当前所处的训练阶段为第二训练阶段,则在第二训练阶段中确定至少两个阈值端点,以将更新值的绝对值的取值范围在第二训练阶段划分为依次排列的多个阈值区间。第一训练阶段中的多个第一特定阈值区间的区间宽度分别大于所述第二训练阶段中的多个第二特定阈值区间的区间宽度,多个第一特定阈值区间为第一训练阶段的多个阈值区间中数值均小于第一预设值的区间,多个第二特定阈值区间为所述第二训练阶段的多个阈值区间中数值均小于第二预设值的区间。

图4c示出了本公开至少一实施例提供的一种不同训练阶段的脉冲个数和阈值区间的示例性示意图。

例如,如图4c所示,若神经网络当前处于第一训练阶段,则确定阈值端点为wth1和wth2,wth1和wth2将电导更新值δw的绝对值划分为3个阈值区间,分别为[0,wth1)、[wth1,wth2)和[wth2,∞)。第一预设值例如可以是wth2,则第一特定阈值区间为[0,wth1)、[wth1,wth2)。,若神经网络当前处于第二训练阶段,则确定阈值端点分别为w′th1和w′th2。w′th1和w′th2将更新值的绝对值划分为3个阈值区间,分别为[0,w′th1)、[w′th1,w′th2)和[w′th2,∞)。第二预设阈值可以是w′th2,第二特定阈值区间可以是[0,w′th1)、[w′th1,w′th2)。[0,wth1)的区间宽度大于[0,w′th1)的区间宽度,[wth1,wth2)的区间宽度大于[w′th1,w′th2)的区间宽度。在例子中,0<wth1<wth2,0<w′th1<w′th2。

在本公开的一些实施例中,例如可以通过多路选择器来根据训练阶段确定至少一个阈值端点。

步骤s32:确定多个阈值区间与脉冲个数之间的对应关系。

对于步骤s32,例如,在本公开的一些实施例中,可以通过获取预先设置的对应关系表来确定多个阈值区间和脉冲个数之间的对应关系,或者也可以通过逻辑电路(例如多路选择器)来确定多个阈值区间和脉冲个数之间的对应关系。

例如,如图4c所示,通过对应关系表确定多个阈值区间[0μs,5μs)、[5μs,10μs)和[10μs,∞)分别对应的脉冲个数为0、p1和p2,其中,p1和p2均为大于0的整数。

步骤s33,基于更新值所属的阈值区间和对应关系,确定向忆阻器阵列中的忆阻器施加脉冲的脉冲信息。

例如,若更新值所属的阈值区间为[5μs,10μs),则向忆阻器阵列中的忆阻器施加p1个脉冲。在本公开的一些实施例中,该p1个脉冲的脉冲幅值、脉冲方向相同。

下面结合图4c对图4a所示的步骤s30进行进一步地说明。

如图4c所示,神经网络的训练过程例如可以被划分为训练初期(即第一训练阶段)和训练后期(即第二训练阶段)。例如,训练初期的脉冲规则例如可以如图4c中的左图所示,训练后期的脉冲规则例如可以如图4c中的右图所示。

如图4c左图所示,训练初期可以确定电导更新值δw的两个阈值端点分别为wth1和wth2。wth1和wth2将电导更新值δw的绝对值划分为3个阈值区间,分别为[0,wth1)、[wth1,wth2)和[wth2,∞)。如图4c右图所示,训练后期可以确定电导更新值δw的两个阈值端点,分别为w′th1和w′th2。w′th1和w′th2将更新值的绝对值划分为3个阈值区间,分别为[0,w′th1)、[w′th1,w′th2)和[w′th2,∞)。

如图4c左图所示,[0,wth1)对应的脉冲个数可以是0个,[wth1,wth2)对应的脉冲个数可以是p1个,以及[wth2,∞)对应的脉冲个数可以是p2个。也就是说,在训练初期,若电导更新值在[0,wth1)内,则不向忆阻器施加脉冲,若电导更新值在[wth1,wth2)内,则向忆阻器施加p1个脉冲,若电导更新值在[wth2,wmax)内,则向忆阻器施加p2个脉冲。类似地,如图4c右图所示,[0,w′th1)对应的脉冲个数可以是0个,[w′th1,w′th2)对应的脉冲个数可以是p1’个,以及[w′th2,∞)对应的脉冲个数可以是p2’个。也就是说,在训练后期,若电导更新值在[0,w′th1)内,则不向忆阻器施加脉冲,若电导更新值在[w′th1,w′th2)内,则向忆阻器施加p1’个脉冲,若电导更新值在[w′th2,∞)内,则向忆阻器施加p2’个脉冲。

在训练初期,忆阻器阵列中多个忆阻器的电导更新值分布范围比较广,因此,可以将训练初期的阈值区间的区间宽度设置地大一些,而在训练后期电导更新值的分布较为集中,因此可以将训练后期的阈值区间的区间宽度设置地小一些,即,[0,wth1)的区间宽度大于[0,w′th1)的区间宽度,[wth1,wth2)的区间宽度大于[w′th1,w′th2)的区间宽度这样可以提高神经网络的训练效果。

需要理解的是,在上文中所述的阈值端点均为端点值的绝对值。例如wth1和wth2为第一训练阶段端点值的绝对值,w′th1和w′th2为第二训练阶段端点值的绝对值。例如,wth1和wth2将更新值的绝对值划分为3个阈值区间,可以是±wth1和±wth2将更新值的取值范围划分为6个阈值区间,分别为(-∞,-wth2]、(-wth2,-wth1]、(-wth1,0)、[0,wth1)、[wth1,wth2)和[wth2,∞),其中,(-∞,-wth2]和[wth2,∞)对应的脉冲信息相同,(-wth2,-wth1]和[wth1,wth2)对应的脉冲信息相同,(-wth1,0)和[0,wth1)对应的脉冲信息相同。

在本公开的一些实施例中,第一训练阶段的至少两个阈值端点包括第一阈值端点和第二阈值端点,第二训练阶段的至少两个阈值端点包括第三阈值端点和第四阈值端点,第一阈值端点的值大于第三阈值端点的值,第二阈值端点的值大于第四阈值端点的值。这样可以保证[0,第一阈值端点)、[第一阈值端点,第二阈值端点)的区间宽度分别大于第二训练阶段中[0,第三阈值端点)、[第三阈值端点,第四阈值端点)的区间宽度,也即保证第一训练阶段中的多个第一特定阈值区间的区间宽度分别大于所述第二训练阶段中的多个第二特定阈值区间的区间宽度,多个第一特定阈值区间为第一训练阶段的多个阈值区间中数值均小于第一预设值的区间,多个第二特定阈值区间为第二训练阶段的多个阈值区间中数值均小于第二预设值的区间。

继续参见参考图4c,如图4c左图所示,训练初期可以包括两个阈值端点,分别为第一阈值端点wth1和第二阈值端点wth2。wth1和wth2将更新值的绝对值划分为3个阈值区间,分别为第一阈值区间[0,wth1)、第二阈值区间[wth1,wth2)和第三阈值区间[wth2,∞)。如图4c右图所示,训练后期可以包括两个阈值端点,分别为第三阈值端点w′th1和第四阈值端点w′th2。w′th1和w′th2将更新值的绝对值划分为3个阈值区间,分别为第四阈值区间[0,w′th1)、第五阈值区间[w′th1,w′th2)和第六阈值区间[w′th2,∞)。第一阈值端点wth1的值大于第三阈值端点w′th1的值,第二阈值端点wth2的值大于第四阈值端点的值w′th2。第一阈值区间[0,wth1)的宽度大于第四阈值区间[0,w′th1)的宽度,第二阈值区间[wth1,wth2)的宽度大于第五阈值区间的宽度[w′th1,w′th2)。

例如,在本公开的一些实施例中,第一阈值区间[0,wth1)对应的脉冲个数大于等于第四阈值区间[0,w′th1)对应的脉冲个数,第二阈值区间[wth1,wth2)对应的脉冲个数大于等于第五阈值区间[w′th1,w′th2)对应的脉冲个数,第三阈值区间[wth2,∞)对应的脉冲个数大于等于第六阈值区间[w′th2,∞)对应的脉冲个数。

例如,在图4c所示的例子中,第一阈值区间[0,wth1)对应的脉冲个数等于第四阈值区间[0,w′th1)对应的脉冲个数,即都为0。第二阈值区间[wth1,wth2)对应的脉冲个数p1大于第五阈值区间[w′th1,w′th2)对应的脉冲个数p1’。第三阈值区间[wth2,∞)对应的脉冲个数p2大于第六阈值区间[w′th2,∞)对应的脉冲个数p2’。在神经网络的训练初期,更新值的绝对值的变化较大,而在训练后期,更新值的绝对值的变化较小,因此,在训练初期可以采用较多的脉冲个数,而在训练后期可以采用较少的脉冲个数,不仅提高了训练精度,还节省了训练时间。

在本公开的一些实施例中,第一阈值区间对应的脉冲个数小于第二阈值区间对应的脉冲个数,第二阈值区间对应的脉冲个数小于第三阈值区间的对应的脉冲个数,第四阈值区间对应的脉冲个数小于第五阈值区间对应的脉冲个数,第五阈值区间对应的脉冲个数小于第六阈值区间的对应的脉冲个数。例如在图4c所示的例子中,第一阈值区间[0,wth1)对应的脉冲个数小于第二阈值区间[wth1,wth2)对应的脉冲个数p1。第二阈值区间[wth1,wth2)对应的脉冲个数p1小于第三阈值区间[wth2,∞)对应的脉冲个数p2。第四阈值区间[0,w′th1)对应的脉冲个数小于第五阈值区间[w′th1,w′th2)对应的脉冲个数p1。第五阈值区间[w′th1,w′th2)对应的脉冲个数p1小于第六阈值区间[w′th2,∞)对应的脉冲个数p2’。对于不同的更新值阈值区间设置不同的脉冲个数,可以提高训练精度。

图5示出了本公开至少一实施例提供的另一种基于忆阻器阵列的神经网络的训练方法的示意性流程图。

例如,如图5所示,该训练方法可以包括步骤s510~s580。

步骤s510:初始化忆阻器阵列。

例如,可以将忆阻器阵列初始化为高阻态。

步骤s520:对神经网络进行前向训练。

例如,可以将训练集数据输入到ann的输入层,经过隐藏层,最后达到输出层并输出估计值。训练集数据包括训练样本和训练样本的监督值。

步骤s530:计算前向神经网络的输出值与监督值之间的差值。

例如,监督值可以为神经网络的理想输出值。

步骤s540:计算权重参数矩阵中元素的更新值。

例如,可以根据上述差值确定本次训练的权重参数矩阵中的元素值,将本次训练的权重参数矩阵中的元素值与上一次训练的权重参数矩阵中的元素值做差而获得元素更新值,例如,可以根据映射关系将元素更新值映射为忆阻器的电导更新值。例如,具体介绍可以参考上文图3a描述的步骤s10。

步骤s550:判断神经网络是否处于训练初期(即,第一训练阶段)。

例如,若确定神经网络处于训练初期,则执行步骤s560,若确定神经网络处于训练后期,则执行步骤s570。例如可以执行上文参考图3a描述的步骤s20。

步骤s560:根据训练初期的脉冲规则来确定电导更新值所在的阈值区间,并且确定该阈值区间对应的脉冲信息。

例如,该步骤可以参考上文步骤s30的描述。

步骤s570:根据训练后期的脉冲规则来确定电导更新值所在的阈值区间,并且确定该阈值区间对应的脉冲信息。

例如,该步骤可以参考上文步骤s30的描述。

步骤s580:根据脉冲信息,调整忆阻器的电导值,以更新神经网络的权重参数矩阵中元素的值。

例如,该步骤可以参考上文参考图3a的步骤s40的描述。

需要说明的是,在本公开的实施例中,本公开上述各个实施例提供的训练方法的流程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行。虽然上文描述的训练方法的流程包括特定顺序出现的多个操作,但是应该清楚地了解,多个操作的顺序并不受限制。上文描述的视频处理方法可以执行一次,也可以按照预定条件执行多次。

本公开上述实施例提供的基于忆阻器阵列的神经网络的训练方法不仅能够保证较高的训练精度和提高训练速度,并且用于实现该训练方法的硬件电路简单。

本公开的至少一些实施例还提供一种基于忆阻器阵列的神经网络的训练装置,该训练装置可以提升神经网络的训练效果并且简化用于神经网络训练的硬件电路。

图6示出了本公开至少一些实施例提供的一种基于忆阻器阵列的神经网络的训练装置600的示意框图。神经网络包括逐一连接的多层神经元层以及在多层神经元层之间的权重参数矩阵。如图6所示,该装置600可以包括获取单元610、判断单元620、脉冲信息确定单元630和更新单元640。例如,这些单元可以通过硬件(例如电路)模块、软件模块或二者的任意组合等实现,以下是实施例与此相同,不再赘述。例如,可以通过中央处理单元(cpu)、图像处理器(gpu)、张量处理器(tpu)、现场可编程逻辑门阵列(fpga)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元以及相应计算机指令来实现这些单元。

获取单元610配置为获取神经网络的权重矩阵中元素的更新值。例如,该获取单元610可以实现步骤s10,其具体实现方法可以参考步骤s10的相关描述,在此不再赘述。

判断单元620配置为判断神经网络当前所处的训练阶段,训练阶段包括在时间上依次排列的第一训练阶段和第二训练阶段。例如,该判断单元620可以实现步骤s20,其具体实现方法可以参考步骤s20的相关描述,在此不再赘述。

脉冲信息确定单元630配置为基于神经网络当前所处的训练阶段和更新值,确定向忆阻器阵列中的忆阻器施加脉冲的脉冲信息。例如,该判断单元630可以实现步骤s30,其具体实现方法可以参考步骤s30的相关描述,在此不再赘述。

在本公开的一些实施例中,脉冲信息包括脉冲个数,脉冲信息确定单元还配置为:根据神经网络当前所处的训练阶段,确定至少一个阈值端点,至少一个阈值端点将更新值的取值范围划分为多个阈值区间;确定多个阈值区间与脉冲个数之间的对应关系;以及基于更新值所属的阈值区间和对应关系,确定向忆阻器阵列中的忆阻器施加脉冲的脉冲信息。例如可以执行上文参考图4a所描述的步骤s30。如图4a所示,步骤s30可以包括步骤s31~s33。

更新单元640配置为基于脉冲信息,调节忆阻器阵列中各个忆阻器的电导值,以更新神经网络的权重参数矩阵中元素的值。例如该更新单元640可以实现步骤s40,其具体实现方法可以参考步骤s40的相关描述,在此不再赘述。

第一训练阶段中确定的脉冲信息和所述第二训练阶段中确定的脉冲信息不同。

图7示出了本公开至少一实施例提供的一种脉冲信息确定单元630的示意框图。

如图7所示,脉冲信息确定单元630可以包括第一多路选择器631、比较器632和第二多路选择器633。

例如,第一多路选择器631配置为根据神经网络当前所处的训练阶段,确定至少一个阈值端点,以基于至少一个阈值端点将更新值的取值范围划分为多个阈值区间。

例如,比较器632(即,第一比较器6321和第二比较器6322)配置为将更新值与至少一个阈值端点进行比较而确定更新值的绝对值所在的阈值区间。

例如,第二多路选择器633配置为确定所述多个阈值区间与脉冲个数之间的对应关系,根据所述更新值所在的阈值区间,确定所述脉冲个数。

如图7所示,第一多路选择器631例如可以包括一阈值端点多路选择器6311和第二阈值端点多路选择器6312。比较器632例如可以包括第一比较器6321和第二比较器6322。第二多路选择器633例如可以包括第一脉冲数选择器6331、第二脉冲数选择6332和输出选择器6333。

例如,第一阈值端点多路选择器6311配置为根据神经网络当前所属的训练阶段选择第一训练阶段的第一阈值端点或第二训练阶段的第三阈值端点。第二阈值端点多路选择器6312配置为根据神经网络当前所属的训练阶段选择第一训练阶段的第二阈值端点或第二训练阶段的第四阈值端点。

例如,如图7所示,第一阈值端点多路选择器6311用于从第一阈值端点wth1和第三阈值端点w′th1中选择一个阈值端点,第二阈值端点多路选择器6312用于从第二阈值端点wth2和第四阈值端点w′th2中选择一个阈值端点。例如可以是二进制数值0代表训练初期,二进制数值1代表训练后期。若神经网络当前所处的训练阶段为训练初期,则向第一阈值端点多路选择器6311的输入引脚71输入二进制数值0,第一阈值端点多路选择器6311根据二进制数值0,确定输出引脚72输出第一阈值端点wth1。类似地,若神经网络当前所处的训练阶段为训练后期,则可以向第一阈值端点多路选择器6311的输入引脚71输入二进制数值1,第一阈值端点多路选择器6311根据二进制数值1,确定输出引脚72输出第三阈值端点w′th1。与第一阈值端点多路选择器6311类似,若神经网络当前所处的训练阶段为训练初期,则向第二阈值端点多路选择器6312的输入引脚73输入二进制数值0,第二阈值端点多路选择器6312根据二进制数值0,确定输出引脚74输出第二阈值端点wth2。类似地,若神经网络当前所处的训练阶段为训练后期,则可以向第二阈值端点多路选择器6312的输入引脚73输入二进制数值1,第二阈值端点多路选择器6312根据二进制数值1,确定输出引脚74输出第三阈值端点w′th2。

例如,第一比较器6321配置为比较更新值的绝对值与第一训练阶段的第一阈值端点或第二训练阶段的第三阈值端点,第二比较器6322配置为比较更新值的绝对值和第一训练阶段的第二阈值端点或第二训练阶段的第四阈值端点。第一比较器6321和第二比较器6322各自包括更新值输入引脚70。更新值输入引脚70配置为接收更新值δw。

如图7所示,例如,输出引脚72输出的值为wth1,输出引脚74输出的值为wth2,δw分别与wth1和wth2进行比较,并且将比较结果传输到第二多路选择器633中的输出选择器6333。例如,第二多路选择器633包括第一脉冲数选择器6331、第二脉冲数选择6332和输出选择器6333。

例如,第二多路选择器633配置为确定所述多个阈值区间与脉冲个数之间的对应关系,根据所述更新值所在的阈值区间,确定所述脉冲个数。例如,可以是二进制数值0代表训练初期,二进制数值1代表训练后期。若神经网络当前所处的训练阶段为训练初期,则向第一脉冲数选择器6331和第二脉冲数选择6332各自的输入引脚75和76输入二进制数值0,则第一脉冲数选择器6331和第二脉冲数选择6332各自的输出引脚77和78分别输出p1和p2,即,将训练初期的不同阈值区间的脉冲个数选择出来,并输入到输出选择器6333。

例如,输出选择器6333可以根据p1和p2分别和阈值区间的对应关系,确定输出的脉冲个数。例如,若δw大于wth1并且小于wth2,则输出选择器6333的输出引脚79输出p1。

需要理解的是,二进制数值0代表训练初期,二进制数值1代表训练后期仅为一种示例,本领域技术人员也可以采用其他的字符或者数值来代表不同的训练阶段。

例如,在本公开的一些实施例中,第一训练阶段的至少两个阈值端点包括第一阈值端点wth1和第二阈值端点wth2,第二训练阶段的至少两个阈值端点包括第三阈值端点w′th1和第四阈值端点w′th2;第一阈值端点wth1大于第三阈值端点w′th1,第二阈值端点wth2大于第四阈值端点w′th2。

例如,在本公开的一些实施例中,第二多路选择器633可以与更新单元640耦合,更新单元640根据第二多路选择器633输出的脉冲个数向忆阻器施加的脉冲。

例如,在本公开的一些实施例中,更新单元640包括选择电路,配置为从忆阻器阵列中选择待更新的忆阻器,以基于脉冲信息调节待更新的忆阻器的电导值,使神经网络的权重参数矩阵中元素的值得到更新。

例如,选择电路可以包括行选择电路和列选择电路,行选择电路配置为从多个行中选择待更新忆阻器所在的行,列选择电路配置为从多个列中选择待更新的忆阻器所在的列,从而通过行选择电路和列选择电路来选中待更新的忆阻器。

例如,在本公开的一些实施例中,待更新的忆阻器可以是多个,例如,可以对该多个待更新的忆阻器进行依次更新,或者也可以是一次更新多个待更新的忆阻器。例如,可以是同时对更新值相同的多个忆阻器进行更新。

图8示出了本公开至少一些实施例提供的一种用于实现基于忆阻器阵列的神经网络训练的硬件电路的示意图。

例如,如图8所示,在该硬件电路中可以包括忆阻器阵列810、模数转换电路电压控制模块820以及位线控制电路830,字线控制电路840,源线控制电路850和电源860。在上文所述的更新单元640例如可以包括位线控制电路830,字线控制电路840,源线控制电路850等。

如图8所示,忆阻器阵列810可以包括m个字线和m个源线,以及n个位线。忆阻器阵列810中的每个忆阻器分别与该忆阻器所在行的字线和源线连接,并且与该忆阻器所在列的位线连接。其中,m和n例如可以是50。

电源860包括向位线提供电压的电源线vdd_bl,vdd_bl与n个位线连接,配置为向n个位线提供电压。电源860包括向字线提供电压的电源线vdd_wl,vdd_wl与m个字线连接,配置为向m个字线提供电压,电源860包括向源线提供电压的电源线vdd_sl,vdd_sl与m个源线连接,配置为向m个源线提供电压。

如图8所示,位线控制电路830可以包括列选择电路,该列选择电路例如可以包括开关电路,用于导通或者断开某列的忆阻器与该列的位线的连接。字线控制电路840可以包括行选择电路,该行选择电路例如可以包括开关电路,用于导通或者断开某行的忆阻器与该行的字线的连接。源线控制电路850可以包括行选择电路,该行选择电路例如可以包括开关电路,用于导通或者断开某行的忆阻器与该行的源线的连接。

例如,在前向训练中可以通过对字线和位线输入相应的电压脉冲信号,得到输出值。然后由处理器对输出值与监督值进行做差,经过反向传播计算,得到每个忆阻器的更新值。

在本公开的一些实施例中,例如,可以将该更新值δw输入到上文参考图7描述的更新值输入引脚70,以由上文参考图7描述的脉冲信息确定单元630确定脉冲个数。

例如,在本公开的一些实施例中,可以根据每个忆阻器对应的脉冲个数,按照从左到右,从上到下的顺序依次对忆阻器阵列中的待更新忆阻器的电导值进行更新。

以对第一行第一列的忆阻器r1进行为例来说明利用图8所示的硬件电路更新忆阻器的电导值的方法。

例如,脉冲信息确定单元630确定向忆阻器r1施加的脉冲个数为p1个,可以控制第一行的字线和vdd_wl之间的开关电路,使得第一行的字线和vdd_wl导通,而除第一行之外的其他行的字线与vdd_wl断开连接,类似地,控制第一列的位线和vdd_bl之间的开关电路,使得第一列的位线和vdd_bl导通,而除第一列之外的其他行的位线与vdd_bl断开连接,从而选择忆阻器r1,然后可以通过电源860的vdd_bl向忆阻器r1施加p1个脉冲。

例如,在本公开的另一些实施例中,对应施加的脉冲个数相同的忆阻器可以同时进行更新。例如,第二行第一列的忆阻器、第三行第一列的忆阻器施加的脉冲个数也为p1个,则可以控制第二行和第三行的字线和vdd_wl导通,并且第一列位线和vdd_bl导通,从而可以实现同时对忆阻器r1和第二行第一列的忆阻器、第三行第一列的忆阻器同时进行更新。

例如,在本公开的一些实施例中,可以通过位线和源线分别向忆阻器施加相反方向的电压。例如通过位线施加正向电压,通过源线施加反向电压,即vdd_bl提供正向电压,vdd_sl提供反向电压。若更新值为负值,则可以通过源线向忆阻器施加反向电压,以降低忆阻器的电导值。

需要注意的是,在本公开的实施例中,该训练装置可以包括更多或更少的电路或单元,并且各个电路或单元之间的连接关系不受限制,可以根据实际需求而定。各个电路的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。

关于不同实施例中的训练装置的技术效果可以参考本公开的实施例中提供的训练方法的技术效果,这里不再赘述。

有以下几点需要说明:

(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

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