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

通过调整存储器内计算阵列的列阈值来执行XNOR等效运算的制作方法

2022-03-19 18:33:32 来源:中国专利 TAG:

通过调整存储器内计算阵列的列阈值来执行xnor等效运算
1.根据35 u.s.c.
§
119的优先权要求
2.本专利申请要求于2019年9月9日提交的题为“performing xnor equivalent operations by adjusting column thresholds of a compute-in-memory array(通过调整存储器内计算阵列的列阈值来执行xnor等效运算)”的非临时申请no.16/565,308的优先权,该非临时申请被转让给本技术受让人并因而通过援引被明确纳入于此。
3.领域
4.本公开的各方面一般涉及通过调整人工神经网络的存储器内计算(compute-in-memory)阵列的列阈值来执行xnor等效运算。


背景技术:

5.极低位宽神经网络(诸如二进制神经网络(bnn))是深度神经联网(dnn)中的强大的新办法。二进制神经网络可以显著减少数据话务并且节省功率。例如,与浮点/定点精确率相比,用于二进制神经网络的存储器存储被显著减少,这是因为权重和神经元激活两者被二值化为-1或 1。
6.然而,数字互补金属氧化物半导体(cmos)处理使用[0,1]基础。为了执行与这些二进制神经网络相关联的二进制实现,二进制网络的[-1, 1]基础应当被转变成cmos[0,1]基础。该转变采用计算密集型异或非(xnor)运算。
[0007]
存储器内计算系统可以实现极低位宽神经网络,诸如二进制神经网络(bnn)。存储器内计算系统具有带有一些处理能力的存储器。例如,位线和字线的每个交点表示滤波器权重值,将该权重值乘以该字线上的输入激活以生成积。随后将沿每条位线的个体积求和以生成输出张量的对应输出值。该实现可被视为乘法累加(mac)运算。这些mac运算可以将二进制网络的[-1, 1]基础转变成cmos[0,1]基础。
[0008]
常规地,存储器内计算系统下的该转变是通过在每个位单元处完成xnor运算来达成的。随后将沿每条位线的结果求和以生成对应的输出值。遗憾的是,在每个位单元中包括xnor功能消耗了较大面积并且增加了功耗。
[0009]
在常规实现中,每个位单元包括读和写的基本存储器功能加上在输入和单元状态之间进行xnor的附加逻辑功能。作为包括xnor能力的结果,存储器(例如,静态随机存取存储器(sram))中的每个单元的晶体管数目从6或8增加到12,这显著增大了单元大小和功耗。消除xnor运算而同时仍能够从二进制神经网络[-1, 1]基础转变成cmos[0,1]基础将是合乎期望的。
[0010]
概述
[0011]
在本公开的一个方面,一种装置包括包含列和行的存储器内计算阵列。该存储器内计算阵列被配置成:基于权重值和激活值的函数来调整针对该存储器内计算阵列的每一列所生成的激活阈值。该存储器内计算阵列还被配置成:基于来自至该存储器内计算阵列的输入向量中的输入值来计算转换偏置电流参考。该存储器内计算阵列被编程有权重值集合。经调整的激活阈值和该转换偏置电流参考被用作用于确定该存储器内计算阵列的输出
值的阈值。
[0012]
另一方面公开了一种用于通过调整具有行和列的存储器内计算阵列的列阈值来执行xnor等效运算的方法。该方法包括:基于权重值和激活值的函数来调整针对该存储器内计算阵列的每一列所生成的激活阈值。该方法还包括:基于来自至该存储器内计算阵列的输入向量中的输入值来计算转换偏置电流参考。该存储器内计算阵列被编程有权重值集合。经调整的激活阈值和该转换偏置电流参考被用作用于确定该存储器内计算阵列的输出值的阈值。
[0013]
在另一方面,一种非瞬态计算机可读介质记录了非瞬态程序代码。该非瞬态程序代码在被(诸)处理器执行时使该(这些)处理器基于权重值和激活值的函数来调整针对具有行和列的存储器内计算阵列的每一列所生成的激活阈值。该程序代码还使该(这些)处理器基于来自至该存储器内计算阵列的输入向量中的输入值来计算转换偏置电流参考。该存储器内计算阵列被编程有权重值集合。经调整的激活阈值和该转换偏置电流参考被用作用于确定该存储器内计算阵列的输出值的阈值。
[0014]
另一方面公开了一种用于通过调整具有行和列的存储器内计算阵列的列阈值来执行xnor等效运算的装备。该装备包括:用于基于权重值和激活值的函数来调整针对该存储器内计算阵列的每一列所生成的激活阈值的装置。该装备还包括:用于基于来自至该存储器内计算阵列的输入向量中的输入值来计算转换偏置电流参考的装置。该存储器内计算阵列被编程有权重值集合。经调整的激活阈值和该转换偏置电流参考被用作用于确定该存储器内计算阵列的输出值的阈值。
[0015]
这已较宽泛地勾勒出本公开的特征和技术优势以便下面的详细描述可被更好地理解。本公开的附加特征和优点将在下文描述。本领域技术人员应当领会,本公开可容易地被用作修改或设计用于实施与本公开相同的目的的其他结构的基础。本领域技术人员还应认识到,这样的等效构造并不脱离所附权利要求中所阐述的本公开的教导。被认为是本公开的特性的新颖特征在其组织和操作方法两方面连同进一步的目的和优点在结合附图来考虑以下描述时将被更好地理解。然而,要清楚理解的是,提供每一幅附图均仅用于解说和描述目的,且无意作为对本公开的限定的定义。
[0016]
附图简述
[0017]
在结合附图理解下面阐述的详细描述时,本公开的特征、本质和优点将变得更加明显,在附图中,相同附图标记始终作相应标识。
[0018]
图1解说了根据本公开的某些方面的使用片上系统(soc)(包括通用处理器)来设计神经网络的示例实现。
[0019]
图2a、2b和2c是解说根据本公开的各方面的神经网络的示图。
[0020]
图2d是解说根据本公开的各方面的示例性深度卷积网络(dcn)的示图。
[0021]
图3是解说根据本公开的各方面的示例性深度卷积网络(dcn)的示图。
[0022]
图4解说了根据本公开的各方面的示出人工神经网络的存储器内计算(cim)阵列的架构。
[0023]
图5解说了根据本公开的各方面的用于通过调整人工神经网络的存储器内计算阵列的列阈值来执行xnor等效运算的架构。
[0024]
图6解说了根据本公开的各方面的用于通过调整人工神经网络的存储器内计算阵
列的列阈值来执行xnor等效运算的方法。
[0025]
详细描述
[0026]
以下结合附图阐述的详细描述旨在作为各种配置的描述,而无意表示可实践本文中所描述的概念的仅有配置。本详细描述包括具体细节以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可以实践这些概念。在一些实例中,以框图形式示出众所周知的结构和组件以便避免湮没此类概念。
[0027]
基于本教导,本领域技术人员应领会,本公开的范围旨在覆盖本公开的任何方面,不论其是与本公开的任何其他方面相独立地还是组合地实现的。例如,可以使用所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为所阐述的本公开的各个方面的补充或者与之不同的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
[0028]
措辞“示例性”在本文中用于意指“用作示例、实例、或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
[0029]
尽管本文描述了特定方面,但这些方面的众多变体和置换落在本公开的范围之内。虽然提到了优选方面的一些益处和优点,但本公开的范围并非旨在被限定于特定益处、用途或目标。相反,本公开的各方面旨在能宽泛地应用于不同的技术、系统配置、网络和协议,其中一些作为示例在附图以及以下对优选方面的描述中解说。详细描述和附图仅仅解说本公开而非限定本公开,本公开的范围由所附权利要求及其等效技术方案来定义。
[0030]
存储器内计算(cim)是一种在存储器阵列中执行乘法和累加(mac)运算的方法。存储器内计算可通过激活多行、以及使用模拟列电流进行乘法与求和运算来改善存储器阵列内的并行性。例如,sram位单元可被定制以实现二进制神经网络的xnor和比特计数运算。
[0031]
常规地,存储器内计算二进制神经网络实现是通过在每个位单元处完成xnor运算、以及将针对每个位单元的结果求和来达成的。在每个位单元中添加xnor功能增大了布局面积并且增大了功耗。例如,存储器(例如,sram)中的每个单元中的晶体管数目从6或8增加到12。
[0032]
本公开的各方面涉及通过调整人工神经网络(例如,二进制神经网络)的存储器内计算阵列的列阈值来执行xnor等效运算。在一个方面,基于权重值和激活值的函数来调整存储器阵列的每一列的激活阈值。基于来自输入向量中的输入值来计算转换偏置电流参考。
[0033]
在一个方面,将位线总体计数同转换偏置电流参考与经调整的激活阈值之和进行比较,以确定位线的输出。位线总体计数是与存储器阵列的位线相对应的每个位单元输出的总和。例如,与第一位线相关联的每个位单元的输出的总和(或总体计数)作为第一输入被提供给比较器。随后将该总体计数同转换偏置电流参考与经调整的激活阈值之和进行比较,以确定该位线的输出。在一些方面,激活阈值小于存储器阵列的行数的一半。行数对应于输入向量的大小。在一些方面,转换偏置电流参考小于存储器阵列的行数的一半。
[0034]
本公开的人工神经网络可以是二进制神经网络、多比特神经网络、或极低位宽神经网络。本公开的各方面可适用于指定极低的存储器处理和功率的设备(例如,边缘设备)、或可以受益于因二进制格式而得到的存储器节省的大型网络。本公开的各方面通过消除实
现二进制神经网络的存储器内计算系统中的xnor运算来减小存储器的大小以及改善存储器的功耗。例如,完成基础转变以避免在每个位单元中使用xnor功能及其对应的(诸)晶体管,由此减小了存储器的大小。
[0035]
图1解说了片上系统(soc)100的示例实现,其可包括根据本公开的某些方面的配置成用于对人工神经网络的存储器内计算(cim)阵列的乘法和累加运算进行转变的中央处理单元(cpu)102或多核cpu。变量(例如,神经信号和突触权重)、与计算设备相关联的系统参数(例如,带有权重的神经网络)、延迟、频率槽信息、以及任务信息可被存储在与神经处理单元(npu)108相关联的存储器块中、与cpu 102相关联的存储器块中、与图形处理单元(gpu)104相关联的存储器块中、与数字信号处理器(dsp)106相关联的存储器块中、存储器块118中,或可跨多个块分布。在cpu 102处执行的指令可从与cpu 102相关联的程序存储器加载或可从存储器块118加载。
[0036]
soc 100还可包括为具体功能定制的附加处理块(诸如gpu 104、dsp 106、连通性块110(其可包括第五代(5g)连通性、第四代长期演进(4g lte)连通性、wi-fi连通性、usb连通性、蓝牙连通性等))以及例如可检测和识别姿势的多媒体处理器112。在一种实现中,npu实现在cpu、dsp、和/或gpu中。soc 100还可包括传感器处理器114、图像信号处理器(isp)116、和/或导航模块120(其可包括全球定位系统)。
[0037]
soc 100可基于arm指令集。在本公开的一方面,加载到通用处理器102中的指令可包括用于基于权重值(例如,权重矩阵)和激活值的函数来调整阵列的每一列的激活阈值的代码。通用处理器102可进一步包括用于基于来自输入向量中的输入值来计算转换偏置电流参考的代码。
[0038]
深度学习架构可通过学习在每一层中以逐次更高的抽象程度来表示输入、藉此构建输入数据的有用特征表示来执行对象识别任务。以此方式,深度学习解决了常规机器学习的主要瓶颈。在深度学习出现之前,用于对象识别问题的机器学习办法可能严重依赖人类工程设计的特征,或许与浅分类器相结合。浅分类器可以是两类线性分类器,例如,其中可将特征向量分量的加权和与阈值作比较以预测输入属于哪一类别。人类工程设计的特征可以是由拥有领域专业知识的工程师针对特定问题领域定制的模版或内核。相比之下,深度学习架构可学习以表示与人类工程师可能会设计的类似的特征,但它是通过训练来学习的。此外,深度网络可以学习以表示和识别人类可能还没有考虑过的新类型的特征。
[0039]
深度学习架构可以学习特征阶层。例如,如果向第一层呈递视觉数据,则第一层可学习以识别输入流中的相对简单的特征(诸如边)。在另一示例中,如果向第一层呈递听觉数据,则第一层可学习以识别特定频率中的频谱功率。取第一层的输出作为输入的第二层可以学习以识别特征组合,诸如对于视觉数据识别简单形状或对于听觉数据识别声音组合。例如,更高层可学习以表示视觉数据中的复杂形状或听觉数据中的词语。再高层可学习以识别常见视觉对象或口语短语。
[0040]
深度学习架构在被应用于具有自然阶层结构的问题时可能表现特别好。例如,机动交通工具的分类可受益于首先学习以识别轮子、挡风玻璃、以及其他特征。这些特征可在更高层以不同方式被组合以识别轿车、卡车和飞机。
[0041]
神经网络可被设计成具有各种各样的连通性模式。在前馈网络中,信息从较低层被传递到较高层,其中给定层中的每个神经元向更高层中的神经元进行传达。如上所述,可
在前馈网络的相继层中构建阶层式表示。神经网络还可具有回流或反馈(也被称为自顶向下(top-down))连接。在回流连接中,来自给定层中的神经元的输出可被传达给相同层中的另一神经元。回流架构可有助于识别跨越不止一个按顺序递送给该神经网络的输入数据组块的模式。从给定层中的神经元到较低层中的神经元的连接被称为反馈(或自顶向下)连接。当高层级概念的识别可辅助辨别输入的特定低层级特征时,具有许多反馈连接的网络可能是有助益的。
[0042]
神经网络的各层之间的连接可以是全连接的或局部连接的。图2a解说了全连接神经网络202的示例。在全连接神经网络202中,第一层中的神经元可将它的输出传达给第二层中的每个神经元,从而第二层中的每个神经元将从第一层中的每个神经元接收输入。图2b解说了局部连接神经网络204的示例。在局部连接的神经网络204中,第一层中的神经元可连接到第二层中有限数目的神经元。更一般化地,局部连接的神经网络204的局部连接层可被配置成使得一层中的每个神经元将具有相同或相似的连通性模式,但其连接强度可具有不同的值(例如,210、212、214和216)。局部连接的连通性模式可能在更高层中产生空间上相异的感受野,这是由于给定区域中的更高层神经元可接收到通过训练被调谐为到网络的总输入的受限部分的性质的输入。
[0043]
局部连接神经网络的一个示例是卷积神经网络。图2c解说了卷积神经网络206的示例。卷积神经网络206可被配置成使得与针对第二层中每个神经元的输入相关联的连接强度被共享(例如,208)。卷积神经网络可能非常适合于其中输入的空间位置有意义的问题。
[0044]
一种类型的卷积神经网络是深度卷积网络(dcn)。图2d解说了被设计成识别来自图像捕捉设备230(诸如车载相机)的图像226输入的视觉特征的dcn 200的详细示例。可对该示例的dcn 200进行训练以标识交通标志以及在交通标志上提供的数字。当然,dcn 200可被训练用于其他任务,诸如标识车道标记或标识交通信号灯。
[0045]
可以用受监督式学习来训练dcn 200。在训练期间,可向dcn 200呈递图像(诸如限速标志的图像226),并且随后可计算“前向传递(forward pass)”以产生输出222。dcn 200可包括特征提取区段和分类区段。在接收到图像226之际,卷积层232可向图像226应用卷积核(未示出),以生成第一特征图集合218。作为示例,卷积层232的卷积核可以是生成28x28特征图的5x5核。在本示例中,由于在第一特征图集合218中生成四个不同的特征图,因此在卷积层232处四个不同的卷积核被应用于图像226。卷积核还可被称为滤波器或卷积滤波器。
[0046]
第一特征图集合218可由最大池化层(未示出)进行子采样以生成第二特征图集合220。最大池化层减小了第一特征图集合218的大小。即,第二特征图集合220的大小(诸如14x14)小于第一特征图集合218的大小(诸如28x28)。经减小的大小向后续层提供类似的信息,同时减小了存储器消耗。第二特征图集合220可经由一个或多个后续卷积层(未示出)被进一步卷积,以生成一个或多个后续特征图集合(未示出)。
[0047]
在图2d的示例中,第二特征图集合220被卷积以生成第一特征向量224。此外,第一特征向量224被进一步卷积以生成第二特征向量228。第二特征向量228的每个特征可包括与图像226的可能特征(诸如“标志”、“60”和“100”)相对应的数字。softmax(软最大化)函数(未示出)可将第二特征向量228中的数字转换为概率。如此,dcn 200的输出222是图像226
包括一个或多个特征的概率。
[0048]
在本示例中,输出222中“标志”和“60”的概率高于输出222的其他数字(诸如“30”、“40”、“50”、“70”、“80”、“90”和“100”)的概率。在进行训练之前,由dcn 200产生的输出222很可能是不正确的。由此,可计算输出222与目标输出之间的误差。目标输出是图像226的真实值(例如,“标志”和“60”)。dcn 200的权重可随后被调整以使得dcn 200的输出222与目标输出更紧密地对齐。
[0049]
为了调整权重,学习算法可为权重计算梯度向量。该梯度可指示在权重被调整情况下误差将增加或减少的量。在顶层处,该梯度可直接对应于连接倒数第二层中的活化神经元与输出层中的神经元的权重的值。在较低层中,该梯度可取决于权重的值以及所计算出的较高层的误差梯度。权重可随后被调整以减小误差。这种调整权重的方式可被称为“后向传播”,因为其涉及在神经网络中的“后向传递(backward pass)”。
[0050]
在实践中,权重的误差梯度可能是在少量示例上计算的,从而计算出的梯度近似于真实误差梯度。这种近似方法可被称为随机梯度下降法。随机梯度下降法可被重复,直到整个系统可达成的误差率已停止下降或直到误差率已达到目标水平。在学习之后,dcn可被呈递新图像(例如,图像226的限速标志)并且在网络中的前向传递可产生输出222,其可被认为是该dcn的推断或预测。
[0051]
深度置信网络(dbn)是包括多层隐藏节点的概率性模型。dbn可被用于提取训练数据集的阶层式表示。dbn可通过堆叠多层受限波尔兹曼机(rbm)来获得。rbm是一类可在输入集上学习概率分布的人工神经网络。由于rbm可在没有关于每个输入应该被分类到哪个类别的信息的情况下学习概率分布,因此rbm经常被用于无监督式学习中。使用混合无监督式和受监督式范式,dbn的底部rbm可按无监督方式被训练并且可以用作特征提取器,而顶部rbm可按受监督方式(在来自先前层的输入和目标类别的联合分布上)被训练并且可用作分类器。
[0052]
深度卷积网络(dcn)是卷积网络的网络,其配置有附加的池化和归一化层。dcn已在许多任务上达成现有最先进的性能。dcn可使用监督式学习来训练,其中输入和输出目标两者对于许多典范是已知的并被用于通过使用梯度下降法来修改网络的权重。
[0053]
dcn可以是前馈网络。另外,如上所述,从dcn的第一层中的神经元到下一更高层中的神经元群的连接跨第一层中的神经元被共享。dcn的前馈和共享连接可被利用于进行快速处理。dcn的计算负担可比例如类似大小的包括回流或反馈连接的神经网络的计算负担小得多。
[0054]
卷积网络的每一层的处理可被认为是空间不变模版或基础投影。如果输入首先被分解成多个通道,诸如彩色图像的红色、绿色和蓝色通道,那么在该输入上训练的卷积网络可被认为是三维的,其具有沿着该图像的轴的两个空间维度以及捕捉颜色信息的第三维度。卷积连接的输出可被认为在后续层中形成特征图,该特征图(例如,220)中的每个元素从先前层(例如,特征图218)中一定范围的神经元以及从该多个通道中的每个通道接收输入。特征图中的值可以用非线性(诸如矫正max(0,x))进一步处理。来自毗邻神经元的值可被进一步池化(这对应于降采样)并可提供附加的局部不变性以及维度缩减。还可通过特征图中神经元之间的侧向抑制来应用归一化,其对应于白化。
[0055]
深度学习架构的性能可随着有更多被标记的数据点变为可用或随着计算能力提
高而提高。现代深度神经网络用比仅仅十五年前可供典型研究者使用的计算资源多数千倍的计算资源来例行地训练。新的架构和训练范式可进一步推升深度学习的性能。经矫正的线性单元可减少被称为梯度消失的训练问题。新的训练技术可减少过度拟合(over-fitting)并因此使更大的模型能够达成更好的普遍化。封装技术可抽象出给定的感受野中的数据并进一步提升总体性能。
[0056]
图3是解说深度卷积网络350的框图。深度卷积网络350可包括多个基于连通性和权重共享的不同类型的层。如图3中示出的,深度卷积网络350包括卷积块354a、354b。卷积块354a、354b中的每一者可配置有卷积层(conv)356、归一化层(lnorm)358、和最大池化层(最大池)360。
[0057]
卷积层356可包括一个或多个卷积滤波器,其可被应用于输入数据以生成特征图。尽管仅示出了两个卷积块354a、354b,但本公开不限于此,而是,根据设计偏好,任何数目的卷积块354a、354b可被包括在深度卷积网络350中。归一化层358可对卷积滤波器的输出进行归一化。例如,归一化层358可提供白化或侧向抑制。最大池化层360可提供在空间上的降采样聚集以实现局部不变性和维度缩减。
[0058]
例如,深度卷积网络的平行滤波器组可被加载到soc 100的cpu 102或gpu 104上以达成高性能和低功耗。在替换实施例中,平行滤波器组可被加载到soc 100的dsp 106或isp 116上。另外,深度卷积网络350可访问其他可存在于soc 100上的处理块,诸如分别专用于传感器和导航的传感器处理器114和导航模块120。
[0059]
深度卷积网络350还可包括一个或多个全连接层362(fc1和fc2)。深度卷积网络350可进一步包括逻辑回归(lr)层364。深度卷积网络350的每一层356、358、360、362、364之间是要被更新的权重(未示出)。每一层(例如,356、358、360、362、364)的输出可以用作深度卷积网络350中一个后续层(例如,356、358、360、362、364)的输入以从第一卷积块354a处提供的输入数据352(例如,图像、音频、视频、传感器数据和/或其他输入数据)学习阶层式特征表示。深度卷积网络350的输出是针对输入数据352的分类得分366。分类得分366可以是概率集,其中每个概率是输入数据包括来自特征集的特征的概率。
[0060]
当权重和神经元激活被二值化为-1或 1([-1, 1]空间)时,人工神经网络(例如,二进制神经网络)的存储器存储可以被显著减小。然而,数字互补金属氧化物半导体(cmos)逻辑在[0,1]空间中运行。由此,在二进制实现期间,在使用[0,1]基础的数字cmos设备与使用[-1, 1]基础的二进制神经网络之间会发生转变。
[0061]
存储器单元可被配置成支持异或非(xnor)功能。例如,表1-3(例如,真值表)解说了[0,1]空间中的二进制神经网络到二值化[-1, 1]空间中的二进制乘法的映射。真值表1-3中解说了双输入逻辑功能。
[0062]
表1解说了二值化[-1, 1]空间中的二进制乘法的示例。例如,二值化[-1, 1]空间中的乘法产生4比特输出-1*-1,-1* 1, 1*-1, 1* 1(例如,“1,-1,-1,1”)。
[0063]
乘-1 1-1 1-1 1-1 1
[0064]
表1
[0065]
表2解说了xnor实现的示例。存储器单元可被配置成对第一输入值(例如,二进制
神经元激活)和第二输入值(例如,二进制突触权重)执行xnor功能,以生成二进制输出。例如,xnor功能仅在所有输入值都为真或所有输入值都为假的情况下才为真。如果一些输入为真,而其他输入为假,则xnor功能的输出为假。由此,当这两个输入(例如,第一输入和第二输入)都为假(例如,第一输入为0并且第二输入为0)时(如表2中示出的),输出为真(例如,1)。当第一输入为假(0),而第二输入为真(1)时,输出为假(0)。当第一输入为真(1),而第二输入为假(0)时,输出为假(0)。当第一输入为真(1),并且第二输入为真(1)时,输出为真(1)。由此,在两个输入情况下xnor功能的真值表具有二进制输出“1,0,0,1”。
[0066]
由此,二值化[-1, 1]空间中的二进制乘法映射到[0,1]空间中xnor的二进制输出。例如,二值化[-1, 1]空间的4比特输出中的“1”映射到xnor功能的二进制输出中的“1”,而二值化[-1, 1]空间的4比特输出中的
“‑
1”映射到xnor功能的二进制输出中的“0”。
[0067]
xnor01010101
[0068]
表2
[0069]
乘01000101
[0070]
表3
[0071]
作为对比,二值化[-1, 1]空间中的二进制乘法并未映射到表3中示出的二值化[0,1]空间中的二进制乘法。例如,表3解说了在二值化[0,1]空间中进行乘法以产生4比特输出“0,0,0,1”,该输出不与二值化[-1, 1]空间中的4比特输出“1,-1,-1,1”映射。例如,4比特输出“0,0,0,1”包括仅一个真比特(例如,最后一个比特),而4比特输出“1,-1,-1,1”包括两个真比特(例如,第一比特和最后一个比特)。
[0072]
常规地,用存储器内计算系统实施的二进制神经网络是通过在每个位单元处计算xnor、以及将沿每条位线的结果求和以生成输出值来实现的。然而,在每个位单元中添加xnor功能是昂贵的。例如,存储器(例如,sram)中的每个单元的晶体管数目从6或8增加到12,这显著增大了单元大小和功耗。
[0073]
本公开的各方面涉及通过消除二进制神经网络存储器内计算阵列中的xnor来减小存储器的大小以及改善存储器的功耗。在一个方面,存储器内计算阵列的每一列的激活阈值被调整以避免在每个位单元中使用xnor功能及其对应的(诸)晶体管。例如,具有较小存储器位单元的较小存储器(例如,八晶体管sram)可被用于存储器内计算二进制神经网络。
[0074]
图4解说了根据本公开的各方面的用于人工神经网络的存储器内计算(cim)阵列的示例性架构400。存储器内计算是在存储器阵列中执行乘法和累加运算的一种方式。该存储器阵列包括字线404(或即wl1)、405(或即wl2)、
……
、406(或即wlm)以及位线401(或即bl1)、402(或即bl2)、
……
、403(或即bln)。权重(例如,二进制突触权重值)被存储在存储器阵列的位单元中。输入激活(例如,输入值,其可以是输入向量)在字线上。乘法发生在每个位单元处,并且乘法结果通过位线来输出。例如,乘法包括在每个位单元处将权重与输入激活相乘。与位线或列(例如,401)相关联的求和设备(未示出)(诸如电压/电流求和设备)将
各位线的输出(例如,电荷、电流或电压)求和,并将结果(例如,输出)传递给模数转换器(adc)。例如,根据每条位线的各位单元的相应输出来计算每条位线的总和。
[0075]
在本公开的一个方面,在(对应于位线的)每一列处(而不是在每个位单元处)作出激活阈值调整,以改善面积效率。
[0076]
常规地,从权重和神经元激活被二值化为-1或 1([-1, 1]空间)的二进制神经网络实现开始,乘法和累加运算变成了(位单元中的)xnor运算,其具有xnor结果以及xnor结果的总体计数。例如,位线的总体计数包括该位线的每个位单元的正(例如,“1”)结果之和。adc通过使用激活阈值来像比较器一样起作用。例如,adc将总体计数与激活阈值或准则作比较。如果总体计数大于激活阈值,则位线的输出为“1”。否则,如果总体计数小于或等于激活阈值,则位线的输出为“0”。然而,消除每个位单元中的xnor功能及其对应的(诸)晶体管以减小存储器的大小是合乎期望的。用于调整激活阈值的特定技术如下:
[0077]
神经网络(例如,二进制神经网络)的卷积层可包括组织成阵列(例如,存储器内计算阵列)的单元(例如,位单元)。这些单元包括门控设备,这些门控设备中呈现的电荷水平表示该阵列的存储权重。具有m行(例如,输入向量的大小)和n列阵列的经训练xnor二进制神经网络包括mxn个二进制突触权重w
ij
(其是以二进制值[-1, 1]形式的权重)以及n个激活阈值cj。该阵列的输入可对应于字线,而输出可对应于位线。例如,输入激活xi(其是以二进制值[-1, 1]形式的输入)为x1,x2...xm。输入与对应权重之积的总和被称为加权和
[0078]
例如,当加权和大于激活阈值cj时,则输出等于一(1)。否则,输出等于零(0)。xnor二进制神经网络可以被映射到[0,1]空间中的非xnor二进制神经网络,同时消除每个位单元中的xnor功能及其对应的(诸)晶体管,以减小存储器的大小。在一个方面,可通过对每一列的激活阈值cj的如下调整来将xnor二进制神经网络映射到非xnor二进制神经网络:
[0079]
式1关于xnor二进制神经网络解说了输入与对应权重之积的总和同激活阈值cj之间的关系:
[0080][0081]
其中:
[0082]-xi(例如,x1,x2...xm)是以二进制值[-1, 1]形式的输入
[0083]-w
ij
是以二进制值[-1, 1]形式的权重(例如,mxn矩阵);
[0084]-yj(例如,y1,y2...yn)是位线的以二进制值[-1, 1]形式的输出
[0085]
常规地,存储器内计算二进制神经网络实现是通过在每个位单元处完成xnor运算、以及将针对每条位线的结果求和来达成的。然而,在每个位单元中添加xnor功能增大了布局面积并且增加了功耗。例如,存储器(例如,sram)中的每个单元中的晶体管数目从6或8增加到12。相应地,本公开的各方面涉及使用激活阈值调整来将人工神经网络(例如,二进制神经网络)的存储器内计算阵列的乘法和累加运算从[-1, 1]空间转变到[0,1]空间。
[0086]
将二进制神经网络从[-1, 1]空间(在情况下)转换到[0,1]空间,并且如下将各位线在[0,1]空间中的输出与不同阈值作比较(例如,下面讨论其推导):
[0087][0088]-是以二进制值[0,1]形式的输入
[0089]-是以二进制值[0,1]形式的权重
[0090]
其中对应于[0,1]空间中的可调整激活(或经调整的激活阈值),并且表示[0,1]空间中的转换偏置(例如,转换偏置电流参考)。
[0091]
如本文所描述地调整激活阈值允许避免/放弃在每个位单元中实施xnor功能性,同时获得与实施了xnor功能性情况下相同的结果。调整激活阈值使得能够使用更简单且更小的存储器位单元(例如,八晶体管(8t)sram)。
[0092]
下式(式3和式4)包括用于将[-1, 1]空间中的网络映射到[0,1]空间的变量:
[0093][0094][0095]
将式三(3)和式四(4)的值插入到式1中,则可以通过[-1, 1]空间与[0,1]空间之间的转换或转变来确定经调整的激活阈值。以下是经调整激活阈值的推导:
[0096][0097]
展开式5:
[0098][0099]
将各位线的以二进制值[-1, 1]形式的输出yj与[-1, 1]空间中的激活阈值cj作比较(如式1中所示)
[0100]
yj>cj[0101]
将式6中位线的输出值yj插入到式1中,以获得每位线在[0,1]空间中的总体计数
[0102][0103][0104][0105]
将式9中每位线在[0,1]空间中的总体计数映射到每位线在[-1, 1]空间中的总体计数则[-1, 1]空间中的n个激活阈值cj映射到可调整激活以及[0,1]空间中的转换偏置例如,为了达成[0,1]空间中的非xnor二进制神经网络而同时消除xnor功能及其对应的(诸)晶体管,使用可调整激活以及[0,1]空间中的转换偏置
[0106]
参照式9,使用函数来确定可调整激活例如,元素对应于可调整激活的激活值。可调整激活并不取决于激活输入xi。可调整激活还包括可被改变以调整激活阈值cj的预定参数(例如,二进制突触权重w
ij
)。
[0107]
函数被用于确定转换偏置转换偏置仅取决于输入激活。这意味着转换偏置会随着接收到新输入而不断变化。
[0108]
例如,当cj=0;并且时,则如下关于式9来计算和的值:
[0109][0110]
并且
[0111][0112]
类似地,当并且时,则如下关于式9来计算和的值:
[0113][0114]
并且
[0115][0116]
在一些方面,函数可被用于通过将以二进制值形式的权重设为等于1来从参考列(例如,不是这n条位线的一部分的位线,其被用作参考)生成转换偏置将等于1的值插入到式9中,结果所得的式子如下:
[0117][0118]
总体计数等于其可被用于对激活电流进行偏移。由此,仅单列被指定以确定整个存储器阵列的参考偏置值或转换偏置。
[0119]
图5解说了根据本公开的各方面的用于通过调整人工神经网络的存储器内计算阵列的列阈值来执行xnor等效运算的示例性架构500。该架构包括存储器阵列,其包括参考列502、比较器504、(与该存储器阵列的各列相对应的)位线506、以及(与该存储器阵列的各行相对应的)字线508。输入激活经由字线来接收。在一个示例中,输入激活xi的二进制值为10101011。
[0120]
乘法(例如,xiw
ij
)发生在每个位单元处,并且来自每个位单元的乘法结果通过位
线506来输出。与每条位线506相关联的求和设备510将存储器阵列的每个位单元输出求和,并将结果传递给比较器504。比较器504可以是图4中示出的模数转换器(adc)的一部分。在一个方面,同第一位线相关联的每个位单元的输出与同第二位线相关联的每个位单元的输出分开求和。
[0121]
在(与这些位线相对应的)每一列处(而不是在每个位单元处)进行激活阈值调整,以改善面积效率。例如,与第一位线相关联的每个位单元的输出的总和(或总体计数)作为第一输入被提供给比较器504。比较器的第二输入包括可调整激活与转换偏置(例如,转换偏置电流参考)之和。例如,转换偏置可被编程成用于每条位线506的准则(例如,参考列502)。当总体计数大于可调整激活与转换偏置之和时,则比较器504的输出(其对应于第一位线的输出)为“1”。否则,如果总体计数小于或等于可调整激活与转换偏置之和,则该比较器的输出(其对应于第一位线的输出)为“0”。由此,将每个位线总体计数同可调整激活与转换偏置之和进行比较。
[0122]
图6解说了根据本公开的各方面的用于通过调整人工神经网络的存储器内计算阵列的列阈值来执行xnor等效运算的方法600。如图6中示出的,在框602,可基于权重值和激活值的函数来调整针对该存储器内计算阵列的每一列所生成的激活阈值。在框604,基于来自至该存储器内计算阵列的输入向量中的输入值来计算转换偏置电流参考,该存储器内计算阵列被编程有权重值集合。经调整的激活阈值和该转换偏置电流参考中的每一者被用作用于确定该存储器内计算阵列的输出值的阈值。该存储器内计算阵列具有列和行两者。
[0123]
根据本公开的进一步方面,描述了一种用于通过调整人工神经网络的存储器内计算阵列的列阈值来执行xnor等效运算的装备。该装备包括:用于基于权重值和激活值的函数来调整该阵列的每一列的激活阈值的装置。该调整装置:包括深度卷积网络200、深度卷积网络350、卷积层232、soc 100、cpu 102、架构500、架构400、和/或卷积块354a。该装备进一步包括:用于基于来自输入向量中的输入值来计算转换偏置电流参考的装置。该计算装置包括:深度卷积网络200、深度卷积网络350、卷积层232、soc 100、cpu 102、架构500、架构400、和/或卷积块354a。
[0124]
该装备进一步包括:用于将位线总体计数同转换偏置电流参考与经调整激活阈值之和进行比较以确定位线的输出的装置。该比较装置包括:图5的比较器504、和/或图4的模数转换器(adc)。在另一方面,前述装置可以是被配置成执行由前述装置叙述的功能的任何模块或任何装备。
[0125]
以上所描述的方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或(诸)软件组件和/或(诸)模块,包括但不限于电路、专用集成电路(asic)、或处理器。一般而言,在附图中有解说的操作的场合,那些操作可具有带相似编号的相应配对装置加功能组件。
[0126]
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及诸如此类。另外,“确定”可包括接收(例如接收信息)、访问(例如访问存储器中的数据)、及类似动作。此外,“确定”可包括解析、选择、选取、确立及类似动作。
[0127]
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一个”旨在涵盖:a、b、c、a-b、a-c、b-c、以及a-b-c。
[0128]
结合本公开所描述的各种解说性逻辑框、模块、以及电路可用设计成执行本文中所描述的功能的通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列信号(fpga)或其他可编程逻辑器件(pld)、分立的门或晶体管逻辑、分立的硬件组件或其任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何市售的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,dsp与微处理器的组合、多个微处理器、与dsp核心协同的一个或多个微处理器、或任何其他此类配置。
[0129]
结合本公开所描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中实施。软件模块可驻留在本领域所知的任何形式的存储介质中。可使用的存储介质的一些示例包括随机存取存储器(ram)、只读存储器(rom)、闪存、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、寄存器、硬盘、可移动盘、cd-rom,等等。软件模块可包括单条指令、或许多条指令,且可分布在若干不同的代码段上,分布在不同的程序间以及跨多个存储介质分布。存储介质可被耦合到处理器以使得该处理器能该存储介质读取信息以及向该存储介质写入信息。在替换方案中,存储介质可被整合到处理器。
[0130]
本文所公开的方法包括用于实现所描述的方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。
[0131]
所描述的功能可在硬件、软件、固件或其任何组合中实现。如果以硬件实现,则示例硬件配置可包括设备中的处理系统。处理系统可以用总线架构来实现。取决于处理系统的具体应用和整体设计约束,总线可包括任何数目的互连总线和桥接器。总线可将包括处理器、机器可读介质、以及总线接口的各种电路链接在一起。总线接口可用于尤其将网络适配器等经由总线连接至处理系统。网络适配器可用于实现信号处理功能。对于某些方面,用户接口(例如,按键板、显示器、鼠标、操纵杆,等等)也可以被连接到总线。总线还可以链接各种其他电路,诸如定时源、外围设备、稳压器、功率管理电路以及类似电路,它们在本领域中是众所周知的,因此将不再进一步描述。
[0132]
处理器可负责管理总线和一般处理,包括对存储在机器可读介质上的软件的执行。处理器可用一个或多个通用和/或专用处理器来实现。示例包括微处理器、微控制器、dsp处理器、以及其他能执行软件的电路系统。软件应当被宽泛地解释成意指指令、数据、或其任何组合,无论是被称作软件、固件、中间件、微代码、硬件描述语言、或其他。作为示例,机器可读介质可包括随机存取存储器(ram)、闪存存储器、只读存储器(rom)、可编程只读存储器(prom)、可擦式可编程只读存储器(eprom)、电可擦式可编程只读存储器(eeprom)、寄存器、磁盘、光盘、硬驱动器、或者任何其他合适的存储介质、或其任何组合。机器可读介质可被实施在计算机程序产品中。该计算机程序产品可包括包装材料。
[0133]
在硬件实现中,机器可读介质可以是处理系统中与处理器分开的一部分。然而,如
本领域技术人员将容易领会的,机器可读介质或其任何部分可在处理系统外部。作为示例,机器可读介质可包括传输线、由数据调制的载波、和/或与设备分开的计算机产品,所有这些都可由处理器通过总线接口来访问。替换地或补充地,机器可读介质或其任何部分可被集成到处理器中,诸如高速缓存和/或通用寄存器文件可能就是这种情形。虽然所讨论的各种组件可被描述为具有特定位置,诸如局部组件,但它们也可按各种方式来配置,诸如某些组件被配置成分布式计算系统的一部分。
[0134]
处理系统可被配置为通用处理系统,该通用处理系统具有一个或多个提供处理器功能性的微处理器、以及提供机器可读介质中的至少一部分的外部存储器,它们都通过外部总线架构与其他支持电路系统链接在一起。替换地,该处理系统可包括一个或多个神经元形态处理器以用于实现本文中所描述的神经元模型和神经系统模型。作为另一替换方案,处理系统可以用带有集成在单块芯片中的处理器、总线接口、用户接口、支持电路系统、和至少一部分机器可读介质的专用集成电路(asic)来实现,或者用一个或多个现场可编程门阵列(fpga)、可编程逻辑器件(pld)、控制器、状态机、门控逻辑、分立硬件组件、或者任何其他合适的电路系统、或者能执行本公开通篇所描述的各种功能性的电路的任何组合来实现。取决于具体应用和加诸于整体系统上的总设计约束,本领域技术人员将认识到如何最佳地实现关于处理系统所描述的功能性。
[0135]
机器可读介质可包括数个软件模块。这些软件模块包括当由处理器执行时使处理系统执行各种功能的指令。这些软件模块可包括传送模块和接收模块。每个软件模块可以驻留在单个存储设备中或者跨多个存储设备分布。作为示例,当触发事件发生时,可以从硬驱动器中将软件模块加载到ram中。在软件模块执行期间,处理器可以将一些指令加载到高速缓存中以提高访问速度。可随后将一个或多个高速缓存行加载到通用寄存器文件中以供处理器执行。在以下述及软件模块的功能性时,将理解此类功能性是在处理器执行来自该软件模块的指令时由该处理器来实现的。此外,应领会,本公开的各方面产生对处理器、计算机、机器或实现此类方面的其它系统的机能的改进。
[0136]
如果以软件实现,则各功能可作为一条或多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,这些介质包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,此类计算机可读介质可包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁存储设备、或能用于携带或存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其他介质。另外,任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或无线技术(诸如红外(ir)、无线电、以及微波)从web网站、服务器、或其他远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl或无线技术(诸如红外、无线电、以及微波)就被包括在介质的定义之中。如本文所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多用碟(dvd)、软盘、和碟,其中盘(disk)常常磁性地再现数据,而碟(disc)用激光来光学地再现数据。因此,在一些方面,计算机可读介质可包括非瞬态计算机可读介质(例如,有形介质)。另外,对于其他方面,计算机可读介质可包括瞬态计算机可读介质(例如,信号)。以上的组合应当也被包括在计算机可读介质的范围内。
[0137]
由此,某些方面可包括用于执行本文中给出的操作的计算机程序产品。例如,此类
计算机程序产品可包括其上存储(和/或编码)有指令的计算机可读介质,这些指令能由一个或多个处理器执行以执行本文中所描述的操作。对于某些方面,该计算机程序产品可包括包装材料。
[0138]
此外,应当领会,用于执行本文中所描述的方法和技术的模块和/或其他恰适装置可由用户终端和/或基站在适用的场合下载和/或以其他方式获得。例如,此类设备能被耦合到服务器以促成用于执行本文中所描述的方法的装置的转移。替换地,本文中所描述的各种方法能经由存储装置(例如,ram、rom、诸如压缩碟(cd)或软盘之类的物理存储介质等)来提供,以使得一旦将该存储装置耦合到或提供给用户终端和/或基站,该设备就能获得各种方法。此外,可利用适于向设备提供本文中所描述的方法和技术的任何其他合适的技术。
[0139]
将理解,权利要求并不被限于以上所解说的精确配置和组件。可在以上所描述的方法和装置的布局、操作和细节上作出各种改动、更换和变形而不会脱离权利要求的范围。
再多了解一些

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

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

相关文献