激活函数电路、忆阻神经网络及忆阻神经网络的控制方法与流程

文档序号:22258823发布日期:2020-09-18 14:10阅读:211来源:国知局
激活函数电路、忆阻神经网络及忆阻神经网络的控制方法与流程

本申请涉及忆阻器技术领域,具体而言,涉及一种激活函数电路、忆阻神经网络及忆阻神经网络的控制方法。



背景技术:

由于忆阻器的阻值由激励的历史决定,且呈现非易失性,所以可根据基尔霍夫电流定律和欧姆定律,忆阻器的阵列结构能够完成神经网络中的矩阵向量乘的运算过程。在运算过程中,忆阻器的阵列结构可以将矩阵向量乘的计算过程一步完成,加快了神经网络的运算速度。

目前,忆阻神经网络中的激活函数采用传统神经网络中的激活函数形式,如relu(rectifiedlinearunit,线型整流函数)、sigmoid(s型函数)、tanh(hyperbolictangent,双曲正切)、abs(absolute,绝对值)等。具体是将前一层忆阻器的阵列结构输出的模拟信号转换成数字信号,然后再将数字信号在数字运算器中进行非线性转换,最后再将转换后的数字信号输出,其中,该数字运算器可包括cpu(centralprocessingunit,中央处理器)、gpu(graphicsprocessingunit,图形处理器)、fpga(fieldprogrammablegatearray,现场可编程门阵列)。

然而,由于上述激活函数的功能都是通过数字运算器实现,难以与忆阻神经网中的忆阻器的阵列结构相结合,进而使忆阻神经网络的运算速度降低。



技术实现要素:

本申请的目的在于,针对上述现有技术中的不足,提供一种激活函数电路、忆阻神经网络及忆阻神经网络的控制方法,可以提高忆阻神经网络的运算速度。

为实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本申请实施例提供了一种激活函数电路,所述电路包括:运算放大器、忆阻器,其中:

所述运算放大器的同相输入端接地,所述运算放大器的反相输入端与前级忆阻交叉阵列中一个输出端连接;

所述运算放大器的输出端与后级忆阻交叉阵列的一个输入端连接,所述运算放大器的反相输入端通过所述忆阻器与所述运算放大器的输出端连接;所述忆阻器还连接激励电源,用以向所述忆阻器提供激励电压,调整所述忆阻器的阻值。

可选地,所述运算放大器的反相输入端与所述忆阻器的上电极连接,所述运算放大器的输出端与所述忆阻器的底电极连接;

所述忆阻器的上电极或底电极连接所述激励电源。

可选地,所述忆阻器的底电极为钌金属材料制备的电极,所述忆阻器的阻变层为氧化钽材料制备的阻变层,所述忆阻器的上电极为钨金属材料制备的电极。

可选地,所述忆阻器的底电极为采用电子束蒸发生长工艺基于钌金属材料制备的电极,所述忆阻器的阻变层为采用电子束蒸发生长工艺基于氧化钽材料制备的阻变层,所述忆阻器的上电极为采用磁控溅射生长工艺基于钨金属材料制备的电极。

所述忆阻器的底电极和上电极的厚度相同,所述忆阻器的阻变层的厚度小于底电极或上电极的厚度。

第二方面,本申请实施例还提供了一种忆阻神经网络,包括:至少两级忆阻交叉阵列,相邻两级的忆阻交叉阵列中存在多个激活函数电路,所述激活函数电路为上述第一方面所述的激活函数电路;

所述激活函数电路的个数等于所述相邻两级的忆阻交叉阵列中前级忆阻交叉阵列的输出端的个数。

第三方面,本申请实施例还提供了一种忆阻神经网络的控制方法,所述忆阻神经网络为上述第二方面所述的忆阻神经网络,所述控制方法包括:

控制所述激励电源向所述忆阻神经网络的中的忆阻器输出激励电压;

向所述忆阻神经网络中第一级忆阻交叉阵列的输入端输入待处理数据;

获取所述忆阻神经网络中第二级忆阻交叉阵列的输出端所输出的处理结果。

本申请的有益效果是:

本申请实施例提供的一种激活函数电路、忆阻神经网络及忆阻神经网络的控制方法,该电路可以包括:运算放大器、忆阻器,其中:该运算放大器的同相输入端接地,该运算放大器的反相输入端与前级忆阻交叉阵列中一个输出端连接;该运算放大器的输出端与后级忆阻交叉阵列的一个输入端连接,该运算放大器的反相输入端通过该忆阻器与该运算放大器的输出端连接;该忆阻器还连接激励电源,用以向该忆阻器提供激励电压,调整该忆阻器的阻值。采用本申请实施例提供的激活函数,通过将运算放大器的正相输入端接地,使该运算放大器的反相输入端接地具有虚地作用(电压为0),进而可以满足前级忆阻交叉阵列的虚地要求,并且由于忆阻器本身的非线性特性,可以将其构成具有激活函数功能的激活函数电路。由忆阻器构成的激活函数可以很好的与忆阻交叉阵列结合,完全通过模拟的计算方式实现忆阻神经网络的运算功能,可以提高该忆阻神经网络的运算速度。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种激活函数电路的结构示意图;

图2为一种忆阻器的电流电压特性曲线示意图;

图3为一种忆阻器随时间变化的保持特性示意图;

图4为本申请实施例提供的一种忆阻器的结构示意图;

图5为本申请实施例提供的一种忆阻神经网络的示意图;

图6为本申请实施例提供的一种忆阻神经网络的控制方法的流程示意图;

图7为不同非线性度的下的激活函数电路的输入输出关系曲线示意图;

图8为在不同忆阻神经网络结构下,不同非线性度下的激活函数的性能示意图;

图9为当忆阻器阻值存在波动时对忆阻神经网路性能的影响示意图;

图10为当忆阻器存在不合格时对忆阻神经网路性能的影响示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。

在对本申请实施例进行说明之前,首先对本申请有关的背景进行简单的介绍,有利于对本申请技术方案内容的理解。

随着科技的发展,数据类型越来越多,如音频信息、视频信息、图像信息以及感官信息等数据类型信息,并且,各种数据类型的数据量也越来越多,可以说当前的时代是大数据的时代。为了从大量数据中提取有用信息,人工智能算法工程师们提出了各种用于大数据处理的算法,其中,以神经网络为核心的深度学习算法的兴起宣告着人工智能时代的到来。目前,深度学习算法主要有多层感知机网络(multilayerperceptron,mlp)、深度置信网络(deepbeliefnets,dbn)、卷积神经网络(convolutionalneuralnetwork,cnn)和长短时记忆网络(longshort-termmemory,lstm)等神经网络类型。深度学习算法在图像分类、语音识别、自然语言处理、自动驾驶、医疗辅助诊断以及棋盘游戏等领域具有广泛的应用前景。

然而,通过深度学习算法去训练神经网络中的权重几乎都是基于数字运算器实现,该数字运算器可以包括cpu、gpu以及fpga,该数字运算器在工作的过程中存在“冯·诺依曼瓶颈”。也就是说,由于传统的计算机将数据储存在内存中,然后再将存储的数据传送到数字运算器中进行运算,这种来回“搬运”数据的活动会造成大量时间和能量的浪费。为了进一步改善训练神经网络中的权重都是基于数字运算器实现而存在的缺点,研究人员将忆阻器概念加入到神经网络中,可以为神经网络的运算进行加速。

忆阻器(memristor)这个词本身是由记忆(memory)和电阻(resistor)这两个词缩写而来的。由于这类器件的电阻值不是定值,而是取决于流经该器件的历史电荷q,所以忆阻器也可以认为是一种具有内在记忆效应的电阻,并且还具有非易失性。根据基尔霍夫电流定律和欧姆定律,忆阻交叉阵列能够完成神经网络中的矩阵向量乘的运算过程。同时忆阻交叉阵列可以看成是权重矩阵的直接映射,忆阻交叉阵列中的每一个忆阻器的电导值与权重矩阵的值一一对应。在忆阻交叉阵列中,在输入端同时施加电压,就可以得到电压向量与电导矩阵相乘的计算结果,即输出的电流。在计算过程中,矩阵向量乘的操作计算过程一步完成,加快了运算速度。

激活函数是神经网络中的一个重要组成部分,将前一层网络的输出结果通过非线性变化输入到下一层网络中进行进一步的运算,可将非线性特性引入到神经网络中,使神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中,在传统的神经网络中,激活函数主要包括relu、sigmoid、tanh、abs等。在目前的忆阻神经网络中,通常还是采用上述这些激活函数进行运算,然而这些激活函数的工能还是通过数字运算器件(cpu、gpu、fpga)实现的,并且需要将忆阻神经网络中前级忆阻交叉阵列输出的模拟信号转换成数字信号,再将数字信号传输到上述数字运算器件中进行运算,最后再将数字信号转换成模拟信号传输给后级忆阻交叉阵列的输入端进行后续的计算,可以看出,忆阻神经网络存在两部分的计算方式,一个是模拟运算方式,一个是数字计算方式。但是随着以忆阻交叉阵列为代表的神经网络模拟计算方式的发展,传统的数字计算方式实现的激活函数已无法满足要求,迫切需要开发出模拟计算方式实现的激活函数功能。本申请实施例就针对可以通过模拟计算方式实现的激活函数功能进行说明。

