CN113112013A - 针对分辨率降低的神经网络的优化量化 - Google Patents
针对分辨率降低的神经网络的优化量化 Download PDFInfo
- Publication number
- CN113112013A CN113112013A CN202110022078.3A CN202110022078A CN113112013A CN 113112013 A CN113112013 A CN 113112013A CN 202110022078 A CN202110022078 A CN 202110022078A CN 113112013 A CN113112013 A CN 113112013A
- Authority
- CN
- China
- Prior art keywords
- factors
- scaling
- candidate
- factor
- point weighting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Analysis (AREA)
- Feedback Control In General (AREA)
Abstract
用于生成和使用神经网络的定点操作的系统和方法包括:使用缩放因子将浮点加权因子转换为定点加权因子。将缩放因子定义成使成本函数最小化,并且缩放因子是从预定基数的倍数集合中导出的。将可能的缩放函数的集合定义成减少用于针对多个可能的缩放因子中的每一个评估成本函数的计算量。该系统和方法可以在被编程为执行逻辑的一个或多个控制器中实现。
Description
技术领域
本申请一般涉及使用定点值计算的神经网络。
背景技术
近年来,通过使用深度学习方法,在计算机视觉和语音处理/识别领域中,实现了大多数基于机器学习的突破。使用这些基于深度学习的分类器对输入数据进行分类的任务已得到广泛研究,并且被用于许多不同的应用。基于该应用,分类所需的神经网络可能非常庞大,其中具有数千万个变量。这样的大型网络需要大量的计算和数据存储资源,因此具有很高的能量/功率占位面积。由于较高的资源需求,许多深度学习任务主要在云中完成(大多数计算是在GPU或诸如神经网络加速器之类的特殊硬件上实行的)。由于计算和功率的约束,在许多情况下,深度学习网络无法部署在资源受约束的环境中。最新趋势是将应用领域从成像器和电话扩展到其他种类的传感器(例如,惯性传感器)。由于电池寿命的限制,这些传感器可以成为没有永久云连接的可穿戴设备的一部分——所谓的边缘计算。因此,需要用于边缘设备上的局部分类的新颖概念。
发明内容
一种用于将神经网络的浮点加权因子转换为定点加权因子的方法包括:选择预定数量的候选缩放因子,其是预定基数的倍数。该方法包括:在成本函数中评估每一个候选缩放因子。该方法包括:作为候选缩放因子中导致成本函数的最小值的一个来选择缩放因子。该方法包括:通过使用缩放因子缩放浮点加权因子来生成定点加权因子。该方法包括:使用定点加权因子来操作神经网络。
预定基数可以是二。该方法可以进一步包括:响应于完成神经网络的训练阶段,将定点加权因子提供给推理阶段。预定数量的候选缩放因子可以包括更大数量的候选(candidates),该候选具有的值超过浮点加权因子的绝对值的平均值。预定数量的候选缩放因子可以包括仅一个小于浮点加权因子的绝对值的平均值的候选。成本函数可以是浮点加权因子与候选缩放因子和对应的定点加权因子的乘积之间的均方误差。该方法可以进一步包括:在预定数量的训练间隔之后的神经网络的训练阶段期间更新缩放因子。
机器学习系统包括:控制器,该控制器被编程为使用缩放因子将神经网络的浮点加权因子转换为定点加权因子,该缩放因子是预定基数b的倍数,并且使成本函数最小化,该成本函数是浮点加权因子与候选缩放因子和对应的定点加权因子的乘积之间的均方误差(a mean square error),并且在训练阶段期间的预定数量的迭代之后,改变缩放因子。
控制器可以进一步被编程为使用定点操作来实现神经网络。候选缩放因子可以包括分别具有指数L和L-1的第一和第二候选值,使得浮点加权因子的绝对值的平均值在b L 与b L-1 之间。控制器可以进一步被编程为利用候选缩放因子来评估成本函数,该候选缩放因子是预定基数的从b L-1 到b L+4 的倍数。控制器可以进一步被编程为针对第一数量的候选缩放因子并且针对第二数量的候选缩放因子来评估成本函数,该第一数量的候选缩放因子大于浮点加权因子的绝对值的平均值,该第二数量的候选缩放因子小于平均值,第一数量大于第二数量。控制器可以被进一步编程为在完成训练阶段之后,将定点加权因子提供给被配置成实现神经网络的推理阶段。预定基数b可以是二。控制器可以被进一步编程为定义包括多于一个节点的层的缩放因子。
一种方法包括:选择预定数量的候选缩放因子,其是二的倍数,并且针对每一个候选缩放因子来评估成本函数,该成本函数是神经网络的预定集合的浮点加权因子与被评估的候选缩放因子和由被评估的候选缩放因子定义的定点加权因子的乘积之间的均方误差。该方法包括:选择缩放因子作为导致成本函数的最小值的候选缩放因子之一,以及通过按缩放因子缩放每一个浮点加权因子来生成定点加权因子集合。该方法包括:使用定点加权因子集合来实现神经网络。
候选缩放因子可以包括分别具有指数L和L-1的第一和第二候选值,使得预定集合的浮点加权因子的绝对值的平均值在2 L 与2 L-1 之间。候选缩放因子可以包括二的从2 L-1 到2 L +4 的倍数。候选缩放因子可以包括:与小于浮点加权因子的绝对值的平均值的候选缩放因子相比,更大数量的大于平均值的候选缩放因子。预定集合可以对应于神经网络的节点。
附图说明
图1描绘了神经网络的单个节点的示例。
图2描绘了使用定点分辨率的神经网络的单个节点的示例。
图3描绘了示出与不同加权因子转换策略相关联的准确度的曲线图。
图4描绘了机器学习系统的可能框图。
图5描绘了用于选择缩放因子以将加权因子转换为定点表示的可能流程图。
具体实施方式
在本文中描述了本公开的实施例。然而,要理解到,所公开的实施例仅仅是示例,并且其他实施例可以采取各种形式和替换形式。这些图不一定按比例绘制;一些特征可能会被放大或最小化以示出特定组件的细节。因此,本文中公开的具体结构和功能细节不要被解释为限制性的,而仅仅是作为教导本领域技术人员以各种方式采用本发明的有代表性的基础。如本领域普通技术人员将理解的,参考任何一个图进行图示和描述的各种特征可以与在一个或多个其他图中图示的特征进行组合,以产生未明确图示或描述的实施例。所图示的特征的组合为典型应用提供了有代表性的实施例。然而,对于特定的应用或实现方式,可能期望与本公开的教导相一致的特征的各种组合和修改。
机器学习系统被并入各种各样的现代系统中。机器学习系统很有吸引力,因为可以对系统进行训练或使其适应不同的情况。例如,通过将训练数据集应用于机器学习算法,系统可以调整内部加权因子来实现预期结果。训练数据集可以包括机器学习算法的输入集合和对应的机器学习算法的预期输出集合。在训练期间,系统可以监视预期输出与机器学习算法所生成的实际输出之间的误差,以在机器学习算法内调整或校准加权因子。训练可以重复,直到误差降至预定水平以下为止。
机器学习系统可以是更大的应用或系统的一部分。例如,机器学习系统可以被并入机器人应用中。在其他示例中,机器学习系统可以是视觉系统的一部分。例如,机器学习系统可以被训练成从视频图像中识别视场中的特定对象。机器学习系统可以被进一步配置成提供用于控制设备(例如,机械臂)的控制信号。
神经网络可以被用作机器学习系统的一部分。神经网络可以由输入与输出之间的不同互连阶段组成。神经网络可以包括序列编码器层、原型层和完全连接层。此外,神经网络可以包括一个或多个用于特征提取的卷积层。可以在具有有限存储器和处理资源的嵌入式控制器上实现神经网络。照此,对于每个时间间隔可以实行的计算数量可能存在限制。随着神经网络的大小和数量增加,计算资源可能会紧张。即,可能没有足够的处理时间来在期望的时间间隔内完成计算。照此,用于降低计算负荷的方法可能会有所帮助。
对于在资源受约束的环境中进行实际部署的主要限制因素是必须以其维持权重的精度。神经网络权重的精度可能直接影响网络性能,因此通常被维持为浮点值。因此,与这些权重有关的数学运算也以浮点精度实行。浮点变量可能比定点变量需要更多的存储器空间。此外,对浮点变量的操作通常比对定点变量的操作需要更多处理器周期。注意到,以上关于权重的讨论也可以应用于节点/神经元的输入和输出。本文中公开的策略适用于具有系数或因子集合的任何系统。
上面的观察可能会呈现一些用于改进神经网络的性能的路径。第一个改进可以是将变量/数据以精度降低的定点表示进行存储。第二个改进可以是以定点算术来实行数学运算。因此,数据和变量两者都可以被维持为具有较少位数(1到8)的定点值,由此降低了存储和计算复杂度。
通常,神经网络及其输入的所有变量都以浮点的形式表示(其基于处理器需要16/32/64位,并且需要另一个变量来存储小数(decimal)的方位)。因此,对应的数学运算也以浮点实行。这需要相当大的存储和处理开销。例如,评估神经网络的完全连接层中的单个节点的输出的操作可以如图1所示的那样来表示。图1描绘了完全连接层的单个节点100的示例。节点100可以被配置成对多个加权输入值求和以生成中间输出值108。每一个输入值102可以乘以对应的加权因子104。每一个输入值102和加权因子104的乘积可以被馈送到求和元件106中并且被加在一起。在典型的实现方式中,输入值102、加权因子104和中间输出值108中的每一个可以被实现为浮点值。注意到,对应的神经网络层可以由这些节点中的许多节点组成。中间输出值108可以传过激活函数来生成最终输出,并且可以引入非线性行为。例如,可以将整流线性单元(RELU)用作激活函数来生成最终输出。图1中描绘的配置可以表示神经网络的其他元件。例如,图1的示图可以表示具有加权因子的任何结构,该加权因子被应用于输入并且被馈送到求和元件中。
考虑输入102已经具有定点精度的情况可能是有益的。注意到,在输入102以浮点表示的形式进行表述的情况下,本文中公开的策略可以被应用以将值转换为定点表示。然后,可以以两个阶段来表述以定点精度(使用k位)表示权重的量化过程。第一阶段可以是找到因子a,将数据缩放到缩小的范围(例如,[-1至1]),如下所示:
第二阶段可以是将该范围拆分成n个间隔,其中n=2k-1,并且量化/定点缩放因子可以表述为:
可以实行第二阶段,使得间隔全部具有相同大小(线性量化)或具有不同大小(非线性量化)。由于目标是在量化后实行数学运算,因此线性量化更为常见。k的值可以表示被用来将权重值表述为整数或定点值的位的数量。定点加权因子可以通过按缩放因子α缩放每一个浮点加权因子来导出。在此示例中,通过将浮点加权因子除以缩放因子来进行缩放。
在此示例中,可以使用线性量化。为了使用定点变量有效地表述值,可以适当地选择缩放因子a。可以将缩放因子a选择成使得量化的权重在均方意义上尽可能地接近原始浮点权重。以下成本函数可以被最小化:
其中,w表示原始权重,w q 表示量化的权重,以及a是缩放因子。成本函数可以被描述为浮点加权因子(w)与候选缩放因子和对应的定点加权因子的乘积(a*w q )之间的均方误差。
因此,在量化层的权重(至k位)期间,影响方程式(3)中的量化损失的主要操作之一涉及对权重的缩放。多种不同的方法可用于解决此优化问题。
在完成神经网络的训练之后,将许多方法应用于加权因子。这些策略可以在训练过程期间维持浮点表示的开销。第一方法是二进制神经网络的方法。该方法聚焦于1位神经网络(k=1)。该方法采用了考虑a=1的过分简单化的方法。因此,仅基于权重的符号将所得权重量化为:
第二方法可以是异或非逻辑(XNOR)。该方法再次主要聚焦于1位网络,但是相同的策略也适用于更大数量的位。在权重为高斯分布式的假设下,此方法解决了方程式(3)中针对1位情况的优化问题。闭合形式的解被导出为a=E(|w|),其是层中所有权重的绝对值的平均值。
第三方法是三值权重网络(Ternary Weight Network, TWN)方法。此方法使用三个级别进行量化,{-a,0,a}。可以像在XNOR方法中一样将缩放因子选为a=E(|w|)。
第四方法可以是统计感知权重分箱(statistics-aware weight binning, SAWB)方法。此方法可能适用于多于1位(k>1)。代替于使用仅依赖于数据的一阶统计量的因子,还应用二阶统计量。该方法使用启发式方法,该方法通过假设权重可以来自概率分布的固定集合而导出。此方法中的缩放因子可以由下式给出:
其中通过实验找到c 1 和c 2 ,并且针对给定的k值固定它们。在训练后应用上述方法。即,在确定了缩放因子和量化了权重之前,完成该训练过程以学习整个权重集合。照此,在训练过程期间没有实现定点表示的益处。
在图2中描绘了用于评估神经网络层的输出的单个节点200的操作。节点200可以包括定点输入202。定点输入202是用整数或定点表示法表述的值。节点200进一步包括多个定点加权因子204(W q1 ,…W qN )。定点加权因子204可以如上所述的那样被导出。节点200包括:求和块或函数206,其被配置成对相应的定点输入202和定点加权因子204的乘积求和。求和块206的输出可以是定点输出208。求和块的输出可以被表述为:
离散加权因子204可以被定义为:
定点加权因子204可以从应用于原始浮点加权因子的量化函数Q导出。量化函数可以是如上所述的那样。
定点输出208可以乘以缩放因子210(示为a),以生成节点输出212如下:
节点输出212可以被表示为浮点值。定点输出208乘以缩放因子a 210,以使节点输出212达到实际比例。注意到,可能会应用附加的激活函数。
量化策略可以被配置成通过选择作为二的倍数的缩放因子来减少浮点乘法和除法的数量。通过将缩放因子强制为二的倍数,可以通过微处理器中的移位操作来实行涉及缩放因子的乘法和除法运算。移位操作通常比微处理器中的浮点运算执行得更快和/或更有效。与使用基于示例数据开发的或针对特定分布设计的启发式函数相比,可以求解方程式(3)的优化问题来提供更鲁棒的解。然后,具体问题可以是确定应当选择二的什么倍数作为缩放因子。
批量(batch)可以被定义为一组训练样本或应用于神经网络的训练集。在训练期间,可以在处理完每个批量之后更新加权因子。批量可能会导致通过神经网络进行多次迭代。批量更新可以是在处理了预定数量的训练样本之后的加权因子的更新。在每批量的训练样本之后更新缩放因子的策略可能会不必要地利用计算资源。例如,由于缩放因子的离散性质,缩放因子不太可能像训练期间的加权因子那么快速地变化。照此,在训练阶段期间处理了预定数量的批量之后,可以改变缩放因子。预定数量的批量可以取决于训练数据的集合以及应用。加权因子可以比缩放因子更频繁地更新。例如,可以针对加权因子的预定数量(例如,2-100)的更新来对缩放因子进行一次更新。
第一步是标识会改进权重量化过程的缩放因子a。为了完成这一点,可以求解方程式(3)中的优化问题,以选择缩放因子a。然而,方程式(3)中的优化问题可能无法求解到全局最小值,因为它是非凸且非平滑的。例如,当缩放因子的空间很大,同时还优化了权重时,可能会发生这种情况。替换方式是在每个批量之后用蛮力搜索缩放因子。因此,遍历缩放因子a的无限值不是可行的选项。这是现有方法依赖于开发启发式函数来估计缩放因子a的主要原因。
本文中公开的方法是在预定数量的批量更新之后的训练期间,在有限集合的候选缩放因子S上求解方程式(3)中的问题。有限集合的候选缩放因子可以被限制成二的倍数:
由于将集合定义为仅具有有限数量的值(例如,10-20),因此可以为集合的每个成员评估方程式(3)中的成本。可以选择使成本最小化的缩放因子的值来量化权重。缩放因子对于所有层可能都是相同的,或者对于每个层而言可能不同,或者对于层的每个内核或神经元而言可能不同。虽然对每个层利用单个缩放因子可能更为常见,但对每个内核或神经元使用不同的因子也是可接受的。该策略可以应用于其中系数集合要被离散化的任何配置。例如,内核可以描述用于卷积层的滤波器的系数集合。可以将所公开的策略应用于系数以生成定点系数集合。
由于缩放因子a可以被选为2的倍数,所以可以使用移位操作实行方程式(1)中的缩放操作和图2中所示的逆缩放/重新缩放操作,而不是使用现有方案中的浮点乘法器。因此,图2中表示的操作集合并不使用任何浮点乘法。取决于神经网络的大小,这将导致重大的成本节约,并且跨网络的所有层,可能会有数万至数百万这样的操作。当在实时系统中实现时,这在训练阶段期间和推论阶段期间可能是有益的。
由于通过提议的方法所选择的缩放因子可能是二的倍数,所以在训练阶段期间的每个迭代/批量中,更新权重不会影响设置的最佳缩放因子。因此,不必在每个批量/迭代时都相对于S评估方程式(3)。因此,可以选择缩放因子α,并且每预定数量(例如,10-100)的批量一次使成本函数最小化。因此,即使相对于单个更新来评估候选缩放因子的复杂度可能比现有方法(相对于数十个迭代取平均)要大,该复杂度也要低得多,并且表示所公开方法的另一个优点。而且,应当记住,仅在训练阶段期间才需要迭代地更新缩放因子。在推论阶段期间,在训练期间学习的缩放因子将被用于不同的层,并且不会更新。
如所描述的,可以通过针对每个候选缩放因子评估成本函数来使成本函数最小化。然后选择缩放因子作为使成本函数最小化的候选缩放因子。可以减小识别缩放因子a的复杂度的另一方面是通过减少集合S的候选缩放因子的数量来进行的。可以证明对于许多常见分布(例如,线性和高斯分布),缩放因子a应当满足以下条件:a>M=mean(abs(W))。因此,集合S可以被选择成使得存在大于平均值的更多候选元素,和小于平均值的更少候选元素。候选缩放因子的集合可以被定义为
在实验中使用上述定义的集合,并且发现其是有效的。然而,理解的是,所描述的方法不限于此范围。候选缩放因子的数量可以包括具有以下值的更大数量的候选,该值超过浮点加权因子集合的绝对值的平均值。候选缩放因子的数量可以包括仅一个小于浮点加权因子集合的绝对值的平均值的候选。
尽管缩放因子被合理地定义为二的倍数,但作为任何其他数(例如,p∈{实整数})的倍数的缩放因子也在本公开的范围内。缩放因子可以是除了二以外的预定基数的倍数。例如,如果嵌入式系统使用三态信号,则可以使用以下集合来优化缩放因子a:
这可以被进一步泛化为任何预定基数b,作为:
由于针对候选缩放因子的缩小集合求解了方程式(3)中的优化问题,并且未做出有关权重概率分布的假设,因此即使基础权重源自某个随机分布,该方法的性能仍然可靠。因此,与现有的启发式或特定于分布的方法相比,该方案具有广泛得多的适用性。
图3描绘了双模(bimodal)分布的示例标绘图,其示出了对于三种不同方法,均方根误差(RMSE)针对两种模式之间距离的变化。两种模式都是高斯模式,其中具有0.02的标准偏差。第一曲线302描绘了由XNOR使用的XNOR算法的性能。第二曲线304描绘了第二策略的性能。第三曲线306描绘了本文中介绍的方法的性能。人们可以看到,对于大多数双模模式,所提议方法的误差要比其他策略低得多。
上面提到的方法在训练过程中为神经网络的每层(或为整个网或网络的一部分)学习缩放因子a(其是二(或任何其他基数)的倍数),并且是二的倍数的集合中的最佳缩放因子。
所提议的缩放因子a降低了计算复杂度,因为在训练状态期间它对于若干个批量更新而言可以保持不变,并且可以不那么频繁地进行更新。而且,由于所提议的缩放因子可以是二的倍数,因此其用于量化的实现方式是硬件友好的。
从上面的方法获得的缩放因子a对于权重的概率密度变化是鲁棒的(如从图3看到的)并且被设计,因此是可适用的,而与基础分布无关。
图4描绘了可能的机器学习系统400的框图。机器学习系统400可以在一个或多个控制器中实现。控制器可以包括被配置成执行指令的处理器。控制器可以进一步包括用于存储程序和数据的易失性和非易失性存储器。在具有多个控制器的配置中,控制器可以包括用于通过通信信道(例如,以太网或其他的)彼此通信的电路和软件。
机器学习系统400可以包括神经网络402。神经网络402可以包括多个层,并且可以由上述多个节点和/或内核组成。机器学习系统400可以包括训练器404。训练器404可以实行用于训练神经网络402的操作。机器学习系统400可以包括训练数据库406,该训练数据库406包括输入集合和神经网络402的对应的输出或标签。训练数据库406可以包括针对神经网络402的每个输入集合的预期输出。训练器404可以协调训练数据库406的输入和输出的应用。例如,训练器404可以使神经网络402处理输入数据的批量418,并且在处理了该批量之后输出更新后的加权因子424。神经网络402可以从训练数据库406接收输入数据418。训练器404可以从训练数据库406接收预期输出数据420。神经网络402可以根据神经网络策略处理输入数据418以生成输出数据416。例如,神经网络402可以包括多个节点和/或内核或其某种组合。训练器404可以从神经网络402接收输出数据416,以用于与预期输出数据420进行比较。神经网络可以使用定点加权因子集合423对输入数据418进行操作。
训练器404可以监视神经网络402的性能。当输出数据416与预期输出数据420并不紧密相关时,训练器404可以生成加权因子调整424。各种已知策略可用于调整加权因子。训练器404可以遍历训练数据,直到输出数据416在预期输出数据420的预定范围内为止。当误差小于预定阈值时,训练阶段可以完成。加权因子调整424可以被输入到阴影权重函数405。阴影权重函数405可以以全精度维持神经网络402的加权因子集合。阴影权重函数405的输出可以是全精度权重因子集合422。例如,全精度加权因子422可以被表示为浮点变量。
机器学习系统400可以进一步包括量化器410,该量化器410被配置成将在训练阶段期间学习的全精度加权因子422转换为神经网络402中使用的定点加权因子423。例如,量化器410可以应用方程式(1)和(2)来生成定点加权因子423。可以在训练阶段期间将定点加权因子423提供给神经网络402。量化器410可以使用如上所述被确定的缩放因子。在训练阶段期间,量化器410可以在每个迭代时将全精度加权因子422连续地转换为定点加权因子423。可以使用当前提供的缩放因子425来生成定点加权因子423。
机器学习系统400可以进一步包括缩放因子确定函数411,该缩放因子确定函数411被配置成生成量化器410的缩放因子a 425。例如,缩放因子确定函数411可以在训练阶段期间周期性地实行。例如,缩放因子确定函数411可以每训练阶段的第十批量或迭代实行一次。更一般而言,缩放因子确定函数411可以在训练阶段期间的预定数量的批量或迭代之后实行。缩放因子确定函数411可以包括选择候选缩放因子的预定集合来在成本函数中进行评估。缩放因子确定函数411可以进一步包括:在成本函数中评估每一个候选缩放因子,以确定缩放因子425中使成本函数最小化的一个。缩放因子确定函数411可以将缩放因子a,425输出到量化器410。量化器410可以输出定点加权因子423,以供神经网络402使用。在训练阶段完成之后,可以将定点加权因子423提供给推理阶段408。在训练阶段期间使用定点加权因子423可以改进训练操作的性能。虽然训练阶段可能仍会利用一些浮点运算来维持全精度加权因子422,但在神经网络402中使用更少浮点运算。另一个优点是在训练阶段(在神经网络402中)和推理阶段408中使用相同的定点加权因子423。在训练阶段期间,随着全精度加权因子422被更新,定点加权因子423可以在每个迭代或批量时改变。在预定数量的批量或迭代之后,缩放因子425可以被更新来改变量化器410的缩放操作。
推理阶段408可以将神经网络算法实现为实时系统的一部分。照此,可以以最佳方式实现神经网络以用于实时操作。推理阶段408可以基于神经网络的操作来接收实际输入412并且生成实际输出414。实际输入412可以来自传感器输入。推理阶段408可以被并入实时系统中以处理输入数据集合。例如,推理阶段408可以被并入机器视觉系统中,并且被配置成识别图像帧中的特定对象。在推理阶段中,神经网络的加权因子可以被维持在训练阶段期间所学习的定点值处。
由于推断阶段408可以是实时系统,因此可能期望在运行时使用定点或整数操作。照此,推断阶段408可以被配置成使用定点或整数操作进行操作以改进计算吞吐量。推理阶段408可以包括用于处理层和节点的逻辑。图5描绘了用于将神经网络的浮点加权因子转换为定点表示的操作集合的可能流程图500。在操作502处,可以生成加权因子集合。该加权因子集合可以在训练阶段期间生成,并且可以对应于神经网络的一个或多个元件(例如,节点、神经元、内核、层)。在该阶段,加权因子可以被表示为浮点值。该加权因子集合可以对应于神经网络的一组节点或整个层。该加权因子集合可以是训练操作的输出,并且可以在训练阶段的一个或多个迭代之后被更新。
在操作504处,可以选择候选缩放因子集合。可以挑选预定数量的候选缩放因子。该候选缩放因子可以是预定基数(例如,二)的倍数。该候选缩放因子可以包括更大数量的候选,该候选具有的值超过浮点加权因子的绝对值的平均值。平均值可以具有与节点或层相关联的加权因子集合。候选缩放因子可以包括仅一个小于浮点加权因子的绝对值的平均值的候选。候选缩放因子可以包括分别具有指数L和L-1的第一和第二候选,使得浮点加权因子集合的绝对值的平均值在b L 与b L-1 之间。候选缩放因子可以包括预定基数的从b L-1 到b L +4 的那些倍数。使候选缩放因子的数量最小化以减少用于评估成本函数的执行时间可能是有用的。
在操作506处,可以在成本函数中评估候选缩放因子。成本函数可以是浮点加权因子集合与被评估的候选缩放因子和由被评估的候选缩放因子定义的定点加权因子的乘积之间的均方误差。成本函数可以被表述为上面的方程式(3)。
在操作508处,可以选择使成本函数最小化的候选缩放因子。可以在成本函数中评估每个候选缩放因子,以确定用于比较的数值。例如,可以为每个候选缩放因子评估成本函数以生成数值。然后可以将数值进行比较以确定最小值。
在操作510处,可以使用所选缩放因子来生成定点加权因子。例如,可以通过使用上面的方程式(1)和(2)来生成定点加权因子。在训练阶段期间,可以周期性地重复操作502至操作510。在训练阶段完成之后,最终的量化加权因子集合可以可用于推理阶段。
在操作512处,可以将定点加权因子和缩放因子提供给推理阶段。定点加权因子和缩放因子可以在其中推理阶段在单独的控制器中实现的配置中经由通信信道传递。在操作514处,可以在推理引擎的操作期间使用定点加权因子和缩放因子。
本文中公开的系统和方法呈现了一种量化用于神经网络的加权因子的改进方法。该方法可以生成使成本函数最小化的缩放因子。该方法进一步减少了要在成本函数中评估的候选缩放因子的数量,并且减少了用于转换加权因子的计算开销。
本文中公开的过程、方法或算法可以可递送给处理设备、控制器或计算机/可以由处理设备、控制器或计算机实现,该处理设备、控制器或计算机可以包括任何现有的可编程电子控制单元或专用电子控制单元。类似地,可以以许多形式将过程、方法或算法存储为可由控制器或计算机执行的数据和指令,包括但不限于永久地存储在诸如ROM设备之类的不可写存储介质上的信息,以及可更改地存储在可写存储介质上的信息,该可写存储介质诸如是软盘、磁带、CD、RAM设备以及其他磁性和光学介质。这些过程、方法或算法也可以在软件可执行对象中实现。替换地,可以使用合适的硬件组件(诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、状态机、控制器或其他硬件组件或设备,或硬件、软件和固件组件的组合)来全部或部分地体现这些过程、方法或算法。
尽管上面描述了示例性实施例,但并不意图这些实施例描述了权利要求所涵盖的所有可能的形式。说明书中使用的词语是描述的词语而非限制的词语,并且理解的是,可以在不脱离本公开的精神和范围的情况下进行各种改变。如前所述,各种实施例的特征可以进行组合,以形成本发明的另外实施例,这些实施例可能未被明确描述或说明。尽管可以将各种实施例描述为相对于一个或多个期望的特性提供了优于其他实施例或现有技术的实现方式的优点,或相对于其他实施例或现有技术的实现方式是优选的,但是本领域普通技术人员意识到可以折衷一个或多个特征或特性来实现期望的总体系统属性,这取决于特定的应用和实现方式。这些属性可以包括但不限于成本、强度、耐用性、生命周期成本、可销售性、外观、包装、大小、可用性、重量、可制造性、易于组装等。照此,关于一个或多个特性被描述为与其他实施例或现有技术的实现方式相比不那么合期望的实施例不在本公开的范围之外,并且对于特定应用而言可能是合期望的。
Claims (20)
1.一种用于将神经网络的浮点加权因子转换为定点加权因子的方法,所述方法包括:
选择预定数量的候选缩放因子,其是预定基数的倍数;
在成本函数中评估每一个候选缩放因子;
作为候选缩放因子中导致成本函数的最小值的一个来选择缩放因子;
通过使用缩放因子缩放浮点加权因子来生成定点加权因子;以及
使用定点加权因子来操作神经网络。
2.根据权利要求1所述的方法,其中,预定基数是二。
3.根据权利要求1所述的方法,进一步包括:响应于完成神经网络的训练阶段,将定点加权因子提供给推理阶段。
4.根据权利要求1所述的方法,其中,预定数量的候选缩放因子包括更大数量的候选,所述候选具有的值超过浮点加权因子的绝对值的平均值。
5.根据权利要求1所述的方法,其中,预定数量的候选缩放因子包括仅一个小于相关联的浮点加权因子的绝对值的平均值的候选。
6.根据权利要求1所述的方法,其中,成本函数是浮点加权因子与候选缩放因子和对应的定点加权因子的乘积之间的均方误差。
7.根据权利要求1所述的方法,进一步包括:在预定数量的训练间隔之后的神经网络的训练阶段期间更新缩放因子。
8.一种机器学习系统,其包括:
控制器,其被编程为使用缩放因子将神经网络的浮点加权因子转换为定点加权因子,所述缩放因子是预定基数b的倍数,并且使成本函数最小化,所述成本函数是浮点加权因子与候选缩放因子和对应的定点加权因子的乘积之间的均方误差,并且在训练阶段期间的预定数量的迭代之后,改变缩放因子。
9.根据权利要求8所述的机器学习系统,其中,控制器被进一步编程为使用定点操作来实现神经网络。
10.根据权利要求8所述的机器学习系统,其中,候选缩放因子包括:分别具有指数L和L-1的第一和第二候选值,使得浮点加权因子的绝对值的平均值在b L 与b L-1 之间。
11.根据权利要求10所述的机器学习系统,其中,控制器被进一步编程为利用候选缩放因子来评估成本函数,所述候选缩放因子是预定基数的从b L-1 到b L+4 的倍数。
12.根据权利要求8所述的机器学习系统,其中,控制器被进一步编程为:针对第一数量的候选缩放因子并且针对第二数量的候选缩放因子来评估成本函数,所述第一数量的候选缩放因子大于浮点加权因子的绝对值的平均值,所述第二数量的候选缩放因子小于平均值,第一数量大于第二数量。
13.根据权利要求8所述的机器学习系统,其中,控制器被进一步编程为在完成训练阶段之后,将定点加权因子提供给被配置成实现神经网络的推理阶段。
14.根据权利要求8所述的机器学习系统,其中,预定基数b是二。
15.根据权利要求8所述的机器学习系统,其中,控制器被进一步编程为定义包括多于一个节点的层的缩放因子。
16.一种方法,其包括:
选择预定数量的候选缩放因子,其是二的倍数;
针对每一个候选缩放因子来评估成本函数,所述成本函数是神经网络的预定集合的浮点加权因子与被评估的候选缩放因子和由被评估的候选缩放因子定义的定点加权因子的乘积之间的均方误差;
选择缩放因子作为导致成本函数的最小值的候选缩放因子之一;
通过按缩放因子缩放每一个浮点加权因子来生成定点加权因子集合;以及
使用定点加权因子集合来实现神经网络。
17.根据权利要求16所述的方法,其中,候选缩放因子包括:分别具有指数L和L-1的第一和第二候选值,使得预定集合的浮点加权因子的绝对值的平均值在2 L 与2 L-1 之间。
18.根据权利要求17所述的方法,其中,候选缩放因子包括二的从2 L-1 到2 L+4 的倍数。
19.根据权利要求16所述的方法,其中,候选缩放因子包括:与小于浮点加权因子的绝对值的平均值的候选缩放因子相比,更大数量的大于平均值的候选缩放因子。
20.根据权利要求16所述的方法,其中,预定集合对应于神经网络的节点。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/739484 | 2020-01-10 | ||
US16/739,484 US11601134B2 (en) | 2020-01-10 | 2020-01-10 | Optimized quantization for reduced resolution neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113112013A true CN113112013A (zh) | 2021-07-13 |
Family
ID=76542853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110022078.3A Pending CN113112013A (zh) | 2020-01-10 | 2021-01-08 | 针对分辨率降低的神经网络的优化量化 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11601134B2 (zh) |
CN (1) | CN113112013A (zh) |
DE (1) | DE102021200012A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7149198B2 (ja) * | 2019-02-07 | 2022-10-06 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
CN111291876B (zh) * | 2020-01-21 | 2023-03-28 | 星宸科技股份有限公司 | 运算装置、运算方法和运算芯片 |
US11861467B2 (en) * | 2020-03-05 | 2024-01-02 | Qualcomm Incorporated | Adaptive quantization for execution of machine learning models |
US20210334646A1 (en) * | 2020-04-28 | 2021-10-28 | International Business Machines Corporation | Robustness-aware quantization for neural networks against weight perturbations |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8331484B2 (en) * | 2010-01-13 | 2012-12-11 | Cisco Technology, Inc. | Digital Predistortion training system |
CN106575379B (zh) | 2014-09-09 | 2019-07-23 | 英特尔公司 | 用于神经网络的改进的定点整型实现方式 |
US10373050B2 (en) * | 2015-05-08 | 2019-08-06 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
US10650303B2 (en) | 2017-02-14 | 2020-05-12 | Google Llc | Implementing neural networks in fixed point arithmetic computing systems |
US10878273B2 (en) * | 2017-07-06 | 2020-12-29 | Texas Instruments Incorporated | Dynamic quantization for deep neural network inference system and method |
US11755901B2 (en) | 2017-12-28 | 2023-09-12 | Intel Corporation | Dynamic quantization of neural networks |
CN112740233A (zh) * | 2018-09-27 | 2021-04-30 | 株式会社索思未来 | 网络量化方法、推理方法以及网络量化装置 |
CN111126558B (zh) * | 2018-10-31 | 2024-04-02 | 嘉楠明芯(北京)科技有限公司 | 一种卷积神经网络计算加速方法及装置、设备、介质 |
CN111191783B (zh) * | 2018-11-15 | 2024-04-05 | 嘉楠明芯(北京)科技有限公司 | 一种自适应量化方法及装置、设备、介质 |
US11763158B2 (en) * | 2019-12-04 | 2023-09-19 | Deep Vision Inc. | Method for automatic hybrid quantization of deep artificial neural networks |
US20210174214A1 (en) * | 2019-12-10 | 2021-06-10 | The Mathworks, Inc. | Systems and methods for quantizing a neural network |
US20210224658A1 (en) * | 2019-12-12 | 2021-07-22 | Texas Instruments Incorporated | Parametric Power-Of-2 Clipping Activations for Quantization for Convolutional Neural Networks |
-
2020
- 2020-01-10 US US16/739,484 patent/US11601134B2/en active Active
-
2021
- 2021-01-04 DE DE102021200012.6A patent/DE102021200012A1/de active Pending
- 2021-01-08 CN CN202110022078.3A patent/CN113112013A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102021200012A1 (de) | 2021-07-15 |
US20210218414A1 (en) | 2021-07-15 |
US11601134B2 (en) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gholami et al. | A survey of quantization methods for efficient neural network inference | |
Nagel et al. | A white paper on neural network quantization | |
US20210089922A1 (en) | Joint pruning and quantization scheme for deep neural networks | |
CN109754066B (zh) | 用于生成定点型神经网络的方法和装置 | |
US11601134B2 (en) | Optimized quantization for reduced resolution neural networks | |
US11604987B2 (en) | Analytic and empirical correction of biased error introduced by approximation methods | |
CN112085186A (zh) | 一种神经网络的量化参数确定方法及相关产品 | |
CN112005250A (zh) | 学习表示神经网络中的权重张量的奇异值分解矩阵的截断秩 | |
US11861467B2 (en) | Adaptive quantization for execution of machine learning models | |
CN112115998B (zh) | 一种基于对抗增量聚类动态路由网络克服灾难性遗忘的方法 | |
Zhou et al. | Deep learning binary neural network on an FPGA | |
WO2021050440A1 (en) | Performing xnor equivalent operations by adjusting column thresholds of a compute-in-memory array | |
CN114341891A (zh) | 神经网络剪枝 | |
US20220156508A1 (en) | Method For Automatically Designing Efficient Hardware-Aware Neural Networks For Visual Recognition Using Knowledge Distillation | |
EP4341862A1 (en) | Low-rank adaptation of neural network models | |
Benala et al. | Genetic algorithm for optimizing functional link artificial neural network based software cost estimation | |
US10410140B1 (en) | Categorical to numeric conversion of features for machine learning models | |
Choi et al. | Approximate computing techniques for deep neural networks | |
US20200293864A1 (en) | Data-aware layer decomposition for neural network compression | |
US20230306255A1 (en) | Method and system for smooth training of a quantized neural network | |
WO2021248544A1 (en) | Low resource computational block for trained neural network | |
KR20210116182A (ko) | 소프트맥스 연산 근사화 방법 및 장치 | |
JP2019133627A (ja) | 情報処理方法及び情報処理システム | |
US12003255B2 (en) | Method and device for binary coding of signals in order to implement digital MAC operations with dynamic precision | |
US20230419087A1 (en) | Adapters for quantization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |