,因此是未来AI系统的一项关键任务。在本文中,我们提出了一种计算引擎,可以通过利用受大脑启发的超维计算的叠加计算能力及与基于模拟内存计算相关的内在随机性,有效地分解这些属性组合的高维全息表示
感官知觉的基本问题之一是解除约束——分离包含多个属性的原始感官信号的原因。例如,光感受器感知的像素强度是不同物理属性组合的结果。例如,传感器上某个点观察到的亮度是反射率和阴影的乘法组合。为了可以估计这些构成因素,视觉感知必须从观察到的亮度开始,并解决一个逆问题,该问题涉及取消组合属性的乘法。这种因式分解问题也是概念层次结构其他级别的核心,例如将动态场景的时变像素数据分解为持久和动态组件,将句子结构分解为角色和填充物,以及最后的认知类比推理。迄今为止,尚不清楚如何通过生物神经回路有效解决这些因式分解问题。此外,鉴于它们在感知和认知中无处不在,未来的AI系统必须配备能够在非常大的问题规模上有效执行这些因式分解运算的计算单元。表示属性组合的一种优雅的数学方法是在受大脑启发的矢量符号架构的背景下通过高维全息矢量(参见补充说明 1)。它们是全息的,因为编码信息均匀分布在矢量的所有分量上。此外,任意两个随机抽取的向量由于其高维度,几乎彼此正交,即它们的预期相似度有很大的可能性接近于零。这些向量还能够最终靠一组丰富的保维代数运算来操作。在一种方法中,具有 F 个属性的对象能够最终靠与每个属性相对应的关联 D 维全息双极 ({−1, +1}) 向量的逐元素乘法来描述,这会产生相同属性的唯一乘积向量。固定维度。逐元素乘法运算可以看作是绑定属性向量并生成乘积向量的绑定运算。此外,最近的研究表明,给定一个物体的原始图像,可以训练深度卷积神经网络来近似生成乘积向量。因式分解问题现在可以表示为将精确乘积向量分解,或者在后一种情况下,将不精确乘积向量分解为其组成属性向量。在本文中,我们提出了一种非确定性、非冯诺依曼计算引擎,可以轻松又有效地分解此类乘积向量以获得组成属性的估计。该计算引擎将新兴的内存计算 (IMC)计算范式与谐振器网络的增强变体相结合。谐振器网络是一种能够分解全息矢量的非线性动力系统,并且确实是分解问题的可行神经解决方案。谐振器网络在称为与每个属性关联的码本的一组可能解决方案中搜索 F 属性。与每个码本相关的向量被称为码向量(参见图 1a,其中 F = 3)。
如前所述,码向量是随机抽取的,这使得它们在高维空间中彼此准正交。当每个码本包含 M 个码向量的有限集合时,为了将 D 维乘积向量分解为其组成因子,需要搜索 M 个可能的组合,其中 D M。对通过绑定不表现出相关结构的随机绘制向量构建的乘积向量进行因式分解形成硬组合搜索问题。通过利用码向量的准正交性,谐振器网络可以通过迭代地解除除其中一个因素之外的所有因素与乘积向量的绑定,然后将其投影到所考虑的可能解决方案的空间中,从而快速搜索这些叠加的组合因素。请注意,在双极空间中,解除绑定也是通过元素乘法执行的。与谐振器网络相关的相似性搜索和投影操作都涉及矩阵向量乘法(MVM)操作,其中矩阵转变为固定码本。这很适合使用忆阻器件的 IMC。此外,器件的内在随机性可能是一种有价值的计算工具,已被提出用于解决基于能量的组合优化问题,例如模拟退火、玻尔兹曼机和霍普菲尔德网络。所提出的内存分解器将码向量存储在执行模拟内存 MVM 操作的忆阻设备的交叉阵列上。如图1b所示,相似度计算和投影分别基于MVM和转置MVM操作。通过利用欧姆定律和基尔霍夫电流求和定律,这些操作可以在忆阻器件的交叉阵列中的内存中执行。此外,在 MVM 和转置 MVM 操作之间使用非线性函数(作为稀疏激活)以及与忆阻器件相关的内在随机性能加强最大可解问题的规模。最后,个人会使用基于相变存储器(PCM)技术的内存计算核心及其在视觉感知中的应用进行了大规模实验演示。
传统谐振器网络的确定性搜索过程的无监督性质有几率会使在迭代中多次检查相同的解决方案序列,因此导致限制循环,从而阻止收敛到最佳解决方案。内存因式分解器的关键见解之一是,与忆阻器件相关的固有随机性可以显着减少此类极限环的发生。如图所示。如图2a所示,在相似性计算期间,模拟内存MVM产生随机相似性向量。随机性使因式分解器能够突破极限环,从而探索更大的解空间(图 2b)。
谐振器网络的另一个限制是在相似性搜索和投影操作之间使用恒等函数作为线性激活。我们得知,采用非线性赢家通吃nonlinear winners-take-all方法,通过将较弱的相似值归零,能大大的提升内存分解器的收敛速度和最大可解问题规模(参见补充说明2)。赢家通吃方法使用激活阈值 T 来稀疏基于贝叶斯优化选择的相似性向量(图 2a)(参见方法)。能够正常的使用三个品质因数对所得到的具有非线性稀疏激活的非确定性内存分解器做多元化的分析并与最先进的分解器作比较:维数、计算复杂性和运算能力。维数是指码向量中元素的数量。计算复杂度定义了因式分解器对给定乘积向量进行因式分解所需的平均操作数,其中每个操作都涉及 D 维点积计算。这取决于问题的大小和因素的数量。给定前两个品质因数的上限,运算能力定义了最大可处理问题的大小,准确度至少为 99%。为了将内存因式分解器与基线谐振器网络的操作能力作比较,我们在软件中对内存因式分解器进行了广泛的模拟(参见方法)。如图所示。如图 3 所示,即使矢量维数减少四倍以上,内存分解器也能将运算能力显着增强多达五个数量级。
接下来,我们展示了使用基于14纳米CMOS技术制造的PCM设备的IMC核心的内存内分解器的实验实现(见方法)。个人会使用了两个IMC核心,一个用于计算相似度,另一个用于投影(见图4a)。每个IMC核心都有一个256×256单元格的交叉阵列,能够执行随机和模拟矩阵向量乘法(MVM)操作。每个单元格由四个PCM设备组成,以差分配置组织,可以编程到特定的导电值(双极码本存储在四个设备中的两个中)。然而,由于与晶体成核和生长相关的固有随机性,交叉阵列中的多个设备上会出现导电值的分布(见图4b)。跟着时间的推移,由于与每个设备中原子配置的结构松弛相关的可变性,这种分布会略微变宽。此外,还有表现出1/f频谱特性的读取噪声和随机电报噪声(有关更多详情信息,请参阅补充说明3)40。IMC核心的输入是通过并行应用于交叉阵列所有行的恒定脉冲宽度调制电压来应用的。欧姆定律定义了每个单元格中流动的电流,并且电流根据基尔霍夫电流叠加定律在相应的位线上累加。这个电流被数字化并由256个并行运行的模数转换器累积。
每个IMC核心以恒定的时间量O(1)执行MVM操作,这有助于将分解的时间复杂度降低到仅仅是平均迭代次数。此外,利用PCM设备的固有随机性来计算随机相似度和投影向量,这最小化了限制周期的发生(见图4b和c)。使用排列逻辑来临时多路复用一个交叉阵列为多个因子,并且通过贝叶斯学习获得激活和收敛阈值等超参数(见方法)。
实验实现的内存内分解器与基线共振器网络进行了比较,其中两种方法都使用了D = 256, M = 256, 和 F = 3。这些参数将总问题大小设置为MF = 16,777,216,并将最大迭代次数设置为N = 21,845,这确保计算复杂度不超过蛮力搜索(见方法)。使用相同的码本和5000个随机选择的产品向量作为查询,基线共振器网络被发现无法分解任何一个产品向量。相比之下,内存内分解器能够以平均3312次迭代达到99.71%的出色准确度。
最后,我们展示了内存内分解器在视觉感知中的作用,以解开原始图像的属性。感知系统由两个主要部分所组成,如图4d所示。一个卷积神经网络被训练,以基于已知的图像属性集,将输入图像映射到全息感知产品向量。因此,在推理过程中,神经网络的输出是描述图像的产品向量的近似。内存内分解器被用来使用已知的图像属性集解开近似产品向量。在实验中,个人会使用了来自关系和类比视觉推理(RAVEN)数据集的输入图像41。图像包含具有类型、大小、颜色和位置等属性的对象。每组属性都映射到一个独特的码本,利用其符号性质(见方法)。从RAVEN数据集中解开1000个图像到正确估计属性的准确度达到了99.42%。
我们将内存内分解器与一个专用的参考数字设计作比较,后者受益于所提出的稀疏激活以及除PCM设备固有随机性之外的所有其他特性。使用相同的实验配置(D = 256, M = 256, F = 3, 和5000次试验),确定性数字设计平均需要3802次迭代才可以做到95.76%的准确度。与内存内分解器相比,数字设计平均需要多14.8%的迭代次数,并且准确度仍然低4%。即使我们允许迭代次数无限大,由于限制周期(见补充说明4),数字设计仍旧没办法与内存内分解器的准确度相匹配,这突出了与PCM设备相关的固有随机性的重要作用。
内存内分解器还可以在能源和面积效率方面带来显著的收益。通过结合原位计算的优势和减少迭代次数,据估计,基于512×512交叉阵列的定制设计内存内分解器能够在平均33.1微焦耳的能源预算内分解单个查询,与参考数字设计相比,能源节约了12.2倍。总面积节约估计为4.85倍(见补充说明4)。与数字设计相比,码本的非易失性存储是一个额外的优势。
请注意,内存内分解器的应用可以超越视觉感知,因为分解问题在感知和认知中无处不在,例如类比推理12-16,42。其他应用包括树搜索21和整数的质因数分解43。最近,已经展示了如何通过将其视为全息向量分解问题来解决经典的整数分解问题43。这些为解决非平凡的组合搜索问题铺平了道路。
总结,我们提出了一个非冯·诺依曼计算引擎,通过在超位置中搜索来分解高维全息向量。我们已使用两个基于PCM技术的最先进的内存内计算核心进行了实验验证,该技术提供原位计算和非易失性。实验根据结果得出,可靠和高效的分解跨越256×256×256搜索空间的全息向量。与PCM设备相关的固有随机性与非线性稀疏激活相结合,提高了五个数量级的操作容量,并降低了与计算任务相关的空间和时间复杂度。此外,我们展示了内存内分解器在解开原始图像的组成属性方面的有效性。这项工作突出了新兴非冯·诺依曼计算范式在实现未来AI系统的关键构建模块中的作用。
如果连续两次时间步长中所有估计值都保持不变,即对于 f ∈ [1,F],有,则认为迭代分解问题已收敛。为经验测试这种收敛性,我们定义了一种新颖的早期收敛检测算法。如果所有因子中的单一相似度值超过收敛检测阈值,则认为内存分解器已经收敛:
为了确保与蛮力搜索方法相比,使用的搜索操作严格更少,必须限制最大迭代次数(N):(此处原文未完成,因此翻译也到此为止。)
在所有实验中,我们将最大迭代次数限制为,以确保与蛮力方法相比具有更低的计算复杂度。
为了实验演示,我们采用了IBM研究部门在14纳米CMOS技术节点制造的内存计算核心。它具有256×256个单元格,每个单元格包含四个PCM设备,以差分配置排列,其中一对设备并联连接以表示单元格上的正导电,另一对表示负导电。然而,对这些实验,我们只编程一个设备,无论是在正极还是负极,因为它在导电上提供了足够的动态范围,以实现超过99%的准确度。这有效地允许我们将单元格优化为只包含两个PCM设备,如图4a所示。
一个定制的印刷电路板装有这样两个HERMES核心,一个FPGA板用于控制通信协议和从核心加载数据。FPGA反过来由一个运行在顶部的Python环境的Linux机器控制。主机执行解绑定并应用激活函数,而两个核心分别执行主要的MVM相似性搜索和投影操作。采用迭代编程方案来在交叉阵列中存储码向量。内存MVM的输出以模数转换器计数单位做测量。随后,应用线性校正以校正电路级不匹配。线性校正参数在MVM操作之前计算。
具有256×256尺寸的单个交叉阵列核心限制了所有码本中支持的码向量的总数为256。为客服这个限制,我们提出了一个排列逻辑,以时间复用一个单一的交叉阵列为所有F个因子。这使我们也可以利用完整的交叉阵列为一个单一的码本,最多256个码向量,并在任意数量的因子中重复使用它。如图4a所示,在相似性计算之前,我们应用排列逻辑作为对估计解绑定的因子专用圆形循环移位。这导致交叉阵列的时间复用几乎是正交的。在更新估计之前,我们反转循环移位以获得未改变的估计。
随机性是内存分解器的关键支持因素。增加一些随机性有助于从限制周期中发散出来,因每个解决方案都变得独一无二。在图3中报告的实验中,这一重要方面通过在软件中模拟交叉阵列上MVMs的噪声行为来模拟,作为具有零均值的加性高斯噪声:
我们使用了RAVEN41数据集,它提供了丰富的瑞文渐进矩阵测试,用于视觉抽象推理任务。我们只关注任务中的视觉感知部分,即从其底层属性因子中解耦图像感官输入。RAVEN数据集共提供了70,000个测试,每个测试包含16个图像面板。在我们的实验中,我们考虑了具有单个对象的2x2图像结构。每个对象可以有4个可能的位置、10种颜色、6种大小和5种类型。因此,共有1,200种可能的组合。我们将每组属性映射到内存分解器的单个码本。在这里,我们重新使用了与合成实验相同的码本。第一个码本代表位置属性,第二个码本代表颜色属性。对于第三个码本,我们将大小和类型属性融合到一个单一的码本中,最终得到总共30种可能的大小-类型组合。
每张图片能够最终靠绑定相应的码向量来形成一个产品向量来描述。为了将输入图像映射到产品向量,个人会使用了卷积神经网络。个人会使用了ResNet-18卷积神经网络,并使用文献22中提出的训练模式将其输出映射到我们的256维向量空间。训练完成后,我们让所有测试图像通过训练好的ResNet-18网络,以获得产品向量的估计。
接下来,我们将所有估计的产品向量通过与合成实验相同的实验测试设置。主要的不同之处在于产品向量:对于合成实验,个人会使用了确切的产品向量,而对于视觉感知任务,产品向量是卷积神经网络的输出,这将是一个近似的产品向量,而不是确切的一个。
在这里,咱们提供了对专门用于高效执行内存分解器的硬件设计的分析和比较。所提出的内存分解器在下一代内存交叉阵列上执行主要的相似性计算和投影,并结合模拟外设,如输入脉冲宽度调制(PWM)电路(用于数字到模拟(DAC)转换)和模拟到数字转换(ADC)电路。其余的操作,包括解绑定、排列和激活函数,是在定制设计的外围数字处理单元上实现的。
我们将所提出的内存分解器的硬件设计与一个专门的参考设计作比较,后者包括数字CMOS乘法器和累加器,以执行MVM操作,用于相似性计算和投影。为了在参考设计中实现其余操作,我们重用了为内存分解器设计的定制外围数字处理单元。
为了对各自的设计进行性能估算,个人会使用SystemVerilog设计了所有的数字逻辑模块,并使用Cadence的Genus综合工具与三星的14纳米LPP技术节点进行了综合。数字电路以10MHz的频率运行,产生100纳秒的时钟周期。这允许外围数字电路与大约相同延迟操作的模拟交叉阵列同步。对于功耗估算,个人会使用了典型的角案例,应用了0.8V的供电电压,并假设温度为25摄氏度。所有与数字电路相关的设计参数和操作条件在表S2中呈现。数字网络表的开关活动是通过后综合仿真得出的。
为了估计内存分解器设计中的模拟/混合信号组件所消耗的能量,我们考虑了表S2中给出的设计参数,并对37中讨论的模拟交叉阵列设计进行了合理的预测。模拟组件消耗的能量包括五个部分:
- PWM生成的能量:这个能量是作为驱动PWM脉冲到源线的电路的平均功耗、PWM的活动时间和活动源线数量的函数来计算的。
- 充电和放电源线电容的能量:这个能量是作为源线电容、供电电压以及交叉阵列上的活动行和列数的函数来计算的。
- 交叉阵列上耗散的能量:这个能量是作为读电压、活动行和列数、平均器件电导、供电电压和PWM的活动时间的函数来计算的。
- 为位线末端的调节器提供偏置的能量:这个能量是作为调节器偏置电流、供电电压、最大PWM活动时间和交叉阵列上活动列(位线)数量的函数来计算的。
- 输出的模拟到数字转换的能量:这个能量是作为基于电流控制振荡器的ADC37的每次转换步骤的能量、输出位精度和交叉阵列上活动列数的函数来计算的。
所提出的内存分解器设计与参考数字设计之间的基本功能不同之处在于,参考设计的MVM输出不包括任何随机噪声源,而所提出的内存分解器则固有地包括。因此,对于给定的维度D和问题大小M,两种设计表现出不同的平均准确性和不同的平均迭代次数。例如,在D = 256,M = 256时,所提出的内存分解器设计以99.74%的准确率收敛到正确的结果,平均使用3058次迭代(即,在操作能力范围内),而参考数字设计仅以95.76%的准确率使用平均3802次迭代。因此,这组参数(D = 256,M = 256)不会导致相同的操作能力,因此不适合比较这两种设计。
相反,我们尝试增加参考设计的维度,从D = 256开始,直到达到≥99%的准确率和与所提出的内存分解器相同的迭代次数收敛。我们得知,在参考设计中实现这种行为的维度是D = 352。这个中间比较点也缺乏公平性,因为参考设计和所提出的设计之间消耗的MAC操作数量不平衡。因此,我们考虑最终的比较点,涉及更大的维度和问题大小。这是由两个因素驱动的。
1. 随着维度数量的增加,具有确定性行为的参考设计倾向于实现更高的准确率和更低的平均迭代次数,即使问题大小以相同的速率增加。这允许比较用相同参数构建的硬件,实现了相同的算法性能。
2. 我们已经观察到,PCM交叉阵列尺寸可以扩展到512x512尺寸,而不会严重损害信噪比。此外,由交叉阵列组成的模拟核心的能量主要由外围电路消耗,其能量与交叉阵列的尺寸线性相关。相比之下,参考数字设计中的能量是二次方的。
我们选择 D = 512 和 M = 512 作为最终比较点的参数组合。我们的模拟发现,使用这一些参数组合,参考设计和所提出的设计分别以平均 6554 次和 6185 次迭代实现了 100% 的准确率来分解查询。所提出的设计完成单次迭代消耗 5.35 纳焦耳能量,其中投影、相似性计算和其他外围操作分别占 1.94 纳焦耳、2.49 纳焦耳和 0.5 纳焦耳。图 S3 展示了投影和相似性计算在数字到模拟转换、交叉阵列操作和模拟到数字转换方面的进一步能量分解。两种情况下能量差异的根本原因包括:
参考设计在参数 D = 512,M = 256 的情况下,完成单次迭代消耗的能量为 61.4 纳焦耳。这能分解为上述操作阶段的 46.3 纳焦耳、14.5 纳焦耳和 0.5 纳焦耳。表 S3 和图 S3 总结了所有结果。表中列出了两种设计在单次迭代的总能量消耗和处理单个查询直到其分解完成的平均能量消耗。能够准确的看出,由于在内存计算方式中扩展 MVM 操作时获得更高的能效,我们提出的设计在最终比较点在迭代能量、平均查询分解能量和面积节省方面分别比参考设计提高了 11.5 倍、12.2 倍和 4.85 倍。