CN110796241B - 基于忆阻器的神经网络的训练方法及其训练装置 - Google Patents

基于忆阻器的神经网络的训练方法及其训练装置 Download PDF

Info

Publication number
CN110796241B
CN110796241B CN201911059194.1A CN201911059194A CN110796241B CN 110796241 B CN110796241 B CN 110796241B CN 201911059194 A CN201911059194 A CN 201911059194A CN 110796241 B CN110796241 B CN 110796241B
Authority
CN
China
Prior art keywords
weight parameters
memristor array
neural network
training
memristor
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.)
Active
Application number
CN201911059194.1A
Other languages
English (en)
Other versions
CN110796241A (zh
Inventor
吴华强
姚鹏
高滨
张清天
钱鹤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201911059194.1A priority Critical patent/CN110796241B/zh
Publication of CN110796241A publication Critical patent/CN110796241A/zh
Priority to PCT/CN2020/078203 priority patent/WO2021082325A1/zh
Priority to US17/049,349 priority patent/US20220374688A1/en
Priority to JP2022525403A priority patent/JP7548598B2/ja
Priority to KR1020227018590A priority patent/KR20220086694A/ko
Application granted granted Critical
Publication of CN110796241B publication Critical patent/CN110796241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods

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)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Computer Hardware Design (AREA)
  • Feedback Control In General (AREA)
  • Micromachines (AREA)
  • Semiconductor Memories (AREA)

Abstract

一种基于忆阻器的神经网络的训练方法及其训练装置。该神经网络包括逐一连接的多层神经元层以及在神经元层之间的权重参数,该训练方法包括:训练神经网络的权重参数,并基于训练后的权重参数对忆阻器阵列进行编程,以将训练后的权重参数写入忆阻器阵列中;以及通过调节忆阻器阵列的部分电导值以更新神经网络的至少一层权重参数。该训练方法弥补了忆阻器神经网络的片上训练和片外训练实现方案的不足,从神经网络系统实现角度出发,解决了由于良率问题、非一致性问题、电导漂移以及随机的波动性等器件非理想特性造成的神经网络系统的功能退化,极大地简化了神经网络系统的复杂度,降低了神经网络系统的实现成本。

Description

