掌桥专利:专业的专利平台
掌桥专利
首页

人工神经网络的训练

文献发布时间:2023-06-19 13:46:35


人工神经网络的训练

背景技术

本发明一般地涉及人工神经网络的训练。

人工神经网络(Artificial Neural Network,ANN)已被开发为以受神经系统的生物结构所启发的方式执行计算任务。这些网络基于生物系统的基本原理,由此神经元经由突触互连,突触在神经元之间传递加权信号。ANN基于包括具有插入的突触层的一系列神经元层的逻辑结构。突触层存储权重,用于对在其相邻神经元层中的神经元之间传播的信号进行加权。给定层中的神经元n

ANN已成功应用于各种复杂的分析任务,例如语音和图像识别,例如基于MNIST(Modified National Institute of Standards and Technology)数据集的手写数字的分类。ANN经历训练阶段,在该阶段中确定各个突触层的权重集。在迭代训练过程中,网络暴露于训练数据集(例如,手写数字的图像数据),在该过程中当网络从训练数据“学习”时,权重被重复更新。训练涉及信号传播和权重更新计算操作的迭代循环,其中网络权重被逐渐更新,直到达到收敛条件。然后,具有经由训练操作定义权重的所得到的训练网络可以应用于新的(未见的)数据,以执行所讨论应用的推断任务。

ANN的训练可能具有多个神经元层和数百万个突触权重,是计算密集型和时间密集型的任务。已经提出了使用基于忆阻(memristive)突触阵列的模拟乘法-累加单元的训练方法来缓解这些问题,其中突触权重存储在例如PCM(Phase Change Memory)器件等忆阻器件的模拟电导值中。这些单元采用忆阻器件的交叉阵列,忆阻器件连接在行线和列线之间,用于将信号施加到器件,其中每个器件实施具有对应于(可变)器件电导的权重的突触。可以利用这些乘法-累加阵列的并行计算能力在具有O(1)计算复杂度的模拟域中执行廉价的向量-矩阵计算(如根据需要生成在突触层上传播的累加-加权信号)。这种将训练期间突触权重的更新累加在高精度数字累加器中的训练方法在本领域中是已知的。在本领域中还已知一种模拟乘法-累加单元,其中1位权重以数字方式存储在二进制SRAM(StaticRandom-Access Memory)单元中用于神经网络推断计算。

仍然需要进一步的神经网络训练系统来降低复杂性,同时保持训练的准确性。

发明内容

根据本发明的至少一个实施例,提供了一种用于训练人工神经网络的方法,该人工神经网络具有具备插入的突触层的一系列神经元层,每个突触层具有相应的N位定点权重集{w},用于经由信号传播和权重更新计算操作的迭代循环来对在其相邻神经元层之间传播的信号进行加权。该方法包括,对于每个突触层,将每个N位权重w的多个p个最低有效位存储在数字存储器中,并将每个权重w的接下来n位部分存储在包括数字存储器元件阵列的模拟乘法-累加单元中。每个数字存储器元件包括n个二进制存储单元,用于存储权重的n位部分的各个位,其中n≥1且(p+n+m)=N,其中m≥0对应于突触层权重中的最高有效零位的限定数量。该方法还包括通过将突触层将要加权的信号提供给乘法-累加单元来执行信号传播操作,以获得取决于所存储的权重的n位部分的累加加权信号,以及在数字处理单元(可操作地耦合到数字存储器和乘法-累加单元)中执行权重更新计算操作,以根据由神经元层传播的信号来计算突触层的更新权重。该方法还包括周期性地对数字存储器和乘法-累加单元重新编程以存储更新权重的位。

在体现本发明的训练方法中,以具有训练操作的期望精度的N位定点格式定义权重。对于每个N位权重w,将权重的(至少)p个最低有效位存储在数字存储器中。接下来n位部分(即,n个次最高有效位)被以数字方式存储在模拟乘法-累加单元的数字存储器元件的二进制存储单元中。该n位部分对应于权重w的精度降低的权重值。在信号传播操作期间,使用这些精度降低的权重来执行乘法累加操作。在权重更新操作中,更新的突触层的N位权重在数字处理单元中进行计算。因此,以数字精度执行权重更新计算,并且周期性地对数字存储器和乘法-累加单元重新编程以存储更新权重的适当位(即,分别为p个最低有效位和n位部分)。通过使用存储在数字存储器和乘法-累加阵列的数字元件的组合中的N位定点权重,该方法将权重更新操作中的准确性优点与用于信号传播的快速、低复杂度的向量矩阵计算相结合。以精度降低的权重执行向量矩阵运算,降低了复杂性,从而降低了乘法-累加单元的功率和片上面积。因此,本发明的实施例提供了基于乘法-累加阵列的快速、高效的ANN训练方法。

