用于玻尔兹曼机的副本处理单元的制作方法



1.本文中讨论的实施方式涉及可以与玻尔兹曼机(boltzmann machine)一起使用的副本处理单元。


背景技术:



2.组合优化问题通常被归类为np-问题(np-problem)(非确定性多项式时间问题(nondeterministic polynomial time problem)),例如np-困难问题(np-hard problem)或np-完全问题(np-complete problem),在这些问题中通常没有已知的算法来在多项式时间内求解这样的问题。这样的组合优化问题可能出现在许多应用中,例如,使布局(layout)设计中的过孔数目最小化、使股票投资组合的回报最大化、航线确定和调度以及无线传感器网络。
3.本文要求保护的主题不限于解决任何缺点或仅在诸如以上描述的环境的环境中操作的实施方式。更确切地,提供该背景技术仅用于说明可以实践本文所描述的一些实施方式的一个示例技术领域。


技术实现要素:



4.根据实施方式的一方面,操作可以包括获得表示优化问题的系统的状态矩阵,状态矩阵包括各自表示与优化问题相关的特征的变量。操作还可以包括获得与变量对应的权重,每个相应权重涉及状态矩阵的相应变量与一个或更多个其他变量之间的一种或更多种关系。另外,操作可以包括获得包括局部字段值的局部字段矩阵,局部字段值指示变量之间的相互作用,所述相互作用受相应变量的相应权重的影响。此外,操作可以包括基于权重和局部字段值执行与改变变量中的一个或更多个变量的相应状态有关的随机处理。随机处理可以包括针对变量中的一个或更多个变量执行试验,其中,相应的试验确定是否改变相应变量的相应状态。操作还可以包括确定对随机处理期间变量的状态改变的接受率,以及基于所确定的接受率来调整与执行试验有关的并行度。
5.实施方式的目的和优点将至少通过所要求保护的元素、特征和组合来实现和获得。
6.前面的总体描述和下面的详细描述均作为示例给出,并且是说明性的,而不限制所要求保护的本发明。
附图说明
7.将通过使用附图更加具体且详细地描述和说明示例实施方式,在附图中:
8.图1是表示被配置成求解优化问题的示例环境的图;
9.图2a示出了被配置成执行与求解优化问题相关的操作的示例副本交换单元(rpu);
10.图2b示出了示例合并rpu;
11.图2c示出了另一示例合并rpu;
12.图2d示出了又一示例合并rpu;
13.图2e示出了可以被配置成使用多个rpu来执行副本交换处理的示例系统;
14.图3示出了被配置成执行副本交换处理的示例计算系统的框图;以及
15.图4示出了在求解优化问题期间执行试验的示例方法的流程图。
具体实施方式
16.组合优化问题可以包括可以被用于确定系统的能量或成本函数的最大值或最小值的一类优化问题。例如,可以将组合优化用于最小化电路布局设计的过孔数目、最大化股票回报、改进航线确定和调度、配置无线传感器网络以及其他应用。
17.在一些实施方式中,系统可以用于表示或求解优化问题。例如,系统可以包括表示优化问题的神经网络。在这些或其他实施方式中,神经网络可以包括任何合适数目的节点(也称为“神经元”)。在这些或其他实施方式中,神经元可以各自对应于优化问题的特征。附加地或可替选地,神经网络中的每个神经元的状态可以被用于表示优化问题的不同特征的状态。因此,神经元的总体状态可以被用于表示优化问题的整体状态。在这些或其他实施方式中,神经网络可以被配置成以任何合适的方式表示和/或求解一个或更多个不同类型的优化问题。在一些实施方式中,神经网络可以被配置为玻尔兹曼机。
18.此外,系统(例如,玻尔兹曼机)的整个状态空间可以被表示为伊辛(ising)能量(“能量”)。在这些或其他实施方式中,可以使用最小化技术或最大化技术来确定优化问题的解。最小化技术可以用于确定系统的最小能量,而最大化技术可以用于确定系统的最大能量。例如,系统的与所确定的最小或最大能量对应的状态可以用作特定优化问题的解。在这些或其他实施方式中,可以使用随机处理来随机地选择神经元并改变所述神经元的状态以确定最大或最小能量。
19.本公开内容中对确定最小能量或最大能量的引用不限于确定系统的绝对最小能量或绝对最大能量。替代地,对确定最小能量或最大能量的引用可以包括执行与系统的能量有关的最小化或最大化操作,其中来自这样的操作的输出被用作对应优化问题的解。
20.附加地或可替选地,作为求解相应优化问题的一部分,可以针对系统执行马尔可夫链蒙特卡罗(mcmc)过程。例如,可以执行副本交换以查系统的能量的最小值或最大值。副本交换可以包括同时但使用不同的缩放因子运行系统的m个副本,所述缩放(scaling)因子影响在系统的这些副本运行期间是否发生对系统的更改。
21.如下文详细描述的,根据本公开内容的一个或更多个实施方式,系统可以包括一个或更多个副本处理单元(“rpu”),每个rpu可以被配置成运行系统(例如,玻尔兹曼机)的一个或更多个副本。rpu可以被配置成使得它们可以运行不同类型的玻尔兹曼机。例如,如下文更详细地讨论和说明的,rpu可以被配置成使得它们可以处理不同的操作模式。例如,rpu可以被配置成能够运行常规玻尔兹曼机和/或聚类玻尔兹曼机,例如行聚类玻尔兹曼机、列聚类玻尔兹曼机或交叉聚类玻尔兹曼机。
22.在这些或其他实施方式中,多个rpu可以被一起实施成各自运行系统的一个或更多个不同副本,使得rpu可以被配置成执行副本交换处理。附加地或可替选地,参与副本交换处理的不同rpu中的两个或更多个rpu可以以不同的操作模式运行,这可以提高用于求解
优化问题的通用性。
23.附加地或可替选地,rpu可以被配置成在求解优化问题期间以不同的并行度级别操作。在这些或其他实施方式中,可以在求解期间基于对系统的变量的状态改变的接受率来调整并行度。附加地或可替选地,可以在求解期间调整可能影响接受率的偏移(offset)。
24.对并行度和/或偏移的调整可以有助于提高rpu的速度和/或效率。例如,增加偏移和/或并行度可以提高rpu或包括一个或更多个rpu的计算系统能够求解问题的速度。此外,调整并行度可以通过将求解拉出局部最小值或局部最大值来改进rpu和/或相关联的计算系统求解问题的能力。此外,在并行度可能不太有利的情况下降低并行度可以减少rpu可以使用的计算资源的量,这可以提高rpu和/或相关联的计算系统在求解问题时的效率。
25.参照附图对本公开内容的实施方式进行说明。
26.图1是表示根据本公开内容中描述的至少一个实施方式布置的被配置成求解优化问题的示例环境100的图。环境100可以包括能量确定引擎102(“能量引擎102”),能量确定引擎102被配置成更新并输出系统106的系统更新104。在这些或其他实施方式中,环境100可以包括局部字段矩阵引擎108(“lfm引擎108”),局部字段矩阵引擎108被配置成基于系统更新104来更新局部字段矩阵110(“lfm 110”)。如下文进一步详细讨论的,在一些实施方式中,一个或更多个副本处理单元可以被配置成实现环境100。
27.系统106可以包括可以被求解的优化问题的任何合适的表示。例如,在一些实施方式中,系统106可以包括状态矩阵x,状态矩阵x可以包括各自可以表示与优化问题相关的特征的一组变量。因此,状态矩阵x可以表示系统106的不同状态。例如,变量各自具有第一值的第一状态矩阵x1可以表示系统106的第一状态,并且变量具有第二值的第二状态矩阵x2可以表示系统106的第二状态。在这些或其他实施方式中,状态矩阵x1与状态矩阵x2之间的差异可以在任何地方,从x1和x2两者中仅一个对应变量具有不同值到x1和x2中的每个变量均具有不同值。在一些实施方式中,可以用状态向量x来表示状态矩阵x。
28.在这些或其他实施方式中,环境100可以包括权重矩阵112。权重矩阵112可以指示可以对应于系统106的变量的连接权重。在一些实施方式中,每个相应的连接权重可以涉及相应变量与系统106的一个或更多个其他变量之间的一种或更多种关系。
29.在这些或其他实施方式中,环境100可以包括局部字段矩阵110(“lfm 110”)。lfm 110可以用于指示特定系统在该特定系统的变量的状态改变时(例如,在包括在状态向量x中的变量的状态改变时)的能量变化量。lfm 110可以包括基于特定系统的变量之间的相互作用的值,所述相互作用关于变量中的一个或更多个变量的状态改变受其各自权重的影响。
30.在一些实施方式中,系统106可以是可以包括任何合适数目的节点(也称为“神经元”)的神经网络。在这些或其他实施方式中,系统106的状态矩阵x可以表示神经网络中的每个神经元的状态。例如,每个神经元可以是可以具有“0”或“1”值的位,并且状态矩阵x可以包括针对神经网络中的每个神经元的“1”值或“0”值。在这些或其他实施方式中,神经网络可以被配置成以任何合适的方式求解一个或更多个不同类型的优化问题。
31.在一些实施方式中,系统106的神经网络可以被配置为玻尔兹曼机。在这些或其他实施方式中,玻尔兹曼机可以被配置为聚类玻尔兹曼机(cbm),在cbm中可以将玻耳兹曼机的神经元分组为聚类(cluster)。聚类可以被形成为使得同一聚类内的神经元之间可以不
存在连接(例如,聚类的神经元之间的连接权重可以是“0”)。在这些或其他实施方式中,cbm可以被配置成具有至多n位(at-most-n)约束,在至多n位约束下,在任何给定聚类中仅“n”个神经元可以激活(例如,位值为“1”)。例如,cbm可以具有恰好1位(exactly-1)(也称为“独热编码”)约束,使得在任何时候,聚类中恰好一个神经元激活(例如,位值为“1”)并且该聚类中的其他神经元必须非激活(例如,位值为“0”)。可以使用的示例聚类是关于状态矩阵x的行和列的行聚类和/或列聚类。在这些或其他实施方式中,聚类可以被组合以形成交叉聚类。例如,行聚类可以与列聚类组合以形成交叉聚类。这样的具有恰好1位约束的交叉聚类配置可以约束状态矩阵x,使得在状态矩阵x的每一行和每一列中仅一个神经元可以激活。
32.在一些实施方式中,可以使用聚类来减小状态矩阵x的大小。例如,对于具有恰好1位约束的给定聚类(例如,特定行),仅一个神经元可以激活,因此,可以替代地存储指示聚类中哪个神经元激活的单个索引值,而不是存储指示聚类中每个神经元的状态的值。在这种情况下,可以用状态向量x来表示状态矩阵x。
33.附加地或可替选地,系统106可以包括伊辛模型,伊辛模型被映射至优化问题以表示与系统106对应的优化问题的伊辛能量。例如,具有二值状态(binary state)的变量的系统的伊辛能量可以由以下表达式(1)表示:
[0034][0035]
在上述表达式(1)中,xi是表示对应的状态矩阵x的状态向量x的第i个变量并且可以是0或1;xj是状态向量x的第j个变量并且可以是0或1;w
ij
是x的第i个变量与第j个变量之间的连接权重;并且bi是与第i个元素相关联的偏置。
[0036]
能量引擎102可以包括被配置成使计算系统能够执行针对其描述的一个或更多个操作的代码和例程。附加地或可替选地,可以使用硬件来实现能量引擎102,所述硬件包括任何数目的处理器、微处理器(例如,用于执行一个或更多个操作或控制一个或更多个操作的执行)、现场可编程门阵列(fpga)、专用集成电路(asic)或它们中的两个或更多个的任何合适的组合。
[0037]
可替选地或附加地,可以使用硬件和软件的组合来实现能量引擎102。在本公开内容中,被描述为由能量引擎102执行的操作可以包括能量引擎102可以指示对应系统执行的操作。
[0038]
在一些实施方式中,能量引擎102可以被配置成(例如,经由随机处理)随机生成所提议的对状态矩阵x的一个或更多个变量的改变。例如,在一些实施方式中,在具有恰好1位约束的cbm中,所提议的改变可以包括将非激活的神经元(例如,如由状态矩阵x的状态变量表示)改变为激活的,并且因此将激活的神经元改变为非激活的。因此,针对任何给定的聚类,可以发生两次变化(例如,位翻转(bit filp))。附加地或可替选地,在具有恰好1位约束的交叉聚类配置(例如,组合的行聚类和组合的列聚类配置)中,所提议的改变可以包括四次位翻转,这是因为改变特定行中的神经元的状态还影响被改变的神经元所属的列。
[0039]
在一些实施方式中,可以基于任何合适的概率函数来确定是否接受针对特定聚类的特定改变。在这些或其他实施方式中,概率函数可以基于可由特定改变引起的系统能量的变化。在一些实施方式中,可以使用lfm 110来确定系统能量的变化。
[0040]
如以上所指示的,lfm 110可以指示系统106的变量之间的相互作用,该相互作用关于变量的状态改变受其相应权重的影响。例如,lfm 110的针对系统106的变量的值可以用表达式(2)表示如下:
[0041][0042]
在表达式(2)中,hi(x)是局部字段矩阵h中的第i个变量的局部字段值,其中,局部字段矩阵h中的第i个变量与对应状态矩阵x中的第i个变量对应;xj是状态向量x中的第j个变量并且可以为0或1;w
ij
是x中的第i个变量与第j个变量之间的连接权重;并且bi是与第i个变量相关联的偏置。
[0043]
如以上所指示的,在一些实施方式中,关于所提议的改变的系统能量的变化可以基于lfm 110。例如,对于非交叉聚类的cbm(例如,对于行聚类的cbm),系统能量的变化可以用表达式(3)确定如下:
[0044]
δe
rc
(x
rc
,k)=h
k,j-h
k,i
ꢀꢀ
(3)
[0045]
在表达式(3)中,k表示由相应状态向量x
rc
索引的状态矩阵x的给定行,并且h
k,j
和h
k,i
与所提议的改变中涉及的神经元对应。在表达式(3)中,h
k,j
是与在进行所提议的激活x
k,j
并且去激活x
k,i
的交换之前是非激活的神经元x
k,j
对应的局部字段矩阵值,并且h
k,i
是与在进行所提议的激活x
k,j
并且去激活x
k,i
的交换之前是激活的神经元x
k,i
对应的局部字段矩阵值。
[0046]
作为另一示例,对于交叉聚类的cbm(例如,对于行/列交叉聚类的cbm),系统能量的变化可以用表达式(4)确定如下:
[0047]
δe
xc
(x
xc
,k,k

)=-(h
k,l
+hk′
,l

)+(h
k,l

+hk′
,l
)-(w
k,l:k

,l

+w
k,l

:k

,l
)
ꢀꢀ
(4)
[0048]
在表达式(4)中,k和k

