用于经训练神经网络的低资源计算块的制作方法

文档序号:33081631发布日期:2023-01-31 19:41阅读:32来源:国知局
用于经训练神经网络的低资源计算块的制作方法
用于经训练神经网络的低资源计算块
1.相关申请的交叉引用
2.本技术要求于2020年6月12日提交的、发明名称为“用于经训练神经网络的低资源计算块(low resource computational block for a trained neural network)”的第16/900,658号美国专利申请的权益,该美国专利申请的内容以引用的方式并入本文中,如全文再现一般。
技术领域
3.本发明大体上涉及人工神经网络。更具体地,本技术涉及一种具有用于经训练神经网络的层的量化输入和参数的计算块。


背景技术:

4.人工神经网络(neural network,nn)是模拟生物大脑的运作方式的计算系统。nn由多个层(例如,计算块)组成,每个层包括多个计算单元(称为神经元),不同层的计算单元之间具有连接。nn中的每个计算单元(例如,每个神经元)使用一系列计算来转换数据,这些计算包括每个相应的计算单元将初始值乘以一些权重,将结果与输入同一相应计算单元的其它值相加,通过计算单元的相应偏置调整结果数,然后用激活函数归一化输出。偏置是在处理所有连接之后调整相应计算单元的值的数,激活函数确保传递到后续计算单元的值在可调谐的预期范围内。重复一系列计算,直到nn的最终输出层生成与特定推理任务相关的分数或预测。nn可以学习执行推理任务,例如对象检测、图像分类、聚类、语音识别或模式识别。nn通常不需要使用任何任务特定的规则进行编程。相反,nn通常执行监督学习任务,从预先提供正确答案的数据集构建信息。然后,nn通过自身调谐来学习,以自己找到正确的答案,从而提高其预测的准确性。
5.nn变得更大(即,更深)和更复杂。这不可避免地增加了nn中层的数量和大小,以至于在软件或硬件中实现nn的成本可能很高。nn越来越依赖使用特别设计的、计算能力强大的硬件设备来执行nn的每一层的操作(以下通常称为nn操作),这些设备包括一个或多个处理单元、加速器(例如,设计用于执行nn的某些操作的加速器)和支持存储器。在一些示例中,专用处理单元、加速器和支持存储器封装在单个集成电路中。执行深度nn的nn操作所需的计算能力强大的硬件设备会增加经济成本,以及物理空间和热冷要求方面的辅助成本。
6.深度nn通常是使用由全精度计算单元组成的全精度层构建的全精度nn。全精度层对各自具有8位以上的值执行nn操作,例如矩阵乘法、加法、批归一化和乘积累加(multiply-accumulate,mac)运算(例如,输入特征向量或特征图等特征张量中的单个元素是使用8位或更多位表示的每个实值,以及包括在权重张量中的权重等网络层参数也是使用8位或更多位表示的实值)。在全精度层上下文中执行的nn操作称为高位nn操作。具体地,nn层(例如,nn的第i层)中计算单元的每个元素输出是输入到计算单元的所有特征元素的加权和,这需要每个全精度层进行大量的乘积累加(multiply-accumulate,mac)运算。因此,由全精度nn层执行的高位nn操作在计算上是密集型的。这对在计算受限的硬件设备中
使用全精度nn施加了限制。
7.因此,对nn压缩技术的兴趣日益浓厚,这种nn压缩技术可以减少nn执行的用于特定推理任务所需的nn操作的数量,从而使nn能够部署在计算受限的硬件设备中,所述硬件设备例如可以使用与部署非压缩nn所需相比功能更弱的处理单元、功能更弱的(或没有)加速器、更少的内存和/或更少的功率。nn压缩技术可以例如应用于成本效益高的计算受限的硬件设备中,所述硬件设备可以被实现以解决机器人、自动驾驶、无人机和物联网(internet of things,iot)等应用中的现实世界问题。神经网络量化是一种nn压缩技术,用于解决压缩经训练nn以使nn操作能够在资源受限的硬件设备上执行的挑战。除其它外,nn量化还可用于用按位运算取代在nn层执行的高位mac运算。由于通用处理单元支持的最小位宽mac运算符是8位mac运算符,因此传统的量化技术将全精度矩阵乘法运算减少为8位矩阵乘法运算,由8位mac运算符执行。将全精度矩阵乘法运算减少为位宽小于8位(即,位数小于8位)的矩阵乘法运算的任何nn量化技术都必须由使用按位运算符或使用特定硬件设备的计算单元执行。使用按位运算的nn层可以用作低位层,其中,使用表示为1位值或2位值的元素执行运算。
8.低位神经网络量化技术通常可分为两个不同的类别:(i)量化nn层接收的实值权重张量但在nn层的nn操作中使用实值输入特征图张量的权重量化技术;(ii)量化实值权重张量和输入特征图张量的权重和特征图量化技术。
9.低位量化技术的局限性在于,当已经压缩的经训练nn被部署用于推理(即,对新数据进行预测)时,压缩的经训练nn在计算成本和内存要求中的一个或多个方面存在缺陷。例如,压缩的经训练nn仍然需要大量的乘积累加(multiply-accumulate,mac)运算,这些mac运算可能是计算和内存密集型的。
10.因此,需要低位计算块,该低位计算块可用于实现nn的层,在训练后可以准确地生成nn的后续计算块(例如,nn的后续层)的二元特征图张量,与现有低位nn方案相比,计算成本和内存要求更低。


技术实现要素:

11.本发明提供了用于在资源受限的硬件设备上有效地执行推理任务的方法和系统。在经训练nn中,推理阶段计算块使用低资源计算操作来取代大量资源密集型乘积累加(multiply-accumulate,mac)运算。这些低资源计算操作可以包括基本逻辑和数学运算,例如与运算、popcount运算、减法运算和比较运算。本文公开的方法和系统在一些应用中可以使用较少的计算资源,例如处理功率和内存,来执行推理任务并生成特征向量。在示例性实施例中,推理阶段计算块使包括一个或多个推理阶段计算块的经训练nn能够部署在资源受限的硬件设备上,从而使得它使用比现有方案更少的处理器计算、更少的内存和/或更少的功率。
12.根据第一示例性方面,提供了一种计算机实现的方法,所述计算机实现的方法包括:应用多个低资源计算操作以生成整数特征张量,所述整数特征张量相当于对三元权重张量和所述二元输入特征张量执行的乘法累加运算的输出;将所述生成的整数特征张量与比较阈值进行比较运算,以生成二元输出特征张量。
13.在至少一些应用中,使用低资源计算操作来提供相当于一组乘法累加运算的输
出,使得该方法能够在不使用计算和内存密集型乘积累加(multiply-accumulate,mac)运算的情况下执行。这可以使得该方法能够使用计算受限的硬件设备来执行,这些计算受限的硬件设备具有有限处理功率、有限的内存或有限的电源中的一种或多种,包括例如边缘设备。所述方法例如可以使神经网络(neural network,nn)能够部署在计算受限的硬件设备中,所述计算受限的硬件设备例如可以使用与先前方案所需相比功能更弱的处理单元、功能更弱(或没有)加速器、更少的内存和/或更少的功率。
14.根据上述方面的一些示例,所述生成的整数特征张量包括m个整数元素的集合,每个整数元素具有一个值,所述值相当于所述三元权重张量的n个三元元素的集合和所述二元输入特征张量的n个二元元素的集合的点积。
15.根据上述方面中的一个或多个的示例,对于所述整数特征张量的每个整数元素:使用所述第一权重张量和所述第二权重张量应用所述多个低资源计算操作,所述第一权重张量和所述第二权重张量各自包括n个二元元素,并且共同表示所述三元权重张量的相应n个元素,应用所述多个低资源计算操作包括,对于所述整数特征张量的每个整数元素:在所述第一权重张量的所述n个二元元素与所述二元输入特征张量的所述n个二元元素之间应用第一按位逻辑与运算;在所述第二权重张量的所述n个二元元素与所述二元输入特征张量的所述n个二元元素之间应用第二按位逻辑与运算;基于包括在所述第一按位逻辑与运算的输出和所述第二按位逻辑与运算的输出中的预定值的位数生成所述整数元素。
16.根据上述方面中的一个或多个的示例,应用所述多个低资源计算操作包括,对于所述整数特征张量的每个整数元素:应用第一popcount运算以对包括在所述第一按位逻辑与运算的所述输出中的所述预定值的所述位数进行计数;应用第二popcount运算以对包括在所述第二按位逻辑与运算的所述输出中的所述预定值的所述位数进行计数;其中,生成所述整数元素包括在所述第一popcount运算的输出与所述第二popcount运算的输出之间应用减法运算,以输出所述整数元素。
17.根据上述方面中的一个或多个的示例,所述三元权重张量的n个元素被分解成n个二元元素对,以生成所述第一权重张量的所述n个二元元素和所述第二权重张量的所述n个二元元素。
18.根据上述方面中的一个或多个的示例,应用所述多个低资源计算操作和执行所述比较运算是在经训练以执行推理任务的第二神经网络的层中执行的,所述方法还包括通过学习包括所述三元权重张量的第一神经网络的网络参数来训练所述第一神经网络以执行所述推理任务。
19.根据上述方面中的一个或多个的示例,训练所述第一神经网络包括:使用所述网络参数为训练数据集的多个输入特征张量中的每个输入特征张量推断输出张量;基于所述推断确定所述网络参数的成本;使用梯度下降和反向传播更新所述网络参数,其中,重复所述推断、所述确定和所述更新,直到所述网络参数的所述成本达到优化阈值。
20.根据上述方面中的一个或多个的示例,所述第一神经网络的层对应于所述第二神经网络的所述层,所述第一神经网络的所述层用于:使用所述三元权重张量和所述训练数据集中的二元输入特征张量应用乘法累加运算,以生成训练整数特征张量;将批归一化操作、激活操作和二值化操作应用于所述生成的训练整数特征张量,以生成训练二元输出特征张量,所述批归一化基于批归一化参数集,其中,所述学习的网络参数包括所述批归一化
参数,所述比较阈值是基于所述学习的批归一化参数计算的m个整数阈值的张量。
21.根据上述方面中的一个或多个的示例,所述批归一化参数包括缩放因子张量和偏置张量,并且训练所述第一神经网络包括初始化所述网络参数中的一个或多个网络参数,以将所述网络参数内的值的方差保持在目标方差范围内。
22.根据上述方面中的一个或多个的示例,在所述第一神经网络的训练期间,所述三元权重张量是通过使用不可微的三值化操作量化对应的实值权重张量的值而生成的,所述二值化操作应用不可微的二值化操作,并且在反向传播期间,所述不可微的三值化操作和所述不可微的二值化操作各自由相应的可微操作近似。
23.根据第二示例性方面,提供了一种处理单元,所述处理单元用于执行上述方面中的一个或多个的方法。
24.根据另一个示例性方面,提供了一种处理设备,所述处理设备包括存储器,所述存储器可操作地连接到所述处理设备,并存储可执行指令,所述可执行指令当由所述处理设备执行时,使处理单元实现用于执行推理任务的经训练神经网络的计算块。所述计算块用于:应用多个低资源计算操作,以生成整数特征张量,所述整数特征张量相当于对三元权重张量和所述二元输入特征张量执行的乘法累加运算的输出;将所述生成的整数特征张量与比较阈值进行比较运算,以生成二元输出特征张量。
25.根据另一个示例性方面,提供了一种计算机可读介质,所述计算机可读介质存储指令,所述指令用于使处理单元实现用于执行推理任务的经训练神经网络的计算块,所述计算块用于:应用多个低资源计算操作以生成整数特征张量,所述整数特征张量相当于对三元权重张量和所述二元输入特征张量执行的乘法累加运算的输出;将所述生成的整数特征张量与比较阈值进行比较运算,以生成二元输出特征张量。
26.根据另一个示例性方面,提供了一种计算机程序,所述计算机程序存储指令,所述指令用于使处理单元实现用于执行推理任务的经训练神经网络的计算块,所述计算块用于:应用多个低资源计算操作以生成整数特征张量,所述整数特征张量相当于对三元权重张量和所述二元输入特征张量执行的乘法累加运算的输出;将所述生成的整数特征张量与比较阈值进行比较运算,以生成二元输出特征张量。
附图说明
27.现在将通过示例参考示出本技术示例性实施例的附图,在附图中:
28.图1是示例性实施例提供的可用于在训练nn模型的同时实现nn的层的训练阶段计算块的计算图表示;
29.图2示出了图1的训练阶段计算块的进一步表示,以及示例性实施例提供的三元权重张量的示例;
30.图3是示例性实施例提供的可用于实现nn的训练层的推理阶段计算块的计算图表示;
31.图4是按位运算的真值表表示;
32.图5示出了表示三元权重张量的两个1位权重张量;
33.图6是用于实现图2的推理阶段计算块的低资源计算操作的框图;
34.图7示出了示例性实施例提供的使用图3b的低资源计算操作执行推理任务的示例
性方法;
35.图8图形化地表示示例性实施例提供的具有三个不同参数的可微函数;
36.图9是可用于执行包括图1或图3所示的一个或多个计算块的nn的机器可读指令的示例性处理系统的框图。
37.不同的附图中使用了相似的附图标记来表示相似的组件。
具体实施方式
38.本发明涉及一种神经网络(neural network,nn),所述神经网络包括实现为推理阶段计算块的一个或多个层,所述推理阶段计算块使用一组低资源计算操作来替代在对应训练阶段计算块中使用的资源密集型运算。如本文所使用的,使用“低资源计算操作”的推理计算块是基于学习参数集对输入特征张量执行非线性推理函数而不应用乘积累加(multiplication and accumulate,mac)运算的计算块。在示例性实施例中,低资源计算操作包括基本的逻辑和数学计算操作,例如与运算、popcount运算、减法运算和比较运算,并排除计算密集型运算,例如依赖于mac运算的矩阵乘法运算。如本文所使用,“张量”是指元素数组,例如向量(例如,一维数组,例如包括多个标量特征元素的行数组或列数组)或矩阵或映射(例如,多维数组,每个维度包括多个标量特征元素)。“特征张量”是指表示正在处理的对象的特征的元素数组。例如,正在处理的对象可以是图像数据、音频数据、数字数据或其它形式的结构化或非结构化数据的实例。“权重张量”是指标量权重元素的数组,例如权重向量(例如,一维数组,例如包括多个标量权重元素的行数组或列数组)或权重矩阵(例如,多维数组,每个维度包括多个标量权重元素)。在示例性实施例中,“低位元素”是指使用1位或2位表示的标量元素。在一些示例性实施例中,“低位特征元素”由1位值表示,“低位权重元素”由2位值表示。在至少一些nn实现中,与依赖于乘法运算、累加运算和激活操作的全流程方案或按位方案相比,应用低资源计算操作的推理阶段计算块可能有助于通过简化计算操作和/或降低内存存储要求来降低计算成本。在至少一些应用中,降低计算成本可以改善硬件设备的性能延迟和功率效率。
39.在示例性实施例中,包括实现为相应推理阶段计算块的一个或多个层的经训练nn被部署用于在硬件设备上执行以执行特定推理任务。例如,推理任务可以是将对象分类为属于一组可能的候选类别中的一个类别。所公开的推理阶段计算块执行低资源计算操作以处理输入量化特征张量(即,输入张量的每个特征元素被表示为相应的1位值)。推理阶段计算块基于在2位宽度量化权重张量(即,权重张量的每个权重元素表示为2位值)中定义的经训练权重参数处理输入量化特征张量。在至少一些实施例中,包括一个或多个所公开的推理阶段计算块的经训练nn可以被部署以由计算受限的硬件设备(例如,具有有限处理能力、有限内存或有限电力供应中的一个或多个的设备)执行。在至少一些应用中,包括如本发明中描述的推理阶段计算块的nn可以以精确近似全精度nn性能的方式执行推理任务,并因此缓解了传统问题,例如mac运算的广泛使用和/或当现有的按位nn结构用于提供全精度nn的离散近似时可能出现的准确性降低。
40.在示例性实施例中,包括本发明中描述的推理阶段计算块的nn层可以使用低资源计算操作(例如,1位与运算、1位popcount运算)(所述低资源计算操作可以使用低位内存存储来支持)以及其它低资源计算操作(例如基本的减法运算和比较(cmp)运算)来实现。这种
方案可以使经训练nn模型(该经训练nn模型包括一个或多个层,每个层包括相应的推理计算块)加载到硬件设备的处理单元的高速缓冲存储器中,从而允许具有有限计算能力的处理单元(例如,资源受限设备(例如iot设备、移动设备和其它边缘设备)中使用的微控制器)执行高速运算。
41.在一些示例性实施例中,当训练nn以学习一个或多个训练阶段计算块的参数时,使用特征张量和权重张量量化函数生成对应的低位特征和权重元素。在反向传播期间,量化函数由可微函数(例如梯度估计)近似。使用可微梯度估计可以减少nn训练期间反向传播中的梯度噪声。在至少一些示例性实施例中,当训练nn以学习参数时,初始化用于nn的批归一化(batch normalization,bn)操作的缩放因子,以提高训练部署的nn的参数的准确性。
42.用于训练目的的计算块
43.图1是示例性实施例提供的可用于在训练阶段期间实现nn的层的训练阶段计算块100的计算图表示。在本发明描述的实施例中,训练阶段计算块100表示nn的第i个全连接层。在正向传递期间,训练阶段计算块100的输入是量化特征张量x
ibin
,在示例性实施例中,该量化特征张量可以被表示为n个1位元素的特征向量(例如,每个元素具有“0”或“1”的二进制值),使得在本发明中,大写字母(例如,“x”、“w”、“z”)用于表示张量(例如,多元素向量或数组)且小写字母(例如,“x”、“w”、“z”)用于表示构成张量的单个标量元素。训练阶段计算块100用于执行一组低位计算操作,以处理量化特征张量并输出对应的量化特征张量在示例性实施例中,输出量化特征张量可以表示为m个1位元素的特征向量(例如,每个元素具有“0”或“1”的二进制值),使得如下面将更详细地解释,由训练阶段计算块100执行的低位计算操作包括矩阵乘法运算(matmul
bit
)206、批归一化(batch normalization,bn)操作208、激活函数(例如prelu)210和二值化操作212。
44.在一些情况下,层i训练阶段计算块100是nn中的第一计算块,例如,其中,i=1,并且训练阶段计算块100实现紧随nn输入层之后的第一隐藏层。在这种情况下,需要初始量化操作,即二值化操作202,该初始量化操作量化了包括在实值输入特征张量中的实值元素,以输出二元输入特征张量的相应1位元素。二值化操作202将实值输入特征张量xi中的每个实值元素x量化为两个可能值(1,0)中的一个。
45.在一些实施例中,二值化操作202可以由以下等式(1)用数学表示:
[0046][0047]
其中,如上所述,xi表示实值输入特征张量(例如,实值的n元素特征向量),表示二值化张量版本(例如,1位二进制值的对应n元素特征向量)。
[0048]
将量化特征张量提供给矩阵乘法运算(matmul
bit
)206。矩阵乘法运算(matmul
bit
)206在三元权重张量与输入量化特征张量之间执行按位乘法累加运算,以生成m整数值元素张量z
iint
。三元权重张量是在按位计算块100的训练期间学习的
2位宽度权重参数的m
×
n集合。更具体地,三元权重张量从实值权重张量wi导出,该实值权重张量是在训练阶段计算块100的训练期间学习的权重元素wi的m
×
n矩阵。如上所述,n是二元输入张量的大小(例如二元元素的数量)。在本发明描述中,m是由按位计算块100生成的二元输出张量的大小。
[0049]
在这方面,三值化操作204将实值权重张量量化为三元权重张量具体地,三值化操作204将每个实值权重元素w
a,b
量化为对应的三元权重元素w
ter(a,b)
,该三元权重元素是三个可能值(1,0,

1)中的一个(其中,1≤a≤m,1≤b≤n)。
[0050]
在一些实施例中,由三值化操作204生成的三元权重张量由以下等式(2)用数学表示:
[0051][0052]
其中,如上所述,wi表示实值权重张量,表示三元权重张量。
[0053]
如下面更详细地解释,在一些示例中,在反向传播期间,使用可微函数(例如近似由等式(2)表示的不可微离散量化函数的梯度估计)来近似三值化操作204。
[0054]
矩阵乘法运算206执行按位矩阵乘法累加运算,如等式(3a)和(3b)所示:
[0055][0056][0057][0058][0059]
如上所述,是整数值特征张量在全连接层的情况下,特征向量的每个整数元素是三元权重张量的相应行的n个权重的集合和量化特征张量的n个元素的点积。
[0060]
在示例性实施例中,将整数特征张量提供给bn操作208,该bn操作208可以根据已知的批归一化技术实现。bn操作208由可训练的bn参数配置,所述可训练的bn参数即可训练的偏置张量β和可训练的缩放因子张量γ。如本领域中已知,当使用批归一化来代替非批偏置向量加法运算时,批归一化可以改进nn的训练。bn操作208可以由等式(4)用数学表示:
[0061]
[0062]
其中,μb是x的迷你批平均值(x是用于bn操作的整数值向量的组或迷你批,和),σb是x的迷你批方差,γ是可训练的缩放因子张量,β是可训练的偏置张量,∈是非常小的数字,以避免除零错误。在示例性实施例中,按位计算块的m个输出中的每个输出将具有相应的缩放因子和偏置,使得γ和β是m个元素的每个张量(例如,向量)。
[0063]
在图1中,bn操作208的输出是实值特征张量将该实值特征张量提供给激活函数210。矩阵乘法运算206、bn运算208和激活函数210的组合运算可以由等式(5)用数学表示,其中,σ表示激活函数210:
[0064][0065]
输出张量x
i+1
是实值输出向量,
[0066]
在一个示例性实施例中,激活函数σ210使用参数修正线性单元(parametric rectified linear unit,prelu)实现。合适的参数relu的示例在以下文献中描述:kaiming he、xiangyu zhang、shaoqing ren和jian sun的“深入研究整流器:在imagenet分类上超越人类水平的性能(delving deep into rectifiers:surpassing human-level performance on imagenet classification)”,corr,abs/1502.01852,2015。在另一个示例性实施例中,激活函数σ210使用leaky relu实现。合适的leaky relu的示例在以下文献中描述:andrew l.maas、awni y.hannun和andrew y.ng的“整流器非线性改善神经网络声学模型(rectifier nonlinearities improve neural network acoustic models)”,icml音频、语音和语言处理深度学习研讨会,2013年。在示例性实施例中,当按位nn块100处于训练阶段时,使用leaky relu或参数relu作为激活函数σ210可以有助于提高反向传播的准确性。
[0067]
如上所述,输出张量x
i+1
是实值输出向量。为了提供二元输出,应用二值化操作212将实值输出向量量化为1位二元元素的相应张量,即输出特征张量二值化操作212可以与上述二值化操作202相同。
[0068]
输出特征张量可以用作使用另一计算块100实现的后续nn层(即,层i+1)的输入特征张量。
[0069]
参考图2,训练阶段计算块100可以被认为是一组“m”个神经元或计算单元250(1)至250(m),它们共同形成nn的第i个全连接层。如图2所示,矩阵乘法运算206包括m个点积运算252(1)到252(m)。在这方面,每个计算单元250(a)(其中a是从1到m的整数)计算相应的整数特征元素该相应的整数特征元素是由三元权重张量的“m”行中的一行定义的相应n元素权重向量与n元素量化输入特征张量的点积。因此,在全连接层中,在点积运算252(1)至252(m)中的每一个处将n个权重元素至的不同集合应用于n个1位二元输入特征元素至的相同集合。作为示例,如图2所示,整数特征元素是m行乘以n列三元权重张量的第一行216(1)与n元素量化特征张量的点积。
整数特征元素是三元权重张量的最后一行216(m)与n元素量化特征张量的点积。整数特征张量包括m个整数元素至m个整数元素至中的每一个分别进行批归一化操作、激活操作和二值化操作,以得到输出二元向量二元特征元素中的每一个由相应的计算单元250(a)生成。
[0070]
训练阶段计算块100的每个计算单元250(a)的前向传播通常可以由等式(6a)中所示的函数表示:
[0071][0072]
其中,“a”是1与m之间的整数,是由三元权重张量的第a行的n个权重元素组成的三元权重向量,表示对应于计算单元250(a)的缩放因子张量γ和偏置张量β的元素。
[0073]
如图1和图2中所示,当按位计算块100执行前向传播时,训练阶段计算块100的输出二元特征张量可以由以下等式(6b)用数学表示:
[0074][0075][0076]
其中,batchnorm是bn操作208,σ是激活函数210,binarize是二值化操作202。
[0077]
在示例性实施例中,使用监督训练对训练阶段计算块100进行训练以学习非线性函数具体地,包括权重张量wi中的权重元素wi、可训练缩放因子张量γi中的缩放因子元素以及可训练偏置张量βi中的偏置元素的参数集是通过迭代训练过程学习的,该迭代训练过程测量关于参数集的训练数据集的nn性能,确定参数的成本,使用反向传播更新参数,并重复直到实现最佳参数集。进一步的训练细节将在下文描述。
[0078]
在训练阶段计算块100被训练后,学习的参数张量wi、γi、βi可以与具有与训练阶段计算块100相同结构的任何计算块一起使用,以实现非线性函数
[0079]
用于推理目的的计算块
[0080]
尽管如图1所示的训练阶段计算块100可以在nn训练期间免除一些高位计算,但训练阶段计算块100的结构仍然依赖于大量的mac运算(例如,矩阵乘法运算),以及高位bn操作和激活函数,这些运算和操作可以是计算和内存密集型的。因此,当部署在边缘设备等计算受限设备上时,训练阶段计算块100可能不适合应用于关于新数据的持续推理操作。
[0081]
因此,本发明的示例性实施例描述了可用于基于由训练阶段计算块100学习的参数实现非线性函数的替代计算块结构。在示例性实施例中,替代计算块结构用于用多个低资源计算操作取代训练阶段计算块100的计算操作。例如,在训练之后(即,当不再需要反向传播时),出于推理目的,矩阵乘法运算206可替换地表示为输入量化特征张量与三元权重张量之间的多个低资源计算操作的输出。具体地,可以应用多个低资源计算操作来生成整数特征张量该整数特征张量相当于矩阵乘法运算206对三元权重
张量和二元输入特征张量执行的乘法累加运算的输出。
[0082]
在这方面,图3示出了推理阶段计算块200的示例性实施例,该推理阶段计算块200可以与在训练阶段计算块100的训练期间学习的参数一起使用。推理阶段计算块200用下面描述的一组低资源计算操作256取代矩阵乘法运算206。此外,推理阶段计算块200用下面更详细地描述的简单布尔(boolean)比较运算258取代bn操作208、激活操作210和二值化操作212。
[0083]
在上述训练阶段计算块100中,将输入量化特征图张量和三元权重张量提供给矩阵乘法运算206,该矩阵乘法运算206应用乘法累加运算,以生成中间输出张量由如上所述的等式(3a)、(3b)用数学表示。
[0084]
在训练阶段计算块100的情况下,给定科图4示出了w
iter(a,b)
(其中,1≤a≤m,1≤b≤n)的标量乘积的按元素真值表400。为了使用推理阶段计算块200的低资源计算操作256,使用映射函数260将三元权重张量的学习值各自分解为相应的二进制值对。在这方面,图5示出了映射函数260的操作,其中,每个权重元素w
iter(a,b)
被分解成两个1位元素,表示为w
i-1
和w
i+1
。例如,w
iter
=-1可以映射为w
i-1
=1和w
i+1
=0;w
iter
=0可以映射为w
i-1
=0和w
i+1
=0;w
iter
=1可以映射为w
i-1
=0和w
i+1
=1。1位正权重元素w
i+1
可以共同表示为1位正权重张量1位负权重元素w
i-1
可以共同表示为1位负权重张量因此,等式(3a)、(3b)可以等同于1位正权重张量与输入量化特征张量之间的推理阶段操作,以及1位负权重张量与输入量化特征张量之间的推理阶段操作。
[0085]
因此,关于训练阶段计算块100学习的三元权重张量通过映射函数260操作分解为正权重张量和负权重张量它们被存储为用于推理阶段计算块200的经训练权重参数。低资源计算操作256在1位正权重张量与二元输入特征图张量之间执行一组按位逻辑和基本数学运算,并在1位负权重张量与二元输入特征图张量之间执行一组逻辑运算。
[0086]
将参考图6更详细地解释低资源计算操作256。低资源计算操作256包括两个与运算302(1)、301(2)(一般称为与运算302)、两个popcount运算304(1)、304(2)(一般称为popcount运算304)和减法运算306。具体地,使用1位正权重张量和1位负权重张量来表示三元权重张量在与之间执行的矩阵乘法(matmulbit)运算206可以由以下等式(7)中表示的多个低资源计算操作(与运算302、popcount运算304、减法运算306)替代。
[0087][0088]
其中:(i)每个and()对应于图6的与运算302(1)和302(2)中的相应一个;(ii)每个popcount()对应于相应的按位popcount运算304(1)、304(2),其中,popcount运算304(1)
对中1的数量进行计数,popcount运算304(2)对中1的数量进行计数,其中,是正权重张量,是负权重张量;(iii)是整数的输出张量(例如,m个整数元素的输出向量),由减法运算306产生。
[0089]
如等式(7)所示,生成的整数特征张量包括m个整数元素的集合,每个整数元素具有一个值,所述值相当于所述三元权重张量的n个三元元素的集合和所述二元输入特征张量的n个二元元素的集合的点积。对于每个整数元素使用第一权重张量和第二权重张量应用多个低资源计算操作256,所述第一权重张量和所述第二权重张量各自包括n个二元元素,即正权重张量的n个二元元素(例如,第a行)和负权重张量的n个二元元素(例如,第a行),并且共同表示三元权重张量的相应n个元素(例如,第a行)。应用多个低资源计算操作256包括,对于每个整数元素(i)在正权重张量的n个二元元素与二元输入特征张量的n个二元元素之间应用第一按位逻辑与运算(例如,与运算302());(ii)在负权重张量的n个二元元素与二元输入特征张量的n个二元元素之间应用第二按位逻辑与运算(例如,与运算302(2));(iii)基于包括在第一与运算的输出和第二与运算的输出中的预定值的位数(例如“1”的数量)生成整数元素具体地,如图6和等式(7)所示,整数特征张量的每个整数元素的计算包括:应用第一popcount运算304(1)以对包括在第一与运算302(1)的输出中的预定值的位数(例如“1”的数量)进行计数;应用第二popcount运算304(2)以对包括在第二与运算302(2)的输出中的预定值的位数进行计数。然后,通过在第一popcount运算304()的输出与第二popcount运算304(2)的输出之间应用减法运算306来生成整数元素以得到整数元素在示例性实施例中,减法运算306执行简单的整数减法。与浮点减法相比,整数减法可能使用更少的计算能力和内存。在一些示例中,通过使用加法运算来将popcount运算304()的输出与popcount运算304(2)的输出的更改符号版本相加来实现减法运算306。分别对正权重张量和负权重张量的所有m行执行低资源计算操作256,以得到整数特征张量
[0090]
为了说明目的,将在训练阶段计算块100和推理阶段计算块200的第a个神经元或计算单元的上下文中提供二元矩阵乘法运算206(例如,)和低资源计算操作256的操作比较示例。在所示的示例中,n=4,三元权重向量其中,三元权重向量对应于三元权重张量的第a行。因此,训练阶段计算块100的第a个神经元(例如,计算单元250(a))的整数特征元素是点积
[0091]
在低资源计算操作256的情况下,将分解为:
和和的结果为(0,0,0,0),的结果为(0,0,1,1)。的结果为0,的结果为2。因此,推理阶段计算块200的第a个神经元(例如,对应于单元250(a)的计算单元)的中间整数输出是
[0092]
因此,上面的示例说明了二元矩阵乘法运算206和低资源计算操作256将生成相同的输出,整数特征张量
[0093]
在推理阶段计算块200中,整数特征张量是m个整数的向量,然后通过比较运算308将其转换为二元输出特征向量在示例性实施例中,比较运算308可以例如使用cmp(x,y)指令来实现,该指令返回整数x是否小于整数y的布尔结果。例如,比较运算308可以用于将张量的整数值中的每一个转换为输出量化特征张量的相应二进制值元素如等式(8)所示:
[0094][0095]
如上所述,在推理阶段计算块200中,比较运算308取代训练阶段计算块100的bn操作208、激活操作210和二值化操作212。如现在将在以下段落中所解释,通过阈值计算函数310基于在训练阶段计算块100的训练期间学习的可训练缩放因子γi和可训练偏置βi参数值为推理阶段计算块200计算比较阈值的值。
[0096]
再次参考图1,在训练阶段,通过实现bn操作208、激活函数210和二值化操作212,计算训练阶段计算块100的输出张量如下所示:
[0097][0098]
激活函数σ210的输出是正的还是负的确定将基于batchnorm(zi)(例如,bn操作208)的输出是正的还是负的。因此,通过将上面讨论的batchnorm等式(4)合并到等式(9)中,等式(9)可以转换为以下等式(10):
[0099]
[0100]
其中,如上所述,缩放因子张量γi和偏置张量βi是bn操作208的学习参数。bn操作208的参数μb(x的迷你批平均值,其中,x是提供给bn操作208的中间向量的组或迷你批)和参数σb(x的迷你批方差)也从按位计算块100的训练中已知。如上所述,ε的值被预定义为一个小常数,以避免在正向传播期间除零错误。
[0101]
为了对的阈值进行求解,zi的值可以用以下等式(11)表示:
[0102][0103]
因此,等式定义了用于生成nn的第i个计算块的二元输出特征图张量的阈值张量(例如,thresholdi)。如等式(11)中所示,thresholdi的值可以基于在按位计算操作100的训练期间学习的bn操作208的参数μb、βi、σb、γi来计算。如上所述,ε的值被预定义为一个小常数,以避免在正向传播期间除零错误。
[0104]
对于bn操作208的缩放因子张量γi的元素大于零的所有情况,由等式(11)表示的训练阶段计算块100的输出张量可以通过以下等式(13)描述:
[0105][0106]
其中,缩放因子张量γi>0。
[0107]
在示例性实施例中,为了确保缩放因子张量γi大于零,在缩放因子向量γi中的经训练缩放因子元素小于零(例如,)的情况下,在用于计算用于推理计算模型200的参数之前,缩放因子元素和三元权重张量的对应行至均乘以-1。
[0108]
需要说明的是,在等式(8)中,向量的元素是整数。在这方面,参考图6,考虑第一缩放因子应用于负权重张量popcount运算304()的输出和第二缩放因子应用于负权重张量popcount运算304(2)的输出的情况,使得减法运算306的输出可以由等式(14)表示:
[0109][0110][0111]
在等式(7)和(8)中,是m个整数的张量,而等式(14)中,zi是m个实数的张量。但是,当和均等于1时,等式(14)的张量zi等于等式(7)的张量使得减法运算306的输出是等式(7)的整数值张量在低资源计算操作256的情况下,和被认为等于1,因为的中间输出始终是整数的向量。因此,在示例性实施例中,thresholdi的值(以下面描述的方式计算)可以四舍五入为整数,使得相对于使用实值阈值,将整数值用于阈值可以减少执行比较运算308所需的计算能力和内存。
[0112]
在一些实施例中,对形成训练阶段计算块100的m个计算单元中的每一个唯一地训
练参数μb、βi、γi中的一个或多个,使得通过阈值计算函数310为推理阶段计算块200计算的是分别应用于推理阶段计算块200的m个神经元或计算单元的单个整数阈值的m维向量
[0113]
训练和部署
[0114]
图7是用于训练包括训练阶段计算块100的nn和部署包括推理阶段计算块200的经训练nn的示例性方法700的流程图。
[0115]
如图7所示,方法700包括初始化用于训练阶段计算块100的网络参数(例如,初始权重张量wi、缩放因子张量γi和偏置张量βi)的预训练动作(动作702)。在示例性实施例中,初始化网络参数以通过控制初始权重张量wi、缩放因子张量γi和偏置张量βi的方差,将训练阶段计算块100的输出二元张量的方差和二元输入张量的方差保持在目标方差范围内。在nn包括具有bn操作208的计算块100的一些实施例中,bn操作208的缩放因子张量γ被初始化为以下等式(15):
[0116][0117]
其中,n是输入张量中的特征元素的数量(也等于包括在初始权重张量wi的一行中的权重元素的数量)。因此,基于在按位计算块100的每个相应神经元(例如,计算单元)处发生的按元素乘法的数量,对缩放因子张量的初始元素进行缩放。
[0118]
在使用relu激活函数来实现激活函数210的一些示例性实施例中,初始权重张量wi的所有权重元素都使用在1.5与+1.5之间均匀分布的随机值进行初始化,因此对应的三元权重张量w
iter
将具有相同数量的-1、0和+1值。
[0119]
三元权重张量w
iter
中的权重元素或/和缩放因子张量γi的缩放因子元素的初始化可以减少训练nn所需的时间,并且可以在训练后推理阶段期间提高经训练nn的性能。
[0120]
在已经初始化网络参数之后,训练阶段计算块100和形成其层的nn使用监督训练来训练,以学习非线性函数(动作704)。具体地,通过迭代训练过程学习网络参数集,所述网络参数包括权重张量wi中的权重元素w、缩放因子张量γi的可训练缩放因子元素和偏置张量βi的可训练偏置元素,该迭代训练过程包括:使用网络参数集为训练数据集的多个输入特征张量中的每一个推断输出张量;基于由nn执行的推断确定网络参数的成本;使用梯度下降和反向传播更新相应层的网络参数(包括按位计算块100的参数);重复推断、成本确定和参数更新,直到网络参数的成本达到优化阈值(例如,直到实现成本最小化的最佳网络参数集)。
[0121]
如上所述,特征张量和权重张量量化操作(例如二值化操作212和三值化操作204)分别通过等式(1)和等式(2)用数学表示。等式(1)和等式(2)不是可微函数。这可能对按位计算块100的训练期间的后向传播构成挑战。因此,在一些实施例中,可微函数(即梯度估计函数)用于在反向传播期间近似二值化操作212和三值化操作204的离散函数。在一些实施例中,用于表示特征张量和权重张量量化操作的离散函数的可微函数可以近似于由以下等式(16)表示的高斯函数δ
ε
(x):
[0122]
[0123]
其中,ε是控制可微高斯函数δ
ε
(x)形状的超参数。由等式(16)表示的可微高斯函数δ
ε
(x)被称为零中心高斯分布密度函数。
[0124]
图8示出了零中心高斯分布密度函数δ
ε
(x)(其中,c=1、0.5、0.25)的不同形状。如图8所示,三个不同形状的零中心高斯分布密度函数δ
ε
(x)中的每一个都关于y轴对称。
[0125]
等式(16)和图8示出了可微函数的一个示例,该可微函数可在反向传播期间用于表示二值化操作212和三值化操作204的离散函数。在其它示例中,可以使用不同的可微函数来表示特征张量和权重张量量化操作的离散函数。在反向传播期间使用可微函数可以减轻反向传播期间引入的梯度噪声。
[0126]
在训练阶段卷积块100的训练完成后,将学习的参数转换为用于推理阶段卷积块200的合适格式(动作706)。具体地,如上所述,关于训练阶段计算块100学习的三元权重张量通过映射函数260操作分解为正权重张量和负权重张量它们被存储为用于推理阶段计算块200的经训练权重参数。此外,基于在训练阶段计算操作100的训练期间学习的bn操作208的参数μb、βi、σb、γi,根据等式(11)计算阈值张量阈值张量被存储为推理阶段计算块200的经训练阈值参数。
[0127]
正权重张量负权重张量和阈值张量可以与用于实现包括推理阶段计算块200的nn的软件代码一起部署到用于推理操作的一个或多个硬件设备上(动作708)。
[0128]
如上所述,推理阶段计算块200不使用需要乘积累加函数来确定张量点积的矩阵乘法运算,而是依赖于低资源计算操作256,包括与运算、popcount运算和减法运算。此外,推理阶段计算块200依赖于简单的布尔比较运算258,以取代bn操作208、激活操作210和二值化操作212。
[0129]
推理阶段计算块200的低资源计算操作256在一些应用中可以使硬件设备能够以比先前方案更低的计算成本和更高的效率执行给定的推理任务。包含由推理阶段计算块200实现的一个或多个层的nn可以适合部署在计算受限的硬件设备(例如,具有有限处理能力、有限内存或有限电力供应中的一个或多个的硬件设备)上。使用包含基于低资源计算操作256(例如,与运算、popcount运算、减法运算、比较运算)的层的经训练nn可以使经训练nn能够以较低的计算成本在处理系统上运行,从而更适合由通用cpu或微控制器执行。其它好处可能包括降低硬件成本、提高设备电池寿命以及使经训练nn能够部署到更广泛的硬件设备上。
[0130]
尽管上面在实现全连接nn层的推理阶段计算块200的上下文中描述,但低资源计算操作256和比较运算258也可以应用于实现nn的非全连接层(例如卷积nn的卷积层)的推理阶段计算块中。如上所述,在全连接层的情况下,计算块的每个单独计算单元接收相同的输入特征元素集,但应用相应的权重元素集。在卷积层的情况下,计算块的每个单独计算单元接收不同的、可能重叠的输入特征元素集(由滤波器对输入特征量进行卷积产生),但应用相同的权重元素集(例如,滤波器)。在卷积计算块的卷积计算单元的情况下,点积是根据权重和特征元素的相似大小的矩阵(例如,集合)而不是如上关于全连接层所述的向量确定的;尽管如此,上述相同的低资源计算操作也可以应用于提供对应于两个矩阵的点积的整数特征元素输出。
[0131]
在示例性实施例中,包括使用上述低资源计算操作256和比较运算258的推理阶段块的nn可以用于许多不同的推理任务,包括例如,提取用于面部或对象识别应用的视频图像的特征。
[0132]
在一些实施例中,具有输入层、输出层以及输入层与输出层之间的一个或多个隐藏层的深度nn可以在训练阶段期间包括一个或多个训练阶段计算块100。当nn被部署用于推理目的时,一个或多个训练阶段计算块100被相应的推理阶段计算块200取代。使用训练阶段计算块100学习的训练参数被转换为适合于推理阶段计算块200的低资源计算操作256的格式。nn可以由使用张量处理单元或神经处理单元等处理单元执行的机器可读指令进行软件实现。或者,nn可以使用包括由专用硬件设备执行的机器可读指令的软件来实现,例如包括少量逻辑门的紧凑、节能的ai芯片(例如,专门设计用于更快地执行nn操作任务的微处理器,使用比传统微处理器更少的功率)。在示例性实施例中,使用比最终部署用于推理操作的经训练nn的处理系统更强大的处理单元来训练nn。
[0133]
图9是包括处理单元900的示例性推理阶段硬件设备的框图,处理单元900可用于训练目的,以执行包括一个或多个训练阶段计算块100的nn的机器可执行指令,或在训练后推理期间执行包括一个或多个推理阶段计算块200的经训练nn的机器可执行指令。可以使用适合于实现本发明中描述的实施例的其它处理单元配置,这些处理单元配置可以包括与下面讨论的那些组件不同的组件。尽管图9示出了每个组件的单个实例,但在处理单元900中可以存在每个组件的多个实例。
[0134]
处理单元900可以包括一个或多个处理设备902,例如处理器、微处理器、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、专用逻辑电路或其组合。在示例性实施例中,用于训练目的的处理单元900可以包括连接到处理设备902的加速器906。处理单元900还可以包括一个或多个输入/输出(input/output,i/o)接口904,这些接口可以支持与一个或多个合适的输入设备914和/或输出设备916连接。处理单元900可以包括一个或多个网络接口906,用于与网络(例如内网、互连网、p2p网络、wan和/或lan)或其它节点进行有线或无线通信。网络接口906可以包括用于进行内网通信和/或网外通信的有线链路(例如以太网线)和/或无线链路(例如一个或多个天线)。
[0135]
处理单元900还可以包括一个或多个存储单元908,所述一个或多个存储单元908可以包括大容量存储单元,例如固态驱动器、硬盘驱动器、磁盘驱动器和/或光盘驱动器。处理单元900可以包括一个或多个存储器910,所述一个或多个存储器910可以包括易失性或非易失性存储器(例如,闪存、随机存取存储器(random access memory,ram)和/或只读存储器(read-only memory,rom))。一个或多个非瞬时性存储器910可以存储由一个或多个处理设备902执行的指令,例如,以执行本发明中描述的示例。一个或多个存储器910可以包括其它软件指令,例如用于实现操作系统和其它应用/功能的软件指令。在一些示例中,存储器910可以包括用于由处理设备902执行的软件指令,以实现和训练包括本发明的按位计算块100的神经网络。在一些示例中,存储器910可以包括用于由处理设备902执行的软件指令和数据(例如,权重和阈值参数),以实现包括本发明的推理阶段计算块200的经训练神经网络。
[0136]
在一些示例中,一个或多个数据集和/或模块可以由外部存储器(例如,与处理单
元900进行有线通信或无线通信的外部驱动器)提供,也可以由瞬时性或非瞬时性计算机可读介质提供。非瞬时性计算机可读介质的示例包括ram、rom、可擦除可编程rom(erasable programmable rom,eprom)、电可擦除可编程rom(electrically erasable programmable rom,eeprom)、闪存、cd-rom或其它便携式存储器。
[0137]
可以存在总线912,在处理单元900的组件之间提供通信,所述组件包括一个或多个处理设备902、一个或多个i/o接口904、一个或多个网络接口906、一个或多个存储单元908和/或一个或多个存储器910。总线912可以是任何合适的总线架构,例如包括存储器总线、外围总线或视频总线。
[0138]
尽管本发明通过按照一定的顺序执行的步骤描述方法和过程,但是可以适当地省略或改变方法和过程中的一个或多个步骤。在适当情况下,一个或多个步骤可以按所描述的顺序以外的顺序执行。
[0139]
尽管本发明在方法方面至少部分地进行了描述,但本领域普通技术人员将理解,本发明也针对用于执行所述方法的至少一些方面和特征的各种组件,无论是通过硬件组件、软件还是其任意组合。相应地,本发明的技术方案可以通过软件产品的形式体现。合适的软件产品可以存储在预先记录的存储设备或其它类似的非易失性或非瞬时性计算机可读介质中,包括dvd、cd-rom、usb闪存盘、可移动硬盘或其它存储介质等。软件产品包括有形地存储在其上的指令,所述指令使得处理设备(例如,个人计算机、服务器或网络设备)能够执行本文中公开的方法的示例。
[0140]
本发明可以其它特定形式体现,而不脱离权利要求的主题。所描述的示例性实施例在各方面都仅仅是示意性的,而不是限制性的。可以将上述一个或多个实施例中的选定特征组合以创建未明确描述的替代性实施例,理解适合此类组合的特征在本发明的范围内。
[0141]
还公开了公开范围内的所有值和子范围。此外,尽管本文所公开和显示的系统、设备和流程可包括特定数量的元素/组件,但可以修改所述系统、设备和组合件,以包括此类元素/组件中的更多或更少的元素/组件。例如,尽管所公开的任何元件/组件可以引用为单个数量,但是可以修改本文所公开的实施例以包括多个此类元件/组件。本文所描述的主题旨在覆盖和涵盖所有适当的技术变更。
[0142]
在本发明中识别的所有发表论文的内容通过引用的方式并入本文。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1