一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用均衡传播来进行学习的模拟系统的制作方法

2022-06-05 21:56:40 来源:中国专利 TAG:

使用均衡传播来进行学习的模拟系统
1.其它申请的交叉引用本技术要求2019年8月14日提交的题为“method and system for performing analog equilibrium propagation (用于执行模拟均衡传播的方法和系统)”的美国临时专利申请no.62/886,800的优先权,该申请被通过引用合并于此以用于所有目的。


背景技术:

2.为了在硬件中执行机器学习,特别是监督学习,将从一组特定的输入数据实现合期望的输出。例如,输入数据被提供给第一层。在该层中,输入数据与值或权重的矩阵相乘。针对层的输出信号是该层中矩阵乘法的结果。输出信号作为输入信号提供给下一层矩阵乘法。该处理可以被针对大量的层重复。最后一层的最终输出信号被期望为与一组特定的目标值匹配。为了执行机器学习,调整一个或多个层中的权重(例如,电阻),以便使最终输出信号更接近目标值。虽然该处理理论上可以更改层的权重以提供目标输出,但是在实践中,确定一组适当的权重是有挑战性的。存在各种数学模型以便帮助确定权重。然而,可能难以或不可能将这样的模型转换到设备中。
附图说明
3.在以下的详细描述和随附附图中公开了本发明的各种实施例。
4.图1a至图1c是描绘用于执行机器学习的模拟系统的实施例的框图。
5.图2a至图2b描绘用于执行机器学习的模拟系统的实施例。
6.图3是描绘用于执行机器学习的方法的实施例的流程图。
7.图4是描绘用于利用均衡传播来执行机器学习的模拟系统的实施例的框图。
8.图5是描绘用于利用均衡传播来执行机器学习的模拟系统的实施例的示图。
9.图6是描绘用于执行机器学习的模拟系统的实施例的框图。
10.图7是描绘用于利用均衡传播来执行机器学习的模拟系统的一部分的实施例的示图。
11.图8a至图8b是描绘纳米纤维的实施例的示图。
12.图9是描绘用于利用均衡传播来执行机器学习的系统的实施例的示图。
具体实施方式
13.本发明可以以多种方式实现,包括作为:方法;装置;系统;物质组合物;在计算机可读存储介质上体现的计算机程序产品;和/或处理器,诸如被配置为执行存储在耦合到处理器的存储器上的指令和/或由耦合到处理器的存储器提供的指令的处理器。在本说明书中,这些实现或本发明可以采取的任何其它形式可以被称为技术。一般而言,在本发明的范围内,所公开的处理的步骤的顺序可以被更改。除非另外说明,否则被描述为被配置为执行任务的诸如处理器或存储器的组件可以被实现为临时地配置为在给定时间执行任务的一般组件或被制造为执行任务的特定组件。如在此所使用的那样,术语“处理器”指代被配置
为处理诸如计算机程序指令之类的数据的一个或多个器件、电路和/或处理核芯。
14.下面连同图示本发明的原理的随附各图一起提供本发明的一个或多个实施例的详细描述。与这样的实施例有关地描述本发明,但是本发明不限制于任何实施例。本发明的范围仅受权利要求限制,并且本发明涵盖许多替换、修改和等同物。在以下描述中阐述了许多具体细节,以便提供对本发明的透彻理解。这些细节是出于示例的目的而提供的,并且本发明可以在没有这些具体细节中的一些或全部的情况下根据权利要求来实施。为了清楚的目的,没有详细描述与本发明相关的技术领域中已知的技术材料,以便不会不必要地模糊本发明。
15.为了在硬件系统中执行机器学习,利用矩阵乘法的层。在每一层中,输入信号(例如输入向量)与值或权重的矩阵相乘。这种矩阵乘法可以由交叉杆阵列执行,其中权重是在阵列的每个交叉点处将每个输入连接到每个输出的电阻。针对层的输出信号是该层中的矩阵乘法的结果。输出信号被作为输入信号提供给执行另一矩阵乘法的下一层(例如另一交叉杆阵列)。该处理可以被重复。为了使最后一层的最终输出信号与一组目标值匹配,调整一个或多个层中的权重。虽然该处理理论上可以更改层的权重以提供目标输出,但是在实践中,基于输出确定权重是有挑战性的。存在各种数学模型以便帮助确定权重。然而,可能难以或不可能将这样的模型转换到模拟架构中。
16.描述了一种用于执行学习的系统。在一些实施例中,系统是模拟系统。系统包括线性可编程网络层和非线性激活层。线性可编程网络层包括输入、输出和在输入和输出之间互连的线性可编程网络组件。非线性激活层与输出耦合。线性可编程网络层和非线性激活层被配置为具有在作为功率耗散的一般化的函数的最小值处的静态状态,通常已知为系统的“内容”或“共同内容”。在一些实施例中,多个可编程网络层与一个或多个非线性激活层交错。在这样的实施例中,非线性激活层连接到一个线性可编程网络层的输出和相邻的线性可编程网络层的输入。
17.在一些实施例中,非线性激活层进一步包括非线性激活模块和与线性可编程网络层的输出和非线性激活模块耦合的再生模块。再生模块被配置为缩放来自输出的输出信号。在一些实施例中,再生模块包括双向放大器。在一些实施例中,非线性激活模块包括多个二极管。
18.线性可编程网络层可以包括可编程电阻网络层。在一些实施例中,可编程电阻网络层包括完全连接的可编程电阻网络层。例如,在一些实施例中使用具有可编程电阻器(例如忆阻器)的交叉杆阵列。在一些实施例中,可编程电阻网络层包括稀疏连接的可编程电阻网络层。例如,可编程电阻网络层可以包括部分连接的交叉杆阵列。在一些实施例中,可编程电阻网络层包括纳米纤维和电极。在一些实施例中,每个纳米纤维具有导电芯和包围导电芯的至少一部分的忆阻层。忆阻层的一部分在多个纳米纤维的导电芯和多个电极之间。在一些实施例中,每个纳米纤维具有导电芯和包围导电芯的至少一部分的绝缘层。绝缘层中具有孔。在这样的实施例中,每个忆阻插塞的至少一部分位于每个孔中。因此,电极可以被通过纳米纤维稀疏地连接。
19.学习系统可以被用于执行机器学习。为此,将输入信号提供给包括与(多个)非线性激活层交错的线性可编程网络层的学习系统。线性可编程网络层和(多个)非线性激活层被配置为具有在学习系统的内容的最小值下的静态状态。输入信号因此造成对应于静态状
态的输出信号。第一线性可编程网络层的输出被扰动。因此,扰动输入信号被提供给第一线性可编程网络的输出。在一些实施例中,扰动输入信号对应于比输出信号更接近目标输出的第二组输出信号。作为结果,在第二线性可编程网络层的输入处生成扰动输出信号。基于扰动输出信号和输出信号来确定用于第二线性可编程网络层的线性可编程网络组件的(多个)梯度。这些(多个)梯度可以是利用均衡传播确定的。基于(多个)梯度来调整第二线性可编程网络层中的一个或多个线性可编程网络组件。该处理可以被迭代地执行,以便调整一个或多个线性可编程网络层中的权重,以从输入信号实现目标输出信号。
20.图1a至图1c是分别描绘用于执行机器学习的模拟系统的实施例100a、100b和100c的框图。在一些实施例中可以存在其它和/或附加的组件。学习系统100a、100b和/或100c可以利用均衡传播来执行学习。虽然是在线性可编程网络层的上下文中描述的,但是在一些实施例中,可以使用非线性可编程网络(例如,包括非线性可编程组件的网络层)。
21.参照图1a,学习系统100a包括线性可编程网络层110a和非线性激活层120a。线性可编程网络层110a和非线性激活层120a包括模拟电路。在一些实施例中,可以使用与(多个)非线性激活层120a交错的多个线性可编程网络层110a。为了简单起见,示出了单层的110a和120a。线性可编程网络层110a包括线性可编程组件。如在此使用的那样,线性可编程组件在至少一部分工作范围内具有电压和电流之间的线性关系。例如,无源线性组件包括电阻器和忆阻器。可编程组件具有电压和电流之间的可改变关系。例如,取决于先前驱动通过忆阻器的电流,忆阻器可以具有不同的电阻。因此,线性可编程网络层110a包括互连在输入111a和输出113a之间的线性可编程组件(例如,可编程电阻器和/或忆阻器)。在线性可编程网络层110a中,线性可编程组件可以是完全连接的(每个组件连接到其所有邻接件)。在一些实施例中,线性可编程组件是被稀疏连接的(并非所有组件连接到其所有邻接件)。虽然是在可编程电阻器和忆阻器的上下文中描述的,但是在一些实施例中,除了可编程电阻器和/或忆阻器之外或者代替可编程电阻器和/或忆阻器,还可以使用具有线性阻抗的其它组件。
22.非线性激活层120a可以被用于提供用于线性可编程网络层110a的激活功能。在一些实施例中,非线性激活层120a可以包括一个或多个整流器。例如,可以使用多个二极管。在其它实施例中,可以使用能够提供激活功能的其它和/或附加的非线性组件。
23.线性可编程网络层110a和非线性激活层120a被配置以使得响应于输入电压,来自非线性激活层120a的输出电压具有在线性可编程网络层110a和非线性激活层120a的内容的最小值处的静态状态。换句话说,对于在输入111a上提供的一组特定的输入电压而言,线性可编程网络层110和非线性激活层120稳定在与由系统耗散的功率的一般形式对应并且对应于输入电压的函数(“内容”)的最小值处。在一些实施例(诸如一些线性网络)中,内容对应于由网络耗散的功率。该内容与对应的输入节点111a和输出节点113a的电压上的差(例如电压差的平方)以及节点111a和113a之间的电阻的函数对应。因此,学习系统100a使学习系统100a的取决于输入电压和输出电压以及线性可编程网络110a的阻抗的特性最小化。
24.图1b描绘包括线性可编程网络层110b和非线性激活层120b的学习系统100b。线性可编程网络层110b和非线性激活层120b包括模拟电路,并且分别类似于线性可编程网络层110a和非线性激活层120a。在一些实施例中,可以使用与(多个)非线性激活层120b交错的
多个线性可编程网络层110b。为了简单起见,示出了单层的110b和120b。线性可编程网络层110b包括线性可编程组件。在线性可编程网络层110b中,线性可编程组件可以是完全连接或稀疏连接的。虽然是在可编程电阻器和忆阻器的上下文中描述的,但是在一些实施例中,除了可编程电阻器和/或忆阻器之外或者代替可编程电阻器和/或忆阻器,还可以使用具有线性阻抗的其它组件。
25.非线性激活层120b可以被用于提供用于线性可编程网络层110b的激活功能。在所示出的实施例中,非线性激活层120b包括非线性激活模块122b和再生模块124b。非线性激活模块122b类似于非线性激活层120a。因此,非线性激活模块122b可以包括一个或多个二极管。在其它实施例中,可以使用能够提供激活功能的其它和/或附加的非线性组件。再生模块124b可以被用于计及多个层上来自线性可编程网络层110b的输出电压的幅度上的减小。因此,在一些实施例中,再生模块124b被用于缩放电压和电流。在一些实施例中,再生模块124b是放大器,诸如双向放大器。例如,在一些实施例中,再生模块124b以增益因数g对在正向方向上(朝向输出电压/下一层)的电压进行缩放,并且以因数1/g对在反向方向上(朝向输入电压)的电流进行缩放。在其中g=1的实施例中,再生模块充当短路电路。因此,在一些实施例中,再生模块124b可能不影响线性可编程网络层110b和非线性激活模块122b的组件的动态。相反,再生模块124b以增高/降低的方式缩放电压和电流。
26.线性可编程网络层110b和非线性激活层120b被配置以使得响应于输入电压,来自非线性激活层120b的输出电压具有在针对线性可编程网络层110b和非线性激活层120b的内容的最小值处的静态状态。换句话说,对于在输入111b上提供的一组特定的输入电压而言,线性可编程网络层110a和非线性激活层120b稳定在内容的对应于输入电压的最小值处。该内容与对应的输入节点111b和输出节点113b的电压上的差的平方以及节点111b和113b之间的电阻对应。因此,学习系统100b使学习系统100b的取决于输入电压和输出电压以及线性可编程网络110b的阻抗的特性最小化。
27.图1c描绘包括多个线性可编程网络层110c-1、110c-2和110c-3以及非线性激活层120c-1和120c-2的学习系统100c。线性可编程网络层110c-1、110c-2和110c-3以及非线性激活层120c-1和120c-2包括模拟电路,并且分别类似于(多个)线性可编程网络层110a/110b和(多个)非线性激活层120a/120b。因此,在一些实施例中,可以使用与(多个)非线性激活层(多个)120b交错的多个线性可编程网络层110b。线性可编程网络层110c-1、110c-2和110c-3的每个包括线性可编程组件。在线性可编程网络层110c-1、110c-2和110c-3中,线性可编程组件可以是完全连接或稀疏连接的。虽然是在可编程电阻器和忆阻器的上下文中描述的,但是在一些实施例中,除了可编程电阻器和/或忆阻器之外或者代替可编程电阻器和/或忆阻器,还可以使用具有线性阻抗的其它组件。
28.非线性激活层120c-1和120c-2可以被用于提供用于线性可编程网络层110c-1、110c-2和110c-3的激活功能。在所示出的实施例中,每个非线性激活层120c-1和120c-2包括非线性激活模块122c-1和122c-2以及再生模块124c-1和124c-2。非线性激活模块122c-1和122c-2类似于非线性激活模块122b和非线性激活层120a。再生模块124c-1和124c-2类似于再生模块124b。因此,在一些实施例中,再生模块124c-1和124c-2被用于缩放电压和电流。在一些实施例中,再生模块124c-1和124c-2类似于再生模块124b并且因此可以包括双向放大器。
29.线性可编程网络层110c-1、110c-2和110c-3以及非线性激活层120c-1和120c-2被配置以使得响应于输入电压,节点132-1、134-1、136-1、132-2、134-2、136-2、132-3、134-3和136-3上的输出电压具有在针对线性可编程网络层110c-1、110c-2和110c-3以及非线性激活层120c-1和120c-2的内容的最小值处的静态状态。换句话说,对于提供给线性可编程网络层110c-1的一组特定的输入电压而言,学习系统100c稳定在内容的对应于输入电压的最小值处。该内容与对应的输入111a和输出节点113b的电压上的差的平方对应。因此,学习系统100c使学习系统100c的取决于输入电压和输出电压以及线性可编程网络110c的阻抗的特性最小化。
30.学习系统100a、100b和100c可以利用均衡传播来执行机器学习。均衡传播规定,对于某些函数(在此称为“能量函数”)而言网络参数的梯度可以从节点处特定参数的值得出。虽然被称为能量函数,但是均衡传播并不指示“能量函数”对应于模拟系统的特定的物理特性。已经确定的是,可以针对具有与内容对应的“能量函数”的模拟系统(例如阻抗网络)执行均衡传播。更特别地,伪功率可以被用于均衡传播。在一些实施例中,伪功率对应于内容。伪功率以及因此内容被由系统最小化。
31.伪功率可以由如下给出:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)其中g
ij
是将节点i连接到节点j的电阻器的电导,vi是节点i处的电压,并且vj是节点j处的电压。在一些实施例中,伪功率可以由类似于等式(1)的函数给出。对于双端子组件而言,伪功率是跨组件的电压降的平方除以电阻所得结果的0.5倍。换句话说,伪功率是由双端子组件耗散的功率的一半。给定固定的边界节点电压vi,内部节点电压稳定在使上面的“能量”函数(例如,内容或伪功率)最小化的配置。为了机器学习的目的,可以忽略因数1/2。因此,在一些实施例中,使内容最小化对应于使由网络耗散的功率最小化。因为内容是在稳定状态下自然地最小化的,所以学习系统100a、100b和100c允许针对各种目的利用均衡传播。例如,学习系统100a、100b和100c允许在执行机器学习当中使用均衡传播。因此,学习系统100a、100b和100c允许结合提供给学习系统的输入信号、针对线性可编程网络层的所得到的输出信号、提供给学习系统的输出的扰动输入信号、以及在针对线性可编程网络的输入处的所得到的扰动输出信号,利用均衡传播来确定线性可编程网络110a、110b、110c-1、110c-2和110c-3的权重(阻抗)。
32.例如,可以使用学习系统100c来执行机器学习。输入信号(例如输入电压)被提供给线性可编程网络层110c-1。作为结果,第一组输出信号将在节点132-1、134-1和136-1上产生。该第一组输出信号被输入到线性可编程网络层110c-2并且在节点132-2、134-2和136-2上造成第二组输出信号。第二组输出信号被输入到线性可编程网络层110c-3并且在节点132-3、134-3和136-3上造成一组最终输出信号。在节点132-1、134-1、136-1、132-2、134-2、136-2、132-3、134-3、136-3上的输出信号对应于学习系统100c的内容中的最小值(例如通过线性可编程网络层110c-1、110c-2和110c-3)。输出节点132-3、134-3和136-3被扰动。例如,扰动输入信号(例如扰动输入电压)被提供给输出132-3、134-3和136-3。换句话说,输出132-3、134-3和136-3被箝位在扰动电压处。这些扰动电压可以被选择为更接近针对输出132-3、134-3和136-3的合期望的目标电压。这些扰动信号后向传播通过学习系统
100c,并且在节点132-2、134-2和136-2上造成第一组扰动输出信号(电压)。该第一组扰动输出电压被提供给线性可编程网络层110c-2的输出。这些扰动信号后向传播通过学习系统100c,并且在节点132-1、134-1和136-1上造成第二组扰动输出信号(电压)。这些扰动信号后向传播通过学习系统100c,并且在线性可编程网络层110c-1的输入上造成最后一组扰动输出信号(电压)。在节点132-1、134-1、136-1、132-2、134-2、136-2、132-3、134-3、136-3上的扰动输出信号(电压)对应于学习系统100c(例如通过线性可编程网络层110c1、110c-2和110c-3)针对在输出节点132-3、134-3和136-3处提供的扰动电压的内容中的最小值。
33.与均衡传播组合地将节点132-1、134-1、136-1、132-2、134-2、136-2、132-3、134-3、136-3上的输出信号用于输入电压并且将节点132-1、134-1、136-1、132-2、134-2、136-2、132-3、134-3、136-3上的扰动输出信号用于扰动输入信号,可以确定用于针对线性可编程网络110c-1、110c-2和110c-3的权重(例如阻抗)的梯度。
34.例如,表示输入数据的输入电压x被提供给学习系统100c的输入节点(边界电压),并且内部节点132-1、134-1、136-1、132-2、134-2、136-2、132-3、134-3和136-3(包括输出节点132-3、134-3和136-3)稳定到能量函数(例如内容)的最小值。这些输出信号(节点电压)被表示为s
free
。然后在一组目标信号(例如目标电压)y的方向上“推送”学习系统100c的输出节点132-3、134-3和136-3。换句话说,扰动电压被提供给输出节点132-3、134-3和136-3。例如,y可以是分类任务中的真实标记。学习系统100c稳定到新的能量最小值,并且新的“弱箝位”节点电压(例如扰动输出电压)被表示为s
clamped