基于忆阻器的神经网络的训练方法及其训练装置
技术领域
本公开的实施例涉及一种基于忆阻器的神经网络的训练方法及其训练装置。
背景技术
深度神经网络算法的兴起,带来了智能化的信息技术革命。基于各种深度神经网络算法,可以实现图像识别与分割、物体探测以及完成对语音和文本的翻译、生成等处理。使用深度神经网络算法处理不同工作负载是一类以数据为中心的计算,实现该算法的硬件平台需要具有高性能、低功耗的处理能力。然而,传统的实现该算法的硬件平台是基于存储和计算分离的冯诺依曼架构,这种架构在计算时需要数据在存储器件和计算器件之间来回搬移,因此在包含大量参数的深度神经网络的计算过程中,该架构的能效较低。为此,开发一种新型计算硬件来运行深度神经网络算法成为当前亟需解决的问题。
发明内容
本公开至少一实施例提供一种基于忆阻器的神经网络的训练方法,所述神经网络包括逐一连接的多层神经元层以及在所述神经元层之间的权重参数,所述训练方法包括:训练所述神经网络的权重参数,并基于训练后的所述权重参数对忆阻器阵列进行编程,以将所述训练后的所述权重参数写入所述忆阻器阵列中;以及通过调节所述忆阻器阵列的至少部分电导值以更新所述神经网络的至少一层权重参数。
例如,在本公开至少一实施例提供的训练方法中,训练所述神经网络的权重参数,并基于训练后的所述权重参数对忆阻器阵列进行编程,以将所述训练后的所述权重参数写入所述忆阻器阵列中,包括:在训练所述神经网络的权重参数的过程中,根据所述忆阻器阵列的电导状态的约束,直接获取所述神经网络的量化后的权重参数,将所述量化后的权重参数写入所述忆阻器阵列中。
例如,在本公开至少一实施例提供的训练方法方法中,训练所述神经网络的权重参数,并基于训练后的所述权重参数对忆阻器阵列进行编程,以将训练后的所述权重参数写入忆阻器阵列中,包括:基于所述忆阻器阵列的电导状态的约束对所述训练后的权重参数进行量化操作,以获取量化后的权重参数;将所述量化后的权重参数写入所述忆阻器阵列中。
例如,在本公开至少一实施例提供的训练方法中,所述量化操作包括均匀量化和非均匀量化。
例如,在本公开至少一实施例提供的训练方法中,将所述量化后的权重参数写入所述忆阻器阵列中,包括:基于所述量化后的权重参数获取所述忆阻器阵列的电导状态的目标区间;判断所述忆阻器阵列的各器件的电导状态是否在所述目标区间内;如果否,判断所述忆阻器阵列的各器件的电导状态是否超出所述目标区间;如果是,施加反向脉冲;如果否,施加正向脉冲;如果是,则量化后的权重参数写入所述忆阻器阵列。
例如,在本公开至少一实施例提供的训练方法中,通过调节所述忆阻器阵列的部分忆阻器的电导值以更新所述神经网络的至少一层权重参数,包括:通过前向计算操作和反向计算操作对所述忆阻器阵列进行训练;基于所述前向计算操作和所述反向计算操作的结果向所述忆阻器阵列的部分忆阻器施加正向电压或反向电压以更新所述忆阻器阵列的部分忆阻器的电导。
例如,在本公开至少一实施例提供的训练方法中,仅对所述忆阻器阵列的至少部分进行所述反向计算操作。
例如,在本公开至少一实施例提供的训练方法中,对所述忆阻器阵列逐行进行或逐列进行或整体并行进行所述前向计算操作和所述反向计算操作。
例如,在本公开至少一实施例提供的训练方法中,逐行进行或逐列进行更新与所述忆阻器阵列的至少部分忆阻器相对应的权重参数。
例如,在本公开至少一实施例提供的训练方法中,所述前向计算操作和所述反向计算操作仅使用部分训练集数据。
例如,在本公开至少一实施例提供的训练方法中,通过调节所述忆阻器阵列的至少部分电导值以更新所述神经网络的至少一层权重参数,包括:更新所述神经网络中最后一层或最后多层的权重参数。
例如,本公开至少一实施例提供的训练方法还包括:所述忆阻器阵列基于更新后的所述权重参数,计算所述神经网络的输出结果。
本公开至少一实施例还提供一种基于忆阻器的神经网络的训练装置,包括:片外训练单元,配置为训练所述神经网络的权重参数,并基于训练后的所述权重参数对忆阻器阵列进行编程,以将所述训练后的所述权重参数写入所述忆阻器阵列中;以及片上训练单元,配置为通过调节所述忆阻器阵列的至少部分电导值以更新所述神经网络的至少一层权重参数。
例如,在本公开至少一实施例提供的训练装置中,所述片外训练单元包括输入单元和读写单元,所述片上训练单元包括计算单元、更新单元和输出单元;所述输入单元配置为输入训练后的权重参数;所述读写单元配置为将所述训练后的所述权重参数写入所述忆阻器阵列中;所述计算单元配置为通过前向计算操作和反向计算操作对所述忆阻器阵列进行训练;所述更新单元配置为基于所述前向计算操作和所述反向计算操作的结果向所述忆阻器阵列的至少部分施加正向电压或反向电压以更新所述忆阻器阵列的至少部分对应的权重参数;所述输出单元配置为基于更新后的所述权重参数,计算所述神经网络的输出结果。
例如,在本公开至少一实施例提供的训练装置中,所述片外训练单元还包括量化单元,所述量化单元配置为在训练所述神经网络的权重参数的过程中,根据所述忆阻器阵列的电导状态的约束,直接获取所述神经网络的量化后的权重参数,将所述量化后的权重参数写入所述忆阻器阵列中;或,配置为基于所述忆阻器阵列的电导状态的约束对所述训练后的权重参数进行量化操作,以获取量化后的权重参数。
例如,在本公开至少一实施例提供的训练装置中,所述计算单元配置为仅对所述忆阻器阵列的至少部分进行所述反向计算操作。
例如,在本公开至少一实施例提供的训练装置中,所述计算单元配置为逐行进行或逐列进行或整体并行进行所述前向计算操作、所述反向计算操作。
例如,在本公开至少一实施例提供的训练装置中,所述更新单元配置为逐行进行或逐列进行更新操作。
例如,在本公开至少一实施例提供的训练装置中,所述片上训练单元还配置为更新所述神经网络中最后一层或多层的权重参数。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种神经网络的结构示意图;
图2为一种忆阻器阵列的结构示意图;
图3为本公开至少一实施例提供的一种训练方法的流程图;
图4为图3所述的训练方法的示意图;
图5为本公开至少一实施例提供的一种训练方法的一个示例的流程图;
图6为本公开至少一实施例提供的一种在32个电导状态下的忆阻器的累积概率示意图;
图7为本公开至少一实施例提供的一种训练方法的另一个示例的流程图;
图8为本公开至少一实施例提供的一种权重参数分布的示意图;
图9为本公开至少一实施例提供的一种将权重参数写入忆阻器阵列的流程图;
图10为本公开至少一实施例提供的一种训练方法的又一个示例的流程图;
图11A为本公开至少一实施例提供的一种前向计算操作的示意图;
图11B为本公开至少一实施例提供的一种反向计算操作的示意图;
图11C为本公开至少一实施例提供的一种更新操作的示意图;
图12A-12D为本公开至少一实施例提供的一种前向计算操作的示例方式的示意图;
图13A-13D为本公开至少一实施例提供的一种反向计算操作的示例方式的示意图;
图14A-14D为本公开至少一实施例提供的一种更新操作的示例方式的示意图;
图15为本公开至少一实施例提供的一种神经网络的训练装置的示意框图;
图16为本公开至少一实施例提供的一种训练装置的一个示例的示意框图;以及
图17为本公开至少一实施例提供的一种训练装置的另一个示例的示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
忆阻器型器件(阻变存储器、相变存储器、导电桥存储器等)是一种可以通过施加外部激励,调节其电导状态的非易失型器件。根据基尔霍夫电流定律和欧姆定律,由这类器件构成的阵列可以并行的完成乘累加计算,且存储和计算都发生在阵列各器件中。基于这种计算架构,可以实现不需要大量数据搬移的存算一体计算。同时,乘累加是运行神经网络需要的核心计算任务。因此,使用阵列中的忆阻器型器件的电导表示权重值,可以基于这种存算一体计算实现高能效的神经网络运算。
当前,基于存算一体计算实现深度神经网络算法,主要有两种实现方法。一种是片上训练(原位训练)方法,即神经网络的全部电导权重根据原位训练得到。在这种方法中,基于实际的电导权重,实现算法的前向和反向计算,进而调节权重的电导值,不断迭代整个训练过程,直到算法收敛。另一种是片外训练方法,即先在其他硬件上训练得到网络的权重值,再根据权重目标将阵列中的器件编程到相应的权重值对应的电导状态。
忆阻器型器件由于其物理机理和制备工艺的偏差,存在器件间的非一致性等各种非理想特性。同时,由于深度神经网络的权重规模巨大,完全映射深度神经网络的权重参数需要多个忆阻器阵列才能实现。这样,不同阵列以及同一阵列的不同器件间都存在随机的波动,同时,还存在由于器件良率原因导致的器件失效、器件电导状态漂移等问题。当基于存算一体计算实现深度神经网络算法时,这些器件非理想特性将导致系统功能退化,例如,出现目标识别的准确率降低等现象。
例如,在使用片上训练方法得到所有的权重参数时,虽然可以通过自适应算法进行调节,但是需要端到端的多个周期训练迭代,流程复杂(比如,通过卷积层的残差反向传输算法等实现),需要的硬件成本巨大;同时,受限于忆阻器型器件的权重调节过程的非线性和非对称性,很难高效的通过片上训练实现高性能(比如高识别率)的深度神经网络。
例如,在使用片外训练方法对权重参数进行训练后,将训练好的权重参数编程到忆阻器阵列中,即用忆阻器阵列中的各个器件的电导值表示神经网络的权重参数,从而可以利用存算一体的忆阻器阵列实现神经网络的推理计算功能。这种方法可以利用已有的计算平台完成训练,但在权重编程过程中,由于器件良率问题、非一致性、电导漂移以及随机的波动性等非理想特性的影响,在权重写到器件电导的过程中不可避免的引入误差,并造成该神经网络系统的性能下降。
本公开至少一实施例提供一种基于忆阻器的神经网络的训练方法,神经网络包括逐一连接的多层神经元层以及在神经元层之间的权重参数,该训练方法包括:训练神经网络的权重参数,并基于训练后的权重参数对忆阻器阵列进行编程,以将训练后的权重参数写入忆阻器阵列中;以及通过调节忆阻器阵列的至少部分电导值以更新神经网络的至少一层权重参数。
本公开实施例还提供对应于上述训练方法的训练装置。
本公开实施例提供的训练方法及其训练装置,弥补了将神经网络系统部署在基于忆阻器阵列的硬件系统中时采用的片上训练方法和片外训练方法的不足,而且从神经网络系统的角度出发,该训练方法及其训练装置解决了器件波动性等各种非理想特性造成的神经网络系统的性能退化等问题,高效且低成本的将各种神经网络部署在基于忆阻器阵列的硬件系统中。
下面结合附图对本公开的实施例及其示例进行详细说明。
如图1所示,该神经网络10包括输入层11、至少一个隐含层12以及输出层13。例如,该神经网络10包括逐一连接的L(L为大于等于3的整数)层神经元层。例如,输入层11包括第一层神经元层,至少一个隐含层12包括第二层至第L-1层神经元层,输出层13包括第L层神经元层。例如,输入层11将接收的输入数据传递到至少一个隐含层12,至少一个隐含层12对该输入数据进行逐层计算转换发送至输出层13,输出层13输出神经网络10的输出结果。例如,如图1所示,神经网络10的层与层之间是全连接的结构。
如图1所示,输入层11、至少一个隐含层12以及输出层13均包括多个神经元节点14,各层的神经元节点14的个数可以根据不同的应用情况设定。例如,当有M(M为大于1的整数)个输入数据时,输入层11有M个神经元节点14。
如图1所示,神经网络10的相邻两层神经元层之间通过权重参数网络15连接。例如,权重参数网络由如图2所示的忆阻器阵列实现。例如,可以将权重参数直接编程为忆阻器阵列的电导。例如,也可以将权重参数按照某一规则映射到忆阻器阵列的电导。例如,也可以利用两个忆阻器的电导的差值代表一个权重参数。虽然本公开以将权重参数直接编程为忆阻器阵列的电导或将权重参数按照某一规则映射到忆阻器阵列的电导的方式对本公开的技术方案进行了描述,但其仅是示例性的,而不是对本公开的限制。
如图2所示,忆阻器阵列可以包括阵列排布的多个忆阻器,诸如忆阻器1511。例如,根据基尔霍夫定律,忆阻器阵列的输出电流可以根据下述公式得出:
Figure BDA0002257408050000071
其中,i=1,…,M,j=1,…,n,n和M均为大于1的整数。
在上述公式中,vi表示输入层中神经元节点i输入的电压激励,ij表示下一层中神经元节点j的输出电流,gi,j表示忆阻器阵列的电导矩阵。
例如,忆阻器阵列具有阈值电压,在输入电压幅度小于忆阻器阵列的阈值电压时,不会改变忆阻器阵列的电导。在这种情况下,可以通过输入小于阈值电压的电压,利用忆阻器的电导进行计算;可以通过输入大于阈值电压的电压,改变忆阻器的电导值。
本公开至少一实施例提供一种基于忆阻器的神经网络的训练方法,图3为该训练方法的流程图,图4为该训练方法的示意图。该训练方法可以以软件、硬件、固件或其任意组合的方式实现。下面结合图3和图4对本公开实施例提供的神经网络的训练方法进行详细地介绍。如图3所示,该神经网络的训练方法包括步骤S110和步骤S120。
步骤S110:训练神经网络的权重参数,并基于训练后的权重参数对忆阻器阵列进行编程,以将训练后的权重参数写入忆阻器阵列中。
步骤S120:通过调节忆阻器阵列的至少部分电导值以更新神经网络的至少一层权重参数。
例如,在本公开的实施例中,该训练方法为混合训练方法。例如,步骤S110为片外训练过程,即将权重参数写入忆阻器阵列之前的训练过程,步骤S120为片上训练过程,即将权重参数写入忆阻器阵列之后的训练过程。在传统片上训练过程中需要对整个神经网络的权重参数进行更新,而在本公开实施例提供的混合训练方法中,例如,如图4所示,神经网络10的权重参数在步骤S110中进行片外训练后,将训练好的权重参数写入忆阻器阵列中,在步骤S120所述的片上训练过程中只需对神经网络中关键的一层或多层的权重参数进行更新调节即可,即不需要对全部忆阻器阵列的电导值表示的权重参数全部进行更新,这样可以在兼容器件良率问题、非一致性、电导漂移以及随机的波动性等非理想特性的情况下,极大地简化忆阻器神经网络系统的复杂度、减小神经网络系统的开销、降低神经网络系统的实现成本。
另外,本公开实施例提出的神经网络10的权重参数在步骤S110中进行片外训练过程中,可以不用必须考虑写入忆阻器阵列时的约束,即在该片外训练过程可以不考虑忆阻器器件的非理想因素,只要通过基本的算法得到权重即可,从而可以简化神经网络的片外训练过程。当然,也可以考虑写入忆阻器阵列时的约束,本公开的实施例对此不作限制。
下面对该神经网络的混合训练过程进行详细描述。
对于步骤S110,对神经网络进行片外训练,得到该神经网络的权重参数。例如,在该步骤中,还包括根据所使用的忆阻器阵列的电导状态的约束,对权重进行量化,以将量化后的权重参数编程进忆阻器阵列中。在该片外训练过程,如果已经考虑了忆阻器器的性能约束,则直接可以得到符合忆阻器特性的量化权重值。如果训练时没有考虑忆阻器的性能约束,则需要根据忆阻器的电导状态,对训练后的权重参数进行均匀或者非均匀的量化,得到可以用于编程的目标权重参数。
例如,在一些示例中,在训练神经网络的权重参数的过程中可以考虑忆阻器器件的特性,例如,考虑忆阻器阵列中各个忆阻器的电导的取值范围的约束(即,忆阻器阵列的电导状态的约束)。即,在片外训练神经网络的权重参数的过程中,根据忆阻器阵列中各个忆阻器的电导的取值范围对权重参数进行约束。在这种情况下,训练后的权重参数可以直接写入忆阻器阵列中,而无需进行缩放处理。
例如,图5为图3中所示的步骤S110的至少一个示例的流程图。在图5所示的示例中,步骤S110包括步骤S111。
步骤S111:在训练神经网络的权重参数的过程中,根据忆阻器阵列的电导状态的约束,直接获取神经网络的量化后的权重参数,将量化后的权重参数写入忆阻器阵列中。
例如,电导状态通常由固定读电压下的相应的读电流表示,以下实施例与此相同,不再赘述。例如,在一些示例中,假设神经网络的权重参数可以编程到的忆阻器阵列的电导的取值范围为(-3,-2,-1,0,1,2,3)。那么,在训练神经网络的权重参数的过程中,根据忆阻器阵列的电导状态的约束,可以直接获取例如范围为(-3,-2,-1,0,1,2,3)的量化后的权重参数,之后该量化后的权重参数可以无需经过缩放直接写入忆阻器阵列。
需要注意的是,忆阻器阵列的电导状态的约束及其对应的量化后的权重参数的取值根据实际情况而定,本公开的实施例对此不作限制。例如,图6为本公开至少一实施例提供的一种在32个电导状态下的忆阻器的累积概率示意图。如图6所示,忆阻器在32个电导状态下的累积概率互相不交叠,且每个电导状态下的累积概率均能达到99.9%以上,说明通过该训练方法得到的忆阻器阵列在32个电导状态下具有很好的一致性。
例如,在另一些示例中,在片外训练神经网络的权重参数的过程中也可以不考虑系统和器件的特性,即不考虑忆阻器阵列中各个忆阻器的电导的取值范围的约束特性。
在这种情况下,需要先根据忆阻器阵列的电导的取值范围对训练后的权重参数进行缩放处理,例如进行量化操作,即将训练后的权重参数缩放至和忆阻器阵列的电导的取值范围相同的范围后,再将训练后的权重参数写入忆阻器阵列中。
例如,图7为图3中所示的步骤S110的至少另一个示例的流程图。在图7所示的示例中,步骤S110包括步骤S112。
步骤S112:基于忆阻器阵列的电导状态的约束对训练后的权重参数进行量化操作,以获取量化后的权重参数,将量化后的权重参数写入忆阻器阵列中。
例如,电导状态通常由固定读电压下的相应的读电流表示。例如,在该示例中,假设神经网络的权重参数可以编程到的忆阻器阵列的电导的取值范围(即电导状态的约束)为(-3,-2,-1,0,1,2,3)。
例如,在不考虑忆阻器特性的情况下,训练后的权重参数例如是浮点数表示的从-1到1的连续取值,根据忆阻器阵列的电导状态的约束,量化操作将该连续取值的权重参数量化为例如范围为(-3,-2,-1,0,1,2,3)的权重参数,之后将该量化后的权重参数写入忆阻器阵列。
需要注意的是,忆阻器阵列的电导状态的约束及其相应的量化后的权重参数的取值根据实际情况而定,本公开的实施例对此不作限制。
例如,量化操作包括均匀量化和非均匀量化。
例如,图8示出了一种权重参数分布的示例。在图8所示的示例中,训练后的权重参数是浮点数表示的从-1到1的连续取值。对于均匀量化,则将-1到1的区间整体均匀分为7个区间,例如,量化后的权重参数均匀分为(-15,-10,-5,0,5,10,15),使得其与电导状态的约束(-3,-2,-1,0,1,2,3)相对应,例如,量化后的各个权重参数是与其对应的电导状态约束的整数倍,例如,5倍,本公开的实施例对此不作限制。对于非均匀量化,则将区间(–a,a)整体均匀分为5个区间,其与(-2,-1,0,1,2)的量化后的权重参数相对应,a大于0且小于1。例如,区间(-1,-a)缩放后与电导状态的约束中的-3相对应,区间(a,1)与电导状态的约束中的3相对应。对于量化操作中的区间划分以及区间与权重参数的对应关系,可根据具体情况设置,本公开的实施例对此不作限制。
为了将量化后的权重参数(例如,在步骤S111和步骤S112中获取的量化后的权重参数)更精确地写入忆阻器阵列中,可以采用例如双向写校验。
图9为本公开至少一实施例提供的一种将权重参数写入忆阻器阵列的流程图。如图9所示,将权重参数写入忆阻器阵列的过程包括如下步骤。
基于量化后的权重参数获取忆阻器阵列的各器件电导状态的目标区间,例如,通常通过施加某一固定电压来获取电流,对应该器件的电导状态。该电导状态的目标区间可以表示为(It-ΔI,It+ΔI),其中,It为在该某一读电压下电导状态的电流值,ΔI为该电导状态对应的电流误差容限;
判断忆阻器阵列的各器件的电导状态I是否在目标区间内,即是否满足It-ΔI≤I≤It+ΔI;
如果否,判断忆阻器阵列的各器件的电导状态是否超出目标区间,即判断是否满足:I>It+ΔI;
如果是,施加反向脉冲(RESET脉冲);
如果否,施加正向脉冲(SET脉冲);
如果是,则量化后的权重参数成功写入忆阻器阵列。
例如,在如图9所述的双向写校验过程中,还可以设定最大操作次数N(N为大于0的整数),以限定最大操作次数。下面系统介绍该双向写校验过程。
例如,首先,初始操作次数r=0,获取该电导状态的目标区间,该电导状态的目标区间可以表示为(It-ΔI,It+ΔI)。判断操作次数是否达到最大操作次数N,即判断r(r大于等于0且小于等于N)是否等于N,如果是,且忆阻器电导状态不在目标区间,则表示编程失败;如果否,则判断当前电导状态是否在目标区间内,如果是,则表示编程成功;如果否,则判断当前忆阻器的电导值是否超出目标区间,如果是,则施加反向脉冲(RESET脉冲),如果否,则施加正向脉冲(SET脉冲),以实现对当前忆阻器的电导值进行调节;然后,重复上述操作,直至操作次数是否达到最大操作次数N或编程成功为止。至此,可以将训练后的权重参数写入忆阻器阵列中。
例如,可以提供片外训练单元,并通过该片外训练单元训练神经网络的权重参数;例如,也可以通过中央处理单元(CPU)、现场可编程逻辑门阵列(FPGA)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元以及相应计算机指令来实现该片外训练范元。例如,该处理单元可以为通用处理器或专用处理器,可以是基于X86或ARM架构的处理器等。
对于步骤S120,例如,在写入权重参数的忆阻器阵列上进行存算一体计算,并基于该存算一体计算的结果调节忆阻器阵列的至少部分忆阻器的电导值以更新神经网络的至少一层权重参数。
例如,存算一体计算可以是前向计算操作和反向计算操作,但是本公开的实施例对此不作限制。
例如,更新操作可以通过向至少一层权重参数施加正向电压或反向电压来实现,但是本公开的实施例对此不作限制。
例如,图10为图3中所示的步骤S120的至少一个示例的流程图。在图10所示的示例中,该训练方法包括步骤S121和步骤122。
步骤S121:通过前向计算操作和反向计算操作对忆阻器阵列进行训练。
步骤S122:基于前向计算操作和反向计算操作的结果向忆阻器阵列的部分忆阻器施加正向电压或反向电压以更新忆阻器阵列的部分忆阻器的电导。
例如,如图10所示,对写入训练后的权重参数的忆阻器阵列进行前向计算操作、反向计算操作,基于前向计算操作和反向计算操作的结果对至少部分忆阻器的电导值进行更新,以实现对于该至少部分忆阻器相对应的权重参数进行调节,最终经过多个周期的训练迭代直到收敛,就可以自适应地兼容器件良率问题、非一致性、电导漂移以及随机的波动性等非理想特性,恢复系统表现,例如,提高识别的准确率。
例如,忆阻器具有阈值电压,在输入电压幅度小于忆阻器的阈值电压时,不会改变忆阻器阵列的电导。在这种情况下,通过输入小于阈值电压的输入电压来实现前向计算操作和反向计算操作,通过输入大于阈值电压的输入电压来实现更新操作。下面结合附图详细介绍为本公开至少一实施例提供的前向计算操作、反向计算操作和更新操作的过程。
图11A为本公开至少一实施例提供的一种前向计算操作的示意图。如图11A所示,假设忆阻器阵列等效的电导权重参数矩阵为W,输入为小于忆阻器阵列的阈值电压的电压V,输出为对应的电流I,则此时对应的神经网络的前向计算操作可以表示为:I=VW。
图11B为本公开至少一实施例提供的一种反向计算操作的示意图。如图11B所示,假设忆阻器阵列等效的电导权重参数矩阵为W,输入为小于忆阻器阵列的阈值电压的电压V,输出为对应的电流I,则此时对应的神经网络的反向计算操作可以表示为:I=VWT
图11C为本公开至少一实施例提供的一种更新操作的示意图。如图11C所示,假设忆阻器阵列等效的电导权重参数矩阵为W,输入为大于忆阻器阵列的阈值电压的电压V,则此时对应的神经网络的更新操作可以表示为:W=W。例如,如果更新操作为增加忆阻器阵的至少某一忆阻器的电导,则在该至少某一忆阻器的上下电极施加正向电压,例如图11C中所示的V写1和V写2;如果更新操作为减小忆阻器阵列的至少某一忆阻器的电导,则在该至少某一忆阻器的上下电极施加反向电压,例如图11C中所示的V写1和V写2
例如,在步骤S121中,对神经网络的全部忆阻器阵列进行前向计算操作,对神经网络的忆阻器阵列的至少部分忆阻器进行反向计算操作。因为对于混合训练方法,在片上训练过程中只需对神经网络中关键的一层或多层的权重参数进行调节,所以,仅需对神经网络中的该关键的一层或多层进行反向计算和更新操作,从而减少了系统开销,降低了系统实现成本。
例如,在本公开至少一实施例提供的训练方法中,对忆阻器阵列逐行进行或逐列进行或整体并行进行前向计算操作和反向计算操作。
图12A-12D为本公开至少一实施例提供的一种前向计算操作的示例方式的示意图。图12A图示了逐行进行前向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为n×m矩阵,输入小于忆阻器阵列的阈值电压的电压V1,V2,V3…Vm,逐行输出对应的电流I1,I2,I3…In。图12B图示了逐列进行前向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为m×n矩阵,输入小于忆阻器阵列的阈值电压的电压V1,V2,V3LVm,逐列输出对应的电流I1,I2,I3LIn。图12C图示了整体并行进行前向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为n×m矩阵,输入小于忆阻器阵列的阈值电压的电压V1,V2,V3…Vm,各行整体并行输出对应的电流I1,I2,I3LIn。图12D图示了整体并行进行前向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为m×n矩阵,输入小于忆阻器阵列的阈值电压的电压V1,V2,V3…Vm,各列整体并行输出对应的电流I1,I2,I3LIn
图13A-13D为本公开至少一实施例提供的一种反向计算操作的示例方式的示意图。图13A图示了逐列进行反向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为n×m矩阵,在忆阻器阵列的输出端输入小于忆阻器阵列的阈值电压的电压V1,V2,V3LVn,逐列输出对应的电流I1,I2,I3LIm。图13B图示了逐行进行反向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为m×n矩阵,输入小于忆阻器阵列的阈值电压的电压V1,V2,V3LVn,逐行输出对应的电流I1,I2,I3LIm。图13C图示了整体并行进行反向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为n×m矩阵,输入小于忆阻器阵列的阈值电压的电压V1,V2,V3LVn,各列整体并行输出对应的电流I1,I2,I3LIm。图13D图示了整体并行进行反向计算操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为m×n矩阵,输入小于忆阻器阵列的阈值电压的电压V1,V2,V3LVn,各行整体并行输出对应的电流I1,I2,I3LIm
例如,在本公开至少一实施例提供的训练方法中,逐行进行或逐列进行更新与忆阻器阵列的至少部分忆阻器相对应的权重参数。
图14A-14D为本公开至少一实施例提供的一种更新操作的示例方式的示意图。图14A图示了逐行进行更新操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为n×m矩阵,逐行更新该n×m权重参数矩阵,在更新该n×m权重参数矩阵的某一行时,例如,更新某一行上不连续的任意两个忆阻器的电导时,对于该行中需要增加电导的忆阻器,在其上下电极分别施加VSET1和VSET2(例如,VSET1和VSET2为正向电压),对于该行中需要减小电导的忆阻器,在其上下电极分别施加VRESET1和VRESET2(例如,VRESET1和VRESET2为反向电压)。图14B图示了逐行进行更新操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为m×n矩阵,逐行更新该m×n权重参数矩阵,在更新该m×n权重参数矩阵的某一行时,例如,更新某一行上连续的任意两个忆阻器的电导时,对于该行中需要增加电导的忆阻器,在其上下电极分别施加VSET1和VSET2(例如,VSET1和VSET2为正向电压),对于该行中需要减小电导的忆阻器,在其上下电极分别施加VRESET1和VRESET2(例如,VRESET1和VRESET2为反向电压)。图14C图示了逐列进行更新操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为n×m矩阵,逐列更新该n×m权重参数矩阵,在更新该n×m权重参数矩阵的某一列时,例如,更新某一列上连续的任意两个或位于该列的端点处的1个忆阻器的电导时,对于该列中需要增加电导的忆阻器,在其上下电极分别施加VSET1和VSET2(例如,VSET1和VSET2为正向电压),对于该列中需要减小电导的忆阻器,在其上下电极分别施加VRESET1和VRESET2(例如,VRESET1和VRESET2为反向电压)。图14D图示了逐列进行更新操作的示例方式,在该示例中,假设忆阻器阵列等效的电导权重参数矩阵为m×n矩阵,逐列更新该m×n权重参数矩阵,在更新该m×n权重参数矩阵的某一列时,例如,更新某一列上不连续的任意两个或位于该列的中间位置的1个忆阻器的电导时,对于该列中需要增加电导的忆阻器,在其上下电极分别施加VSET1和VSET2(例如,VSET1和VSET2为正向电压),对于该列中需要减小电导的忆阻器,在其上下电极分别施加VRESET1和VRESET2(例如,VRESET1和VRESET2为反向电压)。
例如,在本公开至少一实施例提供的训练方法中,进行片上训练过程仅使用部分训练集数据。例如,在进行片外训练时使用数据集A,在进行片上训练时使用数据B,其中B是A的子集。
例如,通过前向计算操作和反向计算操作对忆阻器阵列进行训练时仅使用部分训练集数据。例如,在进行片外训练时使用数据集A,在进行前向计算操作和反向计算操作时使用数据B,其中B是A的子集。
在片上训练过程(例如,前向计算操作和反向计算操作)仅使用部分训练集可以减少片上训练过程(例如,前向计算操作和反向计算操作)的运算量,简化系统复杂度,减小系统开销。
例如,在本公开至少一实施例提供的训练方法中,更新神经网络中最后一层或多层的权重参数。例如,在步骤S120中,可以通过调节忆阻器阵列的至少部分电导值以更新神经网络中最后一层或多层的权重参数。例如,在步骤S122中,基于前向计算操作和反向计算操作的结果向神经网络的最后一层或多层的忆阻器阵列的至少部分忆阻器施加正向电压或反向电压以更新与神经网络的最后一层或多层的忆阻器阵列的至少部分忆阻器相对应的权重参数。
例如,本公开至少一实施例提供的训练方法还包括:忆阻器阵列基于更新后的权重参数,计算神经网络的输出结果。例如,在经过混合训练的神经网络的输入层输入数据,在该经过混合训练的神经网络的输出层输出该神经网络的输出结果。例如,在该输出数据的过程中,对经过混合训练的神经网络的输出数据进行离散化处理操作,即转换为数字信号。
例如,可以提供片上训练单元,并通过该片上训练单元调节忆阻器阵列的至少部分电导值以更新神经网络的至少一层权重参数;例如,该片上训练单元可以实现为忆阻器阵列。
需要说明的是,在本公开的实施例中,该训练方法的流程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行。虽然上文描述的训练方法的流程包括特定顺序出现的多个操作,但是应该清楚地了解,多个操作的顺序并不受限制。上文描述的训练方法可以执行一次,也可以按照预定条件执行多次。
本公开实施例提供的训练方法,弥补了将神经网络系统部署在基于忆阻器阵列的硬件系统中时采用的片上训练方法和片外训练方法的不足,而且从神经网络系统的角度出发,该训练方法解决了器件波动性等各种非理想特性造成的神经网络系统的性能退化等问题,高效且低成本的将各种神经网络部署在基于忆阻器阵列的硬件系统中。
图15为本公开至少一实施例提供的一种神经网络的训练装置的示意框图。例如,如图15所示,该训练装置200包括片外训练单元210和片上训练单元220。例如,这些单元可以通过硬件(例如电路)、软件或固件及其任意组合的形式实现。
该片外训练单元210配置为训练神经网络的权重参数,并基于训练后的权重参数对忆阻器阵列进行编程,以将训练后的权重参数写入忆阻器阵列中。例如,该片外训练单元可以实现步骤S110,其具体实现方法可以参考步骤S110的相关描述,在此不再赘述。
该片上训练单元220配置为通过调节忆阻器阵列的至少部分电导值以更新神经网络的至少一层权重参数。例如,该片上训练单元可以实现步骤S120,其具体实现方法可以参考步骤S120的相关描述,在此不再赘述。
图16为图15所示的神经网络的训练装置的一个示例的示意框图。例如,如图16所示,片外训练单元210包括输入单元211和读写单元212,片上训练单元220包括计算单元221、更新单元222和输出单元223。例如,这些单元可以通过硬件(例如电路)、软件或固件及其任意组合的形式实现。
该输入单元211配置为输入训练后的权重参数。例如,该输入单元211与神经网络10的输入层11相连接,将数据信号处理为神经网络10所需的输入数据。例如,该输入单元211可以通过例如硬件、软件、固件或其任意组合实现。
该读写单元212配置为将训练后的权重参数写入忆阻器阵列中。例如,该读写单元通过向忆阻器阵列施加电压(例如,正向电路或反向电压)的方式将权重参数写入忆阻器阵列中。例如,该读写单元可以实现如图9所示的双向写校验,其具体实现方法可以参考如图9所示的双向写校验的相关描述,在此不再赘述。
该计算单元221配置为通过前向计算操作和反向计算操作对忆阻器阵列进行训练。例如,该计算单元可以实现步骤S121,其具体实现方法可以参考步骤S121的相关描述,在此不再赘述。
该更新单元222配置为基于前向计算操作和反向计算操作的结果向忆阻器阵列的至少部分施加正向电压或反向电压以更新忆阻器阵列的至少部分对应的权重参数。例如,该计算单元可以实现步骤S122,其具体实现方法可以参考步骤S122的相关描述,在此不再赘述。
该输出单元223配置为基于更新后的权重参数,计算神经网络的输出结果。例如,该输出单元223与神经网络10的输出层13相连接,输出经过混合训练的神经网络10的输出数据。例如,该输出单元223可以通过例如硬件、软件、固件或其任意组合实现。例如,该输出单元223可以通过ADC(模数转换器)将经过混合训练的神经网络10的输出数据进行离散化处理操作,即转换为数字信号。
图17为图16所示的神经网络的训练装置的一个示例的示意框图。例如,如图17所示,片外训练单元210还包括量化单元213。
该量化单元213配置为在训练神经网络的权重参数的过程中,根据忆阻器阵列的电导状态的约束,直接获取神经网络的量化后的权重参数,将量化后的权重参数写入忆阻器阵列中;或,配置为基于忆阻器阵列的电导状态的约束对训练后的权重参数进行量化操作,以获取量化后的权重参数。例如,该量化单元可以实现步骤S111,其具体实现方法可以参考步骤S111的相关描述,在此不再赘述;或者,该量化单元也可以实现步骤S112,其具体实现方法可以参考步骤S112的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的训练装置中,该计算单元221仅对忆阻器阵列的至少部分忆阻器进行反向计算操作,其具体实现方法如上所述,在此不再赘述。
例如,在本公开至少一实施例提供的训练装置中,该计算单元221逐行进行或逐列进行或整体并行进行前向计算操作、反向计算操作,其具体实现方法可以参考关于图12A-12D和图13A-13D的的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的训练装置中,更新单元逐行进行或逐列进行更新操作,其具体实现方法可以参考关于图14A-14D的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的训练装置中,片上训练装置还配置为更新神经网络中最后一层或多层的权重参数,其具体实现方法如上所述,在此不再赘述。
需要说明的是,为表示清楚、简洁,本公开实施例并没有给出该神将网络的训练装置200的全部组成单元。为实现训练装置200的必要功能,本领域技术人员可以根据具体需要提供、设置其他未示出的组成单元,本公开的实施例对此不作限制。
关于不同实施例中的训练装置200的技术效果可以参考本公开的实施例中提供的神经网络的训练方法的技术效果,这里不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。