对于突触层,参数m可以被定义为m=0,而不管任何给定层的权重中最高有效零位的实际数量。这给出了一种简单的实施方式,其中(p+n)=N。在本发明的其他实施例中,可以根据突触层的权重{w}中的最高有效零位的数量来定义突触层的m的初始值,然后随着权重集{w}中的最高有效零位的数量的变化,m的值可以在训练期间动态地调整。在本发明的这些实施例中,权重w的至少p=(N-n-m)个最低有效位存储在数字存储器中,并且随着m的值在训练期间进行调整,存储在乘法-累加单元中的n位部分被重新定义并且动态地重新编程。这为各种网络层提供了精度降低的权重的更优定义,从而提高了训练准确性。

在本发明的一些实施例中,每个N位权重仅有p个最低有效位存储在数字存储器中。数字存储器可以分布在乘法-累加单元中,使得每个N位权重存储在单位单元中,该单位单元包括数字存储器的p位(存储该权重的p个最低有效位)和数字存储器元件(存储该权重的n位部分)。这为基于具有小占用空间的单位单元的组合数字/模拟存储单元提供了面积高效的实施方式。

在本发明的其他实施例中,每个N位权重的所有N位可以存储在提供数字存储器的数字存储单元中。这提供了在数字存储器中执行权重更新的高效操作,允许对乘法累加单元中精度降低的权重进行不频繁的更新。例如,只有在网络已经处理了许多批次的训练示例之后,才可以更新精度降低的权重。为了进一步提高权重更新操作的效率,只有在训练期间在数字存储器中该权重更新期间第(N-p)位发生位溢出时,更新权重的n位部分才可以从数字存储器复制到乘法-累加单元。

在所有突触层的N位权重都存储在数字存储器中的本发明实施例中,当信号传播通过网络时,乘法-累加单元可以重新用于不同层的精度降低的权重。随着连续的突触层集对于信号传播变得活跃,那些层的权重的n位部分可以动态地存储在数字存储器元件的阵列中。

本发明的至少一个其他实施例提供了用于在信号传播和权重更新计算操作的迭代训练循环中实施人工神经网络的装置。该装置包括存储每个突触层的每个N位权重w的多个p个最低有效位的数字存储器,以及用于存储突触层的每个权重w的接下来n位部分的模拟乘法-累加单元。如上所述,乘法-累加单元包括数字存储器元件阵列,每一个数字存储器元件包括n个二进制存储单元。该装置还包括数字处理单元,其可操作地耦合到数字存储器及乘法-累加单元。在信号传播操作中,数字处理单元适于将每个突触层将要加权的信号提供给乘法-累加单元,以获得取决于所存储的权重的n位部分的累加加权信号。数字处理单元还适于执行权重更新计算操作,以根据由神经元层传播的信号来计算每个突触层的更新权重,并且控制数字存储器和乘法-累加单元的周期性重新编程,以存储更新权重的适当位。

根据一个方面,提供了一种用于训练人工神经网络的方法,该人工神经网络具有具备插入的突触层的一系列神经元层,每个突触层具有相应的N位定点权重集{w},用于经由信号传播和权重更新计算操作的迭代循环来对在其相邻神经元层之间传播的信号进行加权。该方法包括,对于每个突触层:将每个N位权重w的多个p个最低有效位存储在数字存储器中;并将每个权重w的接下来n位部分存储在包括数字存储器元件阵列的模拟乘法-累加单元中,每个数字存储器元件包括n个二进制存储单元,用于存储权重的n位部分的各个位,其中n≥1且(p+n+m)=N,其中m≥0对应于突触层权重中的最高有效零位的限定数量;通过将突触层将要加权的信号提供给乘法-累加单元来执行所述信号传播操作,以获得取决于所存储的权重的n位部分的累加加权信号;以及在数字处理单元(可操作地耦合到数字存储器和乘法-累加单元)中执行权重更新计算操作,以根据由神经元层传播的信号来计算突触层的更新权重;以及周期性地对数字存储器和乘法-累加单元重新编程以存储更新权重的位。