表示由相应状态向量x
xc
索引的状态矩阵x的行;l和l

分别表示第k行和第k

行中激活的神经元在状态向量x
xc
中的索引;h
k,l
、hk′
,l

、h
k,l

和hk′
,l
对应于在与以上描述的提议改变类似的提议改变中涉及的神经元;并且w
k,l:k

,l

和w
k,l

:k

,l
对应于可以与关于所提议的改变讨论的神经元对应的权重。
[0049]
在一些实施方式中,权重矩阵112可以包括权重的值或权重的值的子集,使得能量引擎102可以通过从权重矩阵112中提取对应的值来获得权重。附加地或可替选地,权重矩阵112可以包括第一矩阵和第二矩阵,能量引擎102可以使用该第一矩阵和第二矩阵来确定权重的值,例如,如在2020年4月15日提交的美国专利申请第16/849,887号中所描述的,该美国专利申请通过引用整体并入本公开内容。
[0050]
如以上所指示的,关于是否接受针对一个或更多个变量的提议改变的概率可以基于可响应于该提议改变发生的系统能量的改变而被接受。例如,对于基于上述表达式(3)来确定能量变化的非交叉聚类cbm(例如,对于行聚类的cbm),针对系统中的提议改变的接受概率可以用表达式(5)确定如下:
[0051][0052]
在表达式(5)中,δe
rc
(x
rc
,k)可以是根据表达式(3)确定的能量变化,并且t可以是可以用于影响是否进行改变的缩放因子。例如,t可以是在执行模拟或数字退火过程例如副本交换(也称为“并行回火”)时用作缩放因子的“温度”。
[0053]
作为另一示例,对于基于上述表达式(4)来确定能量变化的交叉聚类cbm(例如,对于行/列交叉聚类的cbm),针对系统中的提议改变的接受概率可以用表达式(6)确定如下:
[0054][0055]
在表达式(6)中,δe
rc
(x
xc
,k,k

)可以是根据表达式(4)确定的能量变化,并且t可以是缩放因子,例如上面关于表达式(5)描述的缩放因子。
[0056]
能量引擎102可以输出系统更新104。系统更新104可以包括可以响应于接受一个或更多个提议改变而发生的对系统106的更新。
[0057]
在一些实施方式中,能量引擎102可以被包括在退火系统(例如,数字退火系统或量子退火系统)中或者可以是退火系统(例如,数字退火系统或量子退火系统)的一部分。在这些或其他实施方式中,能量引擎102可以被配置成针对系统106执行副本交换马尔可夫链蒙特卡洛(markov chain monte carlo)(mcmc)处理。例如,能量引擎102可以被配置成执行副本交换以查可以使系统106的能量最小化的状态向量xmin。作为另一示例,能量引擎102可以被配置成执行副本交换以查可以使系统106的能量最大化的状态向量xmax。如以上所指示的,副本交换可以包括同时但使用不同的缩放因子运行系统106的m个副本,所述缩放因子影响在系统106的副本运行期间是否发生对系统的更改。因此,在一些实施方式中,能量引擎102可以在不同温度水平下针对系统106的多个副本执行上述更新操作。
[0058]
lfm引擎108可以被配置成基于系统106的更新来更新lfm 110,系统106的更新可以被反映在系统更新104中。附加地或可替选地,lfm 引擎108可以被配置成在对求解相应的优化问题进行初始化时基于系统106初始地生成lfm 110。
[0059]
在不脱离本公开内容的范围的情况下,可以对图1进行修改、添加或省略。例如,系统106的特定配置可以根据不同的实现而变化。此外,被描述为由能量引擎102和/或lfm引擎108执行的操作可以通过可能与本文中描述的适用实现不完全相同的任何适用实现来执行。另外,环境100可以包括比在本公开内容中示出和描述的元件更多或更少的元件。此外,特定设备或系统中的元件的具体配置、关联或包含可以根据具体的实现而变化。例如,如下面进一步详细讨论的,本文中描述的系统100和/或操作可以利用下面更详细地讨论的一个或更多个rpu来实现。
[0060]
图2a是表示根据本公开内容中描述的至少一个实施方式布置的被配置成执行与求解优化问题相关的操作的示例副本处理单元200(“rpu 200”)的图。rpu 200可以包括状态块202、局部字段块204、权重块206、算术元件208和决策元件210。
[0061]
状态块202可以包括其上可以存储能够表示特定优化问题的状态矩阵x的任何合适的计算机可读存储介质。状态矩阵x可以类似于以上关于图1讨论的状态矩阵x。此外,在一些实施方式中,状态块202的大小可以被定为能够存储具有d行和d列的方阵。这样,在一些实施方式中,状态块202可以存储大小为d x d矩阵的单个状态矩阵x。附加地或可替选地,在状态矩阵x的值少于d x d矩阵的值的情况下,可以以大小为d的行或大小为d的列来存储状态矩阵x。在这些或其他实施方式中,取决于优化问题的性质和对应状态矩阵x的后续大小,在一些实施方式中状态块202可以存储多于一个状态矩阵x。
[0062]
局部字段块204可以包括其上可以存储特定优化问题的局部字段矩阵h的任何合适的计算机可读存储介质。局部字段矩阵h可以类似于以上关于图1讨论的局部字段矩阵
110。此外,在一些实施方式中,局部字段块204的大小可以被定为能够存储具有d行和d列的方阵。这样,在一些实施方式中,局部字段块204可以存储大小为d x d矩阵的单个局部字段矩阵h。附加地或可替选地,在局部字段矩阵h的值少于d x d矩阵的值的情况下,可以将局部字段矩阵h存储在大小为d的行或大小为d的列中。在这些或其他实施方式中,取决于优化问题的性质和对应局部字段矩阵h的后续大小,在一些实施方式中局部字段块可以存储多于一个局部字段矩阵h。
[0063]
权重块206可以包括其上可以存储特定优化问题的权重矩阵w的任何合适的计算机可读存储介质。权重矩阵w可以类似于以上关于图1讨论的权重矩阵112。在一些实施方式中,存储在权重块206上的权重矩阵w可以是整个n x n权重矩阵。附加地或可替选地,存储在权重块206上的权重矩阵w可以是对应于特定优化问题的整个权重矩阵的子集。在这些或其他实施方式中,权重块206可以作为高速缓存操作以存储整个权重矩阵的子集。附加地或可替选地,在权重块206作为高速缓存操作的情况下,整个权重矩阵w可以被存储在可以在其上构建rpu 200的芯片外部的计算机可读存储介质上。附加地或可替选地,在一些实施方式中(例如,在rpu实现交叉聚类玻尔兹曼机的情况下),如在美国专利申请第16/849,887号中所描述的,权重块206可以包括可以被用于确定权重的值的第一矩阵和第二矩阵。
[0064]
算术元件208可以包括被配置成执行可以用于求解优化问题的算术运算的任何合适的硬件和/或软件。例如,算术元件208可以包括被配置成执行加法和减法的一个或更多个加法器以及/或者被配置成执行乘法和除法的一个或更多个乘法器。附加地或可替选地,在一些实施方式中,加法器和乘法器可以被配置成执行融合的乘加。在这些或其他实施方式中,算术元件208中的加法器和/或乘法器可以被配置成使得算术元件208能够并行地执行多达d个算术运算。这样,如下面进一步详细讨论的,算术元件208可以被配置成并行地执行与潜在地改变包括在状态矩阵x的行或列中的每个相应状态变量的状态相关的算术运算。例如,如下面进一步详细讨论的,算术元件208可以被配置成执行与确定可能由于改变状态矩阵x中相应变量的状态而引起的相应能量变化相关的算术运算,其中所确定的能量变化可以被用于确定是否改变该相应变量的状态。
[0065]
决策元件210(在图2a中用“f”表示)可以包括任何合适的被配置成执行与确定是接受还是拒绝针对状态矩阵x的相应变量的提议状态改变相关的操作的硬件和/或软件。例如,决策元件210可以包括一个或更多个比较器,每个比较器被配置成针对从算术元件208接收的相应值执行伯努利试验(bernoulli trial)。伯努利试验可以基于所接收的值(例如,基于所确定的对应能量变化)来确定是接受还是拒绝相应状态变量的状态改变。在一些实施方式中,决策元件210可以包括并行布置的d个比较器,使得决策元件210可以被配置成并行地进行d个确定。
[0066]
在这些或其他实施方式中,决策元件210可以包括d对1比赛约简树(d-to-1tournament reduction tree),该d对1比赛约简树可以被配置成从已接受状态改变的多达dim个候选中随机地选择已接受状态改变之一。在这些或其他实施方式中,所选择的对应状态变量的已接受状态改变可以被用于更新与具有该已接受状态改变的对应状态变量对应的状态矩阵x、局部字段矩阵h和权重矩阵w的值。
[0067]
在一些实施方式中,rpu 200可以通信地耦接至系统控制器284(“控制器284”)。控制器284可以包括被配置成使计算系统能够执行针对其描述的一个或更多个操作的代码和
例程。附加地或可替选地,可以使用硬件来实现控制器284,所述硬件包括任何数目的处理器、微处理器(例如,用于执行一个或更多个操作或控制一个或更多个操作的执行)、现场可编程门阵列(fpga)、专用集成电路(asic)或它们中的两个或更多个的任何合适的组合。可替选地或附加地,可以使用硬件和软件的组合来实现控制器284。在本公开内容中,被描述为由控制器284执行的操作可以包括控制器284可以指示相应系统执行的操作。
[0068]
控制器284可以被配置成指示执行关于rpu 200的一个或更多个控制操作。例如,控制器284可以被配置成指示将数据从一个或更多个适用的外部源加载到rpu 200的不同块中。例如,控制器284可以被配置成:在权重块206用作高速缓存的情况下,用存储在外部存储器中的值来更新权重矩阵w。附加地或可替选地,控制器284可以被配置成将状态矩阵x和/或局部字段矩阵h分别加载到状态块202和局部字段块204中,作为针对特定优化问题初始化rpu 200的一部分。在这些或其他实施方式中,控制器284可以被配置成指示rpu 200可以实现的系统类型。例如,控制器284可以指示rpu 200的操作以运行常规玻尔兹曼机、行聚类玻尔兹曼机和/或交叉聚类玻尔兹曼机。
[0069]
如以上所指示的,算术元件208和决策元件210可以被配置成执行关于改变状态矩阵x的一个或更多个变量的相应状态的随机处理。随机处理可以包括针对一个或更多个变量中的每个变量执行相应的试验,以确定是否改变相应变量的相应状态。在一些实施方式中,随机处理可以通过控制器284指示。
[0070]
例如,在一些实施方式中,算术元件208可以被配置成从局部字段矩阵h、权重矩阵w和状态矩阵x获得相互对应的值。例如,算术元件208可以被配置成获得状态矩阵的特定状态变量的特定值、从权重矩阵w获得对应于该特定状态变量的特定权重值以及从局部字段矩阵h获得对应于该特定状态变量的特定局部字段值。在这些或其他实施方式中,算术元件208可以被配置成分别从局部字段矩阵h、权重矩阵w和状态矩阵x获得d个值。例如,在一些实施方式中,rpu 200可以包括一个或更多个选择器,所述选择器被配置成选择局部字段矩阵h、权重矩阵w和状态矩阵x的相应行并将所选择的行提供给算术元件208。在一些实施方式中,一个或更多个选择器可以包括一个或更多个d对1多路复用器。基于所获得的值,算术元件208可以被配置成执行与确定能量变化相关的算术运算,能量变化可以对应于改变相应状态变量的状态。
[0071]
例如,算术元件208可以被配置成:如果要改变相应状态变量的状态,则基于该相应状态变量的当前局部字段值(“h
old”)和该相应状态变量的权重值(“w”)来确定该相应状态变量的新的局部字段值(“h
new”)。例如,在接收到的相应状态变量的值指示相应状态变量被翻转为“活动(on)”(例如,接收到的值为“1”)的情况下,算术元件208可以针对对应的局部字段和权重值执行以下表达式(7):
[0072]hnew
=h
old
+w
ꢀꢀ
(7)
[0073]
作为另一实例,在接收到的相应状态变量的值指示相应状态变量被翻转为“非活动(off)”(例如,接收到的值为“0”)的情况下,算术元件208可以针对对应的局部字段和权重值执行以下表达式(8):
[0074]hnew
=h
old-w
ꢀꢀ
(8)
[0075]
在这些或其他实施方式中,算术元件208可以被配置成使用所确定的新的局部字段值来获得可以由于使位翻转而发生的系统能量的变化。在这些或其他实施方式中,算术
元件208可以被配置成执行可以用于确定能量变化的任何合适的表达式的任何合适的算术运算。
[0076]
例如,对于常规玻尔兹曼机,算术元件208可以被配置成使用针对对应局部字段“h
i”的h
new
并且使用状态值“x
i”来执行以下表达式(9),以确定系统能量的对应变化:
[0077]
δe(xi)=(1-2xi)hiꢀꢀ
(9)
[0078]
作为另一示例,如以上所指示的,在恰好1位的行聚类玻尔兹曼机中,在某个时间处,行中仅一个状态变量为活动的并且行中的一个状态变量必须为活动的。因此,行中一个状态变量的提议的状态改变也影响该行的另一状态变量。这样,对于行聚类玻尔兹曼机,算术元件208可以被配置成针对可以被改变的两个相应状态变量确定相应的h
new
,并且还可以执行以上讨论的表达式(3)以确定系统能量的对应变化,其中在表达式(3)中使用相应的h
new