35.根据均衡传播,网络参数(针对每个线性可编程网络层中的每个线性可编程组件的阻抗值)相对于误差或损耗函数l的梯度可以直接从s
free
和s
clamping
得出。该梯度于是可以被用于修改线性可编程组件的电导(并且因此修改阻抗)(例如,更改g
ij
)。例如,可以通过驱动适当的电流通过忆阻器来对忆阻器编程。因此,学习系统 100c 可以被训练以优化良好限定的目标函数 l。换言之,学习系统100c可以利用均衡传播来执行机器学习。出于类似的原因,学习系统100a和100b也可以利用均衡传播来执行机器学习。
36.因此,可以使用均衡传播来确定学习系统100a、100b和/或100c中的权重(阻抗)的修改。如在学习系统100c中指示那样,可以针对包括多个层的学习系统确定阻抗的修改。因此,利用针对学习系统100a、100b和100c的输出信号,均衡传播可以被用于执行后向传播以及训练学习系统100a、100b和/或100c。添加非线性激活层120a、120b、120c-1和120c-2还允许由学习系统100a、100b和100c更复杂地分离数据。因此,机器学习可以更好地能够使用可以容易地实现的模拟架构来执行。
37.图2a至图2b描绘可以使用均衡传播来执行机器学习的学习系统200a和200b的实施例。虽然是在线性可编程网络层的上下文中描述的,但是在一些实施例中,可以使用非线性可编程网络(例如,包括非线性可编程组件的网络层)。参照图2a,示出了类似于学习系统100a的学习系统200a。学习系统200a包括分别类似于线性可编程网络层110a和非线性激活层120a的线性可编程网络层210和非线性激活层220a。在一些实施例中,可以使用与(多个)非线性激活层220a交错的多个线性可编程网络层210。进一步地,学习系统200a可以被并行复制,以在更复杂的学习系统中提供第一层。在一些实施例中,这样的第一层可以被串行复制,其中一个层的输出是针对下一层的输入。在其它实施例中,线性可编程网络层和/或非线性激活层不需要是相同的。为了简单起见,示出单层的210和220a。还明确示出了电压输
入202,其向线性可编程网络层210的输入提供输入电压(例如输入信号)。
38.线性可编程网络层210包括线性可编程组件。更具体地,线性可编程网络层210包括可编程电阻器212、214和216。在一些实施例中,可编程电阻器212、214和216是忆阻器。然而,在一些实施例中,可以使用其它和/或附加的可编程无源组件。
39.非线性激活层220a可以被用于提供用于线性可编程网络层210的激活功能。因此,激活层220a包括其i-v曲线为弱单调性的双端子电路元件。在所示出的实施例中,非线性激活层220a包括二极管222和224。因此,二极管222和224被用于创建作为激活功能的s形非线性。在其它实施例中,可以使用具有附加电阻器和/或包括更多节点和多个激活功能的不同电阻器布置的更复杂的层。
40.在操作中,输入信号(例如输入电压)被提供给线性可编程网络层210。作为结果,在节点230a上产生输出信号。输出信号传播到随后的层(未示出)。在最终节点上以及在内部节点上(例如在节点230a上)的输出信号对应于由学习系统200a针对输入电压耗散的能量上的最小值。输出(例如节点230a或随后的输出)被扰动。(多个)扰动电压被选择为更接近用于输出的合期望的目标电压。这些扰动信号后向传播通过学习系统200c,并且在节点202上造成扰动输出信号(电压)。在输入202和任何内部节点(例如,针对多层学习系统,节点230a)上的扰动输出信号(电压)对应于由学习系统200a针对扰动电压耗散的能量上的最小值。
41.与均衡传播组合地将内部节点和外部节点上的输出电压用于输入电压并且将输入202和内部节点上的扰动输出信号用于扰动输入信号,可以确定用于针对每个线性可编程网络层(例如层210)中的每个可编程电阻器(例如可编程电阻器212、214和216)的权重(例如,阻抗)的梯度。因此,可以在学习系统200a中更容易地执行机器学习。因此,可以改进模拟学习系统200a的性能。
42.图2b描绘了可以使用均衡传播来执行机器学习的学习系统200b的实施例的电路图。学习系统200b类似于学习系统100b和学习系统200a。学习系统200b包括分别类似于线性可编程网络层110a/210和非线性激活层120a/220a的线性可编程网络层210和非线性激活层220a。在一些实施例中,可以使用与(多个)非线性激活层220b交错的多个线性可编程网络层210。进一步地,学习系统200b可以被并行复制以在更复杂的学习系统中提供第一层。在一些实施例中,这样的第一层可以被串行复制,其中一个层的输出是用于下一层的输入。因此,示出了具有电阻器242、244和246的附加的线性可编程网络层240。在其它实施例中,每个线性可编程网络层不需要是相同的。还明确示出了电压输入202,其向线性可编程网络层210b的输入提供输入电压(例如输入信号)。
43.线性可编程网络层210b包括可编程电阻器212、214和216。在一些实施例中,可编程电阻器212、214和216是忆阻器。然而,在一些实施例中可以使用其它和/或附加的可编程无源组件。
44.非线性激活层220b包括非线性激活模块221和再生模块226。非线性激活模块221可以被用于提供用于线性可编程网络层210的激活功能,并且类似于非线性激活层220a。因此非线性激活模块211包括二极管222和224。在其它实施例中,可以使用具有附加的电阻器和/或包括更多节点和多个激活功能的不同电阻器布置的更复杂的层。
45.对于输入202的输入电压可以具有平均值零和单位标准偏差。实际上,电阻器层的
输出电压与输入相比具有显著更小的标准偏差(电压将更接近于零)。为了防止信号衰减,可以在每一层处放大输出电压。因此,使用再生模块226。再生模块226是可以充当输入和输出之间的缓冲器的反馈放大器。然而,后向影响被用于传播梯度信息。因此,在所示出的实施例中,再生模块226是双向放大器。正向方向上的电压被以增益因数a放大。后向方向上的电流被以增益因数1/a放大。如果增益被设定为a=1,则那么放大器226表现为短路,不影响对于最小化问题的解决方案。如果增益被设定为更高的数值,例如a=4,则输出的动态被简单地以近似为四的因数重新缩放。在该方案中,电压变量将输入信息向前承载以执行推断,并且电流变量承载梯度信息向后行进。
46.由放大器226在正向方向上进行的电压放大可以是由电压控制电压源(vcvs)执行的。在后向方向上的电流放大可以是由电流控制电流源(cccs)执行的。进入到cccs的控制电流由以vcvs为源的电流给出。cccs后向反射该电流,以与正向增益相同的因数对其进行减小。以此方式,在输出节点处的注入电流可以被后向传播,承载正确的梯度信息。在一些实施例中,可以使用具有附加的电阻器和/或包括更多节点和多个激活功能的不同电阻器布置的更复杂的层220b。
47.在操作中,输入信号(例如输入电压)被提供给线性可编程网络层210。作为结果,在节点230b上产生输出信号。输出信号传播到随后的层(例如线性可编程网络层240)。在最终节点上以及在内部节点上(例如在节点230b上)的输出信号对应于由学习系统200b针对输入电压耗散的能量上的最小值。输出(例如随后的输出)被扰动。(多个)扰动电压被选择为更接近用于输出的合期望的目标电压。这些扰动信号后向传播通过学习系统200b,并且在节点202以及其它内部节点上造成扰动输出信号(电压)。在输入202和任何内部节点(例如针对多层学习系统的节点230b)上的扰动输出信号(电压)对应于由学习系统200b针对扰动电压耗散的能量上的最小值。
48.与均衡传播组合地将内部节点和外部节点上的输出电压用于输入电压并且将输入202和内部节点上的扰动输出信号用于扰动输入信号,可以确定用于针对每个线性可编程网络层(例如层210和240)中的每个可编程电阻器(例如可编程电阻器212、214、216、242、244和246)的权重(例如阻抗)的梯度。因此,可以在学习系统200b中更容易地执行机器学习。因此,可以改进模拟学习系统200b的性能。
49.图3是描绘用于使用均衡传播来执行机器学习的方法300的实施例的流程图。为了清楚起见,仅示出了一些步骤。在一些实施例中,可以执行其它和/或附加的过程。虽然是在线性可编程网络层的上下文中描述的,但是在一些实施例中,可以在非线性可编程网络(例如包括非线性可编程组件的网络层)的情况下利用方法300。
50.在302处,输入信号(例如输入电压)被提供给第一线性可编程网络层的输入。输入信号快速地传播通过学习系统传播。作为结果,在内部节点(例如每个线性可编程网络层的输出)以及学习系统的输出(例如最后的线性可编程网络层的输出)上产生输出信号。在最终节点上以及在内部节点上的输出信号对应于针对由学习系统针对302中提供的输入电压耗散的能量上的最小值的静态状态。在304处,确定用于内部节点和外部节点的这些输出信号。
51.在306处,输出被扰动。在一些实施例中,扰动信号(例如电压)被施加到最后的线性可编程网络层的输出。在一些实施例中,在一个或多个内部节点处施加扰动信号。在306
处提供的(多个)扰动信号被选择为更接近用于输出的合期望的目标电压。这些扰动信号后向传播通过学习系统,并且在输入以及其它内部节点上造成扰动输出信号(电压)。在输入202和任何内部节点(例如针对多层学习系统的节点230b)上的扰动输出信号(电压)对应于由学习系统200b针对扰动电压耗散的能量上的最小值。在308处,确定这些扰动输出信号。
52.在310处,与均衡传播组合地将内部节点和外部节点上的输出电压用于输入电压并且将输入和内部节点上的扰动输出信号用于扰动输入信号,确定用于针对每个线性可编程网络层中的每个线性可编程组件的权重(例如阻抗)的梯度。在312处,基于所确定的梯度对线性可编程组件重新编程。例如,在312处,可以改变线性可编程组件(例如忆阻器)的阻抗。在314处,可以重复地迭代302,304,306,308,310和312直到获得针对目标输出的适当权重。因此,可以在模拟学习系统中更容易地执行机器学习。因此,可以使用方法300来改进模拟学习系统的性能。
53.图4描绘可以使用均衡传播来执行机器学习的学习系统400的实施例。学习系统400包括分别类似于线性可编程网络层110b和非线性激活层120b的完全连接的线性可编程网络层410和非线性激活层420。在一些实施例中,可以使用与(多个)非线性激活层420交错的多个线性可编程网络层410。虽然是在线性可编程网络层的上下文中描述的,但是在一些实施例中,可以使用非线性可编程网络(例如包括非线性可编程组件的网络层)。
54.线性可编程网络层410包括完全连接的线性可编程组件。因此,每个线性可编程组件连接到其所有邻接件。例如,图5描绘可以被用于完全连接的线性可编程网络层410的交叉杆阵列500。交叉杆阵列500包括水平线510-1至510-(n 1)、垂直线530-1至530-m和可编程电导520-11至520-nm。在一些实施例中,可编程电导520-11至520-nm是忆阻器。在一些实施例中,可编程电导520-11至520-nm可以是布设在交叉杆阵列中的忆阻纤维。如在图5中可以看到的那样,每一水平线510-1至510-(n 1)在每个交叉点处通过可编程电导520-11至520-nm连接到每一垂直线530-1至530-m。因此,交叉杆阵列500是可以被用于可编程网络层410的完全连接的网络。
55.返回参照图4,非线性激活层420可以被用于提供用于线性可编程网络层410的激活功能。激活层420包括(多个)非线性激活模块422和(多个)线性再生模块424。非线性激活模块可以包括一个或多个激活模块,诸如模块221。类似地,线性再生模块424可以包括一个或多个的(多个)再生模块226。学习系统400以与学习系统100a、100b、100c、200a和200b类似的方式起作用并且可以利用方法300。因此,可以改进模拟学习系统400的性能。
56.图6描绘可以使用均衡传播来执行机器学习的学习系统600的实施例。学习系统600包括分别类似于线性可编程网络层610b和非线性激活层620b的稀疏连接的线性可编程网络层610和非线性激活层620。在一些实施例中,可以使用与(多个)非线性激活层620交错的多个线性可编程网络层610。虽然是在线性可编程网络层的上下文中描述的,但是在一些实施例中,可以使用非线性可编程网络(例如包括非线性可编程组件的网络层)。
57.线性可编程网络层610包括稀疏连接的线性可编程组件。因此,不是每个线性可编程组件连接到其所有邻接件。非线性激活层620可以被用于提供用于线性可编程网络层610的激活功能。激活层620包括(多个)非线性激活模块622和(多个)线性再生模块624。非线性激活模块可以包括一个或多个激活模块,诸如模块221。类似地,线性再生模块624可以包括一个或多个的(多个)再生模块626。学习系统600以与学习系统100a、100b、100c、200a和
200b类似的方式起作用并且可以利用方法300。因此,可以改进模拟学习系统600的性能。
58.图7描绘线性可编程网络层610中可使用的稀疏连接的网络710的实施例的平面视图。网络710包括纳米纤维720和电极730。电极730被通过纳米纤维720稀疏地连接。纳米纤维720可以被布设在下面的层上。纳米纤维720可以被覆盖在绝缘体中,并且电极730被提供在绝缘体中的通孔中。
59.图8a和图8b描绘可以可使用为纳米纤维720的纳米纤维800a和800b的实施例。在一些实施例中,仅使用纳米纤维800a。在一些实施例中,仅使用纳米纤维800b。在一些实施例中,使用纳米纤维800a和800b。图8a的纳米纤维800a包括芯812和忆阻层814a。可以存在其它和/或附加的层。图8a中还示出电极830。在一些实施例中,导电芯812的直径可以不大于纳米范畴。在一些实施例中,芯812的直径为数十纳米的量级。在一些实施例中,芯812的直径可以不多于十纳米。在一些实施例中,芯812的直径为至少一纳米。在一些实施例中,直径为至少十纳米并且小于一微米。然而,在其它实施例中,芯812的直径可以更大。例如,在一些实施例中,芯812的直径可以是1至2微米或更大。在一些实施例中,纳米纤维810的沿着轴的长度是芯812的直径的至少一千倍。在其它实施例中,纳米纤维810的长度可以不是基于导电芯812的直径限制的。在一些实施例中,纳米纤维810和导电芯812的横截面不是圆形的。在一些这样的实施例中,芯812的(多个)横向尺寸与上面描述的直径相同。
60.导电芯812可以是单片的(包括单个连续件)或者可以具有多个组成部分。例如,导电芯812可以包括多个导电纤维(未单独示出),其可以被编织或另外连接在一起。导电芯812可以是金属元素或合金和/或其它导电材料的。在一些实施例中,例如,导电芯812可以包括如下中的至少之一:cu、al、ag、pt、其它贵金属和/或能够形成为纳米纤维芯的其它材料。例如,在一些实施例中,导电芯812可以包括如下或者由如下构成:一种或多种导电聚合物(例如pedot:pss、聚苯胺)和/或一种或多种导电陶瓷(例如氧化铟锡/ito)。
61.在一些实施例中,忆阻层814a包围沿着其轴的芯812。在其它实施例中,忆阻层814a可以不完全包围芯812。在一些实施例中,忆阻层814a包括hfo
x
、tio
x
(其中x指示各种化学计量)和/或另外的忆阻材料。在一些实施例中,忆阻层814a由hfo构成。忆阻层814a可以是单片的,包括单一忆阻材料。在其它实施例中,多个忆阻材料可以存在于忆阻层814a中。在其它实施例中,可以使用(多个)忆阻材料的其它配置。然而,期望忆阻层814a处在电极830和芯812之间。因此,纳米纤维800a在电极之间具有可编程的电阻。
62.纳米纤维800b包括芯812和绝缘体814b。还示出了忆阻插塞820和电极870。纳米纤维800b的芯812类似于纳米纤维800a的芯812。绝缘体814b包覆导电芯812,但是在其中具有孔816。在一些实施例中,绝缘体814b足够厚以在绝缘体814b覆盖导电芯812的区域中使导电芯812电绝缘。例如,绝缘体814b可以至少为几纳米到几十纳米厚。在一些实施例中,绝缘体814b可以是数百纳米厚。其它厚度是可能的。在一些实施例中,绝缘体814b除了在孔816处之外包围导电芯812的侧面。在其它实施例中,绝缘体814b可以仅包围导电芯812的侧面部分。在这样的实施例中,另外的绝缘体(未示出)可以被用于使导电芯812与其周围绝缘。例如,在这样的实施例中,在制备合并有纳米纤维800b的设备期间,绝缘层可以被沉积在导电芯812的暴露的部分上。在一些实施例中,可以在孔816中提供阻挡层。这样的阻挡层处在导电芯812和忆阻插塞820之间。这样的阻挡层可以减少或防止在导电芯812和忆阻插塞820之间的材料迁移。然而,这样的阻挡层是导电的,以便促进导电芯812和电极830之间通过忆
阻插塞820的连接。在一些实施例中,绝缘体114包括sio2、hfo2、ta2o5、al2o3和聚乙烯吡咯烷酮(pvp)中的一个或多个。
63.忆阻插塞820处在孔816中。在一些实施例中,忆阻插塞820完全在孔816内。在其它实施例中,忆阻插塞820的一部分在孔816的外部。在一些实施例中,忆阻插塞820可以包括hfo
x
、tio
x
(其中x指示各种化学计量)和/或另外的忆阻材料。在一些实施例中,忆阻插塞820由hfo构成。忆阻插塞820可以是单片的,包括单一忆阻材料。在其它实施例中,多个忆阻材料可以存在于忆阻插塞920中。例如,忆阻插塞820可以包括多层忆阻材料。在其它实施例中,可以使用(多个)忆阻材料的其它配置。
64.图9描绘可以被用于稀疏连接的线性可编程网络层610的稀疏连接的交叉杆阵列900的实施例。交叉杆阵列900包括水平线910-1至910-(n 1)、垂直线930-1至930-m和可编程电导920-11至920-nm。在一些实施例中,可编程电导920-11至920-nm是忆阻器。在一些实施例中,可编程电导920-11至920-nm可以是布设在交叉杆阵列中的忆阻纤维。如在图9中可以看到的那样,一些电导缺失。因此,并非所有水平线910-1至910-(n 1)被在每个交叉点处通过可编程电导920-11至920-nm连接到所有垂直线930-1至930-m。例如,线930-2不连接到线910-2。类似地,线910-n不连接到线930-n。因此,交叉杆阵列900是可以被用于可编程网络层910的稀疏连接的网络。因此,稀疏连接的网络900和/或700可以被使用在被配置为与均衡传播一起使用的线性可编程网络层中。因此,可以改进系统性能。
65.虽然为了清楚理解的目的已经在一定细节上描述了前述实施例,但是本发明不限制于所提供的细节。存在许多实现本发明的替换方式。所公开的实施例是说明性的而非限制性的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献