根据另一方面,提供了一种用于实施人工神经网络的装置,该人工神经网络具有具备插入的突触层的一系列神经元层,每个突触层具有相应的N位定点权重集{w},用于经由信号传播和权重更新计算操作的迭代循环来对在其相邻神经元层之间传播的信号进行加权,该装置包括:存储每个突触层的每个N位权重w的多个p个最低有效位的数字存储器;存储突触层的每个权重w的接下来n位部分的模拟乘法-累加单元,乘法-累加单元包括数字存储器元件阵列,每个数字存储器元件包括n个二进制存储单元,用于存储权重的n位部分的各个位,其中n≥1且(p+n+m)=N,其中m≥0对应于突触层权重中的最高有效零位的限定数量;以及可操作地耦合到数字存储器和乘法-累加单元的数字处理单元,数字处理单元适于:在信号传播操作中,通过将每个突触层将要加权的信号提供给乘法-累加单元,以获得取决于所存储的权重的n位部分的累加加权信号;执行权重更新计算操作,以根据由神经元层传播的信号来计算每个突触层的更新权重;以及控制数字存储器和乘法-累加单元的周期性的重新编程以存储更新权重的所述位。

附图说明

下面将参考附图,通过说明性和非限制性示例,更详细地描述本发明的实施例:

图1是示例性ANN的示意图;

图2是根据本发明实施例的用于在训练操作中实施ANN的装置的示意性框图;

图3指示了根据本发明实施例的ANN层的权重w的位结构;

图4示出了根据本发明实施例的图2的装置的乘法-累加单元中的数字存储器元件阵列的结构;

图5指示了根据本发明实施例的由图2装置执行的训练方法的步骤;

图6示出了图2装置的实施例中的存储器装置的结构;

图7示出了根据本发明实施例的图6装置中的模拟SRAM乘法-累加阵列的更详细结构;

图8示出了根据本发明实施例的图7阵列中的SRAM单位单元的结构;

图9示出了根据本发明实施例的图2装置的另一实施例中的存储器装置;

图10示出了根据本发明实施例的图9装置中的组合数字/模拟SRAM单元的更详细结构;

图11示出了图2装置的又一实施例中的存储器装置;以及

图12示出了该装置的模拟SRAM乘法-累加阵列的另一实施例。

具体实施方式

图1示出了根据本发明的一个实施例的全连接ANN的一个示例的逻辑结构。ANN1包括一系列具有插入的突触层的神经元层。在示出的简单示例中,网络具有三个神经元层:接收网络输入信号的输入神经元的第一层N

输入层神经元可以简单地传输它们接收到的输入数据信号作为N

虽然图1示出了全连接网络的简单示例,但是一般任何给定层中的神经元可以连接到下一层中的一个或多个神经元,并且网络可以包括隐藏神经元的一个或多个(通常多达30个或更多个)连续层。神经元层可以包括一个或多个偏置神经元(未示出),其不接收输入信号,但是将偏置信号传输到下一个神经元层。其他计算也可以与一些ANN层相关联。在一些ANN中,例如卷积神经网络(Convolutional Neural Network,CNN),神经元层可以包括神经元的三维体积,在突触层中具有相关联的三维权重阵列,尽管信号传播计算仍然可以按照矩阵-向量运算来表达。

ANN训练涉及信号传播和权重更新计算操作的迭代循环,以响应作为网络输入提供的训练示例的合集。例如,在手写数字的监督学习中,来自MNIST数据集的训练示例(其中标签(这里是0到9的数字类别)是已知的)被重复输入到网络中。对于每个训练示例,信号传播操作包括前向传播操作和后向传播操作,在前向传播操作中,信号从第一个神经元层向前传播到最后一个神经元层,在后向传播操作中,误差信号从最后一个神经元层通过网络后向传播。在前向传播操作中,通过如上所述的网络,激活信号x被逐层加权并传播。对于输出层中的每个神经元,将前向传播后的输出信号与当前训练示例的预期输出(基于已知标签)进行比较,以获得该神经元的误差信号ε。输出层神经元的误差信号通过网络的除输入层之外的所有层进行后向传播。在相邻神经元层之间后向传播的误差信号由插入的突触层的适当权重进行加权。因此,后向传播导致计算除输入层之外的每个神经元层的误差信号。然后,基于信号传播操作中神经元层传播的信号计算每个突触层的权重的更新。一般而言,可以针对给定迭代中的一些或所有权重计算权重更新。例如,一层中的神经元i与下一层中的神经元j之间的权重w

