首页 / 专利库 / 人工智能 / 人工智能 / 机器学习 / 人工神经网络 / 前馈神经网络 / 往复地缩放神经元的连接权重和输入值来挫败硬件限制

往复地缩放神经元的连接权重和输入值来挫败硬件限制

阅读:1025发布:2020-05-30

专利汇可以提供往复地缩放神经元的连接权重和输入值来挫败硬件限制专利检索,专利查询,专利分析的服务。并且根据训练 算法 训练神经网络,该训练算法可以 迭代 地执行以下操作。从 存储器 中调用缩放的连接权重值。这些值跨越 硬件 允许的有限范围内或与之兼容的初始范围。基于调用的值,学习有效的连接权重值。学习的值跨越不同于初始范围的有效范围。随着学习的进行,通过缩放学习的值来更新缩放的连接权重值,以便更新的值跨越有限范围内的最终范围。考虑到下一迭代步骤,训练算法指示将更新的缩放的值存储在存储器中。,下面是往复地缩放神经元的连接权重和输入值来挫败硬件限制专利的具体信息内容。

1.一种训练在硬件中实现的神经网络的计算机实现的方法,所述硬件仅允许网络的人工神经元的连接权重值的有限范围,后者包括一个或多个神经元隐藏层,其中训练根据训练算法执行,以便迭代地执行步骤,步骤包括以下每个:
存储器调用缩放的连接权重值,该值跨越与所述有限范围兼容的初始范围;
基于调用的缩放的连接权重值,学习新的缩放的连接权重值,由此,对于所述一个或多个隐藏层的每层以及对于所述每层的每个神经元:
基于逆缩放系数1/α,对所述每个神经元的输入值进行逆缩放,所述逆缩放系数1/α是根据其对为所述每个神经元调用的连接权重值进行缩放的缩放系数α的逆,从而使得由所述每个神经元输出的值保持不受所述缩放系数α的影响,以及
更新为所述每个神经元调用的缩放的连接权重值,从而使得更新的值跨越与所述有限范围兼容的最终范围,而相应的未缩放的值跨越不同于所述最终范围的有效范围;和指示在存储器上存储更新的缩放的连接权重值。
2.根据权利要求1所述的方法,其中:
学习新的缩放的连接权重值还包括,对于所述每个神经元和对于与所述每个神经元有关的每个缩放的连接权重值,用等于所述缩放系数α的平方的平方缩放系数α2来缩放到权重的梯度,以便更新所述每个缩放的连接权重值。
3.根据权利要求2所述的方法,其中:
对于所述一个或多个隐藏层的每层以及对于所述每层的每个神经元,以这样的方式学习新的缩放的连接权重值:
基于相同的逆缩放系数1/α逆缩放所述每个神经元的输入值,所述逆缩放系数1/α是根据其对为所述每层调用的连接权重值进行缩放的相同缩放系数α的逆;和用等于所述相同缩放系数α的平方的相同平方缩放系数α2来缩放与所述每层有关的到权重的梯度。
4.根据权利要求3所述的方法,其中
训练算法还使得对于所述每层,基于所述每层的缩放的连接权重的当前值自动更新缩放系数α。
5.根据权利要求4所述的方法,其中
所述缩放系数α根据由所述每层的连接权重值的所述有限范围施加的极限l和所述当前值的标准偏差σ来自动更新。
6.根据权利要求5所述的方法,其中
通过将等于lper/(βσ)的值分配给缩放系数α来自动更新所述缩放系数α,其中lper是由所述有限范围施加的所述每层的任何连接权重的最大值,并且β是常数。
7.根据权利要求6所述的方法,其中,所述方法还包括,在自动更新所述缩放系数α之后,通过缩放相应的未缩放的值并根据所述最大值lper剪切结果值来更新所述每层的缩放的连接权重值。
8.根据权利要求5所述的方法,其中
通过将等于 的值分配给缩放系数α来自动更新所述缩放系数α,其中:
lmean是由所述每层的神经元的连接权重值的所述有限范围施加的平均绝对权重极限,N是所述每层中的连接权重值的数量,并且
是所述每层的第i个权重值,被剪切成从–βσ到βσ的值的间隔。
9.根据权利要求4所述的方法,其中
所述缩放系数α在以下之一处被自动更新:
训练的迭代步骤的间隔;和
在训练的每个时期。
10.根据权利要求1所述的方法,其中
根据概率舍入方案,或随机舍入方案更新对为所述每个神经元调用的缩放的连接权重值,由此基于概率函数p(.),任何更新的权重值被舍入到给定分辨率∈的倍数值。
11.根据权利要求10所述的方法,其中
所述概率舍入方案是根据以下公式来舍入值x的值roundp(x,∈):
其中
12.根据权利要求1所述的方法,其中
所述神经网络由光学神经形态系统实现。
13.根据权利要求1所述的方法,其中
所述神经网络由电阻处理单元实现。
14.根据权利要求1所述的方法,其中
所述神经网络是前馈神经网络
15.一种计算机化硬件系统,包括:
存储器;和
硬件,被设计成实现神经网络,所述神经网络包括一个或多个神经元隐藏层,每个神经元隐藏层涉及一个或多个乘法,其中所述硬件通过设计仅允许网络的人工神经元的连接权重值的有限范围,由此缩放的连接权重值被存储在存储器中,从而使得这些值跨越与所述有限范围兼容的范围,
所述硬件还被配置为将神经网络实现为包括在乘法门的输入分支上的逆缩放节点的网络,所述逆缩放节点适于基于逆缩放系数1/α来逆缩放神经元中的每一个神经元的输入值,所述逆缩放系数1/α是根据其对存储在所述存储器上的连接权重值进行缩放的缩放系数α的逆。
16.根据权利要求15所述的计算机化硬件系统,其中
所述硬件还被配置为将神经网络实现为还包括在乘法门的其它输入分支上的平方缩放节点的网络,所述平方缩放节点适于用等于所述缩放系数α的平方的平方缩放系数α2来缩放到权重的梯度。
17.根据权利要求15所述的计算机化硬件系统,其中,所述系统还被配置为根据训练算法来训练网络,以便迭代地执行步骤,步骤包括以下每个:
从存储器调用缩放的连接权重值,该值跨越与所述有限范围兼容的初始范围;
基于调用的缩放的连接权重值,学习新的缩放的连接权重值,由此,对于所述一个或多个隐藏层的每层以及对于所述每层的每个神经元:
归功于所述逆缩放节点,基于逆缩放系数1/α,对所述每个神经元的输入值进行逆缩放,所述逆缩放系数1/α是根据其对为所述每个神经元调用的连接权重值进行缩放的缩放系数α的逆,从而使得由所述每个神经元输出的值保持不受所述缩放系数α的影响,以及更新为所述每个神经元调用的缩放的连接权重值,从而使得更新的值跨越与所述有限范围兼容的最终范围,而相应的未缩放的值跨越不同于所述最终范围的有效范围;和将更新的缩放的连接权重值存储在存储器上。
18.一种用于训练神经网络的计算机程序产品,所述神经网络包括一个或多个神经元隐藏层,并且在仅允许网络的人工神经元的连接权重值的有限范围的硬件中实现,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现在其中的程序指令,所述程序指令可由一个或多个处理器执行,以使得根据训练算法训练网络,以便迭代地执行步骤,每个步骤包括:
从存储器调用缩放的连接权重值,该值跨越与所述有限范围兼容的初始范围;
基于调用的缩放的连接权重值,学习新的缩放的连接权重值,由此,对于所述一个或多个隐藏层的每层以及对于所述每层的每个神经元:
基于逆缩放系数1/α,对所述每个神经元的输入值进行逆缩放,所述逆缩放系数1/α是根据其对为所述每个神经元调用的连接权重值进行缩放的缩放系数α的逆,从而使得由所述每个神经元输出的值保持不受该缩放系数α的影响,以及
更新为所述每个神经元调用的缩放的连接权重值,从而使得更新的值跨越与所述有限范围兼容的最终范围,而相应的未缩放的值跨越不同于所述最终范围的有效范围;和指示在存储器上存储更新的缩放的连接权重值。
19.一种训练神经网络的系统,包括用于实现如权利要求1-14中任一方法的任何步骤的装置。

说明书全文

往复地缩放神经元的连接权重和输入值来挫败硬件限制

技术领域

[0001] 本公开总体上涉及神经网络和神经形态硬件以及实现这种神经网络的系统的领域。具体而言,本公开涉及用于训练神经网络的方法,其中网络的连接权重和相关值被缩放以解决硬件限制。

背景技术

[0002] 人工神经网络(artificial neural network,ANN)是一种受人类或动物大脑中生物神经网络启发的计算模型。这种系统通过示例方式逐步自主地学习任务;它们已经成功地应用于机器学习(语音识别、文本处理、计算机视觉等)。
[0003] ANN包括一组相连的单元或节点,该单元或节点被称为人工神经元,并与动物大脑中的生物神经元相比拟。信号可以沿着人工神经元之间的连接(也称为边缘)传输,类似于突触。也就是说,接收信号的人工神经元对信号进行处理,然后向相连的神经元发送信号。在通常的实施方式中,沿着这种连接传送的信号是实数,并且归功于人工神经元的输入总和的非线性函数f而计算其输出。通常,连接权重(也称为突触权重)与连接和节点相关联,权重随着学习的继续进行而调整。
[0004] 从数学上讲,在计算神经网络中,输入x和输出y的集合(分别对应于突触前和突触后神经元)经由通常可以由矩阵w表示的连接权重相互连接,其中,例如,对于线性神经元y=wx。即,每个神经元可以具有若干输入,并且连接权重被赋予每个输入(该特定连接的权重)。在操作中,当人工神经元激活时,它通过将所有乘以其各自的连接权重的进入(incoming)输入相加来计算其状态。这种连接权重由训练算法在训练阶段期间学习,并由此更新。学习过程是迭代的:一次向网络呈现一个数据案例,并且每次调整与输入值相关联的权重。此外,网络通常包括偏置节点,以向每个计算节点提供可训练的常数值(除了节点接收的正常输入之外)。连接权重也与偏置节点和隐藏节点之间的连接相关联。
[0005] 换句话说,节点从其它一些节点或从外部源接收输入并计算输出。每个输入具有在矩阵w中捕获的相关联的权重,该权重是基于其对其它输入的相对重要性来分配的。该节点将函数f应用于其输入的加权和。
[0006] 这种概念在图1中示出,图1描绘了前馈神经网络(这里是多层感知器),其包含多层布置的多个神经元。如图1所示,来自相邻层的节点之间具有连接,这些连接与权重相关联。所描述的前馈神经网络包括布置在各自的层中的三种类型的节点,即输入节点、隐藏节点和输出节点。输入节点一起称为输入层:它们从外部向网络提供信息。这种节点仅将信息传递给隐藏节点,并且通常不执行任何计算。隐藏节点被布置在一个或多个隐藏层中(为了简单起见,这里仅假设一个这样的层);它们对外界是隐藏的,因为它们与外界没有直接联系。它们执行一些计算,从而将信息从输入层传递到输出节点。输出节点共同形成输出层;他们计算信息并将信息从内部网络传递到外部。
[0007] 前馈网络仅有单个输入层和单个输出层;它可能有一个或多个隐藏层,或者实际上根本没有隐藏层。在这样的网络中,信息仅在一个方向(前向方向)上传播,从输入节点通过隐藏节点传播到输出节点。这种网络没有周期或环路,并且在这方面不同于递归神经网络,递归神经网络涉及节点之间的循环连接。
[0008] 图1所示的多层感知器(multilayer perceptron,MLP)仅包括一个隐藏层,尽管MLP通常可以包括许多这样的层。与单层感知器(其仅能学习线性函数)相反,多层感知器还能学习非线性函数。虽然所有连接通常都有与其相关联的权重,但是仅有三个特定的权重(即,w0,w1和w2)在图1中显式地示出,其与通向隐藏层的中心节点的连接(边缘)相关联。在这个示例中,输入层仅有三个节点,这包括一个偏置节点(这里具有值为1)和另外两个分别以x1和x2作为输入的节点。在输入层中不执行任何计算的情况下,来自其中三个节点的输出分别是1、x1和x2,它们被传递到隐藏层。后者也有三个节点,包括偏置节点(其输出为1),而其它两个节点的输出取决于输入层的输出和与进入连接相关联的权重。例如,中心节点的输出计算总计为f(合计)=f(w0×1+w1×x1+w2×x2),其中f表示激活函数。可以类似地计算剩余隐藏节点的输出。来自隐藏节点的输出然后被馈送到输出节点。
[0009] 虽然图1描绘了简单的神经网络,但是神经网络在实践中可能要复杂得多。近年来,深度神经网络(deep neural networks,DNN)已被证明是各种任务(包括但不限于分类、自然语言处理和医学诊断)中最精确和有效的方法之一。深度神经网络的最大缺点之一是训练模型所需的计算能和时间。例如,常用的最先进(state-of-the-art)的图像分类网络可能需要几天或几周的时间来训练。当涉及到时间信息或其它复杂的数据形式时,这种训练时间会进一步增加。
[0010] 训练DNN需要优化成本函数,该成本函数是网络权重的高度非凸函数。即,在深度网络的训练和应用期间执行的大多数计算包括实值权重乘以实值激活(在反向传播算法的识别或前向传播阶段)或梯度(在反向传播算法的反向传播阶段)。由于这种计算要求,希望获得能够改进DNN训练的硬件系统。发明内容
[0011] 根据第一方面,本发明可以体现为训练神经网络的计算机实现方法,该神经网络包括人工神经元的一个或多个隐藏层。假设该神经网络由硬件实现,该硬件允许给定的网络的人工神经元连接权重值的有限范围。根据训练算法执行训练,以便迭代地执行如下步骤。每个迭代步骤包括:(i)从存储器调用缩放的连接权重值;(ii)通过更新被调用的缩放的连接权重值来学习新的缩放的连接权重值;以及(iii)指示将更新的值存储在存储器上。
[0012] 具体来说,首先从存储器中调用缩放的连接权重值。这些值跨越与硬件允许的值的有限范围兼容(例如,在该范围内)的初始范围。然后,基于被调用的值,学习新的(缩放的)权重值。随着学习的继续进行,(多个)隐藏层的每个神经元的权重值和输入值被往复地(reciprocally)缩放。也就是说,基于逆缩放系数(inverse scaling coefficient)1/α,对所述每个神经元的输入值进行逆缩放,该逆缩放系数1/α是缩放系数α的逆,根据该缩放系数α对为所述每个神经元调用的连接权重值进行缩放。这样,每个神经元输出的值保持不受缩放系数α的影响。为每个神经元调用的缩放的连接权重值被更新,从而使得更新的值跨越与所述有限范围兼容的最终范围,而相应的未缩放的值跨越不同于所述最终范围的有效范围。最后,考虑到下一迭代步骤,训练算法指示将更新的缩放的值存储在存储器上。
[0013] 根据另一方面,本发明可以体现为计算机化硬件系统。该系统包括存储器和硬件,该硬件被设计成实现包括一个或多个神经元隐藏层的神经网络,每个神经元隐藏层包括一个或多个乘法(multiplication gate)。通过设计,该硬件仅允许网络的人工神经元的连接权重值的有限范围,由此缩放的连接权重值被存储在存储器中,从而使得这些值跨越与所述有限范围兼容的范围。硬件还被配置为将神经网络实现为包括乘法门的输入分支上的逆缩放节点的网络。这种节点适于基于逆缩放系数1/α来逆缩放神经元中的每一个神经元的输入值,该逆缩放系数1/α是缩放系数α的逆,根据该缩放系数α存储在存储器中的连接权重值被缩放。
[0014] 该系统通常应被配置为根据与上述方法一致的训练算法来训练网络,由此,在训练的每个迭代步骤中,从存储器中调用缩放的连接权重值;通过更新调用的缩放的连接权重值来学习新的缩放的连接权重值;并且将更新的值存储在存储器中。
[0015] 根据又一方面,本发明可以在如上所述的类似环境中体现为用于训练神经网络的计算机程序产品。该计算机程序产品包括具有体现在其中的程序指令的计算机可读存储介质,其中程序指令可由一个或多个处理器执行,以根据上述方法训练网络。
[0016] 现在将通过非限制性示例并参考附图来描述在若干实施例中体现本发明的计算机化硬件系统、方法和计算机程序产品。

附图说明

[0017] 附图用于进一步说明各种实施例,并解释所有根据本公开的各种原理和优点,其中,在所有单独的视图中,相同的附图标记指代相同或功能相似的元件,并且附图与下面的详细描述一起被并入并形成本说明书的一部分,其中:
[0018] 图1描绘了根据现有技术的简单前馈网络架构(多层感知器);
[0019] 图2示出了根据现有技术中已知的训练方法,如何在这种网络的节点的乘法门上处理数据;
[0020] 图3示出了如在本发明的实施例中的缩放操作以及关于神经网络节点的乘法门如何相应地处理数据;
[0021] 图4是示出了根据实施例的用于训练神经网络的方法的选择的(高级)步骤的流程图;和
[0022] 图5是示意性示出了根据实施例的计算机化硬件系统的选择的组件的框图,该计算机化硬件系统被设计成根据诸如图4所示的方法来实现和训练神经网络。
[0023] 附图示出了实施例中涉及的设备、系统、神经网络、流程图或其部分的简化表示。除非另有说明,附图中相似或功能相似的元件被分配了相同的附图标记。

具体实施方式

[0024] 以下描述的结构如下。首先,描述一般实施例和高级变型(第一部分)。下一部分讨论更具体的实施例、技术实现细节以及利用这些实施例获得的结果(第二部分)。
[0025] 1.一般实施例和高级变型
[0026] 参考图3-图5,首先描述本发明的方面,其涉及训练神经网络20的计算机实现的方法。后者包括人工神经元,如背景部分所述。具体而言,该网络可以包括人工神经元的一个或多个隐藏层,正如图1所示的网络。网络20在硬件30中实现,硬件30可以形成如图5所示的系统1的部分。假设硬件30具有某些限制。即,如本领域中典型的,它仅允许神经元的连接权重值的有限范围。
[0027] 训练(在图4的流程图中通常被称为步骤S100)根据训练算法来执行,该训练算法被设计成从而使得实现该方法的系统1迭代地执行一系列步骤S150,如图4所示。注意,为了简单起见,图4仅描绘了修改后的反向传播算法的选择的步骤,其涉及与隐藏层的单个节点的单个输入有关的操作,如图3所示。如本领域技术人员将理解的,在真实人工神经网络的操作中,通常将执行附加步骤。
[0028] 在每次迭代中,需要从系统1的存储器组件调用S151缩放的连接权重值。最初存储在所述存储器上的缩放的值跨越与上述硬件限制兼容的初始范围。即,存储的缩放的值通常包含在所述有限范围内,或者至多跨越与其相等的范围。注意,硬件允许的有限范围(通常针对网络的每层)可能在权重值的上限和/或下限方面受到限制。
[0029] 基于调用的值,随着训练的进行,新的缩放的连接权重值被学习S150,由此缩放的连接权重值被更新S156。更新S156的缩放的值将跨越最终范围,该最终范围同样需要与硬件允许的有限值范围兼容。一旦缩放的值被更新,考虑到下一迭代步骤S150,算法指示将更新的缩放的值S158存储在存储器上。
[0030] 更详细地,学习S150以这样的方式进行,即对于每个隐藏层和对于所述层的每个神经元,输入值和权重值被往复地缩放。也就是说,到所述每个神经元的输入值相对于缩放系数α被逆缩放S152,根据该缩放系数α,在步骤S151(对于所述每个神经元)调用的权重值在先前的步骤S150期间被缩放并存储在存储器中。也就是说,这样的输入值由系数1/α缩放,该系数1/α是α的逆。这样,每个神经元(在激活时)输出的值保持不受用于权重值的缩放系数α的影响。
[0031] 如本文所提出的缩放的连接权重使得有可能促使缩放的权重值更合适地填充(即,分布于和跨越)硬件允许的值的范围。相反,相应的、未缩放的权重值不一定局限于该范围。有趣的是,训练算法甚至可能不“知道”,即甚至可能不必考虑相应的未缩放的值。实际上,在如下所述的实施例中,公开了相互一致的缩放操作,这使得算法可以透明地处理缩放的值,并且还可以获得相同的结果,就好像它已经有效地考虑了未缩放的值一样(假设硬件能够容忍这样的值)。然而,在变型中,即使仅存储缩放的权重值,算法也可以知道未缩放的值。
[0032] 如果硬件允许的整个范围既有上限又有下限,则按比例缩放的权重值可能跨越该范围。另一方面,当权重值在训练网络时达到非常小的数值时,硬件30允许的精度也可能是一个问题,因为这样的数值仅能被设置为给定的精度。在这种情况下,可以进一步执行如本文所述的缩放操作,以防止存储太小的数值。相反,缩放可以尽可能有效地利用可用的权重范围,这反过来允许优化可用的精度,而无需手动调节权重范围。
[0033] 因此,在本方法中,突触权重的值范围被缩放以允许训练算法存储和调用的权重值保持在硬件允许的有限范围内。现在,虽然缩放的值可以被限制为保持在所述值的有限范围内,但是相应的未缩放的值的有效权重范围可以根据学习的需要改变到任何范围,这不一定由硬件30允许的有限范围来限定。
[0034] 通过更新S156缩放的连接权重值来执行学习过程,然后将该更新的值存储S158在存储器中,以便以迭代方式允许进一步的学习周期S150。最终,训练算法所学习的参数,该参数在整个学习过程中以缩放的形式存储,如果需要,可以未缩放以揭示真实的、未缩放的权重值。这样的(未缩放的)值然后可以用于推断目的S200,因为在训练期间激励缩放的硬件约束可能不再存在。可选地,用于训练模型参数的相同或相似的系统1也用于S200用于推断,使得所学习的相同缩放的参数也可以在推断时使用。在其它变型中,为了推断的目的,可能需要重新缩放所学习的权重值。例如,在典型应用中,所学习的权重值可以被传递到不太复杂的系统,该系统仍然可以有效地执行推断。并且考虑到将它们传递到推断系统,这可能需要首先重新缩放或完全不缩放所学习的权重值。
[0035] 回到学习过程:原则上可以考虑各种缩放方案。然而,缩放操作S152、S156a、S157优选地根据定义的缩放系数或基于每层来执行。也就是说,单个缩放系数α用于整个隐藏层,并且同样适用于每个隐藏层。因此,对于每个隐藏层,在训练S100的每个迭代步骤S150,该隐藏层的缩放操作都基于相同(唯一)系数α来执行。
[0036] 可以认识到,因为用于实现神经网络的硬件30通常在层级别(或等价于每加权矩阵级别)上根据系数施加约束,所以缩放系数可以有利地在相同级别上定义和更新。即,因此需要为网络的每层使用单个缩放值α(在训练的每个迭代步骤)。
[0037] 隐藏层包括由训练算法同时处理的神经元。因此,层可以与单个权重矩阵的所有权重相关联。例如,如果x0是输入值(矢量),y0是输出值(另一矢量,不需要相同的长度),并且w0是权重矩阵,那么对于线性神经元我们有y0=w0x0。在这种情况下,w0的每行表示单个神经元的突触权重(w0中的行数等于该层中神经元的数量)。输出y0然后可以通过非线性函数f(也称为激活函数),并且结果然后将被用作网络的下一层的输入,即y1=w1f(y0)。
[0038] 因此,在实施例中,每个权重矩阵wn可以根据相应的缩放值αn来更新,以便最好地反映硬件30在每层/每权重矩阵级别上可能具有的约束。例如,在一些光学硬件中,权重矩阵的平均值可以被约束,使得它不能超过某个极限(limit),如下所述。当然,可以类似地缩放偏置值,以匹配硬件限制。
[0039] 然后,除了权重矩阵wn的缩放之外,如图3所示,训练算法使得基于相同(单个)逆缩放系数1/α对(相同隐藏层的)每个神经元的输入值进行逆缩放S152。在训练的每个迭代步骤S150,对相同隐藏层的每个神经元执行这样的逆缩放。通常将对网络20的所有隐藏层执行类似的缩放操作。如背景部分所解释的,输入值分别对应于到相同隐藏层的神经元的连接(边缘)。因此,这些输入值可以分别与为相同隐藏层的神经元调用的缩放的权重相关联,并且单个逆缩放系数1/α将被用于缩放相同隐藏层的神经元的输入值,其中1/α是α的逆,α是用于缩放相应连接权重值的系数。然而,注意,权重值的缩放可以是隐式的(可以假设权重值已经被缩放),因为缩放的权重值仅需要更新,而没有必要显式地缩放这些值。输入值和权重值保持被往复地缩放。作为该往复地缩放的结果,前向路径上的神经元输出的值保持不受缩放操作的影响。因此,可以精确地训练网络,就像没有执行缩放一样,同时归功于权重缩放,可以挫败(foil)在权重值方面的硬件限制。
[0040] 实际上,可以执行诸如y=wx的矩阵运算,其中w和x相对于彼此被逆缩放,使得神经元输出的值y保持不受影响。w和x被“逆缩放”意味着x通过w由其缩放的某个值的逆来缩放(反之亦然)。即它们都按某个值缩放,由此w被缩放,x被逆缩放。这可以归功于诸如图3所示的乘法门来实现,乘法门的输入分支包括附加的缩放节点(在图3中描绘为六边形)。注意,输入值也不受影响,因为它们仍然可以不变地被馈送和更新到训练算法。也就是说,输入值由训练算法内部地改变。即,归功于插入的缩放节点(1/α),输入x内部地得到逆缩放。
[0041] 分别归功于缩放节点和乘法门,图3中描述的网络实现相当于第一缩放输入x0以获得缩放的输入x,并且然后执行S153操作wx(在前向路径上),。插入的缩放节点不需要对网络的结构进行其它修改。在变型中,可以设想更复杂的实现来执行这样的操作,例如,向网络的现有门添加功能。
[0042] 优选地,如图3所示,训练算法进一步使得将到权重的梯度进行缩放S156a。这也可以通过专用节点来实现,该专用节点在图3中被描绘为六边形。注意,该节点应被视为位于单独的路径上(回到缩放的权重),因为它不用于网络的前向传递,而仅用于反向传递。同样,这种缩放更优选地对整个隐藏层使用相同的系数α2。也就是说,用于每个隐藏层的相同系数α2等于用于缩放相同隐藏层权重的单个系数α的平方。执行该附加的缩放操作,以便更新S156反向路径上的缩放的权重。这是作为修改的反向传播算法的部分来完成的,该算法的主要目的仍然是计算导数,以发现如何为下一训练步骤S150更新缩放的权重。同样,在每个迭代步骤中执行这个附加的缩放操作。类似的α2缩放操作通常将对所有隐藏层执行,尽管通常基于每层的不同α。
[0043] 用α2缩放S156a梯度允许在硬件30中有效地缩放权重,其方式是,与先前所提起的缩放和逆缩放操作一起,使得网络完全训练,就像权重未缩放一样,而不需要它存储任何附加值。现在参考图2和图3的示例更详细地讨论这一点。在这里,正常(非斜体、非粗体)数字是指在前向传递通过网络期间获得的数据。粗体斜体数字与反向传播梯度的结果有关。所示操作反映了上面讨论的三种缩放操作及其对反向传播的影响。
[0044] 图2中示出了典型的神经网络如何将单个权重乘以单个输入值,然后处理反向传播。从顶部开始,正常(非斜体、非粗体)数字反映前向步骤:权重和输入值在乘法门处相乘,结果输出为2×10=20。网络的其余部分使用该值(未示出)进行。接下来,反向传播从某个计算出的梯度值(来自网络的输出端)开始,这里假设该梯度值等于3。当计算导数时,值3在乘法门处被分割,使得每个分支接收3×(另一个分支输入)。权重相应地接收3×10=30的梯度,并且输入分支返回(即,进一步进入网络)3×2=6的梯度。
[0045] 目前,假设我们有效地希望通过训练如上所述的具有缩放操作的网络(α、1/α和α2)来获得相同的结果,同时牢记由实现网络的硬件30施加的权重值方面的限制。例如,假设由于这样的限制,我们希望存储在硬件中的缩放的权重值是0.2而不是2。为了实现这一点,值2的权重可能已经被缩放,并且相应地使用α=0.1来存储,如图3所示,提醒的是,该缩放可能是隐式的。同时,输入值通过1/α被缩放S152。这种往复地缩放很好地导致前向路径上的相同值20,就像前面一样(图3,下面的部分)。网络的其余部分利用该值进行S154(图3中未示出)。接下来,在反向路径上,情况类似于图2,除了我们现在必须处理仅有权重的缩放的版本可用的事实。虽然我们需要将值30传递给2的权重,但是系统1实际上没有这样的权重值可用,因为存储的权重值是缩放的版本(0.2)。此外,网络中该点的梯度现在是3×100=300,因为值100是由在步骤S152的1/α缩放产生的。为了获得有效对应于应用于权重2的理想值30的更新值,我们需要应用于权重0.2的更新值3,这是由将当前梯度(300)缩放
2
S156aα而简单地获得的,如图3所示。然后,缩放的梯度然后可以在反向路径上进一步传播到S157a、S158a网络中。
[0046] 这样,就其它正常训练算法而言,一切都像在图2的正常网络中一样被训练。然而,实际更新并存储在硬件上的值在这里被缩放到感兴趣的范围,即,匹配硬件30施加的约束。
[0047] 如本领域技术人员可以理解的,可以设想上述缩放操作的变型,这有效地允许实现相同的目标。首先,上面给出的缩放系数的示例集合(即α、α-1和α2)形成了相互一致的集合,这允许网络透明地更新权重,尽管事实上仅有缩放的系数被存储在存储器中,并且因此可用于训练算法。然而,可以设计其它相互一致的缩放系数的集合,这些缩放系数的集合可能在网络的不同位置起作用以实现相同的目标。例如,未缩放的权重值可以存储在硬件中,而不是缩放的权重值,然后在推断期间计算缩放的值。取决于硬件的情况,可能存在期望这2
种配置的情况。在这种情况下,α缩放是不需要的,因为通过α门的反向传播将对未缩放的权重产生正确的梯度值(即,图3中的30而不是3)。要求α2缩放的配置对于许多硬件环境可能是必要的,但是其它配置(诸如上面的配置)可能适用于其它情况。
[0048] 接下来,训练算法将优选地被配置为自动更新S180、S185基本缩放系数α,从而相–1 2应地更新用于缩放输入值和梯度的系数α 和α。现在,可以认识到,基于对应于缩放的连接权重的当前值的未缩放的连接权重值,可以自动更新每个缩放系数α(例如,与每个相应的隐藏层有关)。由于未缩放的权重值优选不被存储(因此不能立即可用),因此需要首先基于缩放的权重和旧的缩放系数α来确定未缩放的值,然后使用获得的未缩放的值来计算α的更新的值。然而,注意,出于后面解释的原因,该更新过程不需要在训练的每个迭代步骤中系统地执行(尽管在变型中可能是这样)。
[0049] 例如,可以根据为该层存储的可用于连接权重值的有限范围所施加的极限l,以及未缩放的连接权重的相应值的标准偏差σ,来自动更新S180、S185与每个隐藏层有关的缩放系数α。即σ是神经元的整个层的未缩放的权重的标准偏差。在变型中,可以使用权重值的统计离差的任何有意义的度量来代替标准偏差。
[0050] 一种特别简单的方法是通过给每个系数α分配一个等于lper/(βσ)的值来更新它,例如,在完成某个迭代步骤或某个时期时。在该公式中,lper表示由于所述硬件限制,相关层中任何连接权重的最大值,并且β是常数。该常数的最佳值可以例如通过试错法来确定。实际上,这些值通常在1和2之间。例如,在发明者进行的试验中,β=1.5的值恰好很好地发挥了作用。使用上述公式,实现了简单的更新方案,例如,当使用电阻处理单元31来实现神经网络20时,这是非常适合的,因为在这种情况下,权重极限通常基于最大权重值。
[0051] 如前所述,缩放操作将优选地被执行,以便利用可用的权重范围,例如,通过将权重值保持在允许的范围内并尽可能多地使用该范围。与此同时,可以小心地将可用的有限精度造成的损失最小化。
[0052] 例如,假设具有三个权重,其对应的未缩放的值为{1,1,100},并且受到每个单独权重值的最大权重值的限制,该最大权重值由lper给出。
[0053] 考虑第一种情况,lper=50,网络精度为0.5。具有0.5的网络精度意味着任何权重都不能被精确地设置为小于0.5的间隔的期望值(即,将权重值从0.5改变为期望的0.7将因此导致权重为0.5)。在这种情况下,算法可以计算S185a值lper/(βσ)=50/(1.5×46.7)≈0.71,其中σ≈46.7是上面给出的未缩放的权重值的(非无偏)标准偏差,然后将该值分配S185给α。由此,重新缩放的权重被计算为α×(1,1,100)≈(0.71,0.71,71)。最后,需要根据lper对权重进行剪切(clip),并通过由于上述硬件限制的允许的精度进行设置,从而在存储到存储器之前,产生对应于未缩放的(0.7、0.7、70)的缩放的(0.5、0.5、50)。
[0054] 注意,相对值比我们简单地直接剪切(1,1,50)时更接近它们过去的值。这看起来仍然是一个相当剧烈的变化,但是在迭代训练过程S100中,这种极端版本的剪切在实践中很少遇到。此外,我们注意到,考虑无偏标准偏差而不是非无偏偏差在实践中没有什么重要意义,因为即使不使用全部权重来计算标准偏差,样本尺寸仍将非常大,并且因为缩放方程可以适于任一选择。
[0055] 作为另一示例,假设lper=500,并且网络的精度现在为5(例如,将权重值从50改变为期望的53将导致权重为55),而所考虑的三个权重的未缩放的值保持不变(1,1,100)。一些权重更新可能仍然低于这个级别。然而,与不使用该缩放的权重更新的数量相比,使用本缩放方法,更大数量的权重更新通常将保持在该级别以上。在另一示例中,该算法将计算S185值lper/(βσ)=500/(1.5×46.7)≈7.14。在按允许的精度缩放、剪切和设置权重值之后,获得对应于未缩放的(0.7,0.7,70)的缩放的(5,5,500)。在这个附加的示例中,归功于缩放和剪切,原本会低于精度级别的未缩放的权重值会被带到精度级别之上。
[0056] 注意,剪切非常高的值存在一些损失,但是将其它值带到精度阈值之上的增益可以通过试验证明总体上是非常有益的。同样,上述方案不能确保所有值都被带到精度阈值之上。常数β决定了一个选项相对于另一个选项有多少价值。较大的β导致更少的剪切和更低的精度,而较小的β则相反。此外,根据实际值的分布,可能根本没有任何剪切或精度不足。
[0057] 注意,在上面的示例中,权重值被显式地重新缩放(在更新α时)。然而,这不同于更新步骤S156,在更新步骤S156中,权重值不一定需要被显式地缩放。
[0058] 在上述缩放(基于lper/(βσ)→α)和剪切的变型中,系数α可以通过计算等于的值并将结果分配给缩放系数α来自动更新S180、S185缩放系数α;在上述公式中,lmean表示由连接权重值(对于给定的隐藏层)可用的有限范围施加的平均绝对权重极限,N是该层中连接权重值的数量,并且 是该层的第i个权重值,被剪切为现在从–βσ到βσ的值范围的间隔。该变型将在第2部分中详细讨论。
[0059] 如前所述,缩放系数α不需要在每个迭代步骤S150自动更新S185。相反,为了执行速度,它可以在这样的迭代步骤S150的给定间隔更新,或者甚至在训练S100的每个时期更新。
[0060] 一些硬件规格需要处理的另一个潜在问题是它们所需要的值的量化。例如,神经网络的权重不会以无限精度存储。为了解决这个问题,根据概率舍入(probabilistic rounding)方案(也称为随机舍入(stochastic rounding)方案),优选地更新S156步骤S151中调用的缩放的连接权重值。也就是说,基于概率函数p(.),任何更新的权重值被舍入S156b到给定分辨率∈的倍数值。
[0061] 事实上,相同的概率舍入方案可以用于更新任何需要的值。例如,概率舍入方案可以是根据以下公式来舍入值x的值roundp(x,∈):
[0062]
[0063] 其中,
[0064] 使用这种舍入方案,即使相对于可用精度的非常小的更新的权重也有可能被更新为新值。这一点在第2部分中提出。
[0065] 如前所提起的,神经网络20可以显著地由如图5中使用的描述所示的光学神经形态系统32或电阻处理单元31来实现。典型地,神经网络20本身是前馈神经网络20,诸如多层感知器(如图1所示)。然而,在变型中,网络20可以涉及更多,例如,是深度神经网络或卷积神经网络
[0066] 一起参考图3和图5,现在讨论本发明的另一方面,该方面涉及计算机化硬件系统1。这种系统基本地包括存储器(未示出,用于显著存储权重值以及其它模型参数)和被设计用于实现神经网络20的硬件。如前所述,网络可以包括一个或多个神经元隐藏层,每个神经元隐藏层涉及一个或多个乘法门。更重要的是,通过设计,实现硬件30仅允许网络20的人工神经元连接权重值的有限范围。因此,缩放的连接权重值被存储在存储器中,从而使得这些值跨越与所述有限范围兼容的范围,如前所述。
[0067] 该系统可以涉及不同类型的存储器,包括专用于网络20操作的主存储器。例如,人们可能想要将缩放的连接权重值存储在有源矩阵(电矩阵、光矩阵等)中。光/电矩阵通常是训练期间存储权重的地方。此外,或者在变型中,权重值可以在被调用时在不同存储器之间移动,例如,以便执行存储器内的计算。
[0068] 如先前参考图3所讨论的,硬件30可以进一步被配置成实现修改的神经网络20。即,该网络包括乘法门的输入分支上的逆缩放节点,这些节点适于基于逆缩放系数1/α逆缩放神经元中的每一个神经元的输入值(在前向路径上)。此外,硬件30应该优选地实现网络
20,该网络20还包括乘法门的其它输入分支上的平方缩放节点,以便用系数α2将梯度缩放到权重,如前所述。作为本领域技术人员,例如,取决于用于主矩阵乘法的硬件,存在实现这一点的若干可能性。
[0069] 系统1可以另外被配置为根据先前参考图3和图4讨论的任何方法来训练网络20,由此,在训练的每个迭代步骤S150,从存储器中调用缩放的连接权重值,通过更新调用的权重值来学习新的缩放的连接权重值,并且将更新的值存储在存储器中。
[0070] 图5描绘了这样的系统1,其一旦被适当训练,可以进一步被配置为执行S200推断,如在图4的流程图中所另外反映的。在可能的情形下,考虑到一些感兴趣的应用,首先例如实时地收集S10数据点。出于训练目的,可以选择S20一些数据点,并相应地存储在数据储存库11上,例如存储在系统1的任何合适的存储器或存储组件上。
[0071] 例如,选择的数据S20可以用于离线(offline)训练S100网络20,而推断可以实时执行S200。在训练周期完成时,更新的模型参数被传递到用于推断目的S200的神经网络(其可以与用于训练的网络20相似或相同),同时模型可以基于更加新的训练数据在网络20并行地重新训练。取决于所寻求的应用,训练的模型可以例如用于S220预测或分类。最终存储相应获得的结果。在变型中,网络被训练,并且在训练完成后,它被部署用于推断,而无需再次训练。
[0072] 根据又一方面,本发明可以在如上所述的类似环境中体现为用于训练神经网络的计算机程序产品。该计算机程序产品包括计算机可读存储介质,该计算机可读介质具有体现在其中的程序指令,其中该程序指令可由例如诸如图5所描绘的系统1的一个或多个处理器执行,以根据先前讨论的方法来训练网络。然而,应当理解,本方法的步骤中的至少一些将在硬件30中实现,或者直接涉及这样的硬件30。然而,剩余的步骤或功能可以涉及更高级的编程语言,例如,意味着运行系统1,从而允许网络20的训练S100。
[0073] 如上所述,公开了一种训练神经网络的计算机实现方法。在一些实施例中,假设该神经网络在硬件中实现,该硬件允许网络的人工神经元的给定的有限范围的连接权重值。根据训练算法执行训练,以便迭代地执行如下步骤。缩放的连接权重值从存储器中调用。这些值跨越硬件允许的值的有限范围内的初始范围(即兼容)。基于调用的值,学习有效的连接权重值。所学习的值跨越不同于所述初始范围的有效范围。随着学习的进行,通过缩放所学习的值来更新缩放的连接权重值,从而使得更新的值跨越在所述有限范围内的最终范围。最后,考虑到下一迭代步骤,训练算法指示将更新的缩放的值存储在存储器中。还公开了训练神经网络的硬件系统和计算机程序产品。
[0074] 因此,本发明可以在任何可能的集成技术细节级别上实现为计算机化硬件系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0075] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号
[0076] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0077] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0078] 这里参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0079] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0080] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0081] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0082] 2.特定实施例-技术实现细节
[0083] 这里讨论的方法提供了在给定若干限制的情况下改进神经网络训练的方法,包括在第一部分中讨论的那些。发明人进行的试验主要集中在光学神经形态系统的规格上。然而,本文提出的大多数这些试验和改进的训练方法也适用于从第一部分中描述的电阻处理单元(resistive processing units,RPU)开始的其它类型的神经网络。
[0084] 大多数这样的试验利用了第二部分中提出的概率舍入算法。发明人发现在使用它以及本文提出的权重缩放算法方面有显著的改进。现在,虽然第二部分的重点是在考虑网络值的全精度(full precision)时使用这种概率舍入,但是这里将在硬件规格的各个领域探讨这种概率舍入方案的效果。例如,输入值、输出值和权重值可以被单独量化,因为它们在现实世界硬件中各自具有不同的规格。注意,第二部分将这种舍入称为“随机舍入”。然而,为了避免与同名的舍入的平局决胜(tie-breaking)的形式混淆,这里使用了术语“概率舍入”。
[0085] 2.1方法学
[0086] 2.1.1概率舍入
[0087] 本文档中涉及的许多硬件规格涉及值的量化。例如,神经网络的权重没有无限的精度。相对于通常用于训练神经网络的那些,这种精度可能相当低。通常,权重更新可能比这个精度小得多。因此,使用标准舍入方案可能会导致网络无法训练,因为权重可能永远不会改变(或者至少不够频繁)。相反,第二部分所描述的概率舍入方案允许网络以更严格的精度进行训练。具体而言,使用这种方案,即使相对于精度具有非常小的期望更新的权重也有可能被更新为新值。
[0088] 形式上,如果x是我们希望舍入的值,并且∈是我们希望将值舍入到的分辨率,我们可以定义:
[0089]
[0090] 同时标准舍入方案由下式给出:
[0091]
[0092] 一种可能的概率舍入方案是
[0093]
[0094] 应当注意,这种概率舍入可能导致非常低平的精度的训练不稳定。出现这种情况是因为权重相对于所期望的更新可能会有很大量的变化,这可能会导致梯度爆炸(exploding gradient)问题。为了减轻这种情况,可以使用较低的学习率或截断的概率舍入。此外,如本领域技术人员可以理解的,可以采用潜在概率p(.)的其它定义,这使得可能接受小的期望的更新成为可能。
[0095] 2.1.2自适应权重缩放
[0096] 网络的权重受硬件的物理属性的限制。先前的工作将该限制与硬件第一部分中的权重精度问题分开建模。例如,当在没有权重范围限制的情况下训练时,发明人所考虑的多层感知器网络的权重恰好近似正态分布,其中标准偏差为0.097。然而,本示例中涉及的三层具有0.093、0.107和0.289的单独的权重标准偏差。
[0097] 层与层之间的这种差异表明,相同的权重范围限制会有不同的效果,这取决于它应用于哪一层。此外,假设精度不受限制,权重范围限制将不会影响网络的训练,除非该极限小于在没有限制的训练期间出现的最大权重值。实际上,由于我们能够将增益应用于硬件输出,我们可以有效地选择任意大的权重范围限制。然而,这些增益当然降低了权重的精度。
[0098] 我们现在介绍第1部分中讨论的方法的特定实施例,该实施例使得有效地训练权重成为可能,以便它们填充可用的整个权重范围,并且最好地使用给定的精度,而无需手动调节权重范围。这种方法不会改变训练过程,因为每个突触输入和输出的值与它们没有这种自适应缩放方案时相同。训练期间,权重值w假设被通过某个值α缩放。为了使突触输出与在权重没有被缩放的情况下具有的值相同的值,输入值x通过1/α往复地缩放。由于突触的输出在这个过程中是不变的,所以在反向传播期间,进入突触的梯度保持不变。在L是由输出神经元计算的误差的情况下,则到权重的梯度 是 以及到输入的梯度 是这导致训练过程不变,但是矩阵乘法期间使用的权重被缩放。
[0099] 为了允许在硬件中有效地实现这一点,我们可以假设权重已经被缩放,并且,我们可以代替地仅将输入乘以1/α。然后,我们更新反向传播算法,将到权重的梯度乘以α-2。这样,我们再次获得了相同的训练过程,但是现在仅需要存储权重的缩放的版本。通过选择合适的标量,我们可以促使权重填充硬件的整个权重范围,从而利用可用的整个精度。
[0100] 接下来,为了使这个标量选择在训练期间自动进行,我们进一步提出基于当前权重更新它。标量可以例如被设置为:
[0101]
[0102] 其中lper是每权重极限,σ是未缩放的权重的标准偏差,β是某个常数。我们在试验中显著地使用β=1.5。注意,重新缩放后权重仍会被剪切。任何权重剪切都考虑量化(例如,当试验权重更新量化时,剪切的权重被限制为剪切到更新量化所允许的权重)。
[0103] 在我们的权重范围受平均绝对权重值限制的情况下,我们首先将这些值剪切为βσ,然后将标量设置为:
[0104]
[0105] 其中lmean是平均绝对权重极限,N是权重的数量,并且 是剪切后的第i个权重值。请注意,在此之后,由于权重已经符合极限,因此重新缩放后不再需要权重剪切。这种方法允许训练过程根据需要自动调整硬件中的权重范围。以这种方式训练时,改变权重范围和相应的精度对训练没有影响。
[0106] 在上述任一情况下,都需要收集有关权重的信息来进行更新。取决于硬件,读取权重可能是相对昂贵的操作,也可能不是。幸运的是,这种缩放并不需要在每一步骤都发生。例如,它可以以更慢的间隔更新(例如,对于每个时期,每1000个步骤等等)并且仍然使用硬件的全部权重范围产生权重。
[0107] 2.2结果
[0108] 发明人主要基于两种类型的网络执行了许多模拟。首先,考虑了多层感知器(MLP),其具有784个(28×28)个输入和3个分别具有256、128和10个单元的全连接层。这样一个MLP具有达235,000个参数。其次,进一步考虑了卷积神经网络(convolutional neural network,CNN),其具有28×28个输入,使用步长2最大池化2层,3个5×5核心卷积层,不填充4、8和16个单元,最后具有10个单元的全连接层。这个CNN具有达67,000个参数。
[0109] 在执行的模拟中,反向传播算法没有考虑由硬件引起的缺陷(例如,读取误差)。也就是说,通常在反向传播期间,梯度返回权重的路径具有作用于其上的每个操作的全部信息,但是在模拟中,若干分量对于反向传播是未知的。即,该算法在没有该信息的情况下工作。
[0110] 首先,观察到了改进,这是由于使用了概率舍入。与权重精度相似,对于给定的输入精度,概率舍入会显著提高精确性。
[0111] 更重要的是,这种模拟已经表明,上述自适应权重缩放方案允许网络以显著降低的精度训练收敛。具体来说,在MNIST数据集上的MLP的情况下,具有21个级别测试误差仅为2.73%。即使仅具有9个级别,也保持在10%以下。
[0112] 更一般地,本发明人已经探索了哪些硬件限制阈值防止神经网络在训练期间收敛,并且还已经表明软件调整允许网络以更严格的硬件限制收敛。因此,他提出了自动缩放权重的方法,以利用可用的整个权重范围,并示出了这如何提高网络性能,尤其是在有限精度情况下。
[0113] 虽然已经参考有限数量的实施例、变型和附图描述了本发明,但是本领域技术人员将理解,在不脱离本发明的范围的情况下,可以进行各种改变和等同替换。具体而言,在给定实施例、变型或附图中示出的特征(类似设备或类似方法)可以与另一实施例、变型或附图中的另一特征组合或替换,而不脱离本发明的范围。因此,可以设想关于任何上述实施例或变型描述的特征的各种组合,这些组合仍在所附权利要求的范围内。此外,在不脱离本发明的范围的情况下,可以进行许多微小的修改以使特定的情况或材料适于本发明的教导。因此,本发明不限于所公开的特定实施例,而是本发明将包括落入所附权利要求范围内的所有实施例。此外,除了上面显式地提到的以外,还可以设想许多其它变型。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