CN108229669A - 神经网络阵列的自学习 - Google Patents
神经网络阵列的自学习 Download PDFInfo
- Publication number
- CN108229669A CN108229669A CN201711350507.XA CN201711350507A CN108229669A CN 108229669 A CN108229669 A CN 108229669A CN 201711350507 A CN201711350507 A CN 201711350507A CN 108229669 A CN108229669 A CN 108229669A
- Authority
- CN
- China
- Prior art keywords
- resistive element
- voltage
- neural network
- input
- neuron
- 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.)
- Pending
Links
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/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/04—Architecture, e.g. interconnection topology
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Semiconductor Memories (AREA)
Abstract
神经网络阵列的自学习。在示例性实施例中,一种方法包括确定要施加到神经网络的一个或多个输入神经元的输入电压,以及确定响应于该输入电压而在神经网络的一个或多个输出神经元处要获得的目标输出电压。该神经网络还包括多个隐藏的神经元和连接这些神经元的突触,并且多个突触中的每一个包括电阻元件。该方法还包括将输入电压施加到输入神经元,并将目标输出电压或目标输出电压的补充施加到输出神经元,以同时对多个突触的电阻元件进行编程。
Description
优先权
本申请主张基于2016年12月15日提交的、申请号为62/435,067且题为“2D AND 3DNEURAL NETWORK CHIP WITH FAST SELF-LEARNING CAPABILITY”(具有快速自学习能力的2D和3D申请网络芯片)美国临时专利申请的优先权,该申请的全部内容在此以引用的方式并入本文。
技术领域
本发明的示例性实施例大致涉及半导体领域,具体涉及形成神经网络阵列的半导体的设计和运行。
背景技术
神经网络是具有学习能力的人工智能(artificial intelligence,AI)系统。AI系统已被用于许多应用,例如语音识别、模式识别和手写识别等。
具有由突触连接的神经元的典型神经网络可以通过使用软件或硬件来实现。神经网络的软件实现依靠高性能的CPU来执行特定的算法。对于非常高密度的神经网络,CPU的速度可能成为实时任务性能的瓶颈。另一方面,硬件实现通常导致电路尺寸的增加,这可能会限制神经网络的密度或尺寸,从而限制其功能。
通常会训练神经网络,以响应于一组输入而产生期望的输出。在一个典型的训练过程中,第一步被称为前向传播(forward-propagation),其计算来自给定的输入组的输出,以及网络突触的现有权重。之后,将输出与期望输出进行比较,以获得误差值。然后执行第二步,称为反向传播,用来根据误差值调整突触的权重。这一前向/反向过程被重复多次,以对权重进行编程,直到误差值低于期望阈值。不幸的是,这一过程可能需要额外的硬件来对权重进行编程,而且可能慢且效率低下,因为其可能需要很多重复的训练周期来达到网络性能的期望水平。
因此,期望有一种快速有效的方式,来对神经网络阵列的突触权重进行编程。
发明内容
公开了神经网络阵列的自学习。在各个示例性实施例中,自学习神经网络阵列包括由加权突触连接的神经元。在一个示例性实施例中,是使用新颖的直接编程过程来实现对突触的权重进行编程的,借助该直接编程处理,从选定的输入值和输出值中对突触的权重直接进行编程。这一直接过程消除了与常规神经网络一起使用的、交替进行前向传播和反向传播步骤的需要。因此,可以实现自学习神经网络芯片。在学习过程期间,权重可以被快速且有效地更新一次或多次,直到所有权重值均被编程(例如,学习)为止。可以使用额外的培训来获得更准确的学习结果。
在示例性实施例中,公开了一种方法,其包括确定要施加到神经网络的一个或多个输入神经元的输入电压,以及确定响应于该输入电压的、在神经网络的一个或多个输出神经元处获得的目标输出电压。神经网络还包括多个隐藏的神经元和连接这些神经元的突触,并且多个突触中的每一个包括电阻元件。该方法还包括将输入电压施加到输入神经元,并将目标输出电压或目标输出电压的补充施加到输出神经元,以同时对多个突触的电阻元件进行编程。
在示例性实施例中,公开了一种用于对神经网络的突触的电阻元件进行编程的方法。该方法包括将电阻元件初始化为低电阻状态,确定要施加到神经网络的一个或多个输入神经元的输入电压,并确定响应于输入电压的、在神经网络的一个或多个输出神经元处获得的目标输出电压。该方法还包括将输入电压施加到输入神经元,并将目标输出电压施加到输出神经元,以将选定的电阻元件中的每一个同时重置为相应的高电阻状态。
在示例性实施例中,公开了一种用于对神经网络的突触的电阻元件进行编程的方法。该方法包括将电阻元件初始化为高电阻状态,确定要施加到神经网络的一个或多个输入神经元的输入电压,并确定响应于输入电压而在神经网络的一个或多个输出神经元处获得的目标输出电压。该方法还包括从目标输出电压确定补充目标输出电压,将输入电压施加到输入神经元,并将补充目标输出电压施加到输出神经元,以将选定的电阻元件中的每一个同时设定为相应的低电阻状态。
从以下的详细描述、附图和权利要求中,本发明的示例性实施例的附加特征和益处将变得明显。
附图说明
根据以下给出的详细描述和本发明的各实施例的附图,将更全面地理解本发明的示例性实施例,然而,这些不应当被理解为将本发明限制为特定的实施例,而仅供解释和理解。
图1A展示了神经网络结构的示例性实施例;
图1B展示了神经元及其相关功能的示例性实施例;
图1C展示了突触元件及其相关功能的示例性实施例;
图2A展示了神经网络的硬件实现的示例性实施例;
图2B展示了神经网络的硬件实现的另一示例性实施例;
图3A展示了基于图2B所示的神经网络电路的神经网络的电路实现的示例性实施例;
图3B展示了基于图3A所示的神经网络而构建的3D阵列结构的示例性实施例;
图3C展示了基于图2A所示的神经网络的神经网络电路实现的示例性实施例;
图3D展示了实施图3C所示的电路的3D阵列结构的示例性实施例;
图4A展示了神经网络电路的示例性实施例;
图4B展示了神经网络电路的另一实施例;
图5A展示了阐释SET操作、以对神经网络的电阻元件进行编程的电路的示例性实施例;
图5B展示了具有阈值器件(D1-D3)的神经网络的另一示例性实施例;
图5C展示了神经网络中的电阻元件的SET和RESET操作的示例性电流-电压(I-V)曲线;
图6A展示了阐释RESET操作、以对神经网络的电阻元件进行编程的电路的示例性实施例;
图6B展示了包括阈值器件(D1-D3)的神经网络的另一示例性实施例;
图6C展示了电阻元件的SET和RESET操作的示例性I-V曲线;
图7A展示了阐释如何设定神经网络的电压水平、以便在学习操作期间从输入和输出电压直接更新突触权重的图表的示例性实施例;
图7B展示了阐释在对电阻元件进行编程时如何将阈值器件的电压阈值考虑进去的图表的示例性实施例;
图8A-C展示了阐释各示例性编程操作的神经网络的示例性实施例;
图9展示了用于对神经网络的突触的电阻元件进行编程的方法的示例性实施例。
具体实施方式
本领域技术人员将认识到下面的详细描述仅是为了说明,而并不以任何方式进行限制。得益于本说明书披露的内容,本领域技术人员将容易想到本发明的其他实施例。以下将参照说明书附图对本发明的示例性实施例进行详细描述。相同的附图标记表示相同或相似的部件。
图1A展示了神经网络结构100的示例性实施例。神经网络结构100包括三层。第一层是输入层101,其包括三个输入神经元(A1[0]-A1[2])。第二层是隐藏层102,其包括五个神经元(A2[0]-A2[4])。第三层是输出层103,其包括两个神经元(A3[0]–A3[1])。在其他实施例中,神经网络结构100可能包含一个以上的隐藏层,并且在每一层中包含任意数量的神经元。有更多的层和更多的神经元,神经网络结构100可以学习更复杂的任务。
不同层的神经元通过突触104连接,突触104在神经元之间传递信号。每个突触向流过它的信号施加可编程的“权重”。例如,连接神经元A1[0]和A2[0]的突触向流过该突触的信号提供权重W1[0],而连接神经元A1[1]和A2[0]的突触向流过该突触的信号提供权重W1[1]。如图1A所示,将输入层101神经元连接至隐藏层102神经元的突触提供了可编程的权重W1[x],而将隐藏层102神经元连接至输出层103神经元的突触提供了可编程的权重W2[x]。
在操作过程中,输入信号IN(0-2)流入输入层101神经元,然后经过突触流至神经元的一个或多个隐藏层,如隐藏层102,最后流至输出层103神经元。通过调节神经元的权重,有可能“训练”神经网络100以生成期望的一组输出(OUT(0-1),假定特定的一组输入(IN(0-2))。
图1B展示了神经元105及其相关功能的示例性实施例。例如,神经元105适于用作任意一个如图1A所示的神经元。神经元105提供两个功能。第一个功能是求和功能106,第二个功能是阈值功能107。求和功能106确定由神经元接收到的输入信号(例如,IN1-INx)的总和。阈值功能107确定该总和是否超过阈值。如果总和超过阈值,则神经元生成具有特定输出值的一个或多个输出信号(OUT)。例如,对于如图1A所示的隐藏层102神经元A2[0],可以根据下面的表达式确定其输入信号的总和:
A2[0]=(IN[0]×W1[0])+(IN[1]×W1[1])+(IN[2]×W1[2])(式1)
类似地,对于如图1A所示的输出层103神经元A3[0],可以根据下面的表达式确定其输入信号的和:
A3[0]=(A2[0]×W2[0])+(A2[1]×W2[1])+(A2[2]×W2[2])+(A2[3]×W2[3])
+(A2[4]×W2[4])(式2)
对于每个神经元,它的输入的总和被传递至它的阈值功能(例如,107)。当输入的总和高于阈值时,阈值功能将生成输出信号至神经元的一个或多个输出。否则,将没有来自神经元的输出。例如,当输入的总和高于阈值时,神经元可能生成逻辑1的信号至输出。当总和低于阈值时,神经元可能生成逻辑0的信号至输出。在硬件实现中,逻辑1可能是VDD,逻辑0可能是0V。这种机制也被称为“赢家通吃”(winner takes all)。
图1C展示了突触元件108及其相关功能的示例实施例。例如,突触元件108适于用作任意一个如图1A所示的突触。突触元件108包括可变权重功能109,可变权重功能109向在突触输入处接收到的信号施加可变权重,以在突触元件的输出处生成加权信号(INw)。在示例性实施例中,可变加权功能109提供连续加权功能或离散步长的可变加权。例如,在示例性实施例中,可变加权功能提供8个步长的可变加权。例如,在示例实施例中,可变加权功能提供8个步长的可变加权,如1K欧姆、5K欧姆、10K欧姆、50K欧姆、100K欧姆、500K欧姆、1M欧姆、5M欧姆。在其他实施例中,除了加权功能以外,突触元件还包括阈值功能。下面将更详细地描述突触是如何运作以提供可变加权功能的。
在各示例性实施例中,公开了新颖的三维(3D)神经网络阵列,其利用电阻元件来实现可编程的突触权重。例如,在各示例性实施例中,电阻元件包括电阻材料,如用在电阻型随机存储器(RRAM)或相变存储器(PCM)中的电阻材料。在示例性实施例中,可以实现三种类型的3D神经网络阵列,这三种类型的3D神经网络阵列被称为交叉点阵列、垂直阵列和水平阵列。
图2A展示了神经网络210的硬件实现的示例性实施例。神经网络210包括接收输入信号IN[0-1]的输入神经元210a-b、隐藏神经元200a-e、和输出输出信号OUT[0-1]的输出神经元204a-b。突触的权重由电阻元件(如第一层中的电阻器R10-R19和第二层中的电阻器R20-R29)实现。节点200a-e是隐藏层的神经元。阈值功能是通过使用合适的阈值器件203a-e(如二极管、肖特基二极管或其他类型的阈值器件)来实现的,这些阈值器件203a-e形成了隐藏神经元200a-e的一部分。
在示例性实施例中,突触的电阻元件是通过使用电阻材料(例如,HfO/HfOx)来实现的。在另一实施例中,电阻元件是通过使用相变材料(例如,硫族化物)来实现的。在另一实施例中,电阻元件是通过使用铁电材料(例如,锆酸盐、钛酸盐)来实现的。在另一实施例中,电阻材料是通过使用磁性材料(例如,铁、镍或钴)来实现的。
图2B展示了神经网络220的硬件实现的另一示例性实施例。例如,网络220是网络210的变体。网络220包括在每个突触中的阈值器件,如阈值器件206a-j和207a-j。因此,每个突触包括两个器件,例如突触208包括电阻元件R10和阈值器件206a。节点205a-e是隐藏层的神经元。在各示例性实施例中,如图2A-B所示的神经网络可以实现为二维(2D)或三维(3D)阵列,其中,对于每个电阻元件,均使用相变材料等电阻材料。
图3A展示了基于如图2B所示的神经网络电路的神经网络300的电路实现。例如,第一层包括具有阈值器件301a到301n和电阻元件302a到302n的突触。第二层包括具有阈值器件303a到303n和电阻元件304a到304n。对于多个隐藏层,重复该电路结构,直至达到输出神经元OUT[0-m]。
图3B展示了基于如图3A所示的神经网络300构造的3D阵列结构310的示例性实施例。例如,阵列结构310展示了输入层、四个隐藏层、以及输出层,如图3A所示。输出层IN[0-n]包括导体311a-c,第一隐藏层A1[0-m]包括导体312a-c。导体包括任意合适的金属,如钽(Ta)、铂(Pt)、钛(Ti)。将输入层神经元IN[0-n]与第一隐藏层神经元A1[0-m]连接的是包括选择器(例如,选择器313)的突触,这些选择器包括二极管、肖特基二极管,或具有阈值行为的其他材料,如NbOx、TaOx和VCrOx。突触还包括电阻元件(例如,电阻元件314),电阻元件包括电阻材料,如HfQx或TaOx。在示例性实施例中,可以通过向导体施加适当的偏置条件来调节改变突触的电阻元件的电阻值。例如,可以通过向导体311a和312a施加适当的偏置条件来或改变电阻元件314的电阻值。
图3C展示了基于如图2A所示的神经网络210的神经网络330的电路实现的示例性实施例。例如,电阻元件320a-n代表如图2A所示的电阻元件R10-R19。在这个实施例中,阈值器件203(未图示)可以连接至阵列330(例如,如图4B所示的带有外部二极管的阵列)外部的神经元。
图3D展示了实现如图3C所示的电路的3D阵列结构340的示例性实施例。例如,阵列结构340展示了输入层、四个隐藏层、和如图3C所示的输出层。输入层IN[0-n]包括导体321a-c,第一隐藏层A1[0-m]包括导体322a-c。导体包括合适的材料,如Ta、Pt、Ti或其他合适的材料。还展示了连接在导体之间的电阻元件,如包括HfOx、TaOx或其他电阻材料的电阻元件323。可以通过施加适当的偏置条件编程或改变电阻元件(例如,电阻元件323)的电阻。例如,可以通过向导体321a和322a施加合适的偏置条件对电阻元件323进行编程。
图4A展示了包括输入层神经元(或信号线)401、隐藏层神经元(或信号线)402和输出层神经元(或信号线)403的神经网络电路400的示例性实施例。输入层神经元401通过突触404a连接至隐藏层神经元402,隐藏层神经元402通过突触404b连接至输出层神经元403。突触404a和404b包括选择器(如选择器405a,其可能是二极管或其他阈值器件)和电阻元件(如电阻器405b)。
图4B展示了包括输入层神经元(或信号线)411、隐藏层神经元(或信号线)412和输出层神经元(或信号线)413的神经网络电路410的示例性实施例。输入层神经元411通过突触414a连接至隐藏层神经元412,隐藏层神经元412通过突触414b连接至输出层神经元413。突触414a和414b包括电阻元件,如电阻器416。隐藏层神经元412包括在与突触414a和414b的连接之间的阈值器件。例如,阈值器件415具有连接至突触414a的电阻元件的输入,以及连接至突触414b的电阻元件的输出。选择器415包括阈值器件,如二极管。
在示例性实施例中,通过向神经网络的输入施加选定的输入信号并向神经网络的输出施加目标信号的新方法,来更新神经网络的权重(其可以由电阻元件提供)。这样做时,通过例如,使用SET和/或RESET操作直接改变电阻元件的电阻。SET操作将电阻元件设定至特定的低电阻状态,RESET操作将电阻元件设定至特定的高电阻状态。SET和RESET操作控制跨电阻元件的电压,以及这些电压的方向。在各示例性实施例中,使用新方法,从而通过施加根据目标输出的适当偏置条件将电阻元件自动地设定(SET)或重置(RESET)至期望的电阻值。这些新方法避免了传统的正向传播迭代和反向传播迭代的使用,因此大大降低了神经网络的学习时间,并且提高了性能。
图5A展示了一电路的示例性实施例,该电路阐释了对神经元网络的电阻元件进行编程的SET操作。例如,在一个实施例中,电阻元件包括选自GeOx、TiO2、TaON的电阻材料。在名称为“Resistive Random Access Memory(RRAM)Using Stacked Dielectrics andMethods for Manufacturing the Same”的美国专利局专利授权前公告US8791444B2中,描述了用作电阻元件的合适的电阻材料的若干例子。可以通过在第一方向上跨电阻材料施加超过选定阈值的偏置电压,来将电阻材料设定(SET)为特定的低电阻状态。例如,可以在IN1端子和OUT端子之间施加高电压,以将电阻元件R1设定(SET)为低电阻状态,其中,IN1>OUT,并且(IN1-OUT)超过电阻材料的选定的SET编程阈值电压。可以通过在第二方向上跨电阻材料施加超过选定阈值的偏置电压,来将电阻材料重置(RESET)为特定的高电阻状态。例如,可以通过在IN1端子和OUT端子之间施加反向高电压,来将电阻元件R1重置(REST)为高电阻状态,其中,IN1<OUT,并且(OUT-IN1)超过电阻材料的选定的RESET编程阈值电压。
例如,假设可编程电阻元件R1和R2初始地被重置为高电阻状态,并且根据施加的电压,如果必要的话,期望的是将电阻元件设定(SET)为低电阻状态。输入电压VN1和VN2被施加至输入(IN1和IN2)。补充电压VOUTB被施加至输入端子(OUT)。补充电压VOUTB是根据目标VOUT电压确定的。例如,更高的目标VOUT电压转化为更低的VOUTB电压。在下面的表1中展示了给定的目标电压的示例性补充电压。
表1
目标VOUT电压 | 补充VOUTB电压 |
0伏特 | 5伏特 |
1伏特 | 4伏特 |
2伏特 | 3伏特 |
3伏特 | 2伏特 |
4伏特 | 1伏特 |
5伏特 | 0伏特 |
应当注意的是,上面的值是示例性的,在这些实施例的范围内存在许多方式来设定补充电压。使用上面的值,将假定VIN1为5V,VIN2为0V,目标VOUT为4V。因此,根据表1,VOUTB的值为1V。当VIN1、VIN2和VOUTB的电压施加至如图5A所示的电路时,VIN1和VOUTB之间的高电压差将超过SET编程阈值,并使得电阻元件R1被设定为特定的更低电阻水平。因此,在正向传播期间,当向VIN1供给5V时,由于R1提供的更低电阻,输出将变得更高,并更接近4V。另一方面,由于VIN2(0V)和VOUTB(1V)之间的小电压差(其不会超过编程阈值),电阻元件R2将保持在高电阻水平。因此,在正向传播过程中,当向VIN2供给0V时,由于R2的高电阻,这个电压将不会把输出拉得非常低。因此,在R1被设定(并且R2保持不变)之后,当5V和0V分别用作VIN1和VIN2时,在输出(OUT)处产生目标电压4V。还应当注意的是,在某些应用中,VIN和VOUT可能至包含数字电压水平,如0V和5V代表数据0和1。在这种情况下,0V和5V的VOUTB可能分别是5V和0V。
图5B展示了具有阈值器件(D1-D3)的神经网络的另一示例性实施例。在该实施例中,输入和输出包括来自阈值器件的阈值电压(Vt)下降。在各种示例性实施例中,这些阈值电压下降是由于对电阻元件R1和R2编程时引起的。例如,可以按照上面图5A关于IN1”端子、IN2”端子和OUT端子所描述的进行编程。
图5C展示了神经网络中电阻元件的SET和RESET操作的示例性电流-电压(I-V)曲线。为了阐释参照图5A所描述的SET操作,将参考SET曲线502。如上所述,当期望较低的电阻时,输入和输出之间的高电压差将导致电阻元件被设置为较低的电阻。因此,在电阻元件被设定(SET)后,当在前向操作中使用神经网络时,较低的电阻会导致输入和输出之间的较小的电压差。
为了阐释示例,假设在图5C中设置电压Vs1、Vs2和Vs3分别为2V、3V和4V。Vs1、Vs2和Vs3表示目标输出电压。现参考图5A,将进一步假设分别施加5V和0V到VIN1和VIN2,并且VOUT的目标电压是4V(Vs3)。施加1V的补充电压到VOUTB,以将电阻元件R1设置成如上所述的那样。这产生4V的SET电压,示为Vs3。图5C展示了被设定的电压阈值(Vs),当高于该设置电压(Vs)时,电阻元件变为可编程的。由于Vs3大于Vs,如图5C所示,电阻元件R1将被设定为传递相应电流量的低电阻值(从Vs3电平确定)。因此,在前向传播时,当分别施加5V和0V到VIN1和VIN2时,VOUT可以通过R1被拉到目标值4V。
此外,在另一情况下,假设期望的是较低的目标输出(2V)。在这种情况下,将供给3V(从表1获得)的补充电压,作为VOUTB。这为R1创制了较低的2V的SET电压,示为Vs1。该电压将不会将电阻元件设置成低电阻状态。因此,在前向传播时,当分别施加5V和0V到VIN1和VIN2时,VOUT只可以被拉升到2V。因此,通过施加输入电压并施加输出的补充电压,可以直接将电阻元件设定成目标值,而不使用常规的反向传播方法。
图6A展示了阐释RESET操作、以对神经网络的电阻元件进行编程的电路的示例性实施例。例如,通过在IN1端子和OUT端子之间施加高电压,其中IN1<OUT,电阻元件R1和R2可以被重置(RESET)至高电阻状态。RESET操作将增大电阻元件的电阻。因此,与使用VOUTB来降低电阻元件的电阻的SET操作不同,对于RESET操作,目标VOUT将直接用于增大电阻元件的电阻。例如,将假设电阻元件R1和R2初始被设定为低电阻。为了将电阻元件重置(RESET)到高电阻状态,施加输入电压VIN1和VIN2以及VOUT的目标输出电压。例如,将假设VIN1是5V,VIN2是0V,目标VOUT是4V。因此,VIN2和VOUT之间的高压差超过了RESET编程阈值,将导致电阻元件R2被重置为更高的电阻。另一方面,由于VIN1和VOUT之间的电压差不足够(较小),电阻元件R1将保持较低的电阻。因此,R2被重置(RESET)到高电阻后,当分别施加5V和0V到VIN1和VIN2时,会在VOUT处产生4V的目标电压。
图6B展示了包括阈值器件(D1-D3)的神经网络的另一示例性实施例。在该实施例中,输入和输出可以具有从阈值器件下降的阈值电压。在各种示例性实施例中,这些阈值电压的下降是由于对电阻元件R1和R2编程时引起的。例如,关于IN1’端子、IN2’端子和OUT端子,可以如以上所描述的那样进行编程。需要注意的是,虽然二极管是单向的,由于对电阻元件进行编程的典型的SET和RESET电压高于二极管的击穿电压,电阻元件可以被正确地设定(SET)或重置(RESET),而没有任何问题。
图6C展示了电阻元件的SET和RESET操作的示例性I-V曲线。为了阐释参照图6A所描述的RESET操作,将参考RESET曲线602。如上所述,当需要较高的电阻时,输入和输出之间的高电压差(例如超过正确方向编程电压的电压差)将导致电阻元件被设定(SET)为较高的电阻。因此,在电阻元件被重置(RESET)后,当前向传播使用神经网络时,较高的电阻会导致输入和输出之间的较高的电压差。
为了阐释示例,假设在图6C中设置电压Vr1、Vr2和Vr3分别为-2V、-3V和-4V。现参考图6A,将假设分别施加5V和0V作为VIN1和VIN2,并且VOUT的目标电压是4V。直接施加4V的目标电压到VOUT,以重置电阻元件R2。这产生-4V的RESET电压,示为Vr3。图6C展示了重置电压阈值(VR),当高于该重置电压(VR)时,电阻元件变为可编程的。由于Vr3比VR具有更大的负值,如图6C所示,电阻元件R2将被重置成传递相应电流量的高电阻值(从Vr3电平确定)。R1两端的电压差(5V-4V)太小,而不能使该器件重置。因此,在前向传播时,当分别施加5V和0V到VIN1和VIN2时,VOUT将不能通过VIN2而被拉低,反而将会通过R1而被朝向目标值4V拉高。
在另一情况下,假设需要较低的目标输出(2V)。和之前一样,将施加目标电压2V到VOUT。这为R2创制了较低的RESET电压(-2V),示为Vr1。该电压不足以大到将该电阻元件重置为高电阻状态。因此,在前向传播时,当分别施加5V和0V到VIN1和VIN2时,VOUT可以被拉低至2V。因此,通过向输入施加输入电压并向输出施加目标电压,可以直接将电阻元件设置为目标值,而不使用常规的反向传播方法。
图7A展示图700的示例性实施例,其阐释了如何设置神经网络702的电压水平,以便在学习操作期间从输入和输出电压直接更新突触权重。在正常操作(前向传播)期间突触权重保持不变。例如,在正常操作期间,当神经网络702从输入端产生输出,第一突触层(SL1)的电压水平是Vr0-Vr1,第二突触层(SL2)的电压水平是Vr1-Vr2。Vr1和Vr2的电平必须分别低于Vs1和Vs2,以防止SET或RESET操作。例如,电压Vs1和Vs2导致电阻元件被设定(SET)或重置(RESET)。因此,如果Vr1和Vr2分别低于Vs1和Vs2,电阻元件的电阻将不会改变。例如,将假设电阻元件将会在3V处被设定(SET)或重置(RESET)。第一层和第二层的极限电压水平Vs1和Vs2将分别是3V和6V。因此,如图表700所示,在正常操作期间,SL1(Vr1)的电压水平必须低于3V,SL2(Vr2)的电压水平必须低于6V。这将防止在正常操作期间电阻元件意外地被设置或重置。
在学习操作期间,对于第一层,输入和输出电平将从Vp0增大到Vp1,对于第二层,从Vp1增大到Vp2。Vp1和Vp2的电平分别高于Vs1和Vs2。例如,Vs1和Vs2可以分别是3V和6V。这会导致电阻元件通过输入和输出之间的电压差而被设定或重置。因此,在学习操作期间,输入和输出电压可以被缩放到超过编程电压阈值,以使电阻元件被设定(SET)或重置(RESET)。然后在正常操作期间,输入电压恢复到其原来的电平,以获得基于编程的电阻元件的期望的输出电压。
图7B展示了阐释在对电阻元件进行编程时如何将阈值器件的电压阈值考虑进去的示例性实施例。例如,如果阈值器件与电阻元件相关联(例如,如图5B和图6B所示),如图7B所示,必须考虑输入和输出电平的阈值电压(Vt)下降以确定电压水平。
图8A-C展示了阐释各示例性编程操作的神经网络的示例性实施例。在图8A-C中展示的每个网络都包括三层,其包括输入层,该输入层具有输入神经元IN[0]和IN[1];隐藏层,该隐藏层具有神经元A[0]和A[1];以及输出层,该输出层具有输出神经元OUT。
图8A示了阐释学习过程的神经网络的示例性实施例。将假设进行如图6A-C所示的RESET操作以更新权重。例如,电阻元件R1-R6初始地设定为低电阻状态,例如100kΩ-200kΩ。在一示例性实施例中,电阻值是随机的,而不是均匀的,这可以提供更好的学习结果。
作为一例子,将假定期望的目标值为IN[0]=2V,IN[1]=0V,OUT=1.6V。为了设置和重置电阻元件,在该例子中的输入和输出电平放大2.5倍。因此,如图8A所示,对于这个例子,电平变成IN[0]=5V,IN[1]=0V,OUT=4V。这使得电压水平足够高,以设定和重置电阻元件。为简单起见,将假设阈值器件801和802的阈值电压的下降忽略不计,使得这些器件的Vt等于0V。因此,当施加输入和输出至神经网络时,神经元A[0]和A[1]将分别变为3.6V和2.25V。这将导致电阻元件同时被重置,取决于隐神经元(A[n])之间的电压差和输入或输出
图8B展示了在完成重置操作后,图8A所示的网络的电阻元件的示例性实施例。如图所示,因为A[0]和IN[1]之间的电压差是3.6V,电阻元件R2从200kΩ重置到1MΩ。因为A[1]和IN[1]之间的电压差是2.25V,电阻元件R4从100kΩ重置到500kΩ。因为OUT和A[1]之间的电压差是1.75V,电阻元件R6从200kΩ重置到300kΩ。其他所有的电阻元件都不被重置,因为它们的电压差太小或者方向被反向。请注意,在重置操作后,神经元A[0]和A[1]的电压分别变为4.3V和3.7V。
图8C展示了图8A所示的网络的示例性实施例,其阐释了完成学习过程后,神经网络的正常操作。当施加对于输入来说正常的电平(IN[0]=2V和IN[1]=0V)到输入时,神经网络将产生期望的(目标)输出(OUT=1.6V)。此外,神经元A[0]和A[1]将分别为1.72V和1.48V。
在学习过程期间,权重可以通过学习过程的多个编程操作来更新。施加多个编程操作到神经网络,以更新权重,直到所有的权重都“被学习”了。用于更新权重的编程操作越多,可以获得越精确的学习结果。
因此,在各示例性实施例中,神经网络芯片可以从输入和目标输出直接更新权重。因此,不需要常规的前向传播和反向传播步骤。因此,实现了快速自学习神经网络芯片。
图9展示了用于对神经网络的突触进行编程的方法900的示例性实施例。例如,该方法适用于图2-8所示的各种神经网络。例如,神经网络包括输入由突触连接的神经元、隐神经元和输出神经元。如上所述,一些或所有突触包括电阻元件。在各示例性实施例中,方法900进行SET或RESET操作,或进行SET和RESET操作,以对神经网络的电阻元件进行编程。
在方框902中,对突触的电阻元件进行初始化。例如,电阻元件可以被初始化为高电阻状态或低电阻状态。在另一实施例中,电阻元件为混合或随机电阻状态。
在方框904中,确定输入电压和目标输出电压。例如,确定施加到神经网络的一个或多个输入神经元的输入电压。此外,响应于输入电压,确定在神经网络的一个或多个输出神经元处要获得的目标输出电压。例如,基于是否要进行SET或RESET操作,确定输入电压和目标输出电压。例如,如果要进行SET操作,如表1所示,还确定补充目标输出电压。如果要进行RESET操作,直接使用目标输出电压。
在方框906中,缩放输入、输出和补充目标输出电压以便于编程。例如,在正常操作期间,电压水平可以在0V到1V之间。对于SET和RESET操作,例如,电压电平可以从0V放大到3V,或从0V放大到5V,以便于编程。
在方框908中,施加输入和目标输出电压到神经网络。例如,施加输入电压到神经网络的输入神经元。施加目标输出电压到神经网络的输出神经元,用于重置操作。如果要进行一组操作,施加补充目标输出到输出神经元。
在方框910中,响应于施加的输入电压和目标(或补充目标)输出电压,同时对神经网络的电阻元件进行编程。例如,基于施加的电压,电阻元件被SET和/或RESET。例如,图5A-C阐释了电阻元件如何SET,图6A-C阐释了电阻元件如何RESET。
在方框912中,作出是否需要额外的编程操作的判断。例如,可以进行额外的SET和/或RESET操作,以提高对神经网络的电阻元件的编程。如果需要或期望额外的操作,该方法继续到方框904。如果不需要或期望额外的操作,该方法继续到方框914。
在方框914中,神经网络的电阻元件现已被同时编程或培训,用于正常或正向传播操作。例如,可以施加未缩放的输入到神经网络的神经元,以在神经网络的输出神经元处获得目标输出。
因此,方法900操作以对神经网络的电阻元件进行编程。应当注意的是,在方法900中示出的操作是示例性的,并且,在本发明范围内,操作可以改变、修改、增加、减少、重新排列或以其他方式修改。还应注意的是,可以通过用SET或RESET操作或结合二者对电阻元件进行编程。例如,在一个实施例中,所有的电阻元件都被初始化为高电阻状态,并且仅进行SET操作。在另一实施例中,所有的电阻元件都被初始化为低电阻状态,并且仅进行RESET操作。在另一实施例中,电阻元件可以被初始化为高电阻状态或低电阻状态,或高电阻状态和低电阻状态的结合,并且进行RET和RESET操作。
尽管描述并展示了本发明的示例性实施例,对于本领域普通技术人员来说,显然,基于本发明的教导,可以做出一些变化和修改,而不脱离本发明示例性实施例和更广泛的方面。因此,所附权利要求在其范围内,并且这些变化和修改包括在本发明的真实精神和范围内。
Claims (20)
1.一种方法,包括:
确定要施加到神经网络的一个或多个输入神经元的输入电压;
确定响应于该输入电压而在神经网络的一个或多个输出神经元处要获得的目标输出电压,其中所述神经网络包括多个隐藏的神经元和连接这些神经元的突触,且其中多个突触中的每一个包括电阻元件;
将输入电压施加到输入神经元;以及
将目标输出电压或目标输出电压的补充施加到输出神经元,以同时对多个突触的电阻元件进行编程。
2.根据权利要求1所述的方法,其特征在于,进一步包括重复权利要求1的操作,以便以更高的精度同时对多个突触的电阻元件进行编程。
3.根据权利要求1所述的方法,其特征在于,每个电阻元件包括从一组材料中选择的材料,该组材料包括电阻材料、相变材料、铁电材料和磁性材料。
4.根据权利要求1所述的方法,其特征在于,进一步包括在执行施加操作之前,将所述多个突触的电阻元件初始化为选定的电阻状态。
5.根据权利要求1所述的方法,其特征在于,进一步包括缩放所述输入电压和所述目标输出电压。
6.根据权利要求1所述的方法,其特征在于,所述多个突触包括阈值元件,且所述方法进一步包括调整所述输入电压和所述目标输出电压,以考虑所述跨阈值元件的电压阈值(Vt)下降。
7.根据权利要求6所述的方法,其特征在于,所述阈值元件包括从一组材料中选择的阈值材料,该组材料包括二极管材料、肖特基二极管材料、NbOx材料、TaOx材料或VCrOx材料。
8.根据权利要求1所述的方法,其特征在于,所述多个突触的每个电阻元件被编程为相应的高电阻状态。
9.根据权利要求1所述的方法,其特征在于,所述多个突触的每个电阻元件被编程为相应的低电阻状态。
10.根据权利要求1所述的方法,其特征在于,进一步包括在所述多个突触的电阻元件被编程之后,将输入电压施加到神经网络的输入,以获得在神经网络的输出神经元处的目标输出。
11.用于对神经网络的突触的电阻元件进行编程的方法,该方法包括:
将电阻元件初始化为低电阻状态;
确定要施加到神经网络的一个或多个输入神经元的输入电压;
确定响应于输入电压而在神经网络的一个或多个输出神经元处要获得的目标输出电压;
将输入电压施加到输入神经元;以及
将目标输出电压施加到输出神经元,以将选定的电阻元件中的每一个同时重置为相应的高电阻状态。
12.根据权利要求11所述的方法,其特征在于,进一步包括重复权利要求11的操作,以便以更高的精度同时对多个突触的电阻元件进行编程。
13.根据权利要求11所述的方法,其特征在于,所述电阻元件包括从一组材料中选择的材料,该组材料包括电阻材料、相变材料、铁电材料和磁性材料。
14.根据权利要求11所述的方法,其特征在于,进一步包括缩放所述输入电压和所述目标输出电压。
15.根据权利要求11所述的方法,其特征在于,所述多个突触包括阈值元件,且所述方法进一步包括调整所述输入电压和所述目标输出电压,以考虑所述跨阈值元件的电压阈值(Vt)下降。
16.用于对神经网络的突触的电阻元件进行编程的方法,该方法包括:
将电阻元件初始化为高电阻状态;
确定要施加到神经网络的一个或多个输入神经元的输入电压;
确定响应于输入电压而在神经网络的一个或多个输出神经元处要获得的目标输出电压;
从目标输出电压确定补充目标输出电压;
将输入电压施加到输入神经元;以及
将所述补充目标输出电压施加到输出神经元,以将选定的电阻元件中的每一个同时设定为相应的低电阻状态。
17.根据权利要求16所述的方法,其特征在于,进一步包括重复权利要求16的操作,以便以更高的精度将选定的电阻元件中的每一个设定为相应的低电阻状态。
18.根据权利要求16所述的方法,其特征在于,电阻元件包括从一组材料中选择的材料,该组材料包括电阻材料、相变材料、铁电材料和磁性材料。
19.根据权利要求16所述的方法,其特征在于,进一步包括缩放所述输入电压和所述补充目标输出电压。
20.根据权利要求16所述的方法,其特征在于,所述突触包括阈值元件,且所述方法进一步包括调整所述输入电压和所述补充目标输出电压,以考虑所述跨阈值元件的电压阈值(Vt)下降。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662435067P | 2016-12-15 | 2016-12-15 | |
US62/435,067 | 2016-12-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108229669A true CN108229669A (zh) | 2018-06-29 |
Family
ID=62561629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711350507.XA Pending CN108229669A (zh) | 2016-12-15 | 2017-12-15 | 神经网络阵列的自学习 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180174030A1 (zh) |
CN (1) | CN108229669A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020234658A1 (en) * | 2019-05-22 | 2020-11-26 | International Business Machines Corporation | Closed loop programming of phase-change memory |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180136202A (ko) * | 2017-06-14 | 2018-12-24 | 에스케이하이닉스 주식회사 | 컨볼루션 신경망 및 컨볼루션 신경망을 가진 신경망 시스템 |
CN113396489A (zh) * | 2018-11-08 | 2021-09-14 | Neo半导体公司 | 用于具有对准的深沟槽接触的三维(3d)阵列的方法和设备 |
US11093825B2 (en) * | 2019-11-04 | 2021-08-17 | Semiconductor Components Industries, Llc | Method of forming a semiconductor device |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5159661A (en) * | 1990-10-05 | 1992-10-27 | Energy Conversion Devices, Inc. | Vertically interconnected parallel distributed processor |
US5422982A (en) * | 1991-05-02 | 1995-06-06 | Dow Corning Corporation | Neural networks containing variable resistors as synapses |
CN102663497A (zh) * | 2012-04-05 | 2012-09-12 | 北京大学 | 一种自路由单元电路及其控制方法 |
JP5659361B1 (ja) * | 2013-07-04 | 2015-01-28 | パナソニックIpマネジメント株式会社 | ニューラルネットワーク回路、およびその学習方法 |
CN104823205A (zh) * | 2012-12-03 | 2015-08-05 | Hrl实验室有限责任公司 | 用于增强学习的神经模型 |
US20150269483A1 (en) * | 2014-03-18 | 2015-09-24 | Panasonic Intellectual Property Management Co., Ltd. | Neural network circuit and learning method for neural network circuit |
US20160004960A1 (en) * | 2013-03-05 | 2016-01-07 | Sylvain SAÏGHI | Unit having an artificial neuron and a memristor |
CN105976022A (zh) * | 2016-04-27 | 2016-09-28 | 清华大学 | 电路结构、人工神经网络及用电路结构模拟突触的方法 |
-
2017
- 2017-12-15 CN CN201711350507.XA patent/CN108229669A/zh active Pending
- 2017-12-15 US US15/844,457 patent/US20180174030A1/en not_active Abandoned
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5159661A (en) * | 1990-10-05 | 1992-10-27 | Energy Conversion Devices, Inc. | Vertically interconnected parallel distributed processor |
US5422982A (en) * | 1991-05-02 | 1995-06-06 | Dow Corning Corporation | Neural networks containing variable resistors as synapses |
CN102663497A (zh) * | 2012-04-05 | 2012-09-12 | 北京大学 | 一种自路由单元电路及其控制方法 |
CN104823205A (zh) * | 2012-12-03 | 2015-08-05 | Hrl实验室有限责任公司 | 用于增强学习的神经模型 |
US20160004960A1 (en) * | 2013-03-05 | 2016-01-07 | Sylvain SAÏGHI | Unit having an artificial neuron and a memristor |
JP5659361B1 (ja) * | 2013-07-04 | 2015-01-28 | パナソニックIpマネジメント株式会社 | ニューラルネットワーク回路、およびその学習方法 |
US20150178619A1 (en) * | 2013-07-04 | 2015-06-25 | Panasonic Intellectual Property Management Co., Ltd. | Neural network circuit and learning method thereof |
US20150269483A1 (en) * | 2014-03-18 | 2015-09-24 | Panasonic Intellectual Property Management Co., Ltd. | Neural network circuit and learning method for neural network circuit |
CN105976022A (zh) * | 2016-04-27 | 2016-09-28 | 清华大学 | 电路结构、人工神经网络及用电路结构模拟突触的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020234658A1 (en) * | 2019-05-22 | 2020-11-26 | International Business Machines Corporation | Closed loop programming of phase-change memory |
GB2597000A (en) * | 2019-05-22 | 2022-01-12 | Ibm | Closed loop programming of phase-change memory |
US11347999B2 (en) | 2019-05-22 | 2022-05-31 | International Business Machines Corporation | Closed loop programming of phase-change memory |
GB2597000B (en) * | 2019-05-22 | 2022-12-07 | Ibm | Closed loop programming of phase-change memory |
Also Published As
Publication number | Publication date |
---|---|
US20180174030A1 (en) | 2018-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111433792B (zh) | 可编程可重置人工神经网络的基于计数器的电阻处理单元 | |
US11205116B2 (en) | Three-dimensional neural network array | |
Likharev | CrossNets: Neuromorphic hybrid CMOS/nanoelectronic networks | |
CN110352436B (zh) | 用于神经网络训练的具有迟滞更新的电阻处理单元 | |
US11727258B2 (en) | Multi-bit, SoC-compatible neuromorphic weight cell using ferroelectric FETs | |
CN108229669A (zh) | 神经网络阵列的自学习 | |
Park et al. | RRAM-based synapse for neuromorphic system with pattern recognition function | |
Mikhaylov et al. | One-board design and simulation of double-layer perceptron based on metal-oxide memristive nanostructures | |
TW201801082A (zh) | 用於可組態的阻抗陣列的電路和方法 | |
EP3262571A1 (en) | Hardware accelerators for calculating node values of neural networks | |
CN107194462A (zh) | 三值神经网络突触阵列及利用其的神经形态计算网络 | |
CN110827898B (zh) | 一种基于忆阻器的电压-电阻式可逆逻辑电路及其操作方法 | |
US11133058B1 (en) | Analog computing architecture for four terminal memory devices | |
KR20210022869A (ko) | 뉴런 하나당 다수의 시냅스들을 갖는 3차원 뉴로모픽 소자 | |
Weiss et al. | Stdp based online learning for a current-controlled memristive synapse | |
Chabi et al. | On-chip supervised learning rule for ultra high density neural crossbar using memristor for synapse and neuron | |
Lehtonen | Memristive computing | |
CN108073982A (zh) | 类脑计算系统 | |
Kim et al. | A fast weight transfer method for real-time online learning in RRAM-based neuromorphic system | |
Bennett et al. | Supervised learning with organic memristor devices and prospects for neural crossbar arrays | |
CN110163364B (zh) | 一种基于忆阻桥突触的神经网络单元电路 | |
US11977970B2 (en) | Spintronic computing architecture and method | |
US20190251430A1 (en) | Mixed signal cmos rpu with digital weight storage | |
Strukov | 3D hybrid CMOS/memristor circuits: basic principle and prospective applications | |
KR20230164442A (ko) | 셀렉터 소자를 이용한 하드웨어 기반의 인공 신경망 드롭아웃 구현 장치 및 이를 이용한 신경망 회로 시스템 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180629 |