Δw

其中x

图2示出了根据优选实施例的用于在训练操作中实施ANN 1的装置。装置2包括存储器装置3和数字处理单元4,该数字处理单元在本文通过系统总线5可操作地耦合到存储器装置3。存储器装置3包括数字存储器(示意性地指示为6)和模拟乘法-累加(Multiply-Accumulate,MAC)单元7。如下文进一步描述的,MAC单元7包括至少一个基于二进制存储单元的数字存储器元件阵列。存储器控制装置,指示为存储器控制器8,控制数字存储器6和MAC单元7的操作。数字处理单元4包括中央处理单元(CPU)9和存储器10。存储器10存储一个或多个程序模块11,程序模块11包括可由CPU 9执行的程序指令,以实施下文描述操作的功能步骤。

DPU 4在迭代训练过程中控制装置2的操作。DPU适于生成由神经元层在前向传播和后向传播操作中传播的激活信号和误差信号,并且执行训练操作的权重更新计算。网络的各个突触层的权重集{w}存储在存储器装置3中。以N位定点格式定义权重w,其中N根据特定训练操作所需的精度来选择。在本发明的这个实施例中,N=32给出了高精度32位定点权重。然而,在本发明的其他实施例中,可以不同地设置N,例如N=64。

在装置2的操作中,突触层的N位权重w被存储在数字存储器6和MAC单元7的数字存储器元件的组合中。具体地,参考图3,对于每个突触层,在数字存储器6中存储每个权重w的至少多个p个最低有效位(LSB,Least-Significant Bit)。每个权重w的接下来n位部分(即第(p+1)位到第(p+n)位)至少在信号传播计算需要时被存储在MAC单元7中。具体地,每个n位部分被存储在MAC单元7中的数字存储器元件阵列中。这些数字存储器元件中的每一个都包括(至少)n个二进制存储单元,用于存储权重的n位部分的各个位。对于不同的突触层,n的值可以不同。然而,一般而言,n≥1且(p+n+m)=N,其中m≥0对应于突触层权重中的最高有效零位的限定数量。m的值因此可以在突触层之间变化,也可以如下文描述针对任何给定层都定义为m=0,在这种情况下(p+n)=N。因此,可以看出每个权重w的n位部分定义了该权重的精度降低的权重值,在下文用W表示。

根据一个实施例,图4示出了MAC单元7中存储突触层的精度降低的权重W的数字存储器元件阵列的逻辑结构。阵列15可以方便地由如图所示连接在行线与列线之间的数字存储器元件16(具有下文描述的相关联模拟电路)的交叉阵列实施。该示例示出了存储图1ANN中的突触层S

在突触层的信号传播操作中,由DPU 4生成的信号经由总线5提供给存储器装置3,其中控制器8将信号提供给存储精度降低的权重W

虽然描述了装置2的示例性实施例,但是DPU 4可以包括一个或多个可以由一个或多个微处理器实施的CPU。存储器10可以包括一个或多个数据存储实体,并且可以包括主存储器,例如DRAM(动态随机存取存储器)和/或与CPU 9物理上分离的其他存储器,以及高速缓存和/或CPU 9本地的其他存储器。一般而言,DPU 4可以由一个或多个(通用或专用)计算机/可编程数据处理装置实施,由DPU 4执行的处理操作的功能步骤一般可以通过硬件或软件或其组合来实施。控制器8还可以包括一个或多个处理器,处理器能够由软件指令配置以控制存储器装置2执行本文描述的功能。在本发明的一些实施例中,DPU 4和/或控制器8可以包括电子电路,例如可编程逻辑电路、现场可编程门阵列(Field-Programmable GateArray,FPGA)或可编程逻辑阵列(Programmable Logic Array,PLA),用于执行程序指令以实施所描述的功能。在参考流程图描述本发明的实施例的情况下,将理解,流程图的每个块和/或流程图中的块的组合可以由计算机可执行程序指令来实施。程序指令/程序模块可以包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、部件、逻辑、数据结构等。流程图中的块或块的组合也可以由基于专用硬件的系统来实施,该系统执行指定的功能或动作或执行专用硬件和计算机指令的组合。

系统总线5可以包括若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(Industry Standard Architecture,ISA)总线、微通道体系结构(Micro ChannelArchitecture,MCA)总线、增强型ISA(Enhanced ISA,EISA)总线、视频电子标准协会(VideoElectronics Standards Association,VESA)局部总线和外围部件互连(PeripheralComponent Interconnect,PCI)总线。

MAC单元的存储器元件16中的二进制存储单元可以包括SRAM单元、DRAM(动态RAM)单元、MRAM(磁阻RAM)单元、浮栅单元、RRAM(电阻RAM)单元,或者更一般地包括用于以数字方式存储精度降低的权重的各个位的任何二进制单元。下文详细描述基于SRAM单元的模拟MAC阵列的示例性实施方式。一般而言,MAC单元7可以包括一个或多个模拟乘法-累加阵列,其中的每一个可以包括数字存储器元件的一个或多个交叉阵列。在任何时间,MAC单元7可以存储一个或多个突触层的精度降低的权重W的全部或其子集。在本发明的一些实施例中,每个突触层的所有权重W可以存储在MAC单元的相应阵列中。在其他实施例中,MAC单元可以仅存储当前在信号传播操作中活跃的突触层集(一个或多个)的权重W。然而,对于每个突触层S,由装置2实施的训练方法涉及图5的流程图中所指示的基本步骤。

如图5的步骤20所指示,突触层的每个高精度权重w的至少p个LSB被预先存储在数字存储器6中。如步骤21所指示,将该层权重的随后n位部分(即,精度降低的权重W)存储(预先存储或动态加载)到MAC单元7。步骤22表示突触层的信号传播操作。如参考图4所解释的,对于前向传播,将激活信号x提供给MAC阵列以获得取决于精度降低的权重W的累加加权信号。在随后的后向传播操作中,误差信号ε被提供给阵列以获得取决于权重W的累加加权信号。这些乘法-累加操作中生成的信号被返回至DPU4。在步骤23中,DPU 4计算突触层的更新N位权重w。这里,基于如上文所描述的由神经元层传播的信号为相应权重w计算权重更新Δw,并且每个权重被更新到w=w+Δw。在步骤24中,DPU 4确定是否已经达到训练操作的预定收敛条件。(收敛可以以各种已知方式定义,并且特定的收敛条件与本文描述的操作正交)。如果没有达到(步骤24处的“N”),则操作进行到步骤25,其中DPU 4控制存储器装置4中的权重w的重新编程。如下文进一步解释的,在任何给定的迭代中,取决于实施方式,该步骤可以涉及对存储在数字存储器6中的或者存储在数字存储器6和MAC单元7两者中的权重的位重新编程。然而,数字存储器6和MAC单元7在训练期间都被周期性地重新编程(在相同或不同时间)以存储更新权重w的适当位。然后,操作返回到步骤22,用于下一个训练样本。该过程迭代直到检测到收敛(步骤24处的“Y”),由此训练操作终止。

利用上述方法,可以在DPU 4中高精度(这里是32位精度)地计算权重更新,以确保ANN训练的准确性。此外,使用以数字方式存储在模拟MAC单元中的精度降低的权重W,可以有效地执行用于信号传播的乘法-累加计算。这里使用精度降低的权重降低了MAC单元的复杂度、功耗和片上面积。n的值可以在突触层之间变化,提供每层所需精度的权重W以优化训练。例如,在逐层的基础上,n的值可以被设置为1≤n≤8。根据优选实施例,体现本发明各方面的方法因此提供了人工神经网络的高效训练。

图6是第一实施例中图2的存储器装置3的结构的示意性表示。对于该实施例,对于所有突触层,参数m定义为m=0,由此(p+n)=N,在该示例中N=32。在本实施例的存储器装置30中,数字存储器由数字存储器(这里是SRAM)单元31提供,其仅存储突触层的每个32位权重w的p=(32-n)个LSB。由各个权重w的剩余最高n个有效位(Most-Significant Bit,MSB)定义的精度降低的权重W被存储在MAC单元的SRAM模拟MAC阵列33的数字存储器元件32中。数字存储单元31和MAC单元7共用的全局存储器控制器34,作用于存储单元以及到/来自用于信号传播的MAC阵列33的信号的输入/输出的权重的编程。在每次权重更新计算(图5的步骤23)之后,控制器34通过对数字SRAM 31中权重的p个LSB以及MAC阵列33中权重的n位部分重新编程,来存储更新的32位权重w+Δw。

