CN113728338A - 利用非对称rpu器件的dnn训练 - Google Patents
利用非对称rpu器件的dnn训练 Download PDFInfo
- Publication number
- CN113728338A CN113728338A CN202080031308.6A CN202080031308A CN113728338A CN 113728338 A CN113728338 A CN 113728338A CN 202080031308 A CN202080031308 A CN 202080031308A CN 113728338 A CN113728338 A CN 113728338A
- Authority
- CN
- China
- Prior art keywords
- cross
- point array
- matrix
- array
- rpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
Abstract
在一个方面中,一种训练DNN的方法包括:提供权重矩阵(W)作为矩阵/阵列A和C的线性组合;在前向循环中,通过阵列A和阵列C传输输入向量x并且读取输出向量y;在后向循环中,通过阵列A和阵列C传输误差信号δ并且读取输出向量z;通过经由阵列A传输输入向量x和误差信号δ来更新阵列A;在前向循环中,通过阵列A传输输入向量ei并且读取输出向量y′;使用y′计算f(y′);以及通过经由矩阵C传输输入向量ei和f(y′)来更新矩阵C。还提供了一种DNN。
Description
技术领域
本发明涉及深度神经网络(DNN)训练,并且更具体地,涉及用于训练具有非对称电阻处理单元(RPU)器件的DNN的技术。
背景技术
在Gokmen等人的题为“Resistive Processing Unit”的美国专利申请公开号2017/0109628(下文中称为“美国专利申请公开号2017/0109628)中描述了深度神经网络(DNN)可以体现在电阻性器件的模拟交叉点阵列中。如美国专利申请公开号2017/0109628中所描述的,每个RPU包括第一端子、第二端子和有源区。有源区的导电状态限定RPU的权重值,该权重值可以通过向第一端子/第二端子施加信号来更新/调整。
基于DNN的模型已经用于各种不同的基于认知的任务,诸如对象和语音识别以及自然语言处理。例如,参见Gokmen等人的“Training Deep Convolutional NeuralNetworks with Resistive Cross-point Devices”,Frontiers in Neuroscience,第11卷,第538条(2017年10月)(13页)。DNN训练是执行此类任务时提供高水平的准确性所需要的。训练大的DNN是计算量极大的任务。
对称性是实现DNN训练的准确性的重要因素。为了对称,模拟电阻器件在经受正电压脉冲和负电压脉冲时具有对称改变的电导。这种对称性使得能够在DNN训练期间完美地实现后向传播和随机梯度下降(SGD)。然而,在实践中,RPU器件可能表现出非线性和非对称开关特性,这不是理想的。例如,当电压脉冲被逐步施加以向上调整或向下调整权重时,通常存在向上调整和向下调整之间的平衡。
因此,需要新的DNN训练技术来容忍这种非线性/非对称硬件偏差。
发明内容
本发明提供了如权利要求1所保护的方法以及如权利要求15所保护的对应的系统。
通过参考以下详细描述和附图,将获得对本发明的更完整理解以及本发明的进一步特征和优点。
附图说明
图1是示出根据本发明实施例的在电阻处理单元(RPU)器件的模拟交叉点阵列中实现的深度神经网络(DNN)的图;
图2A是示出根据本发明实施例的线性和对称的RPU器件的理想开关特性的图;
图2B是示出根据本发明实施例的非线性和非对称的RPU器件的非理想开关特性的图;
图3是示出根据本发明实施例的用于训练DNN的示例性方法的图;
图4是示出根据本发明实施例的与矩阵A和填充有矩阵A的零权重导电值的参考矩阵相对应的两个互连阵列(即,阵列A和参考阵列)的图;
图5是示出根据本发明实施例的分别对阵列A和阵列C执行的前向循环y=Wx的图,其中,y作为阵列A和阵列C的输出的线性组合;
图6是示出根据本发明实施例的分别对矩阵A和矩阵C执行的后向循环z=WTδ的图,其中,z作为来自矩阵A和矩阵C的输出的线性组合;
图8是示出根据本发明实施例对矩阵A执行前向循环y′=Aei的图;
图9是示出根据本发明实施例利用ei和f(y′)更新矩阵C的图;
图10是示出根据本发明实施例的示例性的独热编码向量的图;
图11是示出根据本发明实施例的2阶示例性哈达玛矩阵的图;
图12是示出根据本发明实施例的4阶示例性哈达玛矩阵的图;以及
图13是示出根据本发明实施例的可以在执行本技术中的一个或多个时采用的示例性装置的图。
具体实施方式
本文提供了具有非对称电阻处理单元(RPU)器件的深度神经网络(DNN)训练技术。如上所述,DNN可以体现在RPU的模拟交叉点阵列中。例如,参见图1所示的示意图。
如图1所示,算法(抽象)权重矩阵102的每个参数(权重Wij)被映射到硬件上的单个RPU器件(RPUij),即RPU器件的物理交叉点阵列104。交叉点阵列104包括一系列导电行线106和一系列与导电行线106正交并相交的导电列线108。行线106和列线108之间的交叉点由RPU 110分开,形成RPU器件的交叉点阵列104。如美国专利申请公开号2017/0109628中所描述的,每个RPU可以包括第一端子、第二端子和有源区。有源区的导电状态识别RPU的权重值,该权重值可以通过向第一/第二端子施加信号来更新/调整。此外,三端子(或甚至更多端子)器件可以通过控制额外的端子来有效地用作二端子电阻式存储器件。关于三端子RPU器件的描述,参见例如Kim等人的“Analog CMOS-based Resistive Processing Unit forDeep Neural Network Training”,2017IEEE第六届国际中西部电路和系统研讨会(MWACAS),(2017年8月)(4页)。
每个RPU(RPUij)基于其在交叉点阵列104中的位置(即,第i行和第j列)被唯一地标识。例如,对于交叉阵列104,自上而下并且从左到右,第一行线106和第二列线108的交叉处的RPU被指定为RPU11、第一行线106和第二列线108的交叉处的RPU被指定为RPU12等等。此外,将权重矩阵102的参数映射到交叉点阵列104的RPU遵循相同的约定。例如,权重矩阵102的权重Wi1被映射到交叉点阵列104的RPUij,权重矩阵102的权重Wi2被映射到交叉点阵列104的RPUi2等等。
交叉点阵列104的RPU 110实际上用作DNN中的神经元之间的加权连接。RPU 110的导电状态(例如,电阻)可以通过分别控制施加在行线106和列线108的各个导线之间的电压来改变。通过改变RPU的导电状态实现高导电状态或低导电状态来存储数据。通过施加电压并测量通过目标RPU110的电流来读取RPU 110的导电状态。所有涉及权重的操作由RPU 110完全并行地执行。
在机器学习和认知科学中,基于DNN的模型是由动物的生物神经网络,特别是大脑,所启发的一族统计学习模型。这些模型可用于估计或近似取决于通常未知的连接的大量输入和权重的系统和认知功能。DNN通常体现为互连处理器元件的所谓“神经形态”系统,该互连处理器元件充当以电子信号的形式在彼此之间交换“消息”的模拟“神经元”。在模拟神经元之间传送电子消息的DNN中的连接被提供有对应于给定连接的强或弱的数字权重。这些数字权重可以基于经验来调整和调谐,使得DNN适应于输入并且能够学习。例如,用于手写识别的DNN由一组输入神经元定义,该组输入神经元可由输入图像的像素激活。在由网络设计者确定的函数进行加权和变换之后,这些输入神经元的激活然后被传递到其他下游神经元。重复该过程直到输出神经元被激活。被激活的输出神经元确定哪个字符被读取。
RPU 110可以表现出非线性和非对称开关特性,这对于训练目的而言尤其不理想。参见例如图2A和图2B。首先参考图2A,示出了理想RPU器件的开关特性。如图2A所示,在这种理想情况下,当施加外部电压激励以向上或向下调节权重时,响应是线性和对称的。为了训练的目的,这种理想的器件完美地实现了后向传播和随机梯度下降(SGD)。
即,如将在下面进一步详细描述的,可以利用增量或随机梯度下降(SGD)过程来训练DNN,在该过程中,使用后向传播来计算每个参数的误差梯度(权重Wij)。例如,参见Rumelhart等人的“Learning representations by back-propagating errors”,Nature第323期,第533-536页(1986年10月)。在三个循环,即前向循环、后向循环和权重更新循环,中执行后向传播,并且重复多次,直到满足收敛标准为止。
基于DNN的模型由多个处理层组成,这些处理层用多个抽象级别来学习数据的表示。参见例如LeCun等人的“Deep Learning”,Nature第521期,第436-444页(2015年5月)。对于其中N个输入神经元连接到M个输出神经元的单处理器层,前向循环涉及计算向量-矩阵乘法(y=Wx),其中长度为N的向量x表示输入神经元的活动,并且大小为M×N的矩阵W存储每对输入和输出神经元之间的权重值。通过对每个热敏存储元件执行非线性激活来进一步处理所得到的长度为M的向量y,然后将其传递到下一层。
一旦信息到达最终输出层,后向循环涉及计算误差信号并通过DNN后向传播误差信号。单层上的后向循环还涉及对权重矩阵的转置(将每一行和其对应的列互换)的向量-矩阵乘法(z=WTδ),其中长度为M的向量δ表示由输出神经元计算的误差,并且长度为N的向量z使用神经元非线性的导数被进一步处理,然后被向下传递到先前层。
最后,在权重更新循环中,通过执行在前向循环和后向循环中使用的两个向量的外积来更新权重矩阵W。这两个向量的外积通常表示为W←W+η(δxT),其中η是全局学习速率。
在后向传播过程期间对权重矩阵W执行的所有操作都可以用具有对应数量的M行和N列的RPU 110的交叉点阵列104来实现,其中交叉点阵列104中存储的导电值形成矩阵W。在前向循环中,输入向量x作为电压脉冲通过每个列线108来传输,并且由此得到的向量y被读取作为从行线106输出的电流。类似地,当从行线106供应的电压脉冲作为后向循环的输入时,则对权重矩阵的转置WT计算向量-矩阵乘积。最后,在更新循环内,表示向量x和δ的电压脉冲同时从列线108和行线106供应。在这种配置中,每个RPU 110通过处理来自对应的列线108和行线106的电压脉冲来执行局部乘法和加法运算,从而实现递增的权重更新。
如上所述,对称RPU(参见图2A)完美地实现后向传播和SGD。即,具有这种理想的RPU wij←wij+ηΔwij,其中wij是交叉点阵列104的第i行和第j列的权重值。
相反,非理想RPU器件的开关特性在图2B中示出。如图2B所示,在这种非理想情况下,当施加外部电压激励时,响应是非线性和非对称的。即,当逐步施加电压脉冲以向上或向下调节权重(在此分别称为“上升”和“下降”脉冲)时,权重更新的量(即,步长的大小)线性地依赖于当前权重值。因此,存在单个权重值(对应于下面详细描述的零偏移技术的零权重值),其中向上和向下调整在强度上相等,但是对于其余的权重范围是不平衡的。假设一组上升和下降脉冲序列被提供给RPU器件,这种不平衡意味着该器件具有向上或向下改变对称点的趋势,其中在该对称点上,上升脉冲和下降脉冲的强度相等。该器件行为可以被翻译成附加能量项(内部能量),该附加能量项源自RPU器件的控制RPU器件中的导电变化的物理性质。因此,当用于后向传播时,具有非理想开关特性的这些RPU实施起来与理想情况有很大不同(即wij←wij+ηΔwij+G(wij)|Δwij|),其中G(wij)|Δwij|表示由于RPU器件的非对称开关特性而出现的附加能量项(内部能量)。
已经发现,对于诸如RPU 110的电阻存储器件,总是存在一个单对称点,在该对称点上,每个器件的上升和下降脉冲的斜率完全相同。参见例如Kim等人的题为“AlignmentTechnologies to Matching Symmetry Point as Zero-Weight Point in Analog CraysArrays”的美国专利申请第16/158,056号(在下文中称为“美国专利申请第16/158,056号”),该对称点(可以是不同的)可以被赋予零的权重值。
通过向权重阵列(例如,矩阵A-见下文)中的RPU 110施加重复的(第一、第二、第三等)上升和下降电压脉冲直到权重阵列中的所有RPU 110收敛到它们自己的对称点,来确定交叉点阵列104中的每个RPU 110的对称点(其可以从一个器件到另一个器件变化)。例如,如果导电范围是从Gmin到Gmax,并且在一个更新事件处的平均ΔG是dGavg,则导电范围中的状态的有效数量是(Gmax-Gmin)/dGavg。当器件处于极值点并且给出了交替的上升/下降脉冲时,则将花费#次更新以达到中心点=(Gmax-Gmin)/dGavg。为了确保收敛,可以给出交替上升/下降脉冲的额外循环,例如n×(Gmax-Gmin)/dGavg,其中n=1或更大。可以以交替的方式(即,如果前一脉冲是上升脉冲,则下一脉冲是下降脉冲,反之亦然)等随机地(即,每个脉冲随机地是上升或下降脉冲)将上升电压脉冲和下降电压脉冲施加到RPU 110。
一旦权重阵列中的所有RPU 110都收敛到它们自己的对称点,则来自权重阵列(在对称点)的每个RPU 110的导电值被复制到与权重阵列互连的单独的参考阵列。在权重阵列和参考阵列中的器件之间存在一一对应的相关性,使得可以在参考阵列中的每个设备中为权重阵列中的一个对应的器件建立唯一的零权重值。因此,在运算期间,权重阵列中的RPU110的输出从存储在参考矩阵中的对应器件移位零权重值。例如,可以向权重阵列和参考阵列提供相同的信号。然后,权重阵列中来自RPU 110的输出(例如11、I2、I3等)可以通过从参考阵列中的对应器件的输出(设置为零权重值)中减去这些值而被零偏移,以实现零偏移结果。参见美国专利申请序列号16/158,056。
在此初始设定以实现零偏移结果之后,使用本技术来训练DNN。参见例如图3的方法300。在其最一般的形式中,根据本技术使用的加权矩阵(W)是两个矩阵A和C的线性组合,即W=γA+C,其中γ是标量因子。在初始化期间,具有零权重值的参考阵列(见上文)被用于确保矩阵A中的每个RPU对于对应于零的权重值来说是其平衡点。在训练期间,对矩阵A(在其零点周围具有对称行为)累积权重更新,然后再将权重更新移动到矩阵C。有利地,该耦合系统(以矩阵A和矩阵C来体现)以自洽方式最小化神经网络的目标函数和RPU的内部能量以容忍与非理想RPU相关联的硬件偏差,并且因此,与简单地使用非对称设备来执行的标准SGD技术相比给出了更好的结果。
具体地,参考图3,在步骤302中,确定矩阵A中的每个RPU的对称点,并且对应的零权重导电值被复制到参考阵列。如上所述,可以通过向矩阵A中的RPU施加重复的上升和下降电压脉冲(例如,随机地、交替地等)直到矩阵A中的所有RPU收敛到它们自己的对称点来确定每个RPU器件的对称点。矩阵A和参考矩阵可以体现在两个互连的阵列中。例如,参见图4。
即,简要地参照图4,示出了RPU 404的交叉点阵列402(填充有权重矩阵A的权重值(Wij))和RPU 408的交叉点阵列406(填充有参考矩阵的对应零权重导电值(w0′)。如图4所示,在交叉点阵列402(矩阵A)中的RPU404和交叉点阵列406(参考矩阵)中的RPU 408之间存在一一对应的相关性,使得在参考矩阵中可以为权重矩阵A中的一个对应的RPU建立唯一的零-权重值(w0′)。如下面详细描述地,当矩阵A被读取(例如,在前向和后向运算)时,阵列402(即,阵列A)和阵列406(即,参考阵列)处于差分模式。相反,当更新矩阵A时,仅对更新阵列402(即,阵列A)执行运算。
返回参考图3的方法300,一旦零权重导电值已经被存储在参考阵列中,就使用修改的SGD过程来执行DNN的训练。总之,训练过程的目标是确定用于最大化DNN的准确度的最佳参数组(权重wij)。“修改”意味着,当本SGD训练过程使用如上所述的在三个循环(前向循环、后向循环和权重更新循环)中执行的后向传播来计算误差梯度时,这里是对矩阵A和C的耦合系统而不是单个权重矩阵执行运算。对矩阵A(其围绕零点具有对称行为-参见上面的步骤302)累积权重更新。然后将该累积的信息移动到矩阵C。
如图3所示,处理器从使用权重矩阵(W)执行的后向循环开始,即W=γA+C,其中γ是标量因子。因此,如以上突出地,权重矩阵(W)是两个单独的矩阵A和C的线性组合。矩阵A和矩阵C的参数被映射到单独的交叉点阵列(例如,本文也分别称为阵列A和阵列C)中的RPU设备。通常,前向循环涉及计算向量-矩阵乘法(y=Wx),其中输入向量x表示输入神经元的活动,而矩阵W(其中W=γA+C)存储每对输入和输出神经元之间的权重值。值得注意的是,由于权重值W被设置为A和C的线性组合,使得W=γA+C,因此,可以简单地通过设置γ=0或γ=1来达到这些极端情况。当γ=1时,W=A+C,而当γ=0时,W=C,后者表示矩阵A被隐藏的情况。
根据示例性实施例,在步骤304中,对矩阵A和C分别执行前向循环,然后在步骤306中,例如使用数字电路(在模数转换之后)计算线性组合。例如,简要地参照图5,示出了在RPU器件的交叉点阵列402和508中(按照步骤304)实现前向循环的向量-矩阵乘法运算,其中交叉点阵列402和508中存储的导电值分别形成矩阵A和C。
如图5所示,在前向循环中,输入向量x作为电压脉冲通过导电列线506和512中的每一个传输,并且所得到的输出向量y被读取作为从交叉点阵列402(矩阵A)和508(矩阵C)的导电行线504和510的输出的电流。如图5所示,模数转换器(ADC)507和ADC 513被用于将分别来自交叉点阵列402(矩阵A)和508(矩阵C)的(模拟)输出向量yA=Ax和yC=Cx转换为数字信号。因此,根据方法300的步骤306,可以容易地确定这些数字化信号的线性组合y=γyA+yC,即,
yA=Ax
yC=Cx
y=γyA+yC
如图5所示,在实现标准乘法和加法运算的数字域中,对由不同阵列生成但与前向循环的同一列对应的信号进行缩放和求和。
如上文提供的步骤302,将用于交叉点阵列402(矩阵A)中的RPU器件的零权重导电值复制到参考矩阵。例如,参见图4的交叉点阵列406(参考矩阵),在训练期间,在步骤304中使用这些零权重导电值来将交叉点阵列402(矩阵A)中的RPU器件的输出值调整到其对称点,以解决其开关行为中的偏差(参见上文)。为此,在步骤304中施加到交叉点阵列402(矩阵A)的相同电压脉冲也被施加到参考矩阵。然后,从参考阵列的输出向量中减去交叉点阵列402(矩阵A)的输出向量y。这种零位移技术在美国的序列号为16/158,056的专利申请中有详细描述,其内容通过引用并入本文,如同在本文中完全阐述一样。
返回参考图3的方法300,在步骤308中,对矩阵A和C执行后向循环。通常,后向循环包括通过对矩阵A和C的转置(交换每一行和对应的列)执行向量-矩阵乘法(z=WTδ)来计算误差信号δ,并通过矩阵A和C后向传播误差信号δ,其中向量δ表示由输出神经元计算的误差,并且向量z使用神经元非线性的导数进一步处理,然后向下传递到前一层。
与前向通过一样,在步骤308中也分别对矩阵A和C执行后向循环,然后在步骤310中计算线性组合。例如,简要参考图6,示出了在交叉点阵列402(矩阵A)和508(矩阵C)中实现后向循环的向量矩阵乘法运算(根据步骤308)。
如图6所示,在后向循环中,误差信号δ作为电压脉冲通过导电行线中504和510的每一个传输,并且根据方法300的步骤308,所得到的输出向量分别被读取为从交叉点阵列402(矩阵A)和508(矩阵C)的导电列线506和512输出的电流。当从行线504和510提供电压脉冲作为向后循环的输入时,则对矩阵A和C的转置计算向量-矩阵乘积。
如图6所示,ADC 507和ADC 513被用于将分别来自交叉点阵列402(矩阵A)和508(矩阵C)的(模拟)输出向量zA=Aδ和zC=Cδ转换为数字信号。因此,根据方法300的步骤310,可以容易地确定这些数字化信号的线性组合z=(γzA+zC),即,
zA=Aδ
zC=Cδ
z=γzA+zC
如图6所示,由不同阵列生成但对应于用于后向循环的同一行的信号在数字域中缩放和求和。
如上所述,将交叉点阵列402(矩阵A)中的RPU器件的零权重导电值复制到参考矩阵。例如,参见图4的交叉点阵列406(参考矩阵),在训练期间,在步骤308中使用这些零权重导电值来将交叉点阵列402(矩阵A)中的RPU器件的输出值调整到其对称点,以解决其开关行为中的偏差(参见上文)。为此,在步骤308中施加到交叉点阵列402(矩阵A)的相同电压脉冲也被施加到参考矩阵。然后从参考矩阵的输出向量中减去交叉点阵列402(矩阵A)的输出向量。
返回参考图3的方法300,在步骤312中,使用在前向循环中传播的输入向量x和在后向循环中传播的误差信号δ来更新矩阵A,即 如上所述,η是全局学习速率。简要参考图7,示出了通过传输分别从导电列线506和导电行线504同时供应的表示向量x(来自前向循环)和向量δ(来自后向循环)的电压脉冲,在交叉点阵列402(矩阵A)中实现对矩阵A的这些更新。与用于前向循环和后向循环的电压脉冲相反,更新循环使用随机脉冲P-参见图7。在该配置中,交叉点阵列402中的每个RPU通过处理来自对应的导电列线506和导电行线504的电压脉冲来执行局部乘法和加法运算,从而实现递增的权重更新。
可选地,如下所述,在对矩阵A执行前向循环(步骤314)和更新矩阵C(步骤316)之前,可以多次重复步骤304和312。参见图3,根据示例性实施例,步骤304和312重复n次,其中n是从2到100以及在其之间的范围内。
接下来,在方法300的步骤314中,使用输入向量ei对矩阵A执行前向循环,即y′=Aei。在每个时间步,使用新的输入向量ei,并且子索引i表示该时间索引。
如下文将详细描述的,根据示例性实施例,输入向量ei是独热编码向量(one hotencoded vector)。例如,如本领域所公知的,独热编码向量是仅具有那些具有单个高(1)位和所有其它低(0)位的组合的位组(a group of bits)。为了使用简单非限制性示例来进行说明,假设大小为4×4的矩阵,独热编码向量将是以下向量之一:[1000]、[0100]、[0010]和[0001]。在每个时间步,使用新的独热编码向量,并且子索引表示该时间索引。然而,值得注意的是,本文还构想了用于选择输入向量ei的其他方法。例如,输入向量ei可以替代地从哈达玛矩阵的列、随机矩阵等中选择。参见下文。
简要地参照图8,示出了在对矩阵A执行的这种循环中,输入向量ei作为电压脉冲通过每个导电列线506来传输,并且得到的输出向量y′被读取作为从交叉点阵列402(矩阵A)的导电列线504、504输出的电流。当从列线506供应的电压脉冲作为对矩阵A执行的前向循环的输入时,计算向量-矩阵乘积。
如上所述,将交叉点阵列402(矩阵A)中的RPU器件的零权重导电值被复制到参考矩阵。例如,参见图4的交叉点阵列406(参考矩阵)。在步骤314中使用这些零权重导电值来将交叉点阵列402(矩阵A)中的RPU器件的输出值调整到其对称点,以解决其开关行为中的偏差(参见上文)。为此,在步骤314中施加到交叉点阵列402(矩阵A)的相同电压脉冲也被施加到参考矩阵。然后从参考矩阵的输出向量减去交叉点阵列402(矩阵A)的输出向量z。
返回参考图3的方法300,在步骤315中,使用例如标准数字电路来使用来自步骤314的y′计算f(y′)。可以以多种不同的方式定义函数f(y′)。例如,仅作为示例,根据一个非限制性示例,仅在|y′|>阈值T时,f(y′)=y′,否则,对于|y′|<阈值T,f(y′)=0。该阈值可以是来自硬件的读取噪声的数量级。例如,由于计算y′的模拟性质,其只能以噪声方式计算,即y′=Aei只能被实现为y′=Aei+noise。前向读取操作的这个噪声项对于手头的硬件是已知的。为了消除C矩阵上的噪声更新(参见下面描述的步骤316),可以选择T~噪声,使得当来自前向循环的信号高于噪声水平时,将其应用于矩阵C。该阈值函数是消除噪声的一个示例,但还存在其他函数可用于相同的目的。或者,可以使用来自步骤314的输入向量ei和y′在步骤316中简单地更新矩阵C(见下文)。
返回参考图3的方法300,在步骤316中,使用来自步骤314的输入向量ei和来自步骤315的f(y′)更新矩阵C,即其中λ是控制对C矩阵的更新的强度的标量值。它是在更新C矩阵时使用的全局学习速率。简要地参照图9,示出了对矩阵C的这些更新在交叉点阵列508中通过传输分别从导电列线512和导电行线510同时供应的表示来自步骤314的向量ei和向量y′(如果|y′|>阈值T,否则为0)的电压脉冲来实现。与用于前向和后向循环的电压脉冲相反,更新循环使用随机脉冲P-参见图9。在这种配置中,交叉点阵列508中的每个RPU通过处理来自对应的导电列线512和导电行线510的电压脉冲来执行局部乘法和加法运算,从而实现递增的权重更新。
如图3所示,然后重复步骤304-316,直到DNN训练完成。例如,根据示例性实施例,步骤304和316被重复多次,直到满足特定的收敛标准。例如,仅作为示例,当没有看到对误差信号的更多改进时,可以认为训练完成。
如以上突出的,根据示范性实施例,输入向量ei是独热编码向量,其是仅具有单个高(1)位和所有其它低(0)位的那些组合的位组,例如,参见图10。如图10所示,给定大小为4×4的矩阵,独热编码向量将是以下向量之一:[1000]、[0100]、[0010]和[0001]。在每个时间步,新的独热编码向量被使用,由该时间索引处的子索引i表示。
根据另一示例性实施例,输入向量ei选自哈达玛矩阵的列。如本领域所公知的,哈达玛矩阵是具有项±1的方矩阵。例如,参见图11(2阶哈玛达矩阵)和图12(4阶哈玛达矩阵)。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或媒介),该计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保存和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备(例如穿孔卡或凹槽中的凸起结构,其上记录有指令)以及上述的任何适当组合。如本文所使用的,计算机可读存储介质本身不应被解释为瞬态信号,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)或通过电线传输的电信号。
本文描述的计算机可读程序指令可以通过网络,例如互联网、局域网、广域网和/或无线网络,从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集体系结构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据,或者是以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,如Smalltalk、C++等,以及传统的过程编程语言,如“C”编程语言或类似的编程语言。计算机可读程序指令可以作为独立软件包完全在用户计算机上执行,部分在用户计算机上执行,部分在用户计算机上执行,部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网或广域网,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化电子电路来执行计算机可读程序指令,以便执行本发明的各方面
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在一些替代实施方式中,在所述块中所标注的功能可以不按图中所标注的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
现在转到图13,示出了用于实现本文所呈现的方法中的一个或多个的装置1300的框图。仅作为示例,装置1300可被配置成控制施加到阵列的输入电压脉冲和/或处理来自阵列的输出信号。
装置1300包括计算机系统1310和可移动介质1350。计算机系统1310包括处理器设备1320、网络接口1325、存储器1330、媒体接口1335和可选的显示器1340。网络接口1325允许计算机系统1310连接到网络,而媒体接口1335允许计算机系统1310与诸如硬盘驱动器或可移动媒体1350之类的媒体交互。
处理器设备1320可以被配置为实现本文所公开的方法、步骤和功能。存储器1330可以是分布式的或本地的,并且处理器设备1320可以是分布式的或单个的。存储器1330可以实现为电、磁或光存储器,或者这些或其它类型的存储设备的任意组合。此外,术语“存储器”应当被足够宽泛地解释为包含能够从处理器设备1320访问的可寻址空间中的地址读取或向其写入的任何信息。利用该定义,通过网络接口1325可访问的网络上的信息仍然在存储器1330内,因为处理器设备1320可以从网络检索信息。应当注意,构成处理器设备1320的每个分布式处理器通常包含其自己的可寻址存储器空间。还应当注意,计算机系统1310的一些或全部可以被并入专用或通用集成电路中。
可选显示器1340是适合于与装置1300的人类用户交互的任何类型的显示器。通常,显示器1340是计算机监视器或其它类似的显示器。
Claims (15)
1.一种训练深度神经网络DNN的方法,所述方法包括以下步骤:
提供权重矩阵(W)作为矩阵A和矩阵C的线性组合,其中,矩阵A和矩阵C由电阻处理单元(RPU)器件的单独的交叉点阵列A和交叉点阵列C中存储的导电值形成,每个RPU器件具有与导电列线正交的导电行线,并且RPU器件将所述导电行线和所述导电列线之间的交叉点分开,由此RPU器件用作DNN中的神经元之间的加权连接;
在前向循环中,通过交叉点阵列A和交叉点阵列C的导电列线传输作为电压脉冲的输入向量x,并且读取所得到的输出向量y作为从交叉点阵列A和交叉点阵列C的导电行线输出的电流;
在后向循环中,通过交叉点阵列A和交叉点阵列C的导电行线传输根据作为电压脉冲的输出向量y计算的误差信号δ,并且读取所得到的输出向量z作为从交叉点阵列A和交叉点阵列C的导电列线输出的电流;
在交叉点阵列A的更新中,通过交叉点阵列A的导电列线传输作为电压脉冲的输入向量x,同时通过交叉点阵列A的导电行线传输作为电压脉冲的误差信号δ;
在前向循环中,通过交叉点阵列A的导电列线传输作为电压脉冲的输入向量ei,并且读取所得到的输出向量y′作为从交叉点阵列A的导电行线输出的电流;
使用y′计算f(y′);以及
在交叉点阵列C的更新中,通过交叉点阵列C的导电列线传输作为电压脉冲的输入向量ei,同时通过交叉点阵列C的导电行线传输作为电压脉冲的f(y′)。
2.根据权利要求1所述的方法,其中,仅在|y′|>阈值T的情况下,f(y′)=y′,否则f(y′)=0。
3.根据权利要求1所述的方法,还包括以下步骤:
重复所述方法的步骤,直到满足收敛标准。
4.根据权利要求1所述的方法,还包括以下步骤:
将来自所述交叉点阵列A和所述交叉点阵列C的所述输出向量y转换为数字信号。
5.根据权利要求4所述的方法,还包括以下步骤:
计算来自所述交叉点阵列A和所述交叉点阵列C的所述输出向量y的线性组合。
6.根据权利要求1所述的方法,还包括以下步骤:
将来自所述交叉点阵列A和所述交叉点阵列C的输出向量z转换为数字信号。
7.根据权利要求6所述的方法,还包括以下步骤:
计算来自所述交叉点阵列A和所述交叉点阵列C的所述输出向量z的线性组合。
8.根据权利要求1所述的方法,还包括以下步骤:
向所述交叉点阵列A中的RPU器件施加重复的电压脉冲,直到交叉点阵列A中的所有RPU器件收敛到它们自己的对称点;以及
将所述交叉点阵列A中的RPU器件的零权重导电值复制到参考阵列。
9.根据权利要求8所述的方法,还包括以下步骤:
将所述交叉点阵列A的输出零偏移来自参考阵列的零权重导电值。
10.根据权利要求8所述的方法,其中,施加到所述交叉点阵列A中的RPU器件的所重复的电压脉冲包括上升电压脉冲和下降电压脉冲。
11.根据权利要求10所述的方法,其中,所述上升电压脉冲和所述下降电压脉冲随机地施加到所述交叉点阵列A中的RPU器件。
12.根据权利要求10所述的方法,其中,所述上升电压脉冲和所述下降电压脉冲以交替方式施加到所述交叉点阵列A中的RPU器件。
13.根据权利要求1所述的方法,其中,所述输入向量ei包括独热编码向量。
14.根据权利要求1所述的方法,其中,所述输入向量ei是从哈达玛矩阵中选择的。
15.一种系统,包括被适配为执行根据任何前述方法权利要求所述的方法的所有步骤的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/400,674 US11562249B2 (en) | 2019-05-01 | 2019-05-01 | DNN training with asymmetric RPU devices |
US16/400,674 | 2019-05-01 | ||
PCT/IB2020/053538 WO2020222064A1 (en) | 2019-05-01 | 2020-04-15 | Dnn training with asymmetric rpu devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113728338A true CN113728338A (zh) | 2021-11-30 |
CN113728338B CN113728338B (zh) | 2022-11-25 |
Family
ID=73016099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080031308.6A Active CN113728338B (zh) | 2019-05-01 | 2020-04-15 | 利用非对称rpu器件的dnn训练 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11562249B2 (zh) |
JP (1) | JP7422782B2 (zh) |
CN (1) | CN113728338B (zh) |
DE (1) | DE112020002186T5 (zh) |
GB (1) | GB2598856B (zh) |
WO (1) | WO2020222064A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11334731B2 (en) * | 2018-04-24 | 2022-05-17 | University of Pittsburgh—of the Commonwealth System of Higher Education | System and method of decoding a barcode using machine learning |
US11922314B1 (en) * | 2018-11-30 | 2024-03-05 | Ansys, Inc. | Systems and methods for building dynamic reduced order physical models |
US11562249B2 (en) * | 2019-05-01 | 2023-01-24 | International Business Machines Corporation | DNN training with asymmetric RPU devices |
US20200349422A1 (en) * | 2019-05-02 | 2020-11-05 | Silicon Storage Technology, Inc. | Output array neuron conversion and calibration for analog neural memory in deep learning artificial neural network |
US20220207344A1 (en) * | 2020-12-26 | 2022-06-30 | International Business Machines Corporation | Filtering hidden matrix training dnn |
KR20220148558A (ko) * | 2021-04-29 | 2022-11-07 | 삼성전자주식회사 | 뉴로모픽 컴퓨팅 장치 및 그 설계 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594382B1 (en) * | 1999-11-04 | 2003-07-15 | The United States Of America As Represented By The Secretary Of The Navy | Neural sensors |
US20180060726A1 (en) * | 2016-08-30 | 2018-03-01 | International Business Machines Corporation | Voltage control of learning rate for rpu devices for deep neural network training |
CN108375856A (zh) * | 2017-01-31 | 2018-08-07 | 株式会社半导体能源研究所 | 显示装置、显示模块及电子设备 |
US20180253642A1 (en) * | 2017-03-01 | 2018-09-06 | International Business Machines Corporation | Resistive processing unit with hysteretic updates for neural network training |
CN108596780A (zh) * | 2018-04-28 | 2018-09-28 | 中国石油大学(华东) | 一种基于多元信息的储层类型划分方法及系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150596B (zh) | 2013-02-22 | 2015-12-23 | 百度在线网络技术(北京)有限公司 | 一种反向传播神经网络dnn的训练系统 |
US9715655B2 (en) * | 2013-12-18 | 2017-07-25 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for performing close-loop programming of resistive memory devices in crossbar array based hardware circuits and systems |
US10185803B2 (en) | 2015-06-15 | 2019-01-22 | Deep Genomics Incorporated | Systems and methods for classifying, prioritizing and interpreting genetic variants and therapies using a deep neural network |
US10748064B2 (en) | 2015-08-27 | 2020-08-18 | International Business Machines Corporation | Deep neural network training with native devices |
US10387778B2 (en) * | 2015-09-29 | 2019-08-20 | International Business Machines Corporation | Scalable architecture for implementing maximization algorithms with resistive devices |
US10325006B2 (en) | 2015-09-29 | 2019-06-18 | International Business Machines Corporation | Scalable architecture for analog matrix operations with resistive devices |
US10248907B2 (en) | 2015-10-20 | 2019-04-02 | International Business Machines Corporation | Resistive processing unit |
US9646243B1 (en) | 2016-09-12 | 2017-05-09 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
US9715656B1 (en) | 2016-09-12 | 2017-07-25 | International Business Machines Corporation | Killing asymmetric resistive processing units for neural network training |
US10783432B2 (en) | 2017-04-14 | 2020-09-22 | International Business Machines Corporation | Update management for RPU array |
US10134472B1 (en) | 2017-06-30 | 2018-11-20 | International Business Machines Corporation | Floating gate architecture for deep neural network application |
US10922610B2 (en) | 2017-09-14 | 2021-02-16 | Intel Corporation | Synchronization scheduler of distributed neural network training |
US10831860B2 (en) * | 2018-10-11 | 2020-11-10 | International Business Machines Corporation | Alignment techniques to match symmetry point as zero-weight point in analog crosspoint arrays |
US11562249B2 (en) * | 2019-05-01 | 2023-01-24 | International Business Machines Corporation | DNN training with asymmetric RPU devices |
-
2019
- 2019-05-01 US US16/400,674 patent/US11562249B2/en active Active
-
2020
- 2020-04-15 CN CN202080031308.6A patent/CN113728338B/zh active Active
- 2020-04-15 DE DE112020002186.6T patent/DE112020002186T5/de active Pending
- 2020-04-15 JP JP2021557551A patent/JP7422782B2/ja active Active
- 2020-04-15 WO PCT/IB2020/053538 patent/WO2020222064A1/en active Application Filing
- 2020-04-15 GB GB2117040.2A patent/GB2598856B/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594382B1 (en) * | 1999-11-04 | 2003-07-15 | The United States Of America As Represented By The Secretary Of The Navy | Neural sensors |
US20180060726A1 (en) * | 2016-08-30 | 2018-03-01 | International Business Machines Corporation | Voltage control of learning rate for rpu devices for deep neural network training |
CN108375856A (zh) * | 2017-01-31 | 2018-08-07 | 株式会社半导体能源研究所 | 显示装置、显示模块及电子设备 |
US20180253642A1 (en) * | 2017-03-01 | 2018-09-06 | International Business Machines Corporation | Resistive processing unit with hysteretic updates for neural network training |
CN108596780A (zh) * | 2018-04-28 | 2018-09-28 | 中国石油大学(华东) | 一种基于多元信息的储层类型划分方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
GB2598856A (en) | 2022-03-16 |
DE112020002186T5 (de) | 2022-04-07 |
WO2020222064A1 (en) | 2020-11-05 |
US11562249B2 (en) | 2023-01-24 |
US20200349440A1 (en) | 2020-11-05 |
CN113728338B (zh) | 2022-11-25 |
GB202117040D0 (en) | 2022-01-12 |
GB2598856B (en) | 2022-12-07 |
JP7422782B2 (ja) | 2024-01-26 |
JP2022530738A (ja) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113728338B (zh) | 利用非对称rpu器件的dnn训练 | |
CN111279366B (zh) | 人工神经网络的训练 | |
US10755170B2 (en) | Resistive processing unit with hysteretic updates for neural network training | |
KR102449941B1 (ko) | 효율적인 행렬 곱셈을 위한 시스템 및 방법 | |
US11087204B2 (en) | Resistive processing unit with multiple weight readers | |
US10970626B2 (en) | Multi-memristive synapse with clock-arbitrated weight update | |
JP2021507349A (ja) | 抵抗処理ユニット・アレイのクロスポイント・デバイスに重みを記憶するための方法、そのクロスポイント・デバイス、ニューラル・ネットワークを実施するためのクロスポイント・アレイ、そのシステム、およびニューラル・ネットワークを実施するための方法 | |
US20200117986A1 (en) | Efficient processing of convolutional neural network layers using analog-memory-based hardware | |
CN112823327B (zh) | 模拟的交叉点阵列中匹配对称点作为零权重点的对准技术 | |
US20200293855A1 (en) | Training of artificial neural networks | |
US10832773B1 (en) | Architecture for enabling zero value shifting | |
KR20230029759A (ko) | 아날로그 크로스바 어레이들을 업데이트하기 위한 희소 수정가능 비트 길이 결정 펄스 생성 | |
US11556770B2 (en) | Auto weight scaling for RPUs | |
WO2020240288A1 (en) | Noise and signal management for rpu array | |
AU2021281628B2 (en) | Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference | |
US20220101142A1 (en) | Neural network accelerators resilient to conductance drift | |
US20220207344A1 (en) | Filtering hidden matrix training dnn | |
US20220327375A1 (en) | Training dnn by updating an array using a chopper | |
CN116391192A (zh) | Rpu交叉开关阵列上的权重重复 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |