量化神经网络的有效初始化
背景技术:1.本公开中描述的一些实施例涉及执行神经网络的计算机化系统,更具体地,但不仅限于,使用量化值执行神经网络的计算机化系统。
2.术语神经网络通常用于描述模拟人类大脑和神经系统的计算机系统。神经网络通常涉及大量并行操作并且在层(或级(tiers))中排列和连接的处理对象。第一层接收类似于人类视觉处理中的视神经或人类声音处理中的听觉受体神经元的原始输入信息(一个或多个输入值)。每一个连续的层接收来自它之前的一个或多个层的输出,而不是来自原始输入——类似于远离视神经或听觉受体神经元的神经元接收来自靠近视神经或听觉受体神经元的神经元的信号。最后一层产生神经网络的输出。例如,在计算机视觉中,原始输入信息可以是一个或多个图像,输出可以是在图像中检测到的一个或多个特征分类。在用于回归的神经网络系统中,输出可以是根据原始输入信息中的一个或多个值计算的预测值。深度神经网络中的术语“深度”是指这种神经网络中的层数。神经网络层中的典型计算包括对输入值和相关权重的多个乘积求和,并将所得总和(有时称为激活值)映射到输出值。所得总和到输出值的映射可以是非线性变换,有时称为“激活函数”,在该值上完成,并表示由所得总和表示的信息是与给定输入相关还是应该被忽略。这种计算有时被称为“前向传递”或“前向传播”。训练神经网络是指根据输入值集合的计算输出值和预期输出值之间的误差项来调整神经网络的多层的多个权重值的过程,使得在下一次迭代中,计算输出值将比前一次迭代更接近已知的预期输出值。训练神经网络的目的是找到多个训练的权重值,这些权重值最小化计算的输出值和预期的输出值之间的误差项。根据误差项调整多层神经网络的多个权重值有时被称为“后向传递(backward pass)”或“后向传播(backward propagation)”。
3.机器学习的最新突破利用了大型深度神经网络,部署在强大的通用处理单元上。典型的深度神经网络包括数百万个参数,并且可能需要数百万次算术运算,并且对于在有限硬件上运行的应用,使用深度神经网络的实时处理可能需要超过许多设备(例如移动设备、一些嵌入式设备和一些定制硬件设备)能力的数字存储资源和功率资源。此外,当在有限的硬件上执行这样的应用时,计算延迟可能超过可接受的延迟阈值。一些移动设备应用需要利用神经网络,例如使用计算机视觉的移动设备应用。一些应用可以被设计成使得设备与远程服务(例如,云实现的服务)通信,该远程服务使用神经网络来执行计算。然而,这种架构需要网络连接,而网络连接可能并不总是可用的,并且可能导致延迟限制。神经网络的多个权重值存储在存储器中。减少存储每个权重所需的存储量可以允许在设备上安装比使用需要更大存储量的权重的神经网络更大的神经网络。此外,神经网络在各层之间传递激活值。减小多个激活值中的每一个的大小可以提高处理速度,以及减小层之间的通信带宽。
4.降低神经网络的计算和存储成本的一种方式是量化神经网络的多个权重值和激活值中的一些。量化是将输入从原始值的大集合约束到量化值的离散集合的过程。量化值的离散集合通常比原始值的大集合具有更少的值。
5.在一些神经网络中,多个权重值和多个激活矩阵值是实数(非整数)。一些减少计算和存储器负载的现有方法降低了多个权重值和多个激活矩阵值的精度,目的是允许更有效的存储器表示和更有效的计算,而不会显著影响神经网络输出的精确度。一些其他方法训练多个全精度神经网络权重值,这些权重值在神经网络的前向传递中被量化,并通过适应的后向传播方法被更新。与量化全精度训练的神经网络(也称为训练后量化)相比,以这种方式训练量化神经网络产生了其性能(通过神经网络的输出精确度测量)更接近于全精度神经网络的神经网络。
技术实现要素:6.本公开的目的是描述一种用于训练量化神经网络的系统和方法。
7.前述和其他目的通过独立权利要求的特征来实现。从从属权利要求、说明书和附图中,进一步的实施形式是显而易见的。
8.根据本发明的第一方面,一种用于训练量化神经网络的系统,包括处理单元,所述处理单元适于:将训练后量化方法应用于训练的神经网络的全精度权重值集合,以计算量化权重值集合;使用所述量化权重值集合初始化神经网络的模型权重值;以及使用量化训练方法训练所述神经网络以产生训练的量化权重值集合。
9.根据本发明的第二方面,一种用于训练神经网络的方法包括:将训练后量化方法应用于训练的神经网络的全精度权重值集合,以计算量化权重值集合;使用所述量化权重值集合初始化神经网络的模型权重值集合;以及使用量化训练方法训练所述神经网络,以产生训练的量化权重值集合。
10.根据本发明的第三方面,一种用于操作量化神经网络的系统,包括处理单元,所述处理单元适于:用训练的量化权重值集合初始化所述量化神经网络的量化模型权重值集合,所述训练的量化权重值集合通过以下方式计算:将训练后量化方法应用于训练的神经网络的全精度权重值集合,以计算量化权重值集合;使用所述量化权重值集合初始化神经网络的模型权重值集合;以及使用量化训练方法来训练所述神经网络,以产生训练的量化权重值集合;并接收输入数据;以及通过将所述输入数据输入所述量化神经网络以计算至少一个预测值。
11.参考第一和第二方面,在本发明第一和第二方面的第一可能实现中,所述神经网络包括多个层,每个层与所述训练的神经网络的多个训练的层之一相关联,并且对于所述多个层中的每一层,所述处理单元还适于:将训练后激活量化方法应用于从所述训练的神经网络的相应层提取的全精度层激活值集合,以计算优选层偏移值和优选层激活饱和因子;使用所述优选层偏移值初始化所述层的层偏移值;使用所述优选层激活饱和因子初始化所述层的层激活饱和因子;以及训练所述神经网络以进一步产生训练的量化层激活偏移值和训练的量化层激活饱和因子。由此产生的优选层偏移值和优选层激活饱和因子更接近期望的层偏移值和期望的层激活饱和因子,进一步最小化一个或多个误差项,减少训练量化神经网络所需的时间量,并增加训练的量化层激活偏移值和训练的量化层激活饱和因子的精确度,从而增加量化神经网络的输出的精确度,响应于输入数据,使用训练的量化层激活偏移值和训练的量化层激活饱和因子初始化。
12.参考第一和第二方面,或者第一和第二方面的第一实现,在本发明的第一和第二
方面的第二可能实现中,将所述训练后量化方法应用到所述全精度权重值集合以进一步计算至少一个缩放因子,并且将所述训练后量化方法应用到所述全精度权重值集合包括:计算量化权重值的优选集合和至少一个优选缩放因子,其最小化所述全精度权重值集合和使用所述量化权重值的优选集合和所述至少一个优选缩放因子计算的重建权重值集合之间的均方差;以及分别使用所述量化权重值的优选集合和所述至少一个缩放因子作为所述量化权重值的集合和所述至少一个缩放因子。使用如上所述产生的优选量化权重值集合减少了训练量化神经网络所需的时间量,并提高了所述训练量化权重值集合的精确度,从而提高了量化神经网络输出的精确度,所述量化神经网络响应于输入数据使用所述训练量化权重值集合初始化。
13.参考第一和第二方面,或者第一和第二方面的第一和第二实现,在本发明的第一和第二方面的第三可能实现中,将所述训练后量化方法应用到所述全精度权重值集合以进一步计算至少一个缩放因子。可选地,使用所述量化训练方法包括在多个训练迭代的每一个中将量化前向传递卷积方法应用于所述模型权重值集合,包括:将所述量化训练方法的量化方法应用到所述模型权重值集合,以产生量化模型权重值集合和至少一个模型缩放因子;以及将前向传递卷积方法应用到所述量化模型权重值集合和所述至少一个模型缩放因子。可选地,所述处理单元还适于:使用所述量化权重值集合和所述至少一个缩放因子以计算调整后的量化权重值集合和至少一个调整后的缩放因子,使得将所述训练神经网络的全精度前向传递卷积方法应用到所述量化权重值集合和所述至少一个缩放因子的全精度结果等于将量化前向传递卷积方法应用到所述调整后的量化权重值集合和所述至少一个调整后的缩放因子的量化结果;以及当初始化所述神经网络的模型权重值集合时,使用所述调整后的量化权重值集合代替量化权重值集合。可选地,将所述量化训练方法的量化方法应用到所述模型权重值集合包括对于所述模型权重值集合中的每一个模型权重值,计算所述量化模型权重值集合中的一个量化模型权重值,包括:通过从标识的整数位精度值中减去1来计算精度幂值,所述精度幂值指示所述量化方法的精度;将所述模型权重值乘以2,得到所述精度幂值的幂,以产生扩展的权重值;通过将扩展的权重值舍入到最接近的整数来计算舍入项;通过在饱和范围内剪切所述舍入项来计算剪切项;以及将所述剪切项除以2,得到所述精度幂值的幂,以产生所述模型权重值的相应量化模型权重值。可选地,使用所述量化训练方法还包括在所述多个训练迭代的每一个中将量化后向传递更新方法应用于所述模型权重值集合,包括:根据所述量化模型权重值集合、识别的目标函数和使用所述神经网络执行所述多个训练迭代中的至少一些,计算量化权重梯度值集合,每个权重梯度值与所述模型权重值集合中的一个模型权重值相关联;以及将所述量化权重梯度值集合中的每一个量化权重梯度值乘以将指示函数应用于与其相关联的相应权重值的结果,以产生梯度值集合。可选地,计算调整后的量化权重值集合包括将每个量化权重值除以2,得到所述精度幂值的幂。可选地,计算所述至少一个调整后的缩放因子包括将所述至少一个缩放因子乘以2,得到所述精度幂值的幂。可选地,所述处理单元还适于从训练和验证所述神经网络时使用的多个输入实例中选择多个校准实例。可选地,将所述训练后激活量化方法应用到所述全精度层激活值集合包括:识别多个层校准激活值集合,当由所述神经网络处理相应的校准实例时,针对所述多个校准实例中的一个来识别每个层校准激活值集合;计算所述优选层偏移值,包括:通过在处理所述校准实例时为多个校准实例中的每一个识别所述层
的相应层校准激活值集合的最小值,来识别多个最小校准值;以及计算多个最小校准值的平均值,以产生所述优选层偏移值;以及通过识别最小化所述多个层校准激活值集合和多个量化层校准激活值集合之间的总均方差的层激活饱和因子,来计算所述优选层激活饱和因子,所述计算使用所述层激活饱和因子、所述多个层校准激活值和所述优选层偏移值来进行,包括:通过为所述多个校准实例中的每一个计算校准实例误差来计算多个校准实例误差,包括:通过从所述标识的整数位精度值的2次幂的结果中减去1来计算量化极限值;通过将所述量化极限值除以所述层激活饱和因子来计算扩展项;通过从每个校准实例的相应层校准激活值集合中减去所述优选层偏移值来计算移位值集合;通过将所述移位值集合中的每一个乘以所述扩展项来计算扩展项集合;通过将所述扩展项集合中的每一个饱和到识别的量化范围来计算饱和项集合;通过将所述饱和项集合中的每一个舍入到最接近的整数值来计算舍入项集合;通过将所述舍入项集合中的每一个除以所述扩展项来计算缩减项集合;通过将所述优选层偏移值添加到所述缩减项集合的每一个来计算所述量化层校准激活值集合;计算所述校准实例的相应层校准激活值集合和所述量化层校准激活值集合之间的均方差;以及计算所述多个校准实例误差的总和,以产生所述总均方差。可选地,所述多个层中的每一层包括层权重值集合,所述层权重值集合由所述模型权重值集合中的至少一些组成。可选地,应用所述量化前向传递卷积方法还包括对于所述多个层中的每一层,针对所述层的层激活值集合,计算量化层激活值集合和层激活饱和因子。可选地,对于所述多个层中的每一层,进一步对相应的层激活饱和因子、相应的层激活值集合和层偏移值应用所述前向传递卷积方法。可选地,将所述量化训练方法的量化方法应用到所述模型权重值集合还包括对于所述多个层中的每一层,针对所述层激活值集合中的每一个,计算所述量化层激活值集合中的一个量化层激活值,包括:通过将所述量化极限值除以所述层激活饱和因子来计算量化扩展项;从所述层激活值中减去所述层偏移值以产生移位项;在0和所述层激活饱和因子之间剪切所述移位项,以产生剪切项;将所述剪切项与所述量化扩展项相乘以产生扩展项;将所述扩展项舍入到最接近的整数值,以产生舍入的激活项;将所述舍入的激活项除以所述量化扩展项以产生缩减项;以及将所述层偏移值与所述缩减项相加以产生所述量化层激活值。可选地,使用所述量化训练方法还包括在所述多个训练迭代的每一个中,对于所述多个层中的每一层,将所述量化后向传递更新方法应用于所述层激活值集合,还包括:根据所述量化层激活值集合、所述识别的目标函数以及使用所述神经网络执行所述多个训练迭代中的至少一些迭代的结果来计算量化激活梯度值集合,所述量化激活梯度值集合中的每一个量化激活梯度值与所述层激活值集合中的一个层激活值相关联;将所述量化激活梯度值集合中的每一个与将激活指示函数应用于与其相关联的相应层激活值的结果相乘,以产生激活梯度值集合;将所述量化激活梯度值集合中的每一个乘以将饱和度指示函数应用于与其相关联的相应层激活值的结果,以产生中间饱和度梯度值集合;计算所述中间饱和梯度值集合的总和以产生饱和梯度值;将所述量化激活梯度值集合中的每一个乘以将偏移指示函数应用于与其相关联的相应层激活值的结果减一的结果,以产生中间偏移梯度值集合;以及计算所述中间偏移梯度值集合的和,以产生偏移梯度值。与训练的全精度神经网络相比,使用如上所述计算的调整后的量化权重值的集合初始化所述模型权重值集合保持了第一训练迭代的卷积的精确度,增加了所述训练的量化权重值集合的精确度并减少训练时间。与训练的全精度神经网络相比,如上所述调整前向传递函数的一个或多个
值进一步保持了第一训练迭代的卷积精确度,增加了所述训练的量化权重值集合的精确度并减少了训练时间。改变所述神经网络的后向传递更新函数的一个或多个值以反映调整后的量化前向传递卷积方法相对于每层的层激活值集合、一个或多个激活饱和因子和一个或多个层偏移值的梯度(或近似导数),增加了训练的量化权重值集合的精确度并减少了训练时间。
14.参考第一和第二方面,或者第一和第二方面的第一、第二和第三实现,在本发明的第一和第二方面的第四可能实现中,所述处理单元还适于为所述多个层中的每一层向另一处理单元提供所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子,以便初始化另一神经网络的另外多个层中的另一层。可选地,为所述多个层中的每一层提供所述训练的量化层激活偏移值和所述经训练的量化层激活饱和因子包括以下至少一项:经由连接到所述处理单元的数字通信网络接口,将所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子中的至少一个发送到另一个处理单元;将所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子中的至少一个存储在连接到所述处理单元的数字存储上。可选地,为了初始化另一个神经网络的另外多个模型权重值,所述处理单元还适于向所述另一个处理单元提供所述训练的量化权重值集合。可选地,提供所述训练的量化权重值集合包括以下至少一项:经由连接到所述处理单元的数字通信网络接口将所述训练的量化权重值集合发送到另一个处理单元;以及将所述训练的量化权重值集合存储在连接到所述处理单元的数字存储上。为了初始化另一个神经网络,向另一个处理单元提供如上所述的一个或多个值有助于降低一个或多个其他系统的实施成本。
15.参考第三方面,在本发明第三方面的第一可能实现中,所述处理单元还适于对于所述量化神经网络的多个量化层中的每个量化层,分别利用训练的量化层偏移值和训练的量化层激活饱和因子初始化量化层偏移值和量化层激活饱和因子,所述训练的量化层偏移值和所述训练的量化层激活饱和因子通过以下计算:将训练后激活量化方法应用于从与所述神经网络的多个层中的一层相关联的所述训练的神经网络的多个训练层中的训练层提取的全精度层激活值集合,以计算优选层偏移值和优选层激活饱和因子;使用所述优选层偏移值初始化所述层的层偏移值;使用所述优选层激活饱和因子初始化所述层的层激活饱和因子;以及训练所述神经网络以进一步产生所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子。
16.基于对以下附图和详细描述的研究,本公开的其他系统、方法、特征和优点对于本领域技术人员来说将变得显而易见。所有这些附加的系统、方法、特征和优点都包含在本说明书中,包含在本公开的范围内,并且受到所附权利要求的保护。
17.除非另有定义,否则本文使用的所有技术和/或科学术语具有与实施例涉及的本领域普通技术人员通常理解的相同的含义。尽管在实施例的实践或测试中可以使用与本文描述的方法和材料类似或等同的方法和材料,但是示例性的方法和/或材料在下面描述。如有冲突,以专利说明书(包括定义)为准。此外,材料、方法和实例仅是说明性的,并不意味着必须是限制性的。
附图说明
18.参考附图,这里仅通过示例的方式描述了一些实施例。现在详细具体参考附图,要
强调的是,所示的细节是示例性的,并且是为了实施例的说明性讨论的目的。在这点上,结合附图的描述使得本领域技术人员清楚如何实施实施例。
19.在附图中:
20.图1是示出根据一些实施例的示例性数据流的示意框图;
21.图2是根据一些实施例的示例性系统的示意框图;
22.图3是示意性表示根据一些实施例的用于训练量化神经网络的可选操作流程的流程图;
23.图4是示意性地表示根据一些实施例的用于应用训练后量化方法的可选操作流程的流程图;
24.图5是示意性地表示根据一些实施例的用于应用量化前向传递卷积方法的可选操作流程的流程图;
25.图6是示意性地表示根据一些实施例的用于计算量化模型权重值的可选操作流程的流程图;
26.图7a和7b是示意性地表示根据一些实施例的用于应用量化后向传递更新方法的可选操作流程的流程图;
27.图8a是示意性地表示根据一些实施例的用于应用训练后激活量化方法的可选操作流程的流程图;
28.图8b是示意性表示根据一些实施例的用于计算优选层偏移值的可选操作流程的流程图;
29.图8c是示意性地表示根据一些实施例的用于计算总均方差的可选操作流程的流程图;
30.图8d是示意性表示根据一些实施例的用于计算校准实例误差的可选操作流程的流程图;
31.图9a是示意性地表示根据一些实施例的用于计算量化层激活值的可选操作流程的流程图;
32.图9b是示意性地表示根据一些实施例的用于应用量化后向传递更新方法的另一可选操作流程的流程图;
33.图10是示意性表示根据一些实施例的用于操作量化神经网络的可选操作流程的流程图;以及
34.图11a、11b、11c、11d、11e、11f和11g是表示神经网络相对于训练时期的精确度的示意图。
具体实施方式
35.本公开中描述的一些实施例涉及执行神经网络的计算机化系统,更具体地,但不排他地,涉及使用量化值执行神经网络的计算机化系统。
36.本公开集中于具有一个或多个卷积层的神经网络,然而,本公开不限于这样的神经网络,并且可以应用于附加地或替代地具有一个或多个全连接层的神经网络。
37.存在使用非线性量化方法的量化神经网络,使得非线性量化神经网络的输出和训练的全精度神经网络之间的距离小于根据至少一个距离测试识别的阈值。然而,非线性量
化神经网络并不总是与用于执行神经网络的现有硬件兼容。需要训练使用线性量化方法的量化神经网络,使得线性量化神经网络的输出和训练的全精度神经网络之间的距离小于识别的阈值。
38.初始化神经网络的训练包括初始化神经网络的多个权重值,并且附加地或替代地初始化神经网络的多个激活函数的多个饱和因子和偏移值。训练量化网络包括训练量化神经网络的多个量化权重值,并且附加地或替代地训练量化神经网络的一个或多个缩放因子。附加地或替代地,训练量化神经网络包括训练量化神经网络的多个激活函数的多个饱和因子和偏移值,每个饱和因子和偏移值是量化神经网络的多个层之一。一些现有的用于训练量化神经网络的方法用随机值或者用预训练的全精度值初始化神经网络,该预训练的全精度值随后通过神经网络的训练框架的量化管道进行量化。全精度值的一个示例是32位浮点值。然而,这样的初始化值可能远离期望的训练神经网络值集合,该训练神经网络值集合最小化训练的量化神经网络的一个或多个计算输出值和训练的量化神经网络的一个或多个预期输出值之间的一个或多个误差项,增加了训练时间并降低了训练的量化神经网络的精确度。此外,训练框架的量化管道可以有效地饱和(剪切)初始化值,显著地降低神经网络的初始化值的实际精确度,例如当在0和1之间的多个全精度浮点值被量化为一组整数值时,例如在0和10之间,进一步增加了训练时间并降低了训练的量化神经网络的精确度。
39.需要训练量化神经网络,使得训练的量化神经网络的输出与训练的全精度神经网络的输出一样准确。需要训练量化神经网络,使得训练的量化神经网络的输出和训练的全精度神经网络之间的距离最小化。
40.一些非线性量化神经网络使用的一些非线性量化方法允许这种非线性量化神经网络的输出和训练的全精度神经网络之间的距离小于根据至少一个距离测试识别的阈值。然而,使用非线性量化方法的量化神经网络需要定制的硬件,并且不能与大多数标准硬件一起使用。
41.为此,在本文描述的一些实施例中,本公开提出将一种或多种训练后量化方法应用于训练的神经网络的一个或多个全精度神经网络值,以产生一个或多个量化初始化值,并使用量化初始化值初始化量化神经网络的训练。这种量化初始化值更接近于期望的训练神经网络值集合,因此,与使用随机初始化值或全精度训练神经网络值训练的另一个量化神经网络相比,使用量化初始化值开始训练量化神经网络减少了训练量化神经网络的时间量,并增加了训练的量化神经网络的精确度。此外,在一些实施例中,本公开允许通过使用标准低精度硬件来执行量化神经网络,从而降低使用量化神经网络的系统的实现成本。低精度硬件比执行全精度神经网络所需的高精度硬件便宜,也比执行非线性量化神经网络所需的定制硬件便宜。此外,低精度硬件比高精度硬件消耗更少的功率,进一步有助于降低实施成本。此外,低精度硬件比高精度硬件更快,与使用全精度神经网络的系统相比,增加了使用量化神经网络的系统的吞吐量。
42.可选地,一个或多个全精度神经网络值包括训练的神经网络的全精度权重值集合。在这样的实施例中,本公开提出将训练后量化方法应用于训练的神经网络的全精度权重值的集合,以产生量化权重值集合,并且使用该量化权重值集合初始化神经网络的模型权重值集合,用于使用量化训练方法训练神经网络,以产生训练的量化权重值集合。训练后量化方法的一些示例是:最小均方差量化(minimum mean square error,mmse)、均匀量化、
用于激活量化kullback-leibler散度最小化以及权重的k均值量化。量化训练方法的一些示例是:宽精度缩减网络量化(wide reduced-precision network,wrpn)、do-re-fa-net、量化神经网络的参数化剪切激活(parameterized clipping activation for quantized neural networks,pact)、半波高斯量化和均匀量化。由此产生的该量化权重值集合更接近最小化一个或多个误差项的期望的量化权重值集合,减少了训练量化神经网络所需的时间量,并增加了该训练的量化权重值集合的精确度,从而增加了量化神经网络的输出精度,该量化神经网络响应于输入数据使用该训练的量化权重值集合初始化。
43.可选地,使用量化训练方法包括在多次训练迭代的每一次中,将量化前向传递卷积方法应用于神经网络的模型权重值集合和一个或多个模型缩放因子。可能将量化前向传递卷积方法应用于该量化权重值集合和一个或多个缩放因子的结果不如将训练的神经网络的全精度前向传递卷积方法应用于该量化权重值集合和一个或多个缩放因子的结果精确。因此,量化神经网络的第一次训练迭代可以增加在第一次训练迭代中计算的多个神经网络值和期望的训练神经网络值集合之间的距离,从而增加量化神经网络的训练时间并降低该训练的量化权重值集合的精确度。为了增加将量化前向传递卷积方法应用于该量化权重值集合和一个或多个缩放因子的结果的精确度,本公开在其中描述的一些实施例中提出,使用该量化权重值集合和一个或多个缩放因子来计算调整后的量化权重值集合和一个或多个调整后的缩放因子,使得对该量化权重值集合和一个或多个缩放因子应用训练神经网络的全精度前向传递卷积方法的全精度结果等于对该调整后的量化权重值集合和一个或多个调整后的缩放因子应用量化前向传递卷积方法的量化结果。此外,在这样的实施例中,本发明提出在训练之前,当初始化神经网络的模型权重值集合时,使用调整后的量化权重值集合而不是量化权重值集合。例如,当量化训练方法是wrpn时,由w0表示的调整后的量化权重值的集合可选地由下式计算:
[0044][0045]
其中w*表示量化权重值的集合。
[0046]
可选地,当量化训练方法是wrpn时,由α0表示的一个或多个调整后的缩放因子由下式计算:
[0047]
α0=2
k-1
α
*
[0048]
其中α*表示一个或多个缩放因子。与训练的全精度神经网络相比,使用如上所述计算的调整后的量化权重值的集合来初始化模型权重值集合保持了第一训练迭代的卷积的精确度,从而增加了训练的量化权重值集合的精确度并减少了训练时间。
[0049]
此外,在本公开中描述的一些实施例中,进一步调整神经网络的前向传递函数的一个或多个值,以增加将量化前向传递卷积方法应用于该量化权重值集合和一个或多个缩放因子的结果的精确度。此外,或可选地,改变神经网络的后向传递更新函数的一个或多个值,以反映在通过量化训练方法的前向传递的量化进行量化之前,调整后的量化前向传递卷积方法相对于该模型权重值集合的梯度(或近似导数)。可选地,前向传递函数的一个或多个值以及附加地或替代地后向传递更新函数的一个或多个值被进一步调整,使得将量化前向传递卷积方法应用于该调整后的量化权重值集合和一个或多个调整后的缩放因子的量化结果等于将训练的神经网络的全精度前向传递卷积方法应用于该量化权重值集合和
一个或多个缩放因子的全精度结果。如上所述,进一步调整前向传递函数的一个或多个值,与训练的全精度神经网络相比,保持了第一训练迭代的卷积的精确度,增加了训练的量化权重值集合的精确度,并减少了训练时间。例如,当量化训练方法是wrpn时,在一些实施例中,前向传递函数被设置为:
[0050][0051]
其中:
[0052]
w表示模型权重值集合,
[0053]
α表示一个或多个缩放因子,
[0054]
wq表示量化权重值集合,
[0055]
k表示用于量化的识别的整数位精度,
[0056]
clip(α,min,max)表示应用于由a表示的自变量(argument)的剪切函数,对于由min表示的最小值和由max表示的最大值之间的a值返回a,包括min和max,对于a《min的值返回min,对于a》max的值返回max,以及
[0057]
round(g)表示最接近由g表示的值的整数值。
[0058]
可选地,当量化训练方法是wrpn时,后向传递被设置为:
[0059][0060]
其中:
[0061]
表示梯度权重值集合,
[0062]
表示梯度量化权重值集合,以及
[0063]
i|cond(c)表示指示函数,对于由c表示的任何值具有值1,使得由cond(c)表示的条件为真,否则为0。
[0064]
本公开不限于量化训练方法是wrpn的实施例。在一些其他实施例中,根据一种或多种其他量化训练方法,可以计算其他的调整后的量化权重值集合,以及附加地或替代地其他一个或多个缩放因子。附加地或替代地,在一些其他实施例中,根据一个或多个其他量化训练方法,可以计算一个或多个其他前向传递函数的其他一个或多个值,以及附加地或替代地,一个或多个其他后向传递函数的其他一个或多个值。
[0065]
可选地,一个或多个全精度神经网络值包括神经网络的多层中的每一层的全精度层激活值集合。可选地,该全精度层激活值集合从训练的神经网络的多个训练层的相应层中提取,该训练的神经网络与神经网络的多个层中的层相关联,即,使用量化训练方法训练神经网络。一些现有的量化神经网络将均匀量化应用于多个层中的一层的激活值集合。对于这种量化神经网络,需要为每一层初始化一个层饱和因子,并且附加地或可选地初始化一个层偏移值。需要计算期望的层饱和因子以及附加地或可替换地最小化一个或多个误差项的期望的层偏移值。一些现有的量化训练方法将多个层的所有层的激活范围限制为[0,1]。其他一些现有的量化训练方法在没有量化激活值的情况下进行训练。
[0066]
在这里描述的一些实施例中,本公开提出,对于多个层中的每一层,将训练后激活量化方法应用于该层的全精度层激活值集合,以计算优选层偏移值和优选层激活饱和因
子,并且分别用优选层偏移值和优选层激活饱和因子初始化该层的层偏移值和该层的层激活饱和因子,用于训练神经网络,以进一步产生训练的量化层激活偏移值和训练的量化层激活饱和因子。由此产生的优选层偏移值和优选层激活饱和因子更接近期望层偏移值和期望层激活饱和因子,进一步最小化一个或多个误差项,从而进一步减少训练量化神经网络所需的时间量,并增加训练的量化层激活偏移值和训练的量化层激活饱和因子的精确度,从而增加量化神经网络输出的精确度,其中,响应于输入数据,使用训练的量化层激活偏移值和训练的量化层激活饱和因子来初始化量化神经网络。在一些实施例中,在多个训练迭代中,由q表示的训练迭代中,由l表示的神经网络层的由x
lq
表示的多个层激活值的量化为:
[0067][0068]
其中:
[0069]
x
lq
表示训练迭代q中层的量化的多个层激活值,
[0070]
β
*l
表示层l的优选层激活饱和因子;
[0071]
x
l
表示层l的多个层激活值,
[0072]m*l
表示表示层l的优选层偏移值,以及
[0073]
[a]表示最接近由a表示的值的整数值,饱和到无符号量化范围。
[0074]
可选地,用j表示的多个校准实例用于计算多个层中的每一层l的优选层偏移值和优选层激活饱和因子。可选地,j选自在训练和附加地或替代地验证神经网络时使用的多个输入实例。可选地,输入实例是数字图像。输入实例的其他可能的示例是音频信号和文本。可选地,多个输入实例选自一个或多个输入数据集合,例如imagenet、fieldsafe和reuters corpus。
[0075]
可选地,m
*l
是平均最小激活值,通过下式计算:
[0076][0077]
其中:
[0078]
|j|表示j中校准实例的数量,
[0079]
j表示j中的校准实例,
[0080]
min{a}表示由a表示的集合的最小值,以及
[0081]
x
jl
表示当处理校准实例j时层l的多个层激活值。
[0082]
可选地,对于每一层l,优选层激活饱和因子通过在多个校准实例j上使用均方差(mse)最小化来计算,通过:
[0083][0084]
其中:
[0085]
f(b)表示应用于由b表示的自变量的函数,
[0086]
argminb{f(b)}表示使f(b)的值最小化的自变量b的值,并且||s
1-s2||2表示a、两个向量(或矩阵)s1和s2之间的均方差,其中平均是在向量(或矩阵)的维数上进行的。
[0087]
要强调的是,根据本公开中描述的一些实施例,除了使用该量化权重值集合来初始化该模型权重值集合之外,还分别用优选层偏移值和优选层激活饱和因子来初始化该层
的层偏移值和该层的层激活饱和因子。根据其中描述的一些其他实施例,分别用优选层偏移值和优选层激活饱和因子来初始化层的层偏移值和层的层激活饱和因子,而不使用该量化权重值集合来初始化该模型权重值集合。根据其中描述的其他一些实施例,该模型权重值集合使用该量化权重值集合,而不用分别用优选层偏移值和优选层激活饱和因子来初始化该层的层偏移值和该层的层激活饱和因子。
[0088]
可选地,进一步调整神经网络的前向传递函数值的一个或多个值,以增加将量化前向传递卷积方法应用于量化权重值集合和一个或多个缩放因子以及对于多层中的每一层的层激活值集合的结果的精确度。此外,或可选地,神经网络的后向传递更新函数的一个或多个值被进一步改变,以反映调整后的量化前向传递卷积方法相对于每层的层激活值集合、一个或多个激活饱和因子和一个或多个层偏移值的梯度(或近似导数)。例如,当量化训练方法是wrpn时,在一些实施例中,层的一组激活值的前向传递函数被设置为:
[0089][0090]
其中:
[0091]
x表示层激活值的集合,
[0092]
β表示一个或多个激活饱和因子,
[0093]
xq表示量化层激活值的集合,以及
[0094]
m表示层偏移值。
[0095]
可选地,当量化训练方法是wrpn时,用于训练饱和度值的后向传递以及附加地或替代地偏移值被设置为:
[0096][0097][0098][0099]
其中:
[0100]
表示梯度激活值集合,
[0101]
表示梯度量化激活值集合,以及
[0102]
表示一个或多个梯度饱和度值。
[0103]
由于本公开不限于量化训练方法是wrpn的实施例,在一些其他实施例中,根据一个或多个其他量化训练方法,可以计算另一个优选的层偏移值和另一个优选的层激活饱和因子。附加地或替代地,在一些其他实施例中,根据一个或多个其他量化训练方法,可以计算用于激活的一个或多个其他前向传递函数的其他一个或多个值,以及用于激活的一个或多个其他后向传递函数的其他一个或多个值。
[0104]
在详细解释至少一个实施例之前,应该理解的是,实施例在其应用中不必局限于在以下描述中阐述的和/或在附图和/或示例中示出的组件和/或方法的构造和布置的细节。这里描述的实现能够有其他实施例,或者能够以各种方式实践或执行。
[0105]
实施例可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或媒介),用于使处理器执行实施例的各方面。
[0106]
计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以例如是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述设备的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom或闪存)、静态随机存取存储器(static random access memory,sram)、便携式光盘只读存储器(compact disc read-only memory,cd-rom)、数字多功能盘(digital versatile disk,dvd)、记忆棒、软盘以及前述的任何合适的组合。如此处所使用的,计算机可读存储介质不应被解释为本身是瞬时信号,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
[0107]
这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者通过网络下载到外部计算机或外部存储设备,所述网络例如是因特网、局域网、广域网和/或无线网络。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0108]
用于执行实施例的操作的计算机可读程序指令可以是汇编指令、指令集架构(instruction-set-architecture,isa)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据,或者是以一种或多种编程语言的任意组合编写的源代码或目标代码,包括诸如smalltalk、c++等面向对象的编程语言,以及诸如“c”编程语言或类似编程语言的传统过程编程语言。计算机可读程序指令可以完全在用户计算机上执行,部分在用户计算机上执行,作为独立软件包,部分在用户计算机上执行,部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(local area network,lan)或广域网(wide area network,wan))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(field-programmable gate array,fpga)或可编程逻辑阵列(programmable logic array,pla)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化电子电路来执行计算机可读程序指令,以便执行实施例的各方面。
[0109]
这里参考根据实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述实施例的各方面。将会理解,流程图和/或框图的每个块以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
[0110]
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括一种制造品,该制造品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
[0111]
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤在计算机、其他可编程装置或其他设备上执行,从而产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
[0112]
附图中的流程图和框图图示了根据各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个块可以表示指令的模块、片段或部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实现中,方框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由基于专用硬件的系统来实现,该系统执行指定的功能或动作或者执行专用硬件和计算机指令的组合。
[0113]
现在参考图1,示出了根据一些实施例的示出示例性数据流100的示意框图。在这样的实施例中,从训练的全精度神经网络101中提取全精度模型值集合102。全精度神经网络是具有全精度权重值和激活值的神经网络,例如64位浮点值和32位定点值。可选地,全精度模型值集合102包括全精度权重值集合。可选地,全精度模型值集合102包括多个全精度层激活值集合,每个全精度层激活值集合可选地从训练的全精度神经网络101的多个全精度层的全精度层中提取,可选地,在训练的全精度神经网络101正在处理输入实例时提取。可选地,输入实例是从多个输入实例中选择的多个校准实例之一。可选地,一个或多个训练后量化方法110被应用于该全精度模型值集合,以产生量化模型值集合111。可选地,量化模型值集合111包括量化权重值集合。可选地,量化模型值集合111包括一个或多个缩放因子。当神经网络135包括多个层,每个层与训练的全精度神经网络101的多个全精度层之一相关联时,使用一个或多个缩放因子之一来量化每个全精度层。可选地,多个全精度层中的每个全精度层具有多个部分,使得每个部分使用一个或多个缩放因子之一来量化。可选地,量化模型值集合111包括多个层中的每一层的优选层偏移值和优选层激活饱和因子。可选地,量化模型值集合111包括多个层中的每一层的每个部分的多个优选层偏移值之一和多个层激活饱和因子之一。
[0114]
可选地,一个或多个训练后量化方法110包括应用于全精度权重值集合的训练后量化方法。训练后量化方法的一些示例是mmse和均匀量化。可选地,一个或多个训练后量化方法110包括应用于全精度层激活值集合的训练后激活量化方法。训练后激活量化方法的一些示例是mmse、kullback-leibler散度最小化和均匀量化。可选地,量化训练框架130的神经网络135被初始化,以便用量化模型值集合111进行训练。可选地,量化训练框架130在
多个训练迭代中训练神经网络135,以产生训练的量化模型值集合141。
[0115]
可选地,在120中调整量化模型值集合111,产生调整后的量化模型值集合121。可选地,在120中调整量化模型值集合111,使得将训练的全精度神经网络101的全精度前向传递卷积方法应用于量化模型值集合的全精度结果等于将神经网络135的量化前向传递卷积方法应用于调整后的量化模型值集合121的量化结果。可选地,量化训练框架130的神经网络135被初始化,以利用调整后的量化模型值集合121而不是量化模型值集合111进行训练。可选地,调整神经网络135的量化前向传递卷积方法,使得将训练的全精度神经网络101的全精度前向传递卷积方法应用于该量化模型值集合的全精度结果等于将神经网络135的量化前向传递卷积方法应用于该调整后的量化模型值集合121的量化结果。可选地,改变神经网络135的量化后向传递更新方法,以反映在量化训练方法的前向传递量化之前,调整后的量化前向传递卷积方法相对于该模型权重值集合的梯度(或近似导数),使得将训练的全精度神经网络101的全精度前向传递卷积方法应用于该量化模型值集合的全精度结果等于将神经网络135的量化前向传递卷积方法应用于该调整后的量化模型值集合121的量化结果。
[0116]
现在还参考图2,示出了根据一些实施例的示例性系统200的示意框图。在这样的实施例中,处理单元201连接到非易失性数字存储203,可选地用于存储训练的量化模型值集合。可选地,非易失性数字存储203包括一组非易失性数字存储解决方案中的一个或多个。非易失性数字存储解决方案的一些示例是硬盘驱动器、非易失性随机存取存储器(non-volatile random access memory,nvram)、网络存储和存储网络。处理单元可以是被配置成执行上述操作的任何种类的可编程或非可编程电路。处理单元可以包括硬件和软件。例如,处理单元可以包括一个或多个处理器和承载程序的暂时或非暂时存储器,当该程序由一个或多个处理器执行时,该程序使得处理单元执行相应的操作。可选地,处理单元201可选地经由数字通信网络接口205连接到其他处理单元210。可选地,数字通信网络接口205包括一个或多个数字通信网络接口。可选地,数字通信网络接口205连接到局域网(local area network,lan),例如以太(ethernet)网或无线网络。可选地,数字通信网络接口205连接到广域网,例如互联网。可选地,处理单元201连接到其他处理单元210,用于向其提供训练的量化模型值集合。可选地,处理单元201连接到其他个处理单元210,用于从其接收该训练的量化模型值集合。
[0117]
在一些实施例中,系统100用于通过实施以下可选方法来训练神经网络135。
[0118]
现在还参考图3,示出了根据一些实施例的示意性地表示用于训练量化神经网络的可选操作流程300的流程图。在这样的实施例中,在301中,处理单元201将训练后量化方法110应用于训练的神经网络(例如训练的全精度神经网络101)的全精度权重值集合,以计算量化权重值集合。可选地,训练后量化方法包括训练另一个量化神经网络。可选地,训练后量化方法包括训练另一个量化神经网络的多个其他模型值的子集。可选地,处理单元201在301中应用训练后量化方法110来进一步计算一个或多个缩放因子。
[0119]
现在还参考图4,示出了根据一些实施例的示意性地表示用于应用训练后量化方法的可选操作流程400的流程图。可选地,在401中,处理单元201计算优选的量化权重值集合和一个或多个优选的缩放因子。可选地,量化权重值的优选集合和一个或多个优选缩放因子最小化了全精度权重值集合和重建权重值集合之间的均方差。可选地,使用量化权重值的优选集合和一个或多个优选缩放因子来计算重建权重值。可选地,在402中,处理单元
201使用优选的量化权重值集合和一个或多个缩放因子作为量化权重值集合和一个或多个缩放因子。
[0120]
现在再次参考图3。可选地,在305中,处理单元201使用该量化权重值集合来初始化神经网络(例如神经网络135)的模型权重值集合。可选地,在305中,处理单元201使用一个或多个缩放因子来初始化神经网络的一个或多个模型缩放因子。可选地,在303中,处理单元201使用量化权重值集合和一个或多个缩放因子来计算调整后的量化权重值集合以及附加地或替代地一个或多个调整后的缩放因子。在305中,处理单元201可选地使用该调整后的量化权重值集合而不是该量化权重值集合来初始化该神经网络的模型权重值集合。可选地,在305中,处理单元201使用一个或多个调整后的缩放因子而不是一个或多个缩放因子来初始化神经网络的一个或多个模型缩放因子。
[0121]
在330中,处理单元201可选地使用量化训练方法(例如量化训练框架130)来训练神经网络,以产生训练的量化权重值集合。可选地,使用量化训练方法包括在多个训练迭代的每一个中对该模型权重值集合应用量化前向传递卷积方法。可选地,在303中,处理单元201计算该调整后的量化权重值集合和一个或多个调整后的缩放因子,使得对该经量化权重值集合和一个或多个缩放因子应用训练的神经网络的全精度前向传递卷积方法的全精度结果等于对该调整后的量化权重值集合和一个或多个调整后的缩放因子应用量化前向传递卷积方法的量化结果。
[0122]
现在还参考图5,示出了根据一些实施例的示意性地表示用于应用量化前向传递卷积方法的可选操作流程500的流程图。在这样的实施例中,在501中,处理单元201将量化训练方法的量化方法应用于由w
iq
表示的模型权重值集合,以产生由w
iq
表示的量化模型权重值集合。可选地,量化方法包括一个或多个模型缩放因子,用αi表示。
[0123]
例如,当量化训练方法是wrpn时,在一些实施例中,当应用量化前向传递卷积方法时,系统100实现以下方法来计算该量化模型权重值集合的量化模型权重值。现在参考图6,示出了根据一些实施例的示意性地表示用于计算模型权重值集合中的模型权重值的量化模型权重值的可选操作流程600的流程图。在这样的实施例中,处理单元201在601中通过从标识的整数位精度值减去1来计算精度幂值,该标识的整数位精度值由k表示,指示量化方法的精度。所识别的整数位精度值可选地小于或等于8,例如1、2、3、4、5或8。可选地,所识别的整数位精度值大于8,例如16或24。可选地,在602中,处理单元201将模型权重值乘以2的精确幂值(2
k-1
)的幂,以产生扩展的权重值。在603中,处理单元201可选地通过将扩展的权重值舍入到最接近的整数来计算舍入项,并且在604中,处理单元201可选地通过在饱和范围中剪切舍入项来计算剪切项。可选地,饱和度范围是{-2
k-1
,2
k-1-1}。在605中,处理单元201可选地将剪切项除以2
k-1
,以产生模型权重值的相应量化模型权重值。可选地,处理单元201对该模型权重值集合中的每一个重复601、602、603、604和605,以产生该量化模型权重值集合。
[0124]
现在再次参考图5。在510中,处理单元201可选地将前向传递卷积方法应用于该量化模型权重值集合和一个或多个模型缩放因子。
[0125]
现在再次参考图3。可选地,在330中使用量化训练方法还包括在多个训练迭代的每一个中将量化后向传递更新方法应用于该模型权重值集合。例如,当量化训练方法是wrpn时,在一些实施例中,系统100实现以下方法,以将量化后向传递更新方法应用于该模
型权重值集合。现在还参考图7a和7b,示出了根据一些实施例示意性地表示用于应用量化后向传递更新方法的操作700a和700b的可选流的流程图。参考图7a,在这样的实施例中,在701中,处理单元201根据量化模型权重值集合、识别的目标函数以及使用神经网络执行多个训练迭代中的至少一些迭代的结果,计算量化权重梯度值集合,每个量化权重梯度值集合与该模型权重值集合中的一个模型权重值相关联。在702中,处理单元201可选地将该量化权重梯度值集合中的每一个乘以将指示函数应用于与其相关联的相应权重值的结果,以产生梯度值集合。可选地,指示函数对于每个相应的权重值具有值1,用w表示,其中,否则为0。
[0126]
参考图7b,当量化训练方法是wrpn时,在303中计算调整后的量化权重值集合的实现可选地包括处理器201在710中将每个量化权重值除以2的精确幂值(2
k-1
)的幂。当量化训练方法是wrpn时,在303中计算一个或多个调整后的缩放因子的实现可选地包括处理器201在720中将一个或多个缩放因子乘以2的精确幂值(2
k-1
)的幂,以计算一个或多个调整后的缩放因子。
[0127]
现在再次参考图3。可选地,在342中,处理单元201向其他处理单元210提供该训练的量化权重值集合,可选地用于初始化另一神经网络的另外多个模型权重值,可选地由其他处理单元210执行。可选地,处理单元201通过经由一个或多个数字通信网络接口205向其他处理单元210发送该训练的量化权重值集合,来向其他处理单元210提供该训练的量化权重值集合。附加地或替代地,处理单元210可以通过将该训练的量化权重值集合存储在非易失性数字存储203上来向其他处理单元210提供该训练的量化权重值集合。
[0128]
可选地,神经网络135包括多个层,每个层与训练的神经网络的多个训练层之一相关联。可选地,对于多个层中的每一层,处理单元201在313中将训练后激活量化方法110应用于从训练的神经网络的相应层提取的全精度层激活值集合,以计算优选层偏移值和优选层激活饱和因子。为此,处理单元201可选地在311中选择多个校准实例。可选地,处理单元201从训练和验证神经网络时使用的多个输入实例中选择多个校准实例。
[0129]
现在还参考图8a,示出了根据一些实施例的示意性地表示用于应用训练后激活量化方法的可选操作流程800的流程图。在这样的实施例中,对于多个层中的一层,处理单元201可选地在801中识别多个层校准激活值集合,当通过神经网络处理相应的校准实例时,针对多个校准实例中的一个来识别每个校准激活值集合。在803中,处理单元可选地计算优选层偏移值。
[0130]
现在还参考图8b,示出了根据一些实施例的示意性地表示用于计算优选层偏移值的可选操作流程820的流程图。在这样的实施例中,在821中,当处理校准实例时,处理单元201通过为多个校准实例中的每一个识别该层的相应层校准激活值集合的最小值来识别多个最小校准值。可选地,在823中,处理单元201计算多个最小校准值的平均值,以产生优选层偏移值。
[0131]
现在再次参考图8a。在805中,处理单元201可选地通过识别最小化多个层校准激活值集合和多个量化层校准激活值集合之间的总均方差的层激活饱和因子来计算优选层激活饱和因子。可选地,使用层激活饱和因子、多个层校准激活值和优选层偏移值来计算多个量化层校准激活值集合。
[0132]
现在还参考图8c,示出了根据一些实施例的示意性地表示用于计算总均方差的可选操作流程830的流程图。在这样的实施例中,处理单元201在831中通过为多个校准实例中的每一个计算校准实例误差来计算多个校准实例误差。
[0133]
现在还参考图8d,示出了根据一些实施例的示意性地表示用于计算校准实例误差的可选操作流程840的流程图。在这样的实施例中,在841中,处理单元201通过从2的所标识的整数位精度值(2
k-1)的幂的结果中减去1来计算量化极限值。在842中,处理单元201可选地通过将量化极限值除以层激活饱和因子来计算扩展项,并且在843中,处理单元201可选地通过从每个校准实例的相应层校准激活值集合中减去优选层偏移值来计算移位值集合。在844中,处理单元201可选地通过将该移位值集合中的每一个乘以扩展项来计算扩展项集合,并且在845中,处理单元201可选地通过将该扩展项集合中的每一个饱和到所识别的量化范围来计算饱和项集合。可选地,所识别的量化范围是[0,2
k-1]。可选地,在846中,处理单元通过将饱和项集合中的每一个舍入到最接近的整数值来计算舍入项集合,并且在847中,处理单元201可选地通过将舍入项集合中的每一个除以扩展项来计算缩减项集合。除以扩展项相当于乘以扩展项的倒数。可选地,在848中,处理单元201通过将优选层偏移值添加到缩减项集合中的每个项来计算量化层校准激活值集合,并且在849中,处理单元201可选地计算校准实例的相应层校准激活值集合和量化层校准激活值集合之间的均方差。
[0134]
可选地,处理单元201对多个校准实例中的每一个重复方法840,以产生多个校准实例误差。
[0135]
现在再次参考图8c。在833中,处理单元201可选地计算多个校准实例误差的总和,以产生总均方差。
[0136]
可选地,处理单元201对神经网络的多层中的每一层重复801、803和805。
[0137]
现在再次参考图3。可选地,应用303中所述的量化前向传递卷积方法还包括针对多层中的每一层,针对该层的层激活值集合,计算量化层激活值集合和层激活饱和因子。现在再次参考图5。可选地,在510中,处理单元201针对多个层中的每一层,进一步对由β表示的相应层激活饱和因子、相应的层激活值集合和由m表示的层偏移值应用前向传递卷积方法。可选地,在501中,处理单元201进一步通过针对多个层中的每一层、针对层激活值集合中的每一个,计算量化层激活值集合中的一个,以将量化训练方法的量化方法应用于模型权重值集合。
[0138]
例如,当量化训练方法是wrpn时,在一些实施例中,系统100实现以下方法来计算量化层激活值。现在还参考图9a,示出了根据一些实施例的示意性地表示用于计算量化层激活值的可选操作流程900的流程图。在这样的实施例中,在901中,处理单元201可选地通过将量化极限值除以层激活饱和因子来计算量化扩展项。可选地,在902中,处理单元201从层激活值中减去层偏移值,以产生移位项,并且在903中,处理单元201可选地在0和层激活饱和因子之间剪切移位项,以产生剪切项。在904中,处理单元201可选地将剪切项乘以量化扩展项,以产生扩展项,并且在905中,处理单元201可选地将扩展项舍入到最接近的整数值,以产生舍入的激活项。可选地,在906中,处理单元201将舍入的激活项除以量化扩展项,以产生缩减项,并且在907中,处理单元201可选地将层偏移值加到缩减项,以产生量化层激活值。可选地,处理单元201针对该层激活值集合中的每一个,对多层中的每一层重复方法900,以产生该量化层激活值集合。
[0139]
现在再次参考图3。可选地,在330中使用量化训练方法还包括在多个训练迭代的每一个中,对于多个层中的每一层,将量化后向传递更新方法进一步应用于层激活值集合。例如,当量化训练方法是wrpn时,在一些实施例中,系统100实现以下方法,以将量化后向传递更新方法进一步应用于层激活值集合。现在还参考图9b,示出了根据一些实施例的示意性地表示用于应用量化后向传递更新方法的另一可选操作流程910的流程图。在这样的实施例中,在911中,处理单元201根据该量化层激活值集合、所识别的目标函数以及使用神经网络执行多个训练迭代中的至少一些的结果来计算量化激活梯度值集合,该量化激活梯度值集合中的每一个量化激活梯度值与该层激活值集合中的一个层激活值相关联。可选地,该层激活值集合包括多个层激活值矩阵,每个层激活值矩阵具有多个维度。可选地,当使用神经网络执行多个训练迭代中的至少一些时,层激活值的矩阵包括根据输入实例的数量的维度。可选地,层激活值的矩阵包括输入实例的每个维度的维度。例如,当输入实例是数字图像时,层激活值的矩阵可以包括宽度维度、高度维度和颜色维度。可选地,该层激活值集合包括多个维度的多个矩阵中的每个矩阵的每个矩阵值的激活值。因此,可选地,该量化激活梯度值集合中的每一个与该层激活值集合的多个矩阵中的一个矩阵值相关联。
[0140]
可选地,在912中,处理单元201将该量化激活梯度值集合中的每一个与将激活指示函数应用于与之相关联的相应层激活值的结果相乘,以产生激活梯度值集合。可选地,对于激活梯度值集合中由x表示的每个相应的层激活值,激活指示函数具有值1,其中,m≤x≤β+m,否则为0。
[0141]
可选地,在913中,处理单元201将该量化激活梯度值集合中的每一个乘以将饱和度指示函数应用于与其相关联的相应层激活值的结果,以产生中间饱和度梯度值集合。可选地,对于该激活梯度值集合中的每个相应的层激活值,饱和度指示函数具有值1,其中,x>β+m,否则为0。可选地,在914中,处理器201计算该中间饱和梯度值集合的总和,以产生饱和梯度值。
[0142]
在915中,处理单元201可选地将该量化激活梯度值集合中的每一个量化激活梯度值乘以从1中减去将偏移指示函数应用于与之相关联的相应层激活值的结果的结果,以产生中间偏移梯度值集合。可选地,对于激活梯度值集合中由x表示的每个相应的层激活值,偏移指示函数具有值1,其中,0≤x-m≤β,否则为0。可选地,在916中,处理单元201计算该中间偏移梯度值集合的总和,以产生偏移梯度值。
[0143]
现在再次参考图3。可选地,在315中,处理单元201使用优选层偏移值初始化该层的层偏移值,并且在316中,处理单元201可选地使用优选层激活饱和因子初始化该层的层激活饱和因子。处理单元201可以对神经网络的多层中的每一层重复313、315和316。可选地,由处理单元201执行的330进一步为多个层中的每一层产生训练的量化层激活偏移值和训练的量化层激活饱和因子。
[0144]
根据本公开,305、315和316可以由处理单元210以任何顺序执行。在一些实施例中,多个训练迭代中的一些由处理单元201在步骤305、315和316中的任意两个的执行之间执行。
[0145]
可选地,在341中,处理单元201为其他处理单元210提供多个层中的每一层的训练的量化层激活偏移值和训练的量化层激活饱和因子,可选地用于为其他神经网络的其他多个层中的每个其他层初始化另一个量化层激活偏移值和另一个量化层激活饱和因子。可选
地,处理单元201通过经由一个或多个数字通信网络接口205向其它处理单元210发送每层的训练的量化层激活偏移值和训练的量化层激活饱和因子,来向其它处理单元210提供每层的训练的量化层激活偏移值和训练的量化层激活饱和因子。附加地或可替换地,处理单元210可以通过在非易失性数字存储203上存储每层的训练的量化层激活偏移值和训练的量化层激活饱和因子,来向其他处理单元210提供每层的训练的量化层激活偏移值和训练的量化层激活饱和因子。
[0146]
在一些实施例中,系统200是用于操作量化神经网络的系统。在这样的实施例中,系统200可以实现以下可选方法。
[0147]
现在还参考图10,示出了根据一些实施例的示意性地表示用于操作量化神经网络的可选操作流程1000的流程图。在这样的实施例中,其他处理单元210在101中用训练的量化权重值集合初始化量化神经网络的量化模型权重值集合。可选地,该量化模型权重值集合使用方法300来计算,可选地由系统200来计算。
[0148]
可选地,量化神经网络包括多个量化层。在1003中,对于多个量化层中的每个量化层,其他处理单元210可选地用训练的量化层偏移值来初始化量化层偏移值。可选地,在1003中,对于多个量化层中的每个量化层,其他处理单元210利用训练的量化层激活饱和因子来初始化量化层激活因子。可选地,使用方法300,可选地由系统200,分别计算训练的量化层偏移值,以及附加地或替换地,训练的量化层激活饱和因子。
[0149]
可选地,在1010中,其他处理单元210接收输入数据,并且在1012中,其他处理单元210可选地通过将输入数据输入量化神经网络来计算一个或多个预测值。
[0150]
示例
[0151]
现在参考下面的示例,这些示例与上面的描述一起以非限制性的方式说明了本公开。
[0152]
以下示例示出了将根据本公开中描述的一些实施例的神经网络的量化训练的精确度与使用32位浮点初始化(fp32)来初始化神经网络之后的神经网络的量化训练的精确度以及训练的全精度神经网络的精确度进行比较的一些实验结果。
[0153]
现在还参考图11a、11b、11c、11d、11e、11f和11g,示出了表示神经网络相对于训练时期的精确度的示意图。在所有所述附图中,x轴1101代表训练时期,y轴1102代表神经网络输出的精确度,以百分比表示。在权重被量化的所有示例中,fp32指的是在用训练的全精度神经网络的多个全精度(32位)权重值进行训练之前,初始化量化神经网络的多个模型权重值,并用1初始化模型缩放因子。此外,在激活值被量化的示例中,fp32指的是根据在小型校准集上收集的统计数据计算的基线初始化。
[0154]
在以下示例中,术语resnet50指具有resnet-50架构的卷积神经网络(convolutional neural network,cnn),术语inceptionv3指具有inception-v3架构的cnn,术语mobilenetv2指具有mobilenetv2架构的神经网络,术语imagenet指imagenet图像数据库。在以下所有示例中,训练都是使用imagenet执行的。
[0155]
现在也参考图11a。在这个示例中,resnet50的多个模型权重每个都具有4位,用于范围在-7和7之间的整数值,并且激活值是32位浮点值。在1100中,根据本公开的一些实施例,曲线1105示出了全精度resnet50的精确度,曲线1107示出了在用fp32初始化权重之后训练时量化resnet50的精确度,且曲线1106示出了在初始化权重之后训练时量化resnet50
的精确度。可以清楚地看到,曲线1106比曲线1107更接近曲线1105,并且曲线1106的精确度比曲线1107增加得更快。
[0156]
现在也参考图11b。在该示例中,mobilenetv2的多个模型权重每个都具有4位,整数值范围在-7和7之间,并且激活值是32位浮点值。在1110中,根据本公开的一些实施例,曲线1115示出了全精度mobilenetv2的精确度,曲线1117示出了在用fp32初始化权重之后训练时量化mobilenetv2的精确度,曲线1116示出了在初始化权重之后训练时量化mobilenetv2的精确度。可以清楚地看到,曲线1116比曲线1117更接近曲线1115,并且曲线1116的精确度比曲线1117增加得更快。
[0157]
现在也参考图11c。在这个示例中,对于范围在-7和7之间的整数值,inceptionsv3的多个模型权重每个具有4位,并且激活值是32位浮点值。在1120中,根据本公开的一些实施例,曲线1125示出了全精度inceptionsv3的精确度,曲线1127示出了在用fp32初始化权重之后训练时量化inceptionsv3的精确度,曲线1126示出了在初始化权重之后训练时量化inceptionsv3的精确度。可以清楚地看到,曲线1126比曲线1127更接近曲线1125,1126所示的精确度在某些点上超过了1125所示的精确度。此外,曲线1126的精确度比曲线1127增加得更快。
[0158]
现在也参考图11d。在该示例中,mobilenetv2的多个模型权重是32位浮点值并且是不可训练的,并且mobilenetv2的多个激活值每个都是4位无符号整数。在1130中,根据本公开的一些实施例,曲线1135示出了全精度mobilenetv2的精确度,曲线1137示出了在用fp32初始化激活之后训练时量化mobilenetv2的精确度,曲线1136示出了在初始化激活之后训练时量化mobilenetv2的精确度。可以清楚地看到,曲线1136比曲线1137更接近曲线1135,并且曲线1136比曲线1137更快地达到更高的精确度。
[0159]
现在也参考图11e。在这个示例中,对于-8和7之间的整数值范围,resnet50的多个模型权重每个都具有4位,并且resnet50的多个激活值每个都是4位无符号整数。在1140中,根据本公开的一些实施例,曲线1145示出了全精度resnet50的精确度,曲线1147示出了在用fp32初始化权重和激活之后进行训练时量化resnet50的精确度,且曲线1146示出了在初始化权重和激活之后进行训练时量化resnet50的精确度。可以清楚地看到,曲线1146比曲线1147更接近曲线1145,并且曲线1146的精确度比曲线1147增加得更快。
[0160]
现在也参考图11f。在该示例中,对于-8和7之间的整数值范围,mobilenetv2的多个模型权重每个都具有4位,并且mobilenetv2的多个激活值每个都是4位无符号整数。在1150中,根据本公开的一些实施例,曲线1155示出了全精度mobilenetv2的精确度,曲线1157示出了在用fp32初始化权重和激活之后训练时量化mobilenetv2的精确度,曲线1156示出了在初始化权重和激活之后训练时量化mobilenetv2的精确度。可以清楚地看到,曲线1156比曲线1157更接近曲线1155,并且曲线1156的精确度比曲线1157增加得更快。
[0161]
现在也参考图11g。在这个示例中,对于范围在-8和7之间的整数值,inceptionv3的多个模型权重每个都具有4位,并且inceptionv3的多个激活值每个都是4位无符号整数。在1160中,根据本公开的一些实施例,曲线1165示出了全精度inceptionv3的精确度,曲线1167示出了在用fp32初始化权重和激活之后训练时量化inceptionv3的精确度,曲线1166示出了在初始化权重和激活之后训练时量化inceptionv3的精确度。可以清楚地看到,曲线1166比曲线1167更接近曲线1165,并且曲线1166的精确度比曲线1167增加得更快。
[0162]
为了说明的目的,已经给出了各种实施例的描述,但是这些描述并不旨在穷举或者限制于所公开的实施例。在不脱离所述实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理、实际应用或对市场上发现的技术的技术改进,或者使本领域的其他普通技术人员能够理解这里公开的实施例。
[0163]
预期在本技术的专利有效期内,将开发许多相关的训练后量化方法和量化训练方法,并且术语“训练后量化方法”和“量化训练方法”的范围旨在包括所有这些先验的新技术。
[0164]
如本文所用,术语“约”是指
±
10%。
[0165]
术语“包括”、“构成”、“包含”、“含有”、“具有”以及它们的变形表示“包括但不限于”。该术语包括术语“由
……
组成”和“基本上由
……
组成”。
[0166]
短语“基本上由
……
组成”是指组合物或方法可以包括额外的成分和/或步骤,但是仅当额外的成分和/或步骤不会实质上改变要求保护的组合物或方法的基本和新颖特征时。
[0167]
如本文所用,单数形式“一”、“一个”和“该”包括复数,除非上下文另有明确指示。例如,术语“一种化合物”或“至少一种化合物”可以包括多种化合物,包括其混合物。
[0168]
这里使用的“示例性”一词表示“用作示例、实例或说明”。被描述为“示例性”的任何实施例不一定被解释为优先于或优于其他实施例,和/或排除其他实施例的特征的结合。
[0169]
词语“可选地”在本文中用于表示“在一些实施例中提供,而在其他实施例中不提供”。任何特定实施例可以包括多个“可选”特征,除非这些特征相冲突。
[0170]
贯穿本技术,各种实施例可以以范围的形式呈现。应当理解,范围的形式的描述仅仅是为了方便和简洁,不应当被解释为对实施例范围的不可改变的限制。因此,范围的描述应该被认为已经具体公开了所有可能的子范围以及该范围内的单个数值。例如,诸如从1到6的范围的描述应该被认为具有具体公开的子范围,诸如从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等,以及该范围内的单个数字,例如1、2、3、4、5和6。这适用于任何范围的宽度。
[0171]
每当本文指出数值范围时,它意味着包括在所指出的范围内的任何引用的数字(分数或整数)。短语第一指示数和第二指示数“之间的范围”和“从”第一指示数“到”第二指示数“的范围”在本文中可互换使用,并且意味着包括第一和第二指示数以及其间的所有分数和整数。
[0172]
应当理解,为了清楚起见,在单独实施例的上下文中描述的实施例的某些特征也可以在单个实施例中组合提供。相反,为了简洁起见,在单个实施例的上下文中描述的实施例的各种特征也可以单独提供,或者以任何合适的子组合提供,或者在任何其它描述的实施例中适当提供。在各种实施例的上下文中描述的某些特征不应被认为是那些实施例的必要特征,除非该实施例在没有这些元素的情况下是不起作用的。
[0173]
尽管已经结合其具体实施例描述了实施例,但是很明显,许多替换、修改和变化对于本领域技术人员来说是显而易见的。因此,旨在包含落入所附权利要求的精神和宽泛范围内的所有这样的替换、修改和变化。
[0174]
本说明书中提到的所有出版物、专利和专利申请都通过引用整体结合到本说明书
中,其结合程度如同每个单独的出版物、专利或专利申请都通过引用具体和单独地结合到本文中。此外,本技术中任何参考文献的引用或标识不应被解释为承认这些参考文献可作为实施例的现有技术。就所使用的章节标题而言,它们不应该被解释为必要的限制。
技术特征:1.一种用于训练量化神经网络的系统(200),包括处理单元(201),所述处理单元(201)适于:将训练后量化方法(110)应用(301)于训练的神经网络(101)的全精度权重值集合(102),以计算量化权重值集合(111);使用所述量化权重值集合初始化(305)神经网络的模型权重值集合;以及使用量化训练方法(130)训练(330)所述神经网络(135)以产生训练的量化权重值集合(141)。2.根据权利要求1所述的系统,其中,所述神经网络包括多个层,每个层与所述训练的神经网络的多个训练的层之一相关联;其中,对于所述多个层中的每一层,所述处理单元还适于:将训练后激活量化方法应用(313)于从所述训练的神经网络的相应层提取的全精度层激活值集合(102),以计算优选层偏移值(111)和优选层激活饱和因子(111);使用所述优选层偏移值初始化(315)所述层的层偏移值;使用所述优选层激活饱和因子初始化(316)所述层的层激活饱和因子;以及训练(330)所述神经网络以进一步产生训练的量化层激活偏移值和训练的量化层激活饱和因子。3.根据前述权利要求中任一项所述的系统,其中,将所述训练后量化方法应用(301)到所述全精度权重值集合以进一步计算至少一个缩放因子;以及其中,将所述训练后量化方法应用(301)到所述全精度权重值集合包括:计算(401)量化权重值的优选集合和至少一个优选缩放因子,其最小化所述全精度权重值集合和使用所述量化权重值的优选集合和所述至少一个优选缩放因子计算的重建权重值集合之间的均方差;以及分别使用(402)所述量化权重值的优选集合和所述至少一个缩放因子作为所述量化权重值的集合和所述至少一个缩放因子。4.根据前述权利要求中任一项所述的系统,其中,将所述训练后量化方法应用(301)到所述全精度权重值集合以进一步计算至少一个缩放因子;其中,使用所述量化训练方法(330)包括在多个训练迭代的每一个中将量化前向传递卷积方法(500)应用于所述模型权重值集合,包括:将所述量化训练方法的量化方法应用(501)到所述模型权重值集合,以产生量化模型权重值集合和至少一个模型缩放因子;以及将前向传递卷积方法应用(510)到所述量化模型权重值集合和所述至少一个模型缩放因子;以及其中,所述处理单元还适于:使用所述量化权重值集合和所述至少一个缩放因子以计算(303)调整后的量化权重值集合(121)和至少一个调整后的缩放因子(121),使得将所述训练神经网络的全精度前向传递卷积方法应用到所述量化权重值集合(111)和所述至少一个缩放因子(111)的全精度结果等于将所述量化前向传递卷积方法应用到所述调整后的量化权重值集合(121)和所述至
少一个调整后的缩放因子(121)的量化结果;以及当初始化(305)所述神经网络的模型权重值集合时,使用所述调整后的量化权重值集合代替所述量化权重值集合。5.根据权利要求4所述的系统,其中,将所述量化训练方法的量化方法应用(501)到所述模型权重值集合包括对于所述模型权重值集合中的每一个模型权重值,计算(600)所述量化模型权重值集合中的一个量化模型权重值,包括:通过从标识的整数位精度值中减去1来计算(601)精度幂值,所述精度幂值指示所述量化方法的精度;将所述模型权重值乘以(602)2,得到所述精度幂值的幂,以产生扩展的权重值;通过将所述扩展的权重值舍入到最接近的整数来计算(603)舍入项;通过在饱和范围内剪切所述舍入项来计算(604)剪切项;以及将所述剪切项除以(605)2,得到所述精度幂值的幂,以产生所述模型权重值的相应量化模型权重值;其中,使用所述量化训练方法(330)还包括在所述多个训练迭代的每一个中将量化后向传递更新方法应用于所述模型权重值集合,包括:根据所述量化模型权重值集合、识别的目标函数和使用所述神经网络执行所述多个训练迭代中的至少一些的结果,计算(701)量化权重梯度值集合,每个权重梯度值与所述模型权重值集合中的一个模型权重值相关联;以及将所述量化权重梯度值集合中的每一个量化权重梯度值乘以(702)将指示函数应用于与其相关联的相应权重值的结果,以产生梯度值集合;其中,计算(303)调整后的量化权重值集合包括将每个量化权重值除以(710)2,得到所述精度幂值的幂;以及其中,计算(303)所述至少一个调整后的缩放因子包括将所述至少一个缩放因子乘以(720)2,得到所述精度幂值的幂。6.根据权利要求4或5所述的系统,其中,所述处理单元还适于从训练和验证所述神经网络时使用的多个输入实例中选择(311)多个校准实例;以及其中,将所述训练后激活量化方法应用(313)到所述全精度层激活值集合包括:识别(801)多个层校准激活值集合,当由所述神经网络处理相应的校准实例时,针对所述多个校准实例中的一个来识别每个层校准激活值集合;计算(803)所述优选层偏移值,包括:通过在处理所述校准实例时为多个校准实例中的每一个识别所述层的相应层校准激活值集合的最小值,来识别(821)多个最小校准值;以及计算(823)所述多个最小校准值的平均值,以产生所述优选层偏移值;以及通过识别最小化所述多个层校准激活值集合和多个量化层校准激活值集合之间的总均方差的层激活饱和因子来计算(805)所述优选层激活饱和因子,所述计算使用所述层激活饱和因子、所述多个层校准激活值和所述优选层偏移值来进行,包括:通过为所述多个校准实例中的每一个计算校准实例误差来计算(831)多个校准实例误
差,包括:通过从所述标识的整数位精度值的2次幂的结果中减去1来计算(841)量化极限值;通过将所述量化极限值除以所述层激活饱和因子来计算(842)扩展项;通过从每个校准实例的相应层校准激活值集合中减去所述优选层偏移值来计算(843)移位值集合;通过将所述移位值集合中的每一个移位值乘以所述扩展项来计算(844)扩展项集合;通过使所述扩展项集合中的每一个扩展项饱和到识别的量化范围来计算(845)饱和项集合;通过将所述饱和项集合中的每一个饱和项舍入到最接近的整数值来计算(846)舍入项集合;通过将所述舍入项集合中的每一个舍入项除以所述扩展项来计算(847)缩减项集合;通过将所述优选层偏移值添加到所述缩减项集合的每一个缩减项来计算(848)所述量化层校准激活值集合;以及计算(849)所述校准实例的相应层校准激活值集合和所述量化层校准激活值集合之间的均方差;以及计算(833)所述多个校准实例误差的总和,以产生所述总均方差。7.根据权利要求6所述的系统,其中,所述多个层中的每一层包括层权重值集合,所述层权重值集合由所述模型权重值集合中的至少一些组成;其中,应用(500)所述量化前向传递卷积方法还包括对于所述多个层中的每一层,针对所述层的层激活值集合,计算量化层激活值集合和层激活饱和因子;其中,对于所述多个层中的每一层,进一步对相应的层激活饱和因子、相应的层激活值集合和层偏移值应用(510)所述前向传递卷积方法;其中,将所述量化训练方法的量化方法应用(501)到所述模型权重值集合还包括对于所述多个层中的每一层,针对所述层激活值集合中的每一个层激活值,计算(900)所述量化层激活值集合中的一个量化层激活值,包括:通过将所述量化极限值除以所述层激活饱和因子来计算(901)量化扩展项;从所述层激活值中减去(902)所述层偏移值以产生移位项;在0和所述层激活饱和因子之间剪切(903)所述移位项,以产生剪切项;将所述剪切项与所述量化扩展项相乘(904)以产生扩展项;将所述扩展项舍入(905)到最接近的整数值,以产生舍入的激活项;将所述舍入的激活项除以(906)所述量化扩展项以产生缩减项;以及将所述层偏移值与所述缩减项相加(907)以产生所述量化层激活值;以及其中,使用(330)所述量化训练方法还包括在所述多个训练迭代的每一个中,对于所述多个层中的每一层,将所述量化后向传递更新方法(910)应用于所述层激活值集合,还包括:根据所述量化层激活值集合、所述识别的目标函数以及使用所述神经网络执行所述多个训练迭代中的至少一些迭代的结果来计算(911)量化激活梯度值集合,所述量化激活梯度值集合中的每一个量化激活梯度值与所述层激活值集合中的一个相关联;将所述量化激活梯度值集合中的每一个量化激活梯度值与将激活指示函数应用于与
其相关联的相应层激活值的结果相乘,以产生(912)激活梯度值集合;将所述量化激活梯度值集合中的每一个量化激活梯度值乘以将饱和度指示函数应用于与其相关联的相应层激活值的结果,以产生(913)中间饱和度梯度值集合;计算所述中间饱和梯度值集合的总和以产生(914)饱和梯度值;将所述量化激活梯度值集合中的每一个量化激活梯度值乘以将偏移指示函数应用于与其相关联的相应层激活值的结果减一的结果,以产生(915)中间偏移梯度值集合;以及计算(916)所述中间偏移梯度值集合的总和,以产生偏移梯度值。8.根据权利要求2-7中任一项所述的系统,其中,所述处理单元还适于对于所述多个层中的每一层,向另一处理单元提供(341)所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子,以便初始化另一神经网络的另外多个层中的另一层。9.根据权利要求2-8中任一项所述的系统,其中,为所述多个层中的每一层提供所述训练的量化层激活偏移值和所述经训练的量化层激活饱和因子包括以下至少一项:经由连接到所述处理单元的数字通信网络接口,将所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子中的至少一个发送到另一个处理单元;以及将所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子中的至少一个存储在连接到所述处理单元的数字存储上。10.根据前述权利要求中任一项所述的系统,其中,所述处理单元还适于向所述另一个处理单元提供(342)所述训练的量化权重值集合,以用于初始化另一个神经网络的另外多个模型权重值。11.根据权利要求10所述的系统,其中,提供所述训练的量化权重值集合包括以下至少一项:经由连接到所述处理单元的数字通信网络接口将所述训练的量化权重值集合发送到另一个处理单元;以及将所述训练的量化权重值集合存储在连接到所述处理单元的数字存储上。12.一种用于训练神经网络的方法,包括:将训练后量化方法应用于训练的神经网络的全精度权重值集合,以计算量化权重值集合;使用所述量化权重值集合初始化神经网络的模型权重值集合;以及使用量化训练方法训练所述神经网络,以产生训练的量化权重值集合。13.根据权利要求12所述的方法,还包括对于所述神经网络的多个层中的每一层,每一层都与所述训练的神经网络的多个其他层之一相关联:将训练后激活量化方法应用于从所述训练的神经网络的相应层提取的全精度层激活值集合,以计算优选层偏移值和优选层激活饱和因子;使用所述优选层偏移值初始化所述层的层偏移值;以及使用所述优选层激活饱和因子初始化所述层的层激活饱和因子。14.一种用于操作量化神经网络的系统,包括处理单元,所述处理单元适于:用训练的量化权值集合初始化(1001)所述量化神经网络的量化模型权值集合,所述训练的量化权值集合通过以下计算:将训练后量化方法应用于训练的神经网络的全精度权重值集合,以计算量化权重值集
合;使用所述量化权重值集合初始化神经网络的模型权重值集合;以及使用量化训练方法训练所述神经网络,以产生所述训练的量化权重值集合;以及接收(1010)输入数据;以及通过将所述输入数据输入所述量化神经网络以计算(1012)至少一个预测值。15.根据权利要求14所述的系统,其中,所述处理单元还适于对于所述量化神经网络的多个量化层中的每个量化层,分别利用训练的量化层偏移值和训练的量化层激活饱和因子初始化(1003)量化层偏移值和量化层激活饱和因子,所述训练的量化层偏移值和所述训练的量化层激活饱和因子通过以下计算:将训练后激活量化方法应用于从与所述神经网络的多个层中的一层相关联的所述训练的神经网络的多个训练层中的训练层提取的全精度层激活值集合,以计算优选层偏移值和优选层激活饱和因子;使用所述优选层偏移值初始化所述层的层偏移值;使用所述优选层激活饱和因子初始化所述层的层激活饱和因子;以及训练所述神经网络以进一步产生所述训练的量化层激活偏移值和所述训练的量化层激活饱和因子。
技术总结一种用于训练量化神经网络的系统,包括处理单元,适于:将训练后量化方法应用于训练的神经网络的全精度权重值集合,以计算量化权重值集合;使用该量化权重值集合初始化神经网络的模型权重值集合;以及使用量化训练方法来训练神经网络,以产生训练的量化权重值集合。以产生训练的量化权重值集合。以产生训练的量化权重值集合。
技术研发人员:尤尼
受保护的技术使用者:华为技术有限公司
技术研发日:2020.03.30
技术公布日:2022/11/1