图1为本申请实施例提供的一种激活函数电路的结构示意图,如图1所示,该激活函数电路可以包括:运算放大器101、忆阻器102,其中:

运算放大器101的同相输入端接地,运算放大器101的反相输入端与前级忆阻交叉阵列w中一个输出端连接;

运算放大器101的输出端与后级忆阻交叉阵列w'的一个输入端连接,运算放大器101的反相输入端通过忆阻器102与运算放大器101的输出端连接;忆阻器102还连接激励电源(图中未标出),用以向忆阻器102提供激励电压,调整忆阻器102的阻值。

具体的,忆阻器102是一种新原理纳米器件,其电导值是可变的,电导值大小反映了流过忆阻器102的电荷量的多少,断电后忆阻器102还可以“记忆”过去的历史里电荷的量,即所谓的非易失特性。忆阻器102一般都为金属-绝缘体-金属(metal-insulator-metal,mim)的“三明治”结构,包括上电极、阻变层以及低电极。激励电源可以与忆阻器102的上电极连接(图1中示出),激励电源还可以与忆阻器102的上电极连接(图1中未示出),当激励电源与忆阻器102的上电极连接时,激励电源可以给忆阻器102提供正向电压,激励电源与忆阻器102的下电极连接时,激励电源可以给忆阻器102提供反向电压,激励电源提供的激励电压可以调整忆阻器102的阻值。

图2为一种忆阻器的电流电压特性曲线示意图,从图2中可以看出,激励电压与忆阻器102两种连接情况下的电流电压关系都表示出来,可以看出,忆阻器102的电压和电流具有非线性特性,其电导值(电阻值的倒数)可以随着激励电源提供的电压的改变而改变,并且,当电压超过一定的阈值时,忆阻器102的状态(非线性度)可以改变。比如,当激励电源为忆阻器102提供的电压为正向电压时,该忆阻器可以被缓慢调整为低阻态,当激励电源为忆阻器102提供的电压为反向电压时,该忆阻器可以被缓慢调整为高阻态。图3为一种忆阻器随时间变化的保持特性示意图,从图3中可以看出,忆阻器102在预设时间(如1200s)内保持阻态稳定,即忆阻器102具有良好的时间保持特性。

其中,上述提到的阈值可以为2.6v,也就是说,当激励电源提供的电压超过2.6v时,忆阻器102阻值的变化程度会和前一次输入同样大小电压时的阻值变化程度不一样,也就形成了如图2所示的带状区域。忆阻器102良好的适配了激活函数的工作状态,同时,可通过调整激励电源输出的电压,使输出的电压值超过阈值时,可以使忆阻器102的线性度发生改变。由于忆阻器102具有可配置性,所以通过忆阻器102组成的激活函数电路可以适应不同的神经网络结构,尤其在当前忆阻交叉阵列规模受限的情况下,激活函数的可配置能力对识别率的提高有重要作用。

忆阻器102的上电极与运算放大器101的反相输入端连接,忆阻器102的底电极与运算放大器101的输出端连接,根据运算放大器原理,当运算放大器101的同相输入端接地时,运算放大器101的反相输入端上的电压为0v,由于运算放大器101的反相输入端还与前级忆阻交叉阵列中一个输出端连接,所以该激活函数电路可以满足前级忆阻交叉阵列的虚地要求,并且由于忆阻器102作用是提供非线性因素,所以该激活函数电路可将忆阻神经网络需要的虚地、隔离、驱动和激活函数功能组合在一起。

在忆阻神经网络中,前级忆阻交叉阵列w的输出端会有多个,此处以一个输出端为例进行说明,其他输出端类似。前级忆阻交叉阵列w的一个输出端输出电流信号,然后该电流信号输入到运算放大器101的反相输入端,与运算放大器101的反相输入端连接的忆阻器102将该电流信号转换成电压信号,并从运算放大器101的输出端输出,从运算放大器101的输出端输出的电压信号又输入到后级忆阻交叉阵列w'的一个输入端上。

由于忆阻器102电流电压的非线性特性,图1中的激活函数电路的电流电压也是非线性的,该激活函数电路整体的输入输出公式可以由下式表示:

其中,uo是运算放大器101输出端输出的电压值;i表示运算放大器101输入端输入的电流值,即前级忆阻交叉阵列w输出端输出的电流值;i-threshold和i+threshold分别表示使运算放大器101输出最大和最小电压时的输入电流值;f(i)表示忆阻器102的电压电流关系(如图2所示),激励电源103通过调整忆阻器102的阻值,可以实现前级忆阻交叉阵列w输出端输出信号的非线性变换功能,并且,还可以调整f(i)的非线性度,进而实现可配置适合多种网络结构的激活函数。

图1中的激活函数电路结构简单的,在不增加电路复杂度的基础上,又引入了激活函数功能,单个激活电路就具有虚地、隔离、驱动和激活函数功能,实现了忆阻神经网络的高度集成,在未来的基于忆阻神经形态计算上有重要的应用前景。

采用上述图1所示的一种激活函数电路,通过将运算放大器的正相输入端接地,使该运算放大器的反相输入端接地具有虚地作用(电压为0),进而可以满足前级忆阻交叉阵列的虚地要求,并且由于忆阻器本身的非线性特性,可以将其构成具有激活函数功能的激活函数电路。由忆阻器构成的激活函数可以很好的与忆阻交叉阵列结合,完全通过模拟的计算方式实现忆阻神经网络的运算功能,可以提高该忆阻神经网络的运算速度。

可选地,忆阻器的底电极为钌金属材料制备的电极,忆阻器的阻变层为氧化钽材料制备的阻变层,忆阻器的上电极为钨金属材料制备的电极。

图4为本申请实施例提供的一种特定忆阻器的结构示意图,从图4中可以看出,该忆阻器可以分为三层,即通常所说的“三明治”结构,最上层为上电极401,中间层为阻变层402,最下层为底电极403,其中:上电极401和底电极403可以为金属材料,如上电极401可以为采用磁控溅射生长工艺基于钨金属(w)材料制备的电极,底电极403可以为采用电子束蒸发生长工艺基于钌金属(ru)材料制备的电极。阻变层402也可以称为金属氧化物层或功能层,可以为采用电子束蒸发生长工艺基于氧化钽(taox)材料制备的介质层。当然,上电极401、阻变层402以及底电极403分别采用的材料可以为其他,本申请不对此进行限定,本申请以w/taox/ru结构的忆阻器为例进行说明。

图4中忆阻器的上电极401和底电极403的厚度可以相同,该忆阻器的阻变402层的厚度可以小于底电极403或上电极401的厚度。比如w/taox/ru结构的忆阻器,其上电极(w)和底电极(ru)的厚度可以为40nm,阻变层(taox)的厚度可以为5nm。

上述w/taox/ru结构的忆阻器可以采用下述步骤进行制备,具体为:

(1)用电子束蒸发生长工艺在硅基衬底上生长活性金属的微米/纳米线条,作为该忆阻器件的底电极(ru);

(2)采用电子束蒸发生长工艺在下电极上方生长金属钽(ta),并在300摄氏度的氧气环境中退火20s中,生成阻变层(taox),阻变层(taox)与底电极(ru)之间形成接触势垒,实现非线性功能;

(3)对阻变层(taox)进行图形化刻蚀,露出底电极(ru)的引线区域;

(4)采用磁控溅射生长工艺在阻变层(taox)上沉积上电极(w)。

图5为本申请实施例提供的一种忆阻神经网络的示意图,如图5所示,该忆阻神经网络至少包括两级忆阻交叉阵列,相邻两级的忆阻交叉阵列中存在多个激活函数电路,激活函数电路为图1中的激活函数电路。该激活函数电路的个数等于该相邻两级的忆阻交叉阵列中前级忆阻交叉阵列的输出端的个数。

具体的,上述两级忆阻交叉阵列可以分别为第一级忆阻交叉阵列501以及第二级忆阻交叉阵列502,第一级忆阻交叉阵列501可以为(n*m)阵列,第二级忆阻交叉阵列502可以为(m*k)阵列,激活函数电路500的个数为m个。

图6为本申请实施例提供的一种忆阻神经网络的控制方法的流程示意图,如图6所示,该控制方法可以包括:

s601、控制激励电源向忆阻神经网络中的忆阻器输出激励电压。

s602、向该忆阻神经网络中第一级忆阻交叉阵列的输入端输入待处理数据。

s603、获取该忆阻神经网络中第二级忆阻交叉阵列的输出端所输出的处理结果。

具体的,可以结合图5中的忆阻神经网络对该控制方法进行解释,首先可以控制激励电源向忆阻神经网络中的忆阻器输出激励电压,使忆阻器产生电阻,然后可以将待处理数据(n个)转换成对应的电压信号,假设待处理数据分别为(x1,x2,……xn),转换后的电压信号分别为(vin,1,vin,2,……,vin,n)。将n个电压信号分别输入到输入层的n个神经元上,输入层的n个神经元也就相当于第一级忆阻交叉阵列501的输入端,第一级忆阻交叉阵列501上的每个忆阻器上的电导值相当于权值,n个电压信号与第一级忆阻交叉阵列501的(n*m)阵列相乘后,第一级忆阻交叉阵列501的输出端输出电流信号,该电流信号的个数为m个,即(i1,i2,……,im),个电流信号输入到激活函数电路500(m个)的输入端,激活函数电路500的输出端输出m个电压信号(v1,v2,……,vm),个电压信号(v1,v2,……,vm)与第二级忆阻交叉阵列502的(m*k)阵列相乘后,第二级忆阻交叉阵列502的输出端输出电流信号,该电流信号的个数为k个,即(iout,1,iout,2,……,iout,k)。需要说明的是,本申请不对忆阻神经网络中的忆阻交叉阵列个数进行限定。

举例来说,该忆阻神经网络对手写体的数字进行识别,该忆阻神经网络的各层神经元的个数为(784×100×10),即n等于784、m等于100及k等于10,首先将像素为28×28的图像转换为784个电压输入信号,每个电压输入信号经过第一级忆阻交叉阵列运算后,可以得到100个电流信号,将每个电流信号输入进对应的激活函数电路(100个),经过非线性放大后转化为电压信号,同时可以驱动第一级忆阻交叉阵列进行运算,最后得到10个电流输出结果,选择电流值最大的可以作为识别结果。

下述附图对上述激活函数电路的性能进行说明,图6为忆阻器激活函数与传统的激活函数性能的对比示意图,首先忆阻器激活函数应用的神经网络结构和传统的激活函数(relu、abs、tanh、sigmod)应用的神经网络结构相同,从图6中可以看出,随着训练次数的增加,图中几种激活函数的识别率都在不断上升,并且忆阻器激活函数的识别精度误差在1%以内,说明该忆阻器激活函数具有与传统数字激活函数相似的精度,考虑到忆阻器激活函数易于与忆阻神经网络集成的优点,说明忆阻器激活函数具有重要的应用前景。

不同的忆阻神经网络适用于不同的激活函数,通过对激活函数电路中忆阻器阻值进行调节,忆阻器电流电压特性的非线性度也随之改变。图7为不同非线性度的下的激活函数电路的输入输出关系曲线示意图,从图7中可以看出,a曲线的非线性对最低,e曲线的非线性对最高。

图8为在不同忆阻神经网络结构下,不同非线性度下的激活函数的性能示意图,首先不同忆阻神经网络结构可以定义为取4种不同的隐藏层神经元数量,隐藏层神经元数量相当于上述第一级忆阻交叉阵列的输出端个数m),或者其他级忆阻交叉阵列的输出端个数,图8中的m分别取值为20、50、100、200,所采用的激活函数的非线性度如图7所示中的非线性度(a-e)。从图8中的前两个图中可以看出,通过提高激活函数电路的非线性度可以得到更高的识别率,且采用e级别的非线性度的激活函数电路识别率较采用a级别的非线性度的激活函数电路识别率提高2%。从图8中的后两个图中可以看出,m数值越小,通过调整激活函数线性度的识别率越明显。

由于忆阻器制备等技术条件的限制,目前忆阻器均存在一定的非理想性,如阻值调整的精确度和制备的良率,为了验证本申请中激活函数电路的实用性,下述通过图9和图10分别为激活函数中的忆阻器阻值处于波动的情况下以及含有不合格的忆阻器的情况下进行测试的结果,所要用的忆阻器的结构为w/taox/ru。

图9为当忆阻器阻值存在波动时对忆阻神经网路性能的影响示意图,图9中场景是当忆阻神经网路中有100个激活函数时,激活函数中的忆阻器阻值的波动在(0%-4%)情况下的忆阻神经网路的识别率,从图9中可以看出,忆阻器阻值的波动对忆阻神经网路性能影响很小,证明激活函数电路具有一定的实用性。

图10为当忆阻器存在不合格时对忆阻神经网路性能的影响示意图,图10中场景是当忆阻神经网路中有100个激活函数时,激活函数中的忆阻器良率在(100%-80%)情况下的忆阻神经网路的识别率,从图10中可以看出,即使100个忆阻器中有10个忆阻器不合格,依然可以使忆阻神经网路达到94%的识别度,进一步证明激活函数电路具有一定的实用性。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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