Claims (16)

1.一种基于忆阻器的神经网络的训练方法,所述神经网络包括逐一连接的多层神经元层以及在所述神经元层之间的权重参数,所述训练方法包括:
训练所述神经网络的权重参数,并基于训练后的所述权重参数对忆阻器阵列进行编程,以将所述训练后的所述权重参数写入所述忆阻器阵列中;以及
通过调节所述忆阻器阵列的至少部分电导值以更新所述神经网络的至少一层权重参数;
其中,训练所述神经网络的权重参数,并基于训练后的所述权重参数对忆阻器阵列进行编程,以将所述训练后的所述权重参数写入所述忆阻器阵列中,包括:
在训练所述神经网络的权重参数的过程中,根据所述忆阻器阵列的电导状态的约束,直接获取所述神经网络的量化后的权重参数,将所述量化后的权重参数写入所述忆阻器阵列中;或,基于所述忆阻器阵列的电导状态的约束对所述训练后的权重参数进行量化操作,以获取量化后的权重参数,将所述量化后的权重参数写入所述忆阻器阵列中。
2.根据权利要求1所述的训练方法,其中,所述量化操作包括均匀量化和非均匀量化。
3.根据权利要求1或2所述的训练方法,其中,将所述量化后的权重参数写入所述忆阻器阵列中,包括:
基于所述量化后的权重参数获取所述忆阻器阵列的电导状态的目标区间;
判断所述忆阻器阵列的各器件的电导状态是否在所述目标区间内;
如果否,判断所述忆阻器阵列的各器件的电导状态是否超出所述目标区间;
如果是,施加反向脉冲;
如果否,施加正向脉冲;
如果是,则量化后的权重参数写入所述忆阻器阵列。
4.根据权利要求1所述的训练方法,其中,通过调节所述忆阻器阵列的部分忆阻器的电导值以更新所述神经网络的至少一层权重参数,包括:
通过前向计算操作和反向计算操作对所述忆阻器阵列进行训练;
基于所述前向计算操作和所述反向计算操作的结果向所述忆阻器阵列的部分忆阻器施加正向电压或反向电压以更新所述忆阻器阵列的部分忆阻器的电导。
5.根据权利要求4所述的训练方法,其中,仅对所述忆阻器阵列的至少部分进行所述反向计算操作。
6.根据权利要求4或5所述的训练方法,其中,对所述忆阻器阵列逐行进行或逐列进行或整体并行进行所述前向计算操作和所述反向计算操作。
7.根据权利要求4中所述的训练方法,其中,逐行进行或逐列进行更新与所述忆阻器阵列的至少部分忆阻器相对应的权重参数。
8.根据权利要求4或5所述的训练方法,其中,所述前向计算操作和所述反向计算操作仅使用部分训练集数据。
9.根据权利要求1-2、4-5和7中任一项所述的训练方法,其中,通过调节所述忆阻器阵列的至少部分电导值以更新所述神经网络的至少一层权重参数,包括:
更新所述神经网络中最后一层或最后多层的权重参数。
10.根据权利要求1-2、4-5和7中任一项所述的训练方法,还包括:所述忆阻器阵列基于更新后的所述权重参数,计算所述神经网络的输出结果。
11.一种基于忆阻器的神经网络的训练装置,包括:
片外训练单元,配置为训练所述神经网络的权重参数,并基于训练后的所述权重参数对忆阻器阵列进行编程,以将所述训练后的所述权重参数写入所述忆阻器阵列中;以及
片上训练单元,配置为通过调节所述忆阻器阵列的至少部分电导值以更新所述神经网络的至少一层权重参数,
其中,所述片外训练单元包括量化单元,其中,所述量化单元配置为在训练所述神经网络的权重参数的过程中,根据所述忆阻器阵列的电导状态的约束,直接获取所述神经网络的量化后的权重参数,将所述量化后的权重参数写入所述忆阻器阵列中;或,配置为基于所述忆阻器阵列的电导状态的约束对所述训练后的权重参数进行量化操作,以获取量化后的权重参数。
12.根据权利要求11所述的训练装置,其中,所述片外训练单元还包括输入单元和读写单元,所述片上训练单元包括计算单元、更新单元和输出单元;其中,
所述输入单元配置为输入训练后的权重参数;
所述读写单元配置为将所述训练后的所述权重参数写入所述忆阻器阵列中;
所述计算单元配置为通过前向计算操作和反向计算操作对所述忆阻器阵列进行训练;
所述更新单元配置为基于所述前向计算操作和所述反向计算操作的结果向所述忆阻器阵列的至少部分施加正向电压或反向电压以更新所述忆阻器阵列的至少部分对应的权重参数;
所述输出单元配置为基于更新后的所述权重参数,计算所述神经网络的输出结果。
13.根据权利要求12所述的训练装置,其中,所述计算单元配置为仅对所述忆阻器阵列的至少部分进行所述反向计算操作。
14.根据权利要求12所述的训练装置,其中,所述计算单元配置为逐行进行或逐列进行或整体并行进行所述前向计算操作、所述反向计算操作。
15.根据权利要求12所述的训练装置,其中,所述更新单元配置为逐行进行或逐列进行更新操作。
16.根据权利要求11-15中任一项所述的训练装置,其中,所述片上训练单元还配置为更新所述神经网络中最后一层或最后多层的权重参数。
CN201911059194.1A 2019-11-01 2019-11-01 基于忆阻器的神经网络的训练方法及其训练装置 Active CN110796241B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201911059194.1A CN110796241B (zh) 2019-11-01 2019-11-01 基于忆阻器的神经网络的训练方法及其训练装置
PCT/CN2020/078203 WO2021082325A1 (zh) 2019-11-01 2020-03-06 基于忆阻器的神经网络的训练方法及其训练装置
US17/049,349 US20220374688A1 (en) 2019-11-01 2020-03-06 Training method of neural network based on memristor and training device thereof
JP2022525403A JP7548598B2 (ja) 2019-11-01 2020-03-06 メモリスタに基づくニューラルネットワークのトレーニング方法及びそのトレーニング装置
KR1020227018590A KR20220086694A (ko) 2019-11-01 2020-03-06 멤리스터 기반 신경 네트워크 트레이닝 방법 및 그 트레이닝 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911059194.1A CN110796241B (zh) 2019-11-01 2019-11-01 基于忆阻器的神经网络的训练方法及其训练装置