[0079]
作为另一示例,如以上所指示的,在恰好1位的交叉聚类玻尔兹曼机中,在某个时间处,交叉聚类中仅一个状态变量为活动的并且交叉聚类中的一个状态变量必须为活动的。因此,聚类中一个状态变量的提议的状态改变也影响该聚类的另一状态变量。这样,对于行交叉聚类玻尔兹曼机,算术元件208可以被配置成针对可以被改变的两个相应状态变量确定相应的h
new
,并且还可以执行以上讨论的表达式(4)以确定系统能量的对应变化,其中在表达式(4)中使用相应的h
new
和对应的权重。注意,对于交叉聚类玻尔兹曼机,如关于美国专利申请第16/849,887号详细描述的,可以根据以上关于权重块206描述的第一矩阵和第二矩阵来确定可以在表达式(4)中使用的w的值。在这些或其他实施方式中,rpu 200可以包括逻辑块212(在图2a中用“l”表示),逻辑块212包括一个或更多个用于确定w的值的附加元件,例如在美国专利申请第16/849,887号中描述的那些附加元件。
[0080]
作为与相应状态变量相关的相应试验的一部分,决策元件210可以被配置成例如以上述方式确定是接受还是拒绝针对每个相应状态变量的提议状态改变。附加地或可替选地,可以由算术元件208和决策元件210并行地执行多个试验。在这些或其他实施方式中,决策元件210可以被配置成从其他已接受状态改变中随机地选择已接受状态改变作为实际实现的状态改变。例如,决策元件210可以使用比赛约简树来选择已接受状态改变之一。
[0081]
rpu 200可以被配置成基于被选择以供实现的已接受状态改变来更新状态矩阵x、局部字段矩阵h和权重矩阵w的值。例如,可以将与所实现的状态改变对应的h
new
的值添加至局部字段矩阵h中的对应条目。此外,可以改变与所实现的改变对应的变量的状态。另外,可以更新与变化的变量对应的权重的权重值。例如,对于从“非活动”改变为“活动”的变量,可以通过将h
new
的值与对应的权重值相加来改变该对应的权重值。作为另一示例,对于从“活动”改变为“非活动”的变量,可以通过从对应的权重值中减去h
new
的值来改变该对应的权重值。在一些实施方式中,算术元件208可以被配置成执行算术更新操作。附加地或可替选地,可以由决策元件210和/或算术元件208来执行一个或更多个其他更新操作。
[0082]
如以上所指示的,rpu 200可以被配置成针对状态矩阵x中的不同变量执行并行试验。另外,并行度可以改变或调整。例如,如以上所指示的,算术元件208和决策元件210可以被配置成一次执行多达d个试验。在状态矩阵x的元素总数小于或等于d的情况下,rpu 200能够同时针对每个状态变量执行试验。在这些或其他实施方式中,rpu 200可以(例如,利用决策元件210)从在并行执行的试验期间确定的已接受状态改变中随机地选择一个或更多
个已接受状态改变作为实现的状态改变。这样的操作可以被称为完全并行模式和执行完全并行试验。
[0083]
在这些或其他实施方式中,例如,在状态矩阵x的元素总数大于d的情况下,rpu 200可以以顺序并行模式操作,在顺序并行模式下可以执行顺序并行试验。在顺序并行模式期间,可以执行相应组的d个试验。此外,可以针对每个相应组并行地执行d个试验。另外,可以如以上所描述的(例如,利用比赛约简树)将在相应组的试验期间确定的已接受改变之一选择为该相应组的“获胜者”。在一些实施方式中,rpu 200可以存储相应组的相应获胜者(例如,存储在rpu的寄存器中)。
[0084]
在这些或其他实施方式中,可以顺序地执行一个或更多个另外的组,并且还可以存储每个相应的另外的组的相应获胜者。附加地或可替选地,在已经执行了一定数量的组之后,可以从其他获胜者中选择所述一定数量的组中的一个组的获胜者中的一个获胜者作为要实现的改变。例如,可以将各组的获胜者提供给比赛约简树,然后比赛约简树可以随机地选择获胜者之一作为要实现的改变。
[0085]
附加地或可替选地,rpu 200可以被配置成以顺序完全并行模式操作。在顺序完全并行模式下,可以执行的试验的组数可以使得在选择最终获胜者之前针对状态矩阵x的每个变量执行试验。
[0086]
在一些实施方式中,如以上所指示的,状态矩阵x和局部字段矩阵h可以被配置和定大小成使得状态矩阵x和局部字段矩阵h每行包括d个元素。这样,在一些实施方式中,rpu 200可以被配置成逐行地执行顺序并行试验,其中每个试验组对应于状态矩阵x的相应行。
[0087]
rpu 200在顺序并行模式下的操作可以取决于rpu 200是运行常规玻尔兹曼机还是运行聚类玻尔兹曼机例如行聚类玻尔兹曼机而略有变化。例如,在一些实施方式中,rpu 200可以包括d对1多路复用器214。在运行常规玻尔兹曼机的顺序并行模式期间,可以不使用d对1多路复用器214。然而,在运行行聚类玻尔兹曼机的顺序并行模式期间,d对1多路复用器214可以被配置成选择与当前正在处理的相应行中的“活动”变量对应的局部字段值。如以上所描述的,该局部字段值可以相应地被发送至算术元件208并用于针对相应行中的其他相应状态变量的每个相应试验确定能量变化。在这些或其他实施方式中,假定算术元件208可以针对行中的每个相应状态变量的每个相应试验(例如,针对相应状态变量的试验以及针对当前“活动”的变量的试验)执行操作,那么算术元件208可以针对行聚类玻尔兹曼机执行另外的算术循环。
[0088]
在这些或其他实施方式中,rpu 200可以在一次仅执行一个试验的严格串行模式下操作。在一些实施方式中,rpu 200在运行交叉聚类玻尔兹曼机时的操作可以使得rpu 200在严格串行模式下操作。附加地或可替选地,也可以省略在运行常规玻尔兹曼机或行聚类玻尔兹曼机时可以执行的并行度,使得rpu 200在运行这些类型的玻尔兹曼机时同样可以在严格串行模式下操作。
[0089]
在试验期间使用的并行度可以有助于更快地求解优化问题。例如,在一些实施方式中,在系统的能量已经被最大化或最小化的情况下,可以确定优化问题已被解决。在能量被最大化或最小化的这样的情况下,可能不存在任何更多的已接受状态改变。此外,随着问题的解决,状态改变的接受率可能下降。通过执行并行试验,可以增加一次执行的试验的数量,从而使得能够更快地达到解。
[0090]
然而,使用的并行量也可能增加处理资源的使用。因此,在一些情况(例如,接受率相对高的情况)下,具有高的并行度可能不那么有效。因此,在一些实施方式中,可以基于状态变量的状态改变的接受率来调整由rpu 200执行的并行度。
[0091]
例如,控制器284可以通信地耦接至决策元件210,并且可以被配置成跟踪对个体变量的哪些提议的改变可以被接受以及哪些提议的改变可能被拒绝。在这些或其他实施方式中,控制器284可以被配置成确定所提议的改变的接受率。
[0092]
在一些实施方式中,控制器284可以被配置成基于所确定的接受率来调整并行度。例如,控制器284可以被配置成随着接受率降低而增加并行度。附加地或可替选地,控制器284可以被配置成随着接受率增加而降低并行度。例如,在一些实施方式中,响应于接受率等于或高于与相对高的接受率对应的第一阈值,控制器284可以指示rpu 200在串行模式下操作。附加地或可替选地,响应于接受率在第一阈值与低于第一阈值的第二阈值之间,控制器284可以指示rpu 200在非完全并行顺序模式下操作。在这些或其他实施方式中,响应于接受率在第二阈值与低于第二阈值的第三阈值之间,控制器284可以指示rpu 200在完全并行顺序模式下操作。附加地或可替选地,响应于在接受率第三阈值与低于第三阈值的第四阈值之间,如果作为选项可用,则控制器284可以指示rpu 200在完全并行模式下操作。
[0093]
附加地或可替选地,在一些情况下,优化问题的求解可能陷入局部最大值或局部最小值,在这种情况下,接受率可能为零或接近零,但是系统的总能量可能不在实际的最小值或最大值处。在一些实施方式中,并且如以下进一步详细讨论的,rpu 200可以被配置成使得可以对一个或更多个局部字段值中的每个局部字段值施加偏移,以有助于使优化过程脱离局部最小值或局部最大值。在一些实施方式中,可以基于所确定的接受率来施加偏移。
[0094]
例如,在一些实施方式中,控制器284可以被配置成响应于接受率为零或接近零而对试验中使用的局部字段施加偏移。在一些实施方式中,控制器284可以被配置成对局部字段施加初始偏移。例如,可以向算术元件208提供初始偏移,并且可以指示算术元件208将该初始偏移与后续试验中使用的局部字段矩阵h中的一个或更多个局部字段值相加或相减。
[0095]
在一些实施方式中,初始偏移的值可以是由用户提供的数字或者是提供给控制器284的默认数字。在这些或其他实施方式中,可以基于当前局部字段值来选择初始偏移的值。例如,在一些实施方式中,可以将包括在局部字段矩阵h中的最高局部字段值用作初始偏移。在这些或其他实施方式中,使用最高局部字段值作为初始偏移可以是从局部字段值中减去该最高局部字段值。附加地或可替选地,在一些实施方式中,可以将包括在局部字段矩阵h中的最低局部字段值而不是最高局部字段值用作初始偏移。
[0096]
在这些或其他实施方式中,控制器284可以被配置成使用决策元件210来确定最高局部字段值。例如,决策元件210的候选约简树可以被馈送局部字段值,并且可以被指示输出最高值。在一些情况下,决策元件210可以逐行地执行比较,使得可以获得局部字段矩阵h的每一行的最高局部字段值。在这些或其他实施方式中,可以保存每一行的最高值,并且然后可以将每一行的最高值提供给决策元件210,以确定整个局部字段矩阵h的最高值。
[0097]
在施加初始偏移之后,控制器284则可以指示以所施加的初始偏移运行一个或更多个试验,并且可以在运行试验之后评估接受率。在一些实施方式中,控制器284可以指示在重新评估接受率之前针对每个状态变量运行相应的试验。在一些实施方式中,响应于至少一个提议的状态改变被接受,控制器284可以被配置成指示不再施加偏移。
[0098]
在这些或其他实施方式中,响应于提议的改变不被接受,控制器284可以被配置成指示对初始偏移进行更改。例如,控制器284可以使初始偏移递增特定量。例如,在一些实施方式中,可以使初始偏移递增最高局部字段值。在一些实施方式中,控制器284可以被配置成使偏移迭代地递增并执行试验,直至改变被接受。
[0099]
在一些实施方式中,可以将两个或更多个rpu 200合并以增加可以执行的并行量,使得一次可以执行多于d个试验。例如,图2b示出了合并rpu 250,其包括各自分别被配置成作为常规玻尔兹曼机操作的第一rpu 252a和第二rpu 252b。在图2b中,rpu 252可以各自分别类似于图2a的rpu 200。合并rpu 250还可以包括另外的决策元件216,附加决策元件216被配置成获得第一rpu 252a和第二rpu 252b的相应决策元件的输出(例如,第一rpu 252a的状态矩阵和第二rpu 252b的状态矩阵中的相应变量的所选择的已接受状态改变)。决策元件216可以被配置成随机地选择所获得的输出之一作为要改变的变量状态。
[0100]
图2c示出了合并rpu的另一示例。特别地,图2c示出了合并rpu 260,其包括各自分别被配置成能够作为行聚类玻尔兹曼机操作的第一rpu 262a和第二rpu 262b。在图2c中,rpu 262可以各自分别类似于图2a的rpu 200。合并rpu 260还可以包括另外的决策元件264,决策元件264可以类似于图2b的决策元件216。此外,第一rpu 262a可以包括d对1多路复用器266a,并且第二rpu 262b可以包括d对1多路复用器266b。d对1多路复用器266可以类似于图2a的d对1多路复用器214。此外,合并rpu 260可以包括2对1多路复用器,该2对1多路复用器可以被配置成选择d对1多路复用器266的输出之一。另外,合并rpu 260可以包括允许在与相应行中的“活动”状态变量对应的局部字段之间切换进入相应rpu 262的相应算术元件的路由。
[0101]
图2d示出了合并rpu的另一示例。特别地,图2d示出了合并rpu 270,其包括各自分别被配置成能够作为交叉聚类玻尔兹曼机操作的第一rpu 272a和第二rpu 272b。在图2d中,rpu 272可以各自分别类似于图2a的rpu 200。合并rpu 270还可以包括另外的决策元件274,决策元件274可以类似于图2b的决策元件216。此外,第一rpu 272a可以包括逻辑块276a,并且第二rpu 272b可以包括逻辑块276b。逻辑块276可以类似于图2a的决策元件210和逻辑块212的组合。
[0102]
注意,图2b至图2d中示出的合并rpu每个均可以使用同一组硬件组件来实现。例如,合并rpu可以具有与合并rpu 270的硬件配置相似或类似的硬件配置。在这些或其他实施方式中,在实现特定类型的玻尔兹曼机时,可以存在可能不适用该特定类型的玻尔兹曼机的元件,但可以不使用该元件。
[0103]
除了多个rpu 200能够被合并以针对系统的特定副本执行另外的并行度之外,多个rpu 200也可以被配置成进行操作以执行副本交换处理。在这些或其他实施方式中,rpu 200中的一个或更多个可以被配置成在副本交换处理中运行不同的副本。附加地或可替选地,运行不同副本的两个或更多个不同rpu 200可以被配置成运行不同类型的系统。例如,一个rpu可以运行常规玻尔兹曼机,另一rpu可以运行行聚类玻尔兹曼机,并且/或者又一rpu可以运行交叉聚类玻尔兹曼机。下面关于图4给出用于执行副本交换处理的rpu 200的示例。
[0104]
作为示例,图2e示出了可以被配置成利用多个rpu 200来执行副本交换处理的示例系统280。例如,系统280可以包括rpunit的组282,其中每个rpunit可以是如上所述的
rpu 200或合并rpu。系统280还可以包括控制器284(“控制器284”),控制器284可以被配置成指示副本交换处理。
[0105]
控制器284可以被配置成获得由不同rpunit运行的副本的不同状态,并且可以根据任何合适的技术相应地调整副本交换处理。此外,控制器284可以被配置成指示不同的rpunit执行任何合适类型的副本交换处理,例如并行回火、模拟退火等。附加地或可替选地,控制器284可以被配置成指示将数据从一个或更多个适用外部源加载到rpunit的不同块中。在这些或其他实施方式中,控制器284可以被配置成指示不同rpunit可以实现的系统类型。例如,控制器284可以指示不同rpunit运行常规玻尔兹曼机、行聚类玻尔兹曼机和/或交叉聚类玻尔兹曼机的操作。
[0106]
在不脱离本公开内容的范围的情况下,可以对图2a至图2e进行修改、添加或省略。例如,元件的具体数量、大小、布局等可以变化。此外,在一些实施方式中,所示出和描述的各个组件可以被包括在同一芯片上。附加地或可替选地,一个或更多个组件可以与一个或更多个其他组件在不同的芯片上。
[0107]
图3示出了根据本公开内容的至少一个实施方式的被配置成执行本文中描述的一个或更多个操作的示例计算系统302的框图。例如,在一些实施方式中,计算系统302可以被配置成实施或指导与图1中的能量引擎102和/或lfm 108相关联的一个或更多个操作。附加地或可替选地,图2a中的控制器284可以包括计算系统302。在一些实施方式中,计算系统302可以被包括在退火系统中或形成退火系统的一部分。计算系统302可以包括处理器350、存储器352和数据存储装置354。处理器350、存储器352和数据存储装置354可以通信地耦接。
[0108]
通常,处理器350可以包括任何合适的计算机、计算实体或包括各种计算机硬件或软件模块的处理设备,并且处理器350可以被配置成执行存储在任何适用的计算机可读存储介质上的指令。例如,处理器350可以包括微处理器、微控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、图形处理单元(gpu)、中央处理单元(cpu),或者被配置成解译和/或执行程序指令以及/或者对数据进行处理的任何其他数字或模拟电路系统。尽管在图3中被示为单个处理器,但是处理器350可以包括任何数量的被配置成单独地或共同地执行或指导执行本公开内容中描述的任何数量的操作的处理器。另外,处理器中一个或更多个处理器可以存在于一个或更多个不同的电子设备例如不同的服务器上。
[0109]
在一些实施方式中,处理器350可以被配置成解译和/或执行存储在存储器352、数据存储装置354或者存储器352和数据存储装置354中的程序指令和/或过程数据。在一些实施方式中,处理器350可以从数据存储装置354取出程序指令并将程序指令加载到存储器352中。在程序指令被加载到存储器352中之后,处理器350可以执行程序指令。例如,在一些实施方式中,图1中的能量引擎102、lfm引擎108和/或图2a中的控制器284可以是作为可以被加载到存储器352中并由处理器350执行的程序指令的软件模块。
[0110]
存储器352和数据存储装置354可以包括被配置成在其上存储计算机可执行指令或数据结构的计算机可读存储介质。这样的计算机可读存储介质可以包括可以由计算机(例如处理器350)访问的任何可用的非暂态介质。作为示例而非限制,这样的计算机可读存储介质可以包括有形的或非暂态的计算机可读存储介质,所述有形的或非暂态的计算机可
读存储介质包括:随机存取存储器(ram);只读存储器(rom);电可擦除可编程只读存储器(eeprom);致密盘只读存储器(cd-rom)或者其他光盘存储装置、磁盘存储装置或其他磁存储装置;闪存设备(例如,固态存储设备);或者可以用于存储呈计算机可执行指令或数据结构的形式的特定程序代码并且可以由计算机访问的任何其他非暂态存储介质。在这些和其他实施方式中,在这些和其他实施方式中,如本公开内容中所说明的,术语“非暂态”应当被解释为仅排除被发现落在联邦巡回法院判决(federalcircuit decision)in re nuijten,500f.3d 1346(fed.cir.2007)中的可取得专利的主题的范围之外的那些类型的暂态介质。
[0111]
上述的组合也可以被包括在计算机可读存储介质的范围内。例如,计算机可执行指令可以包括被配置成使处理器350执行特定操作或操作组的指令和数据。
[0112]
在不脱离本公开内容的范围的情况下,可以对计算系统302进行修改、添加或省略。例如,在一些实施方式中,计算系统302可以包括可能未明确示出或描述的任何数量的其他组件。附加地或可替选地,计算系统302可以包括较少的元件或被不同地配置。例如,存储器352和/或数据存储装置354可以被省略或者可以是同一计算机可读存储介质的部分。另外,在本公开内容中对硬件或由硬件执行的操作的引用可以指计算系统302的一个或更多个元件的任何适用的操作、配置或组合。
[0113]
图4示出了根据本公开内容中描述的至少一个实施方式的在求解优化问题期间执行试验的示例方法400的流程图。方法400的操作可以由任何合适的系统、装置或设备执行。例如,图1中的能量引擎102和/或lfm引擎108、图2a至图2e中的rpu和/或控制器、或者图3中的计算系统302可以执行与方法400相关联的一个或更多个操作。尽管用离散的块示出,但是取决于特定的实现方式,与方法400的一个或更多个块相关联的步骤和操作可以被划分为另外的块、被组合成更少的块或者被去除。
[0114]
在块402处,可以获得表示优化问题的系统的状态矩阵。状态矩阵可以包括可以各自分别表示与优化问题相关的特征的变量。例如,可以获得以上关于图2a所描述的状态矩阵x。在一些实施方式中,获得状态矩阵可以包括将状态矩阵加载到存储器中,例如将状态矩阵加载到rpu的状态块中。附加地或可替选地,获得状态矩阵可以包括从状态块获得状态变量的一个或更多个值并将它们加载到算术元件例如图2a的算术元件208中。
[0115]
在块404处,可以获得与状态矩阵中的变量对应的权重。每个相应的权重可以涉及相应变量与状态矩阵的一个或更多个其他变量之间的一种或更多种关系。在一些实施方式中,可以从权重矩阵例如以上关于图2a描述的权重矩阵w获得权重。在这些或其他实施方式中,可以如美国专利申请第16/849,887中所描述的基于一个或更多个其他矩阵来确定权重。在这些或其他实施方式中,获得权重可以包括将权重矩阵加载到rpu的权重块中。附加地或可替选地,获得权重可以包括从权重块和/或外部存储器获得权重并将它们加载到算术元件例如图2a的算术元件208中。
[0116]
在块406处,可以获得与状态矩阵对应的局部字段矩阵。局部字段矩阵可以包括局部字段值,局部字段值指示状态矩阵中受相应变量的相应权重影响的变量之间的交互。例如,可以获得以上关于图2a描述的局部字段矩阵h。在一些实施方式中,获得局部字段矩阵可以包括将局部字段矩阵加载到存储器中,例如将局部字段矩阵加载到rpu的局部字段块中。附加地或可替选地,获得局部字段矩阵可以包括从局部字段块获得一个或更多个局部字段值并将它们加载到算术元件例如图2a的算术元件208中。
[0117]
在块408处,可以基于权重和局部字段值来执行随机处理。随机处理可以针对改变一个或更多个变量的相应状态而执行,并且可以包括针对一个或更多个变量执行试验,其中,相应的试验确定是否改变相应变量的相应状态。例如,在一些实施方式中,可以如已上关于图2a所描述的执行随机处理。
[0118]
在块410处,可以确定对变量的状态改变的接受率。在块412处,可以调整关于执行试验的并行度。在一些实施方式中,可以如以上关于图2a所描述的基于接受率来调整并行度。在这些或其他实施方式中,也可以如以上关于图2a所描述的基于接受率来施加偏移。
[0119]
在不脱离本公开内容的范围的情况下,可以对方法400进行修改、添加或省略。例如,在一些情况下,可以迭代地执行一些操作。例如,在一些实施方式中,在块412之后,操作可以返回至块408,并且可以重复操作408、410和412。方法400的操作可以以不同的顺序来实现。附加地或可替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不脱离所公开的实施方式的实质的情况下,这些操作和动作中的一些操作和动作可以是可选的、可以被组合成较少的操作和动作或者可以被扩展成另外的操作和动作。
[0120]
如本文中所使用的,术语“模块”或“组件”可以指被配置成执行该模块或组件的操作的特定硬件实现方式以及/或者可以存储在计算系统的通用硬件(例如,计算机可读介质、处理设备等)上和/或由计算系统的通用硬件执行的软件对象或软件例程。在一些实施方式中,本文描述的不同组件、模块、引擎和服务可以被实现为在计算系统上执行的对象或进程(例如,被实现为单独的线程)。虽然本文中描述的一些系统和方法通常被描述为以软件(存储在通用硬件上和/或由通用硬件执行)来实现,但是特定的硬件实现方式或软件和特定的硬件实现的组合也是可能的并且是可预期的。在本说明书中,“计算实体”可以是如本文先前定义的任何计算系统,或者可以是在计算系统上运行的任何模块或模块的组合。
[0121]
在本公开内容中并且特别是在所附权利要求(例如,所附权利要求的正文)中使用的术语通常旨在作为“开放式”术语(例如,术语“包括(including)”应当理解为“包括但不限于”,术语“具有”应当理解为“至少具有”,术语“包括(include)”应当理解为“包括但不限于”等)。
[0122]
另外地,如果意在表达引入的权利要求叙述的特定数目,那么这样的意图将在权利要求书中明确记载,并且在没有这样的叙述的情况下,不存在这样的意图。例如,为帮助理解,所附权利要求书可以包括:使用引入性短语“至少一个”和“一个或更多个”以引入权利要求叙述。然而,即使在同一权利要求包括引入性短语“一个或更多个”或“至少一个”以及不定冠词如“一”或“一个”时(例如,“一”和/或“一个”应当被解释为意指“至少一个”或“一个或更多个”),对这样的短语的使用也不应被解释为暗含不定冠词“一”或“一个”对权利要求叙述的引入将包含这样引入的权利要求叙述的任何特定权利要求限制到仅包含一个这样叙述的实施方式;这同样适用于对用于引入权利要求叙述的定冠词的使用。
[0123]
此外,即使明确地叙述了引入的权利要求叙述的特定数目,本领域技术人员也将认识到,这样的叙述应当被解释为至少意指所叙述的数目(例如,无修饰的叙述“两个叙述”,在没有其他修饰语的情况下,意指至少两个叙述,或者两个或更多个叙述)。此外,在使用类似于“a、b和c中的至少之一等”或“a、b和c中的一个或更多个等”的惯用语的情况下,通常这样的构造旨在包括仅a、仅b、仅c、a和b一起、a和c一起、b和c一起或a、b和c一起等。另
外,术语“和/或”的使用旨在以这种方式来解释。
[0124]
此外,呈现两个或更多个替选术语的任何分隔词或短语,不论在说明书、权利要求书还是附图中,都应当被理解为考虑包括所述术语中的一个、所述术语中的任何一个或者所有术语的可能性。例如,即使在其他地方使用术语“和/或”,短语“a或b”也应当被理解为包括“a”或“b”或“a和b”的可能性。
[0125]
本公开内容中叙述的所有示例和条件语言旨在用于教导目的以帮助读者理解本公开内容和发明人为了促进本领域而贡献的构思,并且应当被解释为不限于这样的特别地叙述的示例和条件。尽管详细地描述了本公开内容的实施方式,但是在不脱离本公开内容的主旨和范围的情况下可以对这些实施方式进行各种改变、替换和更改。