图7是模拟MAC阵列33的实施例的更详细图示。阵列33包括SRAM单位单元35的行和列。每一行提供了存储n位精度降低权重W的数字存储器元件32。n位中的每一位存储在元件的相应单位单元35中。每个单位单元35包含数字存储器元件32的二进制SRAM单元和用于实施模拟MAC阵列的模拟电路。这些单位单元(以下称为“模拟”SRAM单元)的结构如图8所示出。每个单位单元35包括二元SRAM单元38、电容器39和如图示出连接的开关40、41a和41b。每个单位单元中的电容器39的大小取决于与存储在相连的二进制单元38中的位相对应的2的幂。图7中单位单元35的第一列存储每个n位权重的LSB。如果这些单元中的电容器39具有电容C,则:单位单元的第二列中的电容器39具有电容(2

在阵列32中的乘法-累加操作中,元件32的SRAM单元38连接到图4阵列的适当行线r

图9示出了存储器装置的另一实施例。在该存储器装置45中,数字存储器分布在MAC单元阵列中。突触层的每个N位权重w被存储在组合的数字/模拟SRAM MAC阵列47的单位单元46中。每个单位单元46包括数字SRAM的p=(32-n)位,存储该权重的p个LSB,以及n个模拟SRAM单元35,其对应于上文所描述的MAC阵列33的行。该n个模拟SRAM单元的二进制SRAM单元38提供存储n位精度降低的权重W的n位数字存储器元件32。存储器控制器48控制对如上文所描述的用于乘法-累加操作的单位单元46的模拟SRAM单元35的访问,以及对单位单元46的数字SRAM的访问。根据本发明的一个实施例,在图10中更详细地示出了组合MAC阵列47的结构。该实施例的组合数字/模拟单位单元为高面积效率的实施方式提供了小的片上占用空间。

图11示出存储器装置的又一实施例的结构。与图6那些部件相对应的部件由类似的附图标记指示。该存储器装置50包括数字存储器(这里是SRAM)单元51,其存储突触层的每个32位权重w的所有位。如上文所描述,将n位精度降低的权重W存储在SRAM模拟MAC阵列33的数字存储器元件32中。如前文所描述,标准SRAM控制器52控制数字SRAM单元51,MAC控制器53控制MAC阵列33。在该实施例中,每次权重更新计算(图5的步骤23)之后,SRAM控制器52将存储在数字单元51中的32位权重w重新编程为更新的权重w+Δw。因此,在数字SRAM 51中累加权重更新。SRAM控制器52周期性地(例如,在已经为一批训练示例执行了权重更新操作之后)经由MAC控制器53将n位精度降低的权重W从单元51复制到MAC单元。因此,更新后的32位权重的n位部分复制到MAC阵列33中存储对应精度降低的权重的数字存储器元件32。在本文描述的本发明实施例中,存储器控制器52可以适于只有在该批权重更新操作中对该权重的更新期间第(N-p)位发生位溢出时,才将更新权重w的n位部分复制到MAC单元。这减少了用于更新精度降低的权重的编程操作的数量,并且因此减少了SRAM 51和MAC单元之间的数据传输。

在图6和图9的存储器装置中,每个突触层的精度降低的权重W存储在MAC单元的相应阵列中。利用图11的存储器结构,随着信号传播的进行,给定的MAC阵列可以被重新用于不同突触层的权重W。具体地,在DPU4的控制下,随着信号传播操作的进行和不同的层变得活跃,SRAM控制器52可以动态地存储MAC阵列中连续的活跃突触层集(一个或多个)的权重w的n位部分。MAC阵列可以用于为一批训练示例在活跃层上执行传播,然后可以使用精度降低的权重为随后的活跃层集重新编程。

在图11实施例的修改中,如果突触层的权重矩阵对于MAC阵列而言太大而不能存储该层的所有权重W,则可以通过在MAC阵列中连续存储权重W的块(有效子矩阵)、为每个块执行乘法累加操作、然后为DPU 4中的所有块累加所得信号来执行信号传播操作。

图12示出了用于存储器装置2中的模拟MAC阵列的另一实施例。除了阵列55的所有模拟SRAM单元56包含具有相同电容C的电容器外,该阵列55的部件一般对应于图7的部件。该实施例的阵列控制电路包括57所指示的数字移位相加电路。该电路在乘法-累加操作中对列线上的输出执行移位相加操作,以适应存储在单元56的不同列中的位的2的不同次幂。在列线输出的数字化之后,电路57:将第n列的数字输出值移位(n-1)位;将第(n-1)列的数字输出值移位(n-2)位;等等。然后,在电路57中加入来自所有n列的结果,以获得图4的逻辑阵列配置中的存储器元件列中的n位权重的乘法-累加操作的结果。MAC阵列55也可以集成在与图10的阵列结构相对应的组合数字/模拟阵列结构中。

根据网络,不同突触层中的权重可以跨越不同的范围,并且使用N位权重的相同n位来表示精度降低的权重W可能不是最优的。这可以通过根据每个突触层的权重中的最高有效零位的数量来定义每个突触层参数m(见图3)的初始值来解决。具体地,如果层中的所有权重w具有M(M>0)个最高有效零位,则可以将m设置为初始值m=M。然后,存储在数字存储器中的(至少)多个p个LSB被定义为p=(N-n-m)。在训练期间,在存储器控制器8的控制下,根据突触层的权重中的最高有效零位的数量的变化来调整m的值。响应于调整m的值,根据调整后的m的值重新定义突触层的权重的n位部分。因此,图3中的n位部分有效地沿着N位权重值而“滑动”,因为m随着权重{w}中的零MSB的数量而变化。然后,当需要存储重新定义的权重的n位部分时,存储器控制器8对MAC单元重新编程。例如,重新定义的n位部分可以从存储于存储器装置的数字SRAM中的N位权重复制。

对于突触层,当m>0时,基于MAC阵列中n位权重值的乘法-累加操作的结果可以在提供给DPU 4之前在存储器控制器8中按2

当然,可以对所描述的本发明的示例性实施例进行许多改变和修改。例如,虽然在MAC单元7中执行乘法-累加运算以用于上文的前向传播和后向传播操作,但是可以设想本发明的实施例,其中MAC单元7仅用于前向传播和后向传播中的一个。例如,前向传播可以使用MAC单元7来执行,而后向传播计算在DPU 4中完成。

流程图的步骤可以以与示出的顺序不同的顺序来实施,并且在适当的情况下可以并行地执行一些步骤。一般而言,在本文参考体现本发明的各方面的方法来描述特征的情况下,可以在体现本发明的方面的装置中提供对应的特征,反之亦然。

本发明的各种实施例的描述已经出于说明的目的而呈现,但并不旨在穷举或限于所公开的本发明的实施例。在不背离本发明所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说将是显而易见的。选择本文所使用的术语以最好地解释本发明的实施例的原理、实际应用或对市场上发现的技术的技术改进,或为了使本领域的其他普通技术人员能够理解本文所公开的本发明的实施例。

本发明可以是系统、计算机实施方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,计算机可读存储介质上具有用于使处理器执行本发明的方面的计算机可读程序指令。

计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或上述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码装置(例如,打孔卡或其上记录有指令的凹槽中的凸起结构),以及上述的任何合适的组合。如本文所使用的,计算机可读存储介质不应被解释为本身是瞬态信号,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲),或通过导线传输的电信号。

本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(Instruction-Set-Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,该编程语言包括面向对象的编程语言(例如Smalltalk、C++等)以及传统的过程式编程语言(例如“C”编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,通过使用因特网服务提供商的因特网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路,可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以个性化电子电路,来执行本发明的方面。

本文参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。应当理解,流程图和/或框图的每个块以及流程图和/或框图中的块的组合,可以由计算机可读程序指令来实施。

这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生产机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实施流程图和/或框图的一个或多个块中指定的功能/动作的组件。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实施流程图和/或框图的一个或多个块中指定的功能/动作的方面的指令。

计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实施的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实施流程图和/或框图的一个或多个块中指定的功能/动作。

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这点上,流程图或框图中的每个块可以表示指令的模块、段或部分,其包括用于实施指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,块中所提及的功能可以不按图中所提及的顺序发生。例如,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图的每个块以及框图和/或流程图中的块的组合,可以由专用的基于硬件的系统来实施,该系统执行指定功能或动作,或执行专用硬件和计算机指令的组合。

本发明的各种实施例的描述已经出于说明的目的而呈现,但并不旨在穷举或限于所公开的本发明的实施例。在不背离本发明所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说将是显而易见的。选择本文所使用的术语以最好地解释本发明的实施例的原理、实际应用或对市场上发现的技术的技术改进,或为了使本领域的其他普通技术人员能够理解本文所公开的本发明的实施例。

技术分类

06120113803317