Publications (2)

Publication Number Publication Date
CN110796241A CN110796241A (zh) 2020-02-14
CN110796241B true CN110796241B (zh) 2022-06-17

Family

ID=69440716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911059194.1A Active CN110796241B (zh) 2019-11-01 2019-11-01 基于忆阻器的神经网络的训练方法及其训练装置

Country Status (5)

Country Link
US (1) US20220374688A1 (zh)
JP (1) JP7548598B2 (zh)
KR (1) KR20220086694A (zh)
CN (1) CN110796241B (zh)
WO (1) WO2021082325A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110796241B (zh) * 2019-11-01 2022-06-17 清华大学 基于忆阻器的神经网络的训练方法及其训练装置
CN111460365B (zh) * 2020-03-10 2021-12-03 华中科技大学 一种基于忆阻线性神经网络的方程组求解器及其操作方法
CN111582473B (zh) * 2020-04-23 2023-08-25 中科物栖(南京)科技有限公司 一种对抗样本的生成方法及装置
CN111476356B (zh) * 2020-05-11 2023-07-21 中国人民解放军国防科技大学 忆阻神经网络的训练方法、装置、设备及存储介质
CN111582461B (zh) * 2020-05-21 2023-04-14 中国人民解放军国防科技大学 神经网络训练方法、装置、终端设备和可读存储介质
CN111815640B (zh) * 2020-07-21 2022-05-03 江苏经贸职业技术学院 一种基于忆阻器的rbf神经网络医学图像分割算法
CN111931924B (zh) * 2020-07-31 2022-12-13 清华大学 基于在线迁移训练的忆阻器神经网络芯片架构补偿方法
CN112101549B (zh) * 2020-09-22 2024-05-10 清华大学 基于忆阻器阵列的神经网络的训练方法和装置
US20220138579A1 (en) * 2020-11-02 2022-05-05 International Business Machines Corporation Weight repetition on rpu crossbar arrays
CN112686373B (zh) * 2020-12-31 2022-11-01 上海交通大学 一种基于忆阻器的在线训练强化学习方法
CN112801274B (zh) * 2021-01-29 2022-12-06 清华大学 人工智能处理装置、权重参数读写方法及装置
CN113159293B (zh) * 2021-04-27 2022-05-06 清华大学 一种用于存算融合架构的神经网络剪枝装置及方法
CN113311702B (zh) * 2021-05-06 2022-06-21 清华大学 一种基于Master-Slave神经元的人工神经网络控制器
CN113516234B (zh) * 2021-05-10 2024-04-09 西安交通大学 一种缓解忆阻加速器非理想因素的方法及装置
CN115481562B (zh) * 2021-06-15 2023-05-16 中国科学院微电子研究所 多并行度优化方法、装置、识别方法和电子设备
CN113570048B (zh) * 2021-06-17 2022-05-31 南方科技大学 基于电路仿真的忆阻器阵列神经网络的构建及优化方法
CN113553293B (zh) * 2021-07-21 2024-09-03 清华大学 存算一体装置及其校准方法
US20230034366A1 (en) * 2021-07-29 2023-02-02 Macronix International Co., Ltd. Memory and training method for neutral network based on memory
CN113642723B (zh) * 2021-07-29 2024-05-31 安徽大学 一种实现原-异位训练的gru神经网络电路
CN113505887B (zh) * 2021-09-12 2022-01-04 浙江大学 一种针对忆阻器误差的忆阻器存储器神经网络训练方法
CN113837373A (zh) * 2021-09-26 2021-12-24 清华大学 数据处理装置以及数据处理方法
CN114121089B (zh) * 2021-11-24 2023-05-09 清华大学 基于忆阻器阵列的数据处理方法及装置
CN114330688A (zh) * 2021-12-23 2022-04-12 厦门半导体工业技术研发有限公司 基于阻变式存储器的模型在线迁移训练方法、装置及芯片
CN115099396B (zh) * 2022-05-09 2024-04-26 清华大学 基于忆阻器阵列的全权重映射方法及装置
CN114861900B (zh) * 2022-05-27 2024-09-13 清华大学 用于忆阻器阵列的权重更新方法和处理单元
CN115564036B (zh) * 2022-10-25 2023-06-30 厦门半导体工业技术研发有限公司 基于rram器件的神经网络阵列电路及其设计方法
KR20240108628A (ko) * 2023-01-02 2024-07-09 서울대학교산학협력단 영상 변환 장치 및 방법
CN116149567A (zh) * 2023-02-27 2023-05-23 华中科技大学 基于忆阻器的存算一体化系统及在线深度学习方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009640A (zh) * 2017-12-25 2018-05-08 清华大学 基于忆阻器的神经网络的训练装置及其训练方法
CN109063826A (zh) * 2018-03-19 2018-12-21 重庆大学 一种基于忆阻器的卷积神经网络实现方法
CN109460817A (zh) * 2018-09-11 2019-03-12 华中科技大学 一种基于非易失存储器的卷积神经网络片上学习系统
CN109543827A (zh) * 2018-12-02 2019-03-29 清华大学 生成式对抗网络装置及训练方法
CN109800870A (zh) * 2019-01-10 2019-05-24 华中科技大学 一种基于忆阻器的神经网络在线学习系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10332004B2 (en) 2015-07-13 2019-06-25 Denso Corporation Memristive neuromorphic circuit and method for training the memristive neuromorphic circuit
US10248907B2 (en) 2015-10-20 2019-04-02 International Business Machines Corporation Resistive processing unit
US11501130B2 (en) * 2016-09-09 2022-11-15 SK Hynix Inc. Neural network hardware accelerator architectures and operating method thereof
JP6724870B2 (ja) * 2017-06-19 2020-07-15 株式会社デンソー 人工ニューラルネットワーク回路の訓練方法、訓練プログラム、及び訓練装置
CN109791626B (zh) * 2017-12-29 2022-12-27 清华大学 神经网络权重编码方法、计算装置及硬件系统
US11157810B2 (en) 2018-04-16 2021-10-26 International Business Machines Corporation Resistive processing unit architecture with separate weight update and inference circuitry
US11853846B2 (en) * 2018-04-30 2023-12-26 Hewlett Packard Enterprise Development Lp Acceleration of model/weight programming in memristor crossbar arrays
CN109308692B (zh) 2018-07-30 2022-05-17 西北大学 基于改进Resnet与SVR混合模型的OCT图像质量评价方法
US11386319B2 (en) * 2019-03-14 2022-07-12 International Business Machines Corporation Training of artificial neural networks
US11373092B2 (en) * 2019-04-10 2022-06-28 International Business Machines Corporation Training of artificial neural networks
CN110796241B (zh) * 2019-11-01 2022-06-17 清华大学 基于忆阻器的神经网络的训练方法及其训练装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009640A (zh) * 2017-12-25 2018-05-08 清华大学 基于忆阻器的神经网络的训练装置及其训练方法
CN109063826A (zh) * 2018-03-19 2018-12-21 重庆大学 一种基于忆阻器的卷积神经网络实现方法
CN109460817A (zh) * 2018-09-11 2019-03-12 华中科技大学 一种基于非易失存储器的卷积神经网络片上学习系统
CN109543827A (zh) * 2018-12-02 2019-03-29 清华大学 生成式对抗网络装置及训练方法
CN109800870A (zh) * 2019-01-10 2019-05-24 华中科技大学 一种基于忆阻器的神经网络在线学习系统