技术特征:


1.一种方法,包括:获得表示优化问题的系统的状态矩阵,所述状态矩阵包括各自表示与所述优化问题相关的特征的变量;获得与所述变量对应的权重,每个相应权重涉及所述状态矩阵的相应变量与一个或更多个其他变量之间的一种或更多种关系;获得包括局部字段值的局部字段矩阵,所述局部字段值指示所述变量之间的相互作用,所述相互作用受相应变量的相应权重的影响;基于所述权重和所述局部字段值执行与改变所述变量中的一个或更多个变量的相应状态有关的随机处理,所述随机处理包括针对所述变量中的一个或更多个变量执行试验,其中,相应的试验确定是否改变相应变量的相应状态;确定对所述随机处理期间所述变量的状态改变的接受率;以及基于所确定的接受率来调整与执行所述试验有关的并行度。2.根据权利要求1所述的方法,其中,调整所述并行度包括随着所述接受率减小而增大所述并行度。3.根据权利要求1所述的方法,其中,调整所述并行度包括随着所述接受率增大而减小所述并行度。4.根据权利要求1所述的方法,还包括:基于所确定的接受率在执行所述试验时调整施加至所述局部字段矩阵的局部字段值中的一个或更多个局部字段值的偏移。5.根据权利要求4所述的方法,其中,调整所述偏移包括响应于所述接受率为零而增大所述偏移。6.根据权利要求4所述的方法,其中,调整所述偏移包括响应于至少一个改变被接受而去除所述偏移。7.根据权利要求4所述的方法,其中,调整所述偏移包括递增地改变所述偏移的值。8.根据权利要求4所述的方法,还包括:识别所述局部字段矩阵中的最高局部字段值;以及将所述最高局部字段值用作所述偏移。9.一种系统,包括:存储器,储存:表示优化问题的系统的状态矩阵,所述状态矩阵包括各自表示与所述优化问题相关的特征的变量;与所述变量对应的权重,每个相应权重涉及所述状态矩阵的相应变量与一个或更多个其他变量之间的一种或更多种关系;以及包括局部字段值的局部字段矩阵,所述局部字段值指示所述变量之间的相互作用,所述相互作用受相应变量的相应权重的影响;以及硬件,被配置成执行操作,所述操作包括:基于所述权重和所述局部字段值执行与改变所述变量中的一个或更多个变量的相应状态有关的随机处理,所述随机处理包括针对所述变量中的一个或更多个变量执行试验,其中,相应的试验确定是否改变相应变量的相应状态;确定对所述随机处理期间所述变量的状态改变的接受率;以及
基于所确定的接受率来调整与执行所述试验有关的并行度。10.根据权利要求9所述的系统,其中,调整所述并行度包括随着所述接受率减小而增大所述并行度。11.根据权利要求9所述的系统,其中,调整所述并行度包括随着所述接受率增大而减小所述并行度。12.根据权利要求9所述的系统,所述操作还包括:基于所确定的接受率在执行所述试验时调整施加至所述局部字段矩阵的局部字段值中的一个或更多个局部字段值的偏移。13.根据权利要求12所述的系统,其中,调整所述偏移包括响应于所述接受率为零而增大所述偏移。14.根据权利要求12所述的系统,其中,调整所述偏移包括响应于至少一个改变被接受而去除所述偏移。15.根据权利要求12所述的系统,其中,调整所述偏移包括递增地改变所述偏移的值。16.根据权利要求12所述的系统,所述操作还包括:识别所述局部字段矩阵中的最高局部字段值;以及将所述最高局部字段值用作所述偏移。17.一种系统,包括:多个副本交换单元,所述多个副本交换单元中的每个相应的副本交换单元包括:存储器,储存:表示优化问题的系统的状态矩阵,所述状态矩阵包括各自表示与所述优化问题相关的特征的变量;与所述变量对应的权重,每个相应权重涉及所述状态矩阵的相应变量与一个或更多个其他变量之间的一种或更多种关系;以及包括局部字段值的局部字段矩阵,所述局部字段值指示所述变量之间的相互作用,所述相互作用受相应变量的相应权重的影响;以及硬件,被配置成基于所述权重和所述局部字段值来执行与改变所述变量中的一个或更多个变量的相应状态有关的随机处理,所述随机处理包括针对所述变量中的一个或更多个变量执行试验,其中,相应的试验确定是否改变相应变量的相应状态;以及控制器,被配置成执行操作,所述操作包括:确定对所述随机处理期间所述变量的状态改变的接受率;以及基于所确定的接受率来调整与执行所述试验有关的并行度。18.根据权利要求17所述的系统,其中,由所述控制器执行的操作还包括指示所述多个副本处理单元执行副本交换处理。19.根据权利要求17所述的系统,其中,所述副本交换单元中的两个或更多个副本交换单元针对所述状态矩阵的相同副本作为合并副本交换单元来操作。20.根据权利要求17所述的系统,其中,由所述控制器执行的操作还包括:基于所确定的接受率在执行所述试验时调整施加至所述局部字段值中的一个或更多个局部字段值的偏移。

技术总结


公开了用于玻尔兹曼机的副本处理单元。根据实施方式的一方面,操作可以包括:基于与优化问题相关联的权重和局部字段值,来执行与改变一个或更多个变量的相应状态有关的随机处理,所述变量各自表示与优化问题相关的特征。随机处理可以包括针对变量中的一个或更多个变量执行试验,其中相应的试验确定是否改变相应变量的相应状态。操作还可以包括确定对随机处理期间变量的状态改变的接受率,以及基于所确定的接受率来调整与执行试验有关的并行度。确定的接受率来调整与执行试验有关的并行度。确定的接受率来调整与执行试验有关的并行度。


技术研发人员:

穆罕默德

受保护的技术使用者:

富士通株式会社

技术研发日:

2022.06.16

技术公布日:

2022/12/19

本文发布于:2024-09-21 10:30:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/40429.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   状态   变量   多个
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议