首页> 中国专利> 用于确定神经网络的成对连续层之间的传递函数的方法和计算工具

用于确定神经网络的成对连续层之间的传递函数的方法和计算工具

摘要

本公开的实施例涉及一种用于确定神经网络的成对连续层之间的传递函数的方法和计算工具。该方法可以在由处理单元实现神经网络之前被执行。神经网络包括一系列的层和被应用在至少一对连续层之间的至少一个运算符。一种计算工具生成旨在被处理单元执行以便实现神经网络的可执行代码。计算工具在至少一对层之间生成至少一个传递函数,该至少一个传递函数采取成组的经预计算的值的形式。

著录项

说明书

本申请要求于2019年7月10日提交的欧洲专利申请号19290051.2的优先权,该申请通过引用并入本文。

技术领域

本发明的实现模式和实施例涉及一种用于实现神经网络的方法。

背景技术

神经网络被广泛用于解决各种统计问题,尤其是数据分类问题。

在通常受监督(即使用已分类的参考数据库实施)的机器学习阶段之后,神经网络自主“学习”并变得能够将相同的分类应用于未知数据。

可能提到卷积神经网络(CNN),这是其中两层之间的连接模式受到动物的视觉皮层启发的一种神经网络。这种神经网络允许有效识别图像或视频中的物体或人。

神经网络的体系结构通常包括一系列层,每个层都从前一层的输出接收其输入。

深度神经网络倾向于变得日益复杂,且越来越多的用户正在寻求量化神经网络的每一层的输入和输出数据,以便提高处理速度并减少存储这些数据所需的存储空间。

例如,每一层的输出数据和输入数据可以被量化为八位或十六位,但是具有相同或不同的量化格式。

具体地,所有层可能不能以相同的精度被量化并且具有相同的值的范围,这些参数特别地取决于层的输出数据的动态范围。

在神经网络中,将输入数据乘以针对每一层的给定值的至少一个权值。

“权值”是一个术语,在神经网络领域中其含义为本领域技术人员所熟知,该权值是指可被配置以获得良好输出数据的神经元参数。

使用训练数据库最初在神经网络中定义这些权值。更精确地,例如,神经网络处理从数据库中提取的图像,并进行预测作为输出,即,虽然图像所述的类别已知,但确定了该图像可能属于哪个类别。

根据该结果的准确性,例如使用反向传播算法更新神经网络的所有权值。

再一次,每一层的权值(尤其是出于存储器优化的原因)可以用十六位或八位表示。

量化方案的示例为本领域技术人员所熟知。

关于这些量化方案的信息尤其可以在Benoit Jacob等人的名称为“Quantizationand Training of Neural Networks for Efficient Integer-Arithmetic-OnlyInference”,arXiv:1712.05877v1[cs.LG]2017年12月15日,Google Inc.(

而且,最常见的是,规定了一个或多个运算符,这些运算符被应用于层的输出。这种运算符可以是任何类型,并且最常见的是非线性的。该运算符也可以是ONNX类型的运算符。

应当记得,ONNX(开放神经网络交换)是与AI相关的社区项目,特别地,其提供了可扩展计算图模型的定义以及内置运算符和标准数据类型的定义。

这种ONNX运算符为本领域技术人员所熟知的,例如可以指代在以下因特网链路上可用的文档:

https://github.com/onnx/onnx/blob/master/docs/Operators.md

确定应用了一个或多个运算符的两层之间的传递函数的常规方法无效。

具体地,这些方法首先需要将第一层的输出层的每个量化数据转化为以浮点格式表达的数据,然后例如使用级联将运算符以浮点格式近似,并且将此近似应用于第一层的每个输出数据,并且最后以适当的量化格式对结果进行重新量化,以便递送下一层的经量化的输入数据。

这由执行神经网络的处理器实时完成,并且在计算时间和存储器方面完全没有效率。

发明内容

本发明的实现模式和实施例涉及神经网络,具体但非唯一地涉及深度神经网络,并且尤其涉及确定在应用一个或多个运算符的神经网络的成对的连续层之间的传递函数。

实施例提供了一种针对现有技术问题的令人满意的解决方案。

在一个实施例中,提供一种方法,该方法可以在由处理单元实现神经网络之前被执行。神经网络包括一系列的层和被应用在至少一对连续层之间的至少一个运算符。一种计算工具生成旨在由处理单元执行以便实现神经网络的可执行代码。计算工具在至少一对层之间生成至少一个传递函数,该至少一个传递函数采取成组的经预计算的值的形式。

下文讨论附加的实施例和变型。

附图说明

在阅读完全非限制性实现模式和实施例的详细描述以及附图时,本发明的其他优点和特征将变得明显,在附图中:

图1至图3涉及本发明的实现模式和实施例。

具体实施方式

根据一种实现模式和实施例,提供一种方法和计算工具,该方法和计算工具能够以在存储器和计算时间方面有效并且使所讨论的神经网络的性能降低最少量的方式来确定这种传递函数。

根据一种实现模式和实施例,建议在神经网络的实现期间不实时计算一个或多个传递函数,而是预计算这个或这些传递函数的值例如以形成一个或多个表,即,建议有利地在神经网络的训练阶段期间或之后、在其由处理单元(例如可以是诸如智能手机或甚至是平板计算机等设备的微处理器)实现之前计算这些值。这些示例是非限制性的。

根据一个方面,提供一种方法,该方法在由处理单元(例如诸如手机等设备的微处理器)实现神经网络之前被执行。神经网络包括一系列的层和至少一个运算符,该至少一个运算符被应用在至少一对连续层之间。方法包括利用计算工具(例如个人膝上型计算机)生成旨在由处理单元执行以便实现神经网络的可执行代码,并且利用计算工具在至少一对层之间生成至少一个传递函数,该至少一个传递函数采取成组的经预计算的值的形式。

这些值被预先计算,其意义在于计算值是在处理单元实现神经网络之前而被计算。因此,在神经网络的实现期间,即,在处理单元执行可执行代码期间,将不再需要实时计算一个或多个传递函数。从经预计算的值中提取对应值将足够简单。

通常,使用第一量化方案有利地对成对的层中的第一层的输出数据进行量化,并且使用第二量化方案有利地对该对中的第二层的输入数据进行量化。

两个量化方案可以相同或不同。

同样,经量化的输入数据的位数和经量化的输出数据的位数可以相同或不同。

传递函数考虑了第一和第二量化方案以及至少一个运算符。

通常,运算符可以是任何功能(或“激活”以使用神经网络领域的技术人员所熟知的术语)。

因此,运算符可以是例如“标识”运算符(OP(x)=x)。在这种情况下,传递函数仅表现为类似于收敛函数,从而允许将使用第一量化方案而被量化的数据转化为使用第二量化方案而被量化的数据。

根据一种实现模式,至少一个传递函数旨在于神经网络的实现期间从该对中的第一层接收经量化的输出数据,以应用至少一个运算符并将经量化的输入数据递送给该对中的第二层。

至少一个传递函数的生成包括针对输出数据的每个可能的经量化的值,应用逆第一量化函数,从而允许将经量化的值转化为浮点值,将至少一个运算符应用于该浮点值以便获得中间浮点值,并将第二量化函数应用于中间值以便递送输入数据的对应的经量化的值。生成进一步包括生成查找表,该查找表形成该组值,并包含针对经量化的输出数据的所有可能值的经量化的输入数据的所有对应的可能值。

可以使用任何类型的运算符,例如具有多个输入和多个输出的运算符。

然而,在这种情况下,优选限制被量化的输入和输出数据的位数,以便限制查找表的大小,并因此限制随后将其存储在旨在实现神经网络的设备中时所需的存储空间。

为此,针对至少一个运算符,优选使用点对点运算符,即,具有一个输入和一个输出的运算符。因此,输入和输出数据可以被量化为任何位数,例如八位或十六位。

根据一种实现模式,其中神经网络包括被应用在P对连续层之间的至少一个运算符,生成在P对层之间的P个相应传递函数包括生成最多P组值。

具体地,在表示P个传递函数的各组值的预计算期间,对于给定组的值可以能够将其用于两个不同对的层之间的两个传递函数。

通常,规定了训练神经网络的阶段,并且在训练阶段期间或之后有利地实施了至少一个传递函数的生成,这允许对所有经预计算的值中的值进行调整,尤其根据神经网络的权值的值进行调整,这些权值的值将已经在训练阶段期间进行优化。

根据另一方面,提供了一种计算工具,该计算工具被配置为实现如上文所定义的方法。

根据另一方面,提供了一种用于使用处理单元实现神经网络的方法,神经网络包括一系列的层和被应用在至少一对连续层之间的至少一个运算符。

该实现方法包括:在存储器中存储允许实现神经网络的可执行代码和表示至少一对层之间的至少一个传递函数的一组值,以及利用处理单元执行可执行代码。该执行包括通过从该组存储值中提取与至少一对层中的第一层的经量化的输出数据的值对应的值来确定传递函数,提取值是该对中的第二层的经量化的输入数据。

根据一种实现模式,表示至少一对层之间的至少一个传递函数的该组值以查找表的形式来被存储,该传递函数旨在于神经网络的实现期间从该对中的第一层接收经量化的输出数据、应用至少一个运算符并将经量化的输入数据递送给该对中的第二层,至少一个查找表包含针对经量化的输出数据的所有可能值的经量化的输入数据的所有对应的可能值。

至少一个运算符例如是点对点运算符。

当神经网络包括被应用在P对连续层之间的至少一个运算符,表示P对层之间的P个传递函数的最多P组值例如被存储在存储器中。

根据另一方面,提供了一种被配置为实现上文所定义的实现方法的设备。

根据另一方面,提供了一种计算工具,该工具包括生成装置,在由处理单元实现神经网络之前配置该生成装置,神经网络包括一系列的层和被应用在至少一对连续层之间的至少一个运算符,以生成旨在由处理单元执行以便实现神经网络的可执行代码,并在至少一对层之间生成至少一个传递函数,该至少一个传递函数采取成组的经预计算的值的形式。

根据一个实施例,至少一个传递函数旨在于神经网络的实现期间从该对中的第一层接收经量化的输出数据、应用至少一个运算符并将经量化的输入数据递送给该对中的第二层。出于生成至少一个传递函数的目的,针对输出数据的每个可能的量化值,生成装置被配置为应用逆第一量化函数,从而允许将经量化的值转化为浮点值、将至少一个运算符应用于浮点值以便获得中间浮点值、并将第二量化函数应用于中间值以便递送输入数据的对应的经量化的值,并生成查找表,该查找表包含针对经量化的输出数据的所有可能值的经量化的输入数据的所有对应的可能值。

根据一个实施例,至少一个运算符是点对点运算符。

根据一个实施例,提供了一种计算工具,其中神经网络包括被应用在P对连续层之间的至少一个运算符,并且生成装置被配置为当在P对层之间生成P个相应传递函数时生成最多P个查找表。

根据一个实施例,计算工具被配置为实施训练神经网络的阶段,并且生成装置被配置为在训练阶段期间或之后生成至少一个传递函数。

根据一个实施例,计算工具可以包括并入生成装置的微处理器或微控制器。

根据另一方面,提供了一种设备。该设备包括被配置为实现数字神经网络的处理单元。神经网络包括一系列的层和被应用在至少一对连续层之间的至少一个运算符。存储器被配置为存储允许实现神经网络的可执行代码和表示至少一对层之间的至少一个传递函数的至少一组值。处理单元被配置为执行可执行代码,该执行包括为通过从至少一组存储值中提取与至少一对层中的第一层的经量化的输出数据的值相对应的值,来确定至少一个传递函数,提取的值是该对中的第二层的经量化的输入数据。

根据一个实施例,表示至少一对层之间的至少一个传递函数的至少一组值以至少一个查找表的形式来被存储,该传递函数旨在于神经网络的实现期间从该对中的第一层接收经量化的输出数据、应用至少一个运算符并将经量化的输入数据递送给该对中的第二层,至少一个查找表包含针对经量化的输出数据的所有可能值的经量化的输入数据的所有对应的可能值。

根据一个实施例,至少一个运算符是点对点运算符。

根据一个实施例,其中神经网络包括被应用在P对连续层之间的至少一个运算符,存储器被配置为存储表示P对层之间的P个传递函数的最多P组值。

根据一个实施例,处理单元可以包括微处理器或包括实际的硬件加速器。

现在将参考附图。

在图1中,参考标记ORD指定包括微处理器或微控制器的计算工具,例如个人膝上型计算机。

工具ORD的微处理器并入了软件生成装置GEN,该软件生成装置将尤其生成(步骤11)表示神经网络DNN(特别地为深度神经网络)的可执行代码。

如图1中所示意性图示的,该神经网络DNN包括一系列的层,其当前层被称为LYk。

参考标记DSk指定层LYk的经量化的输出数据。

参考标记DEk+1指定等级k+1的下一层LYk+1的经量化的输入数据。

参考标记Opk指定此处被应用在层Lyk与下一层LYk+1之间的运算符。

参考标记Qk指定输出数据DSk的量化方案,并且参考标记Qk+1指定输入数据DEk+1的量化方案。

量化方案Qk和Qk+1尤其根据对应数据所需的精度可以相同或不同。

在神经网络的两个连续层之间存在运算符的情况下,有必要确定传递函数,该传递函数将从该对连续层中的第一层(此处为层LYk)接收经量化的输出数据,该经量化的输出数据将应用运算符OPk并且将会将经量化的输入数据递送给该对层中的第二层(此处为层LYk+1)。

根据本发明,将以经预计算值的表TF的形式来生成该传递函数。

该生成12也由生成装置实施,并且它有利地在训练神经网络的阶段PHT期间或之后实施,以便考虑神经网络的权值的最终值。

通常,两层之间的每个传递函数都有一个查找表TF。

这样,当例如在神经网络的P对层之间应用P个运算符时,针对某些成对层,多个经预计算的查找表可以是相同的。

换言之,如图1中所图示的,假设在神经网络的P对层之间应用一个或多个运算符,则生成装置将生成T个查找表,其中T小于或等于P。

因此,计算工具ORD将一方面递送可执行代码CX,且另一方面递送T个查找表TFt,其中t在1至T之间变化。

为了在设备APP内实现神经网络,该设备例如(通过非限制性示例)是配备有处理单元UT(例如微处理器或实际上硬件加速器)的智能手机或实际上是平板计算机,可执行代码CX和各种查找表TFt被存储(步骤13)在存储器MM中。

存储器可以包括一个或多个物理存储器。在多个物理存储器的情况下,可执行代码CX可以被存储在第一存储器中,而查找表TFt可以被存储在另一存储器中。

然后,处理单元UT通过一方面执行可执行代码CX并通过另一方面确定各种传递函数FTk(步骤14)来实现神经网络DNN,将该神经网络与任何种类的输入数据一起被递送给处理单元。

如由图1中的虚线箭头所示意性图示的,这些各种传递函数FTk并非通过实时计算来被确定,而是根据对应成对层中的第一层的输出数据的值,从对应查找表TFt中提取经预计算的值来被确定。

将在下文更详细地说明这种情况。

神经网络DNN的实现最终允许例如获得决策DF,例如分类决策。

更特别地,现在将参考图2和3,以便更详细地描述生成查找表TF的示例。

为了简单起见,假设在两个连续的层LYk与层LYk+1之间仅应用单个运算符OPk。

通常,针对输出数据DSk的每个可能的经量化的值,这两层之间的传递函数的生成包括:需要应用逆第一量化函数Qk-1,从而允许将使用给定量化方案进行量化的值转化为浮点值、将运算符OPk应用于浮点值以便获得中间浮点值、并将第二量化函数Qk+1应用于中间值以便递送输入数据DEk+1的对应的经量化的值(使用相同的量化方案或另一量化方案进行量化的)。

生成查找表TFi(步骤23),并且该查找表包含针对经量化的输出数据的所有可能值的经量化的输入数据的所有可能值。

此外,这些经预计算的值考虑了层LYk的输出数据的量化方案以及层LYk+1的输入数据的量化方案。

如图2中所图示的,首先定义表示输出数据DSk的经量化的值的索引j来生成该查找表。

这些经量化的值被量化为nb位,并且例如被量化为8位。

如图2的框21中所图示的,对于无符号量化(a),j在0与2

对于有符号量化(b),j在-2

对于具有对称范围的有符号量化(c),j在-2

例如,当采用量化为8位(nb=8)时,在情况(a)中,j可以采取以十进制计数形式的包括0与255之间的所有值。

然后查找表TF的索引i(图2中的方框22)被定义。

在情况(a)中,i等于j。

在情况(b)中,i等于j+2

在情况(c)中,i等于j+2

通常,i等于j–minR,其中minR指定j的经量化的值范围的最小值。

此外,i在0与2nb-1之间变化。

因此,对于量化为8位,针对查找表TF获得了256个值。该查找表的各个值TF(i)与层LYk+1的输入数据DEk+1的经量化的值相对应,这些输入数据的经量化的值分别对应于层LYk的经量化的输出数据DSk的j值。

因此,在神经网络的实现期间,针对层LYk的输出数据的给定的经量化的值,并且因此针对给定的j值,将直接从表中的对应索引i处获得输入数据DEk+1的对应的经量化的值,该输入数据使用正确的量化方案来被量化并通过将运算符OPk应用于上一层的对应输出数据而产生。

此外,当对于给定层存在一组输出数据时,通过从查找表TF提取针对该组中的每个输出数据的输入数据的对应值来获得针对下一层的一组输入数据。

图3图示了各种可能的量化方案和各种可能的运算符,这些运算符有利地是点对点运算符,即,不修改应用这些运算符的张量维度的运算符。

关于运算符OPk,例如可能提到双曲正切函数、S型函数、leaky-ReLu函数和Erf函数。所有这些运算符为本领域技术人员所熟知并且例如在上述ONNX文档中进行了描述,该文档可以通过以下因特网https://github.com/onnx/onnx/blob/master/docs/Operators.md进行访问。

关于逆量化操作Q-1k,即将经量化的值转化为浮点值的操作,例如,如图3的框31中所图示的,可以使用均匀仿射量化(1),其中“scale”参数定义了量化步长,而“zero_point”参数是实零与经量化的值的零之间的偏移。

也可以使用非对称量化(2)或对称量化(3)或固定Qmn类型量化(4)。

所有这些示例都是非限制性的,并且为本领域技术人员所熟知的,无论出于什么意图和目的,本领域的技术人员都可以更详细地参考上述Krishnamoorthi和Jacob的文章。

函数Qk+1可以是图3的框31中提到的量化方案(1)至(4)中的一个的逆量化方案。

当然,本发明不限于刚刚描述的实现模式和实施例,并且涵盖本发明的所有变型。

因此,可以在神经网络的两个连续层之间应用多个运算符。

在这种情况下,传递函数的查找表将经由这些运算符级联的连续应用将这些各种传递运算符应用于索引j。

此外,本发明例如可以有利地与提交的编号为1902855的法国专利申请中所描述的发明结合使用。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号