Also Published As

Publication number Publication date
KR20220086694A (ko) 2022-06-23
WO2021082325A1 (zh) 2021-05-06
JP2023501230A (ja) 2023-01-18
JP7548598B2 (ja) 2024-09-10
CN110796241A (zh) 2020-02-14
US20220374688A1 (en) 2022-11-24

Similar Documents

Publication Publication Date Title
CN110796241B (zh) 基于忆阻器的神经网络的训练方法及其训练装置
US9934463B2 (en) Neuromorphic computational system(s) using resistive synaptic devices
JP7182835B2 (ja) 人工ニューラル・ネットワークを訓練する方法および人工ニューラル・ネットワークを実施する装置(人工ニューラル・ネットワークの訓練)
CN108009640B (zh) 基于忆阻器的神经网络的训练装置及其训练方法
US11626884B2 (en) System and methods for mixed-signal computing
CN112085186A (zh) 一种神经网络的量化参数确定方法及相关产品
AU2020274862B2 (en) Training of artificial neural networks
EP3580699B1 (en) Systems and methods for mixed-signal computing
US11386319B2 (en) Training of artificial neural networks
CN112041928A (zh) 忆阻器交叉杆阵列中模型/权重编程的加速
CN114819128A (zh) 基于忆阻器阵列的贝叶斯神经网络的变分推理方法和装置
AU2021291671B2 (en) Drift regularization to counteract variation in drift coefficients for analog accelerators
US20210064974A1 (en) Formation failure resilient neuromorphic device
US11568217B2 (en) Sparse modifiable bit length deterministic pulse generation for updating analog crossbar arrays
US20230177284A1 (en) Techniques of performing operations using a hybrid analog-digital processor
CN115796252A (zh) 权重写入方法及装置、电子设备和存储介质
US20220019876A1 (en) Pulse generation for updating crossbar arrays
US10445640B1 (en) Scalable refresh for asymmetric non-volatile memory-based neuromorphic circuits
US20230306252A1 (en) Calibrating analog resistive processing unit system
CN116128035A (zh) 训练方法及装置、电子设备和计算机存储介质
CN115796250A (zh) 权重部署方法及装置、电子设备和存储介质
US20230306251A1 (en) Hardware implementation of activation functions
US20210142153A1 (en) Resistive processing unit scalable execution

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40023204

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant