CN111492369A - 人工神经网络中移位权重的残差量化 - Google Patents
人工神经网络中移位权重的残差量化 Download PDFInfo
- Publication number
- CN111492369A CN111492369A CN201980002361.0A CN201980002361A CN111492369A CN 111492369 A CN111492369 A CN 111492369A CN 201980002361 A CN201980002361 A CN 201980002361A CN 111492369 A CN111492369 A CN 111492369A
- Authority
- CN
- China
- Prior art keywords
- shift
- weights
- neural network
- shifter
- weight
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims description 100
- 238000013139 quantization Methods 0.000 title claims description 37
- 230000006870 function Effects 0.000 description 18
- 238000000034 method Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001815 facial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, e.g. identification
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Multimedia (AREA)
- Neurology (AREA)
- Human Computer Interaction (AREA)
- Image Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
神经网络加速器从存储器中读取编码权重。权重中除前三个外的所有非零比特都将被丢弃。权重中的前三个最高非零比特被编码为三个移位值,以形成所述编码权重。将这三个移位值施加于移位器,对节点输入进行移位,以获得三个移位输入,这些移位输入被累加以生成节点输出。由于对16‑比特权重仅执行3个移位,而不是进行多达15个移位,因此降低了节点复杂度。节点的移位器和累加器可以通过查找表(LUT)来实施,而无需现场可编程门阵列(FPGA)中的乘法累加(MAC)单元。使用直方图分析器可以确定量化权重之间每个区间的加权平均值,可以减少量化偏差。对于权重平均值以上的区间中的权重,将增加第三移位值。
Description
技术领域
本发明涉及神经网络,特别涉及移位(bit-shift)神经网络的优化。
背景技术
对于使用传统计算机程序难以处理的大量复杂数据,人工神经网络特别有用。不是使用指令编程,而是将训练数据输入到神经网络,并与预期输出进行比较,然后在神经网络内进行调整,再次处理训练数据,和输出比较,再进一步调整神经网络。在多次这样的训练周期之后,神经网络被改变成可以有效地处理类似训练数据和预期输出的数据。神经网络是机器学习的一个例子,因为神经网络学习如何生成训练数据的预期输出。然后可以将类似训练数据的实际数据输入到神经网络,以处理实时数据。
图1显示一个现有技术的神经网络。输入节点102、104、106、108接收输入数据I1、I2、I3、...I4,而输出节点103、105、107、109输出神经网络运算的结果:输出数据O1、O2、O3、...O4。在这个神经网络中有三层运算。节点110、112、114、116、118中的每一个节点都从一个或多个输入节点102、104、106、108中获取输入,执行一些运算,诸如加、减、乘或更复杂运算,然后发送和输出到第二层的节点。第二层节点120、122、124、126、128、129也接收多个输入,合并这些输入以生成一个输出,并将输出发送到第三层节点132、134、136、138、139,类似地合并输入并生成输出。
每层的输入通常会被加权,因此在每个节点处生成加权和(或其他加权运算结果)。这些权重可以表示为W31、W32、W32、W33、...W41等,在训练期间权重值可以调整。通过不断地试错或其他例行训练,最终可以将较高的权重分配给生成预期输出的路径,而将较小权重分配给不生成预期输出的路径。机器将学习哪些路径会生成预期输出,并为这些路径上的输入分配高权重。
这些权重可以存储在权重存储器100中。由于许多神经网络都具有多个节点,所以在权重存储器100中存储有多个权重。每个权重需要多个二进制比特来表示该权重的可能值的范围。权重通常需要8到16比特。权重存储器100的大小通常与神经网络的总体大小和复杂性成比例。
深度神经网络具有多层节点,常用于诸如对象分类、语音识别、情感分析、图像识别、面部检测和其他图形处理的应用。图2显示用于面部识别的神经网络。图像输入10可以从一个较大的图像中提取,例如通过软件分离出人脸。特征提取器15执行低级特征提取、池化(pooling)和下采样。例如,可以识别并提取诸如眼睛和嘴巴的面部特征作为提取的特征12。对这些提取的特征12进行合成和下采样以生成输出14。
中级特征连接器17检查下采样的提取特征,生成连接16和中级特征18,然后可以使用中级特征18来生成高级特征19。分类器20对特征进行分类和完全连接,使得可以输出面部特征。这样的面部检测可以通过使用有多个节点的10层神经网络来实现。该神经网络会使用超过1亿个权重。
图3显示一个实施图像识别处理器的神经网络。输入图像10可能包含多个特征,诸如几个人、背景和前景对象、以及几个帧。神经网络的各层执行64-比特卷积22、256-比特卷积26、和512-比特卷积28。最大响应节点是由最大池化层(maxpooling layers)24生成,而最终softmax层30执行归一化指数函数以限制输出范围。全连接FC层32通过允许每个节点查看前一层的所有输入来执行高层次推理。
这种图像处理可能需要16个隐藏层的神经网络,有超过2亿个权重。因此,权重存储器100(图1)的所需尺寸相当大。希望在不显著牺牲精度的情况下能减小权重的尺寸。
图4显示训练一个神经网络。神经网络36接收训练数据34和当前的一个权重集合,对训练数据34运行以生成一个结果。损失函数42对神经网络36生成的结果和目标数据38进行比较,生成一个损失值,该损失值表示生成的结果离目标有多远。损失函数42生成的损失值用于调整应用于神经网络36的权重。权重的多次迭代可以被损失函数42应用于训练数据34,直到找出最小损失值为止,并使用最终的权重集合。
图5显示一个神经网络加速器。虽然可以使用通用中央处理器(CPU)或图形处理单元(GPU)来实施神经网络,但也开始出现了专用神经网络加速器。一些神经网络加速器使用现场可编程门阵列(FPGA)。这样的FPGA可以作为付费服务提供给各种用户,例如FPGA计算服务(FPGA-as-a-Service,FaaS)。
FPGA 160是一个或多个FPGA器件,可以对其进行编程以用作一个神经网络加速器。FPGA 160有多个查找表(LUT)156,可以加载数值并实施各种简单的逻辑功能。FPGA 160还包含多个数字信号处理器(DSP)块150,每个块都有乘法器152和累加器154。DSP块150可用于实施更复杂的逻辑功能,例如多位加法和其他数学功能。
当被编程用作神经网络加速器时,DSP块150倾向于被完全分配,而LUT 156未被充分利用。例如,当实施神经网络时,LUT 156仅被使用40%,LUT 156的60%处于空闲状态。特别是,神经网络中的节点将节点输入乘以权重,然后将结果求和以生成节点输出。相比LUT156,这些乘法累加(Multiply-Accumulate,MAC)运算更适合于DSP块150。优化和转换程序可能能够转换一些MAC运算以在LUT 156上实施,但是硬件使用成本很高,因为需要多个LUT156转换一个运算,而该运算在一个DSP块150上就可以运行。
期望能更有效地转换LUT 156用于MAC运算。期望在FPGA中更有效地使用LUT 156资源。期望在FPGA中使用空闲的LUT资源来实施小规模的MAC运算。期望限制移位的数量并增加运算以提高计算效率,从而可以将LUT资源而不是DSP资源用于神经网络中的某些运算。期望在限制移位和增加运算的同时保持原始神经网络模型的精度,以允许这些有限的运算是由LUT来实施,而不需要DSP块。
附图说明
图1是一个现有技术的神经网络。
图2是一个用于面部识别的神经网络。
图3是一个实施图像识别处理器的神经网络。
图4显示训练一个神经网络。
图5显示一个神经网络加速器。
图6是具有权重的一个移位神经网络的示意图,所述权重使用残差量化(residualquantization)被编码为移位。
图7显示将权重编码为移位值。
图8突出显示第三移位值的量化方向。
图9A-9B显示直方图分析。
图10是使用主机加载编码权重以供FPGA加速器使用的移位神经网络系统。
图11是直方图分析器的运行流程图。
图12是计算量化阈值的流程图。
图13是残差量化流程图。
具体实施方式
本发明涉及神经网络的改进。呈现以下描述以使本领域普通技术人员能够制造和使用如在特定应用及其要求的上下文中提供的本发明。对优选实施例的各种修改对于本领域技术人员将是显而易见的,并且本文定义的一般原理可以应用于其他实施例。因此,本发明并不限于所显示和描述的特定实施例,而是要求符合与本文披露的原理和新颖特征一致的最宽范围。
发明人已经发现,神经网络中的每个节点将权重乘以输入,并且对该节点的所有输入,将这些结果都相加以生成节点输出。权重的乘积可以实施为一系列累加的移位。对于一个16-比特权重,最多可以有16个移位。
发明人不是执行全部16个移位,而是执行了不超过3个这样的移位。权重中不超过3个最高非零位(most-significant 1)被作为移位编码,而其他非零位(less-significant1)被作为近似值丢弃。
由于将最坏情况的16个移位减少到3个移位,因此大大降低了计算复杂度。通过向上或向下取整(rounding)第三个移位,可以提高精度。取整方向偏差可以通过直方图分析获得。
图6是具有权重的比特移位神经网络的示意图,所述权重使用残差量化(residualquantization)被编码为移位。存储器162存储12-比特编码权重,其由残差量化器50和移位编码器62从16-比特权重编码而成。由于12-比特编码权重而非全部16-比特权重被存储在存储器162中,因此存储器大小减少了25%。
移位解码器64从存储器162读取编码权重,并将其解码为三比特移位值。这些解码的移位值被相继施加到移位器72以对输入数据进行移位。在移位计算器70中,三个移位的输入权重由加法器74相加并累加到寄存器76。一旦三个移位输入值累加到寄存器76中,该结果就被累加器78添加到这个节点的其他输入和权重的结果中。一旦该节点的所有输入的结果都被累加,就从累加器78读取该节点的最终输出。
16-比特权重首先由权重量化器52量化以获得第一移位值。然后,残差生成器54生成的残差由权重量化器52进行量化以获得第二移位值。最后,残差生成器54生成的第二残差由权重量化器52量化以获得第三移位值。直方图分析器56调整取整(rounding)阈值,残差量化器50使用该取整阈值向上或向下取整第三移位值。然后,这三个移位值由移位编码器62进行编码,编码后的权重存储在存储器162中。
图7显示将权重编码为移位值。一个16-比特权重在比特位置15上有一个符号比特,在其他15个比特位置14:0上有二进制数据比特。如果所有这15个比特位置上均为1,则该权重需要在神经网络节点的输入数据上进行15次移位运算,以将输入数据乘以权重。
对于该示例权重值0010100101010001,对输入数据有13-比特移位,11-比特移位,8-比特移位,6-比特移位,4-比特移位和0-比特移位。然后将这6个移位的结果相加在一起得出乘法结果。但是,较小的移位对总体结果的影响较小,因为这些是权重的最低非零有效位(Least-Significant-Bit,LSB)。权重的最高非零有效位(Most-Significant-Bit,MSB)对最终结果的影响要大得多。因此,发明人仅对前三个MSB移位进行编码,丢弃其余的LSB移位。
在此例子中,比特13、11和8是权重的MSB。量化的权重不超过三个1,在比特位置13、11和8上。因此,量化的权重为0010100100000000。
这三个最高非零比特的比特位置被编码为移位值SHIFT_1、SHIFT_2和SHIFT_3。第一移位值SHIFT_1为13,编码为1101。第二移位值SHIFT_2为11,编码为1011。第三个也是最后一个移位SHIFT_3为8。因为符号比特占据在编码权重的最高位置上,仅剩余3个比特,以编码第三移位。为了在编码权重中容纳有限的剩余比特,将第三移位编码为一个相对于第二移位的相对移位值(RELATIVE SHIFT)。在此示例中,相对移位值是SHIFT_2–SHIFT_3,(11-8)或3。第三个移位被编码为011。
编码权重是一个12-比特值,第一和第二移位是两个4-比特字段,第三移位是一个3-比特字段,加上一个符号比特。第一和第二移位被编码为绝对移位值,而第三移位被编码为一个相对移位值。原始的16-比特权重被压缩成12-比特编码权重,所需的存储空间减少了25%。
比特2:0的零值可用于指示不需要第三移位。当原始权重为零时,则可以将比特10:7设置为1111,这是无效的移位量。或者,可以将编码权重中的所有比特设置为0。由于只有3比特用于对第三移位值进行编码,因此第三移位被限制在第二移位的7比特位置之内。当原始权重的第三移位距离第二移位值大于7比特位置时,则丢弃第三移位。
图8突出显示第三移位值的量化方向。第三移位值可以被量化为较低的量化权重(向下取整)或可以量化为较高的量化权重(向上取整)。将第三移位值增加一个比特位置以获得较高的量化权重。
直方图分析器56对一个通道(该通道在较高和较低量化权重之间的区间中)中的权重数进行计数,并分配一个阈值计数,一个简单的例子,该阈值可以是该通道/区间中的权重数的一半。此区间的最小权重被分配给较低的量化权重,而此区间的较大权重被分配给较高的量化权重,阈值计数是分配给较低量化权重的权重数。
图9A-9B显示直方图分析。图9A是区间中的权重值的直方图。该区间有较低量化值110100,和较高量化值111000。此区间内的其他权重值有多于三个的非零比特,必须向上或向下取整为不超过三个非零比特用于移位编码。
在此区间内,有9个权重的值110101、5个权重的值110110和4个权重的值110110,总共18个权重。直方图分析器56在此区间内对这些权重进行计数并生成一个阈值计数。该阈值可以恰好是一半(9),但是在此示例中,该阈值设置为10,因为存在9个权重,其值为110101,但是只有4个权重的值为110111,因此该区间并不是均匀地填充权重,而是偏向较低量化值。
在图9B中,该区间中的到阈值计数的较低值权重,被分配给较低量化权重。将值110101的9个权重向下取整到110100,将值110110的5个权重之一也向下取整到110100,总共有10个权重被向下取整。
值110110的其余4个权重与值110111的4个权重,向上取整到111000。因此8个权重被向上取整到较高量化值111000,而10个权重被向下取整到较低量化值1110100。
图10是使用主机加载编码权重以供FPGA加速器使用的移位神经网络系统。FPGA168是一个或多个FPGA芯片,它们进行神经网络节点运算,将编码权重乘以输入以获得每个节点的输出。通过外围组件快速互连(Peripheral Component Interconnect express,PCIe)接口66从存储器162中读取编码权重,12比特编码权重由移位解码器64解码为三个移位值。移位计算器70在多个节点中被实施为FPGA 168中的一个或多个LUT,从而减少了FPGA168中DSP块的使用。
来自移位解码器64的解码的第一移位值被施加到移位器72,以对节点的输入数据移位第一移位值的比特,移位结果通过加法器74存储到寄存器76中。来自移位解码器64的解码的第二移位值同样被施加到移位器72,以对节点的输入数据移位第二移位值的比特,第二移位结果通过加法器74与存储在寄存器76中的第一移位结果相加,因此累加到寄存器76中。最后,将来自移位解码器64的解码的第三移位值同样地施加到移位器72,以对节点的输入数据移位第三移位值的比特,第三移位结果通过加法器74与累加到寄存器76中的第一和第二移位结果相加,因此累加到寄存器76中。
当解码的第三移位值是相对移位而不是绝对移位时,可以将第二移位结果输入到移位器72,或者可以在第二移位操作之后保留在移位器72中,然后移位器72对第二移位结果移位相对第三移位值,而不是对节点输入移位。
对该节点的其他输入(未示出)进行输入的编码权重移位,并且累加到节点累加器78中,然后生成16-比特值的节点输出,输出到神经网络的下游节点。
可以对主机个人计算机(PC)164进行编程,以实施残差量化器50和直方图分析器56。权重由权重量化器52进行量化,最高非零比特的位置被移位编码器62编码为一个移位值。然后,残差生成器54除去最高非零比特,然后由权重量化器52处理残差,为残差中下一个最高非零比特的比特位置生成第二移位值,第二移位值由移位编码器62编码。最后,两个最高非零比特被残差生成器54去除,权重量化器52找到下一个最高非零比特的位置以生成第三移位值。需要时,对于向上偏置,将第三移位值增加一,然后由移位编码器62编码为一个相对移位值。来自移位编码器62的三个移位值通过PCIe接口66存储到存储器162中。
在训练期间,调整权重,直到误差或损失函数达到一个可接受的水平(图4)。然后权重被冻结,可以直接从存储器162中读取,并由移位解码器64解码以用于FPGA 168。因此,在完成神经网络训练之后,不再需要主机PC 164,神经网络可以更快速运行,因为仅有FPGA168运行,而主机PC 164不运行。
图11是直方图分析器的运行流程图。直方图分析器56对一组权重进行运行(图6、10)。该组权重可以是神经网络(图1-3)的某个层或通道中的所有权重,甚至可以是神经网络中的所有权重,或者是神经网络中某个层或子通道的一部分中、或某些其他组节点的所有权重。
在步骤502,提取通道的所有权重,例如通过从神经网络权重的存储器中读取。在步骤504,对每个权重值的权重数量进行计数,以生成直方图(图9A)或表示直方图数据或各种等同形式的数据集。
在步骤506,处理每个潜在区间。这些是第三移位值的区间,而不是第一和第二移位值。由于第三移位值有不超过3个最高非零比特,所以这些区间的边界有不超过3个非零比特。
区间边界是较大量化值和较小量化值(图9A)。区间内的权重值在LSB位置上有额外的非零比特。LSB位置中的这些额外的非零比特在区间边界处全为零。区间边界上的权重不包含在阈值计数的计算中(步骤504)和分配中(步骤514)。
对于每个潜在区间(步骤506),计算阈值计数(步骤504)。阈值计数是具有最小偏差的量化阈值。这可以生成为该区间内权重的加权平均值。阈值计数是分配给较低方向的权重数。分配给较低方向的权重被向下取整为较低量化值(图9B)。在步骤514,将最小的权重分配(向下取整)给向下方向,即较低量化值,而将其余的较大权重分配(向上取整)给向上方向,即较高量化值。
不同于在直方图处理期间将权重向上或向下取整,可以设置一个方向比特以指示应将权重向上或向下取整。然后对于分配给向上方向的权重,向上调整第三移位值(向上取整)(图13,步骤540)。
图12是计算量化阈值的流程图。当执行图11的步骤504时,调用图12的过程。图12的过程返回阈值计数值。
量化阈值可以是区间中的权重的加权平均值。在步骤508,对该区间中的权重数进行计数并乘以较大量化值。然后在步骤510,减去该区间中所有权重的总和。在步骤512,将差值除以区间的宽度,然后取整为最接近的整数以获得阈值计数。
区间的宽度是较大量化值减去较小量化值的区间的宽度。
图13是残差量化的流程图。残差量化器50(图6、10)可以执行图13的过程。在步骤532,找到16-比特权重中的最高非零位。在搜索最高非零比特以及在找到剩余权重中的其他最高非零比特时,忽略符号比特。该最高非零比特或MSB非零比特的比特位置是比特位置N1。
在步骤534,找到权重的下一个(第二个)最高非零比特。该第二个最高非零比特位置是N2。然后在步骤536,找到第三个最高非零比特位置N。
某些权重仅将1或2比特设置为1。某些权重全为零。如果不再有最高非零比特,则将比特位置设置为零,可以跳过进一步的搜索。
在步骤538,当由直方图分析器56(图11)确定的方向是向上方向时,则在步骤540,将第三个最高非零比特位置N增加1至N+1,以生成绝对第三移位值N3。否则,当在步骤538中将向下方向分配给该权重时,则将第三个最高非零比特位置N不变地用作绝对第三移位值N3。
在步骤544,生成编码权重。编码权重有第一移位值N1、第二移位值N2以及相对第三移位值N2-N3。N1、N2和N2-N3可以被编码为二进制值,如图7所示。
当编码权重被限制为12-比特值并且有一个符号比特时,仅有3个二进制比特可用于相对第三移位值。三个二进制位只能编码0到7的值。当N2-N3大于7时,根据量化方向,相对第三个移位值将设置为7或0。
其他实施方式
发明人补充了几个其它实施例。例如,对于编码权重的三个移位值,可以按三个步骤顺序使用移位器72,中间移位结果被累加到寄存器76中。或者,可以并行使用三个移位器72,所有都馈送到加法器74中,不需要寄存器76来累加中间结果。对于神经网络节点的每个输入,可以使用一个移位计算器70,结果被并行发送到节点累加器78,或者对于神经网络节点的每个输入,可以重复使用一个移位计算器70,结果随时间顺序发送到节点累加器78。类似地,其他块可以以更少的硬件和更多的延迟顺序地实施,或者以更多的硬件和更少的延迟并行地实施。
量化阈值可以是区间中权重的加权平均值,或者可以是另一种平均值。可以使用其他搜索算法(例如通用搜索)来获得量化阈值,以最小化总偏差或考虑权重分布,或设置最小化量化误差而不是最小化偏差的目标。可以使用其他计算生成平均值和阈值计数。使用加权平均值而不是算术或几何平均值可以帮助减少量化偏差,尤其是当权重具有不均匀分布时。
对于16比特输入和权重,通过对权重进行编码,需要不超过三个移位操作,而不是进行16个移位操作,可以将神经网络的硬件成本降低大约三分之一。可以释放FPGA中的单元,用于添加并行单元以提高关键路径的速度。可以提高带宽。可以减少误差和损失,并使训练过程中的收敛更快。与使用完整权重相比,对权重中的前三个最高非零比特进行编码,精度降低可以小于1%,甚至小于0.1%。
可以替换权重的不同宽度和格式、节点输入和节点输出。虽然已经描述了对权重中多达三个最高非零比特进行编码,但是编码权重可以仅对2个最高非零比特或4个或更多个最高非零比特进行编码,特别是对于32-比特权重。
当权重全为零时,N1为零,可以被编码为全零或全一。移位解码器64可以被设计为检测第一移位值的全零或全一字段,并指示移位计算器70输出零或移位零比特。或者,当权重全为零时,可以零移位进行正常处理。
移位编码器62和移位解码器64可以共享相同的计算硬件,或者每个都可以有专用硬件。同样,对于其他组件,各种组合的变换或预处理功能也可以被替换。虽然已经描述了将FPGA硬件用于移位计算器70,但是可以替换为其他硬件架构和设备,例如专用集成电路(ASIC)或半定制芯片。
一些实施例可以不使用所有组件。可以添加额外的组件。损失函数42可以使用各种误差/损失和成本生成器,诸如防止权重在多个周期的训练优化后变得太大的权重衰减项、鼓励节点将其权重归零的稀疏惩罚,使得仅有一小部分总节点被有效地使用。剩余的小部分节点是最相关的。虽然在运行理论中已经描述了含有各种损失和成本函数的公式,但是可能有多种替换、组合和变化。可以向损失函数42添加其它类型和种类的损失或成本项。可以调整不同成本函数的相对定标因子的数值平衡各种不同函数的影响。
浮点值可以转换为定点值或二进制值。虽然已经显示了二进制值权重,但是可以使用各种编码,诸如二进制补码、霍夫曼编码、截断二进制编码等。表示权重值所需的二进制比特数目可以是指不分编码方法的比特数,无论是二进制编码、灰色码编码、定点、偏移等。
权重可以被限制在一个范围值内,例如从-1到1的范围。范围不一定必须包括0,如512到1的范围。权重的值可以被偏移以适合一个二进制范围,如范围10511到10000的权重,其可以被存储为一个9比特二进制字,将偏移量10000添加到二进制字以生成实际权重值。也可以在优化期间调整范围。偏移可以被存储,或可以被硬连线到神经网络的逻辑。
权重、输入、编码权重、或其他值可以被反转、补充或以其他方式变换。例如,可以以低有效位而不是高有效位对移位值进行编码。某些节点可以使用编码权重,并被限制为3个移位,而其他节点可以使用原始权重而不进行编码。可以在训练期间优化神经网络,以允许一些关键节点使用全权重,而其他不太关键的节点则使用编码权重。
运行神经网络的训练程序可能有多种变化。优化可以首先确定多个隐藏或中间层的节点,然后对权重进行优化。通过归零一些权重以切断节点之间的链接,权重可以确定节点的布局或连接性。当结构被优化时,稀疏成本可以用于初始优化循环,但当权重值被微调时,稀疏成本不用于随后的优化循环。Sigmoid函数可以用于训练深度神经网络的隐藏层。查找表可以用于一些节点,但更复杂的函数可以使用算术逻辑单元(ALU)用于加速处理。每个节点的激活函数可以不同,例如Sigmoid、tanh和relu。
对于不同的应用和训练集,将有不同数量的成本降低。各种各样的结构,不同数量和布置的隐藏层,可以用于神经网络。特定应用和过程可以使用某种类型的神经网络或布置用于神经网络,或者可以使用通用神经网络作为起始点。一个深度神经网络可能有至少7个中间层,并且有至少1万个权重。
自动编码器、automax和softmax分类器以及其它种类的层可以被插入到神经网络中。整个优化过程可以重复若干次,例如对于不同的初始条件,诸如对于不同数量的比特来量化浮点值或其它参数、不同精度、不同定标因子等等。可以针对各种条件组合来设置终点,例如期望的最终精度、精度硬件成本乘积、目标硬件成本等。
虽然神经网络的实际成本取决于多种因素,例如节点数目、权重、互连、控制和接口,但是发明人将成本近似为与权重总和成比例。用于表示神经网络中的所有权重的二进制比特总数是硬件成本的一个度量,即使只是一个近似度量。可以使用硬件复杂度成本梯度或斜度。梯度值可以在比较之前或之后被缩放和改变。
可以使用软件、硬件、固件、程序、模块、功能等的各种组合,以各种技术来实施神经网络、损失函数42、移位计算器70、残差量化器50、直方图分析器56、和其它组件。最终产品,即具有最终权重的神经网络,可以在专用集成电路(ASIC)或其它硬件中实施以提高处理速度和降低功耗。
本发明的背景部分可以包含有关本发明问题或环境的背景信息,而不是由其他人描述现有技术。因此,在背景部分中包括的材料不是申请人承认的现有技术。
在此描述的任何方法或过程是机器实施的或计算机实施的,并且旨在由机器、计算机或其它设备执行,并不旨在没有这种机器辅助的情况下由人执行。生成的有形结果可以包括在诸如计算机监视器、投影设备、音频生成设备和相关媒体设备的显示设备上显示的报告或其它机器生成的显示,并且可以包括也是机器生成的硬拷贝打印输出。其它机器的计算机控制是另一个有形结果。
所描述的任何优点和益处可能不适用于本发明的所有实施例。当在权利要求要素中陈述单词“装置”时,申请人意图使权利要求要素符合35USC第112章第6段。通常,在单词“装置”之前的一个或多个单词是旨在便于引用权利要求要素,并不旨在传达结构限制。这种装置加功能的权利要求旨在不仅覆盖这里描述的用于执行功能及其结构等同物的结构,而且覆盖等效结构。例如,虽然钉子和螺钉具有不同的构造,但是它们是等同的结构,因为它们都执行紧固的功能。不使用“装置”一词的权利要求不意图符合35USC第112章第6段。信号通常是电子信号,但可以是光信号,例如可以通过光纤线路传送的信号。
为了说明和描述的目的,已经呈现了本发明实施例的前述描述。其并非穷举或将本发明限制为所公开的精确形式。根据上述教导,可能会有多种修改和变化。本发明的范围不受该详细描述的限制,而是由所附的权利要求限制。
Claims (20)
1.一种神经网络,包括:
残差量化器,其接收一个权重并将所述权重中的最高非零比特的比特位置编码为第一移位值,并将所述权重中的第二个最高非零比特的比特位置编码为第二移位值;
移位编码器,其从所述第一移位值和所述第二移位值形成一个编码权重,所述移位编码器在形成所述编码权重时丢弃所述权重中的最低有效位(LSB);
存储器,用于存储所述编码权重,所述存储器存储所述神经网络中多个节点的多个编码权重;
移位器,其接收所述神经网络中的节点的输入,并根据一个移位值而生成一个移位输入;
累加器,用于累加来自所述移位器的所述移位输入,以生成一个累加结果;
移位解码器,其从所述存储器读取所述编码权重,并将从所述编码权重中提取的所述第一移位值施加于所述移位器,以将第一移位输入累加到所述累加器中,并将从所述编码权重中提取的所述第二移位值施加到所述移位器,以将第二移位输入累加到所述累加器中;
由此,将权重编码为所述权重中的最高非零比特的移位值。
2.根据权利要求1所述的神经网络,还包括:
节点累加器,其连接以从所述累加器接收所述神经网络中所述节点的所有输入的累加结果,以生成所述节点的节点输出。
3.根据权利要求1所述的神经网络,其中所述残差量化器还将所述权重中的第三个最高非零比特的比特位置编码为第三移位值;其中所述移位解码器还将从所述编码权重中提取的所述第三移位值施加于所述移位器,以将第三移位输入累加到所述累加器中。
4.根据权利要求3所述的神经网络,其中所述移位编码器在形成所述编码权重时,丢弃所述权重中重要性小于所述第三个最高非零比特的最低有效位(LSB);其中所述权重中不超过3个最高非零比特被编码为所述编码权重。
5.根据权利要求3所述的神经网络,还包括:
其中在所述编码权重中的所述第三移位值被编码为一个相对于所述第二移位值的相对移位;
其中在所述编码权重中所述第一移位值和所述第二移位值被编码为绝对移位值。
6.根据权利要求5所述的神经网络,还包括:
其中所述第三移位值有一个限制范围的相对移位;
其中当所述相对移位大于所述限制范围时,所述移位编码器将所述第三移位值编码为所述限制范围的所述相对移位;
由此,所述第三移位值的范围受到限制。
7.根据权利要求5所述的神经网络,其中所述权重是一个16-比特值;
其中所述编码权重是一个12-比特值;
其中存储所述多个编码权重所需的存储空间比存储未编码的多个权重所需的存储空间小25%。
8.根据权利要求7所述的神经网络,其中所述节点的所述输入是一个16-比特值。
9.根据权利要求3所述的神经网络,还包括:
直方图分析器,其在较大量化权重和较低量化权重之间的区间中接收所有权重,并为所述区间中的每个权重生成一个方向指示符,所述方向指示符指示所述权重的向上方向或向下方向;且
当所述方向指示符为所述权重指示所述向上方向时,所述残差量化器为所述权重增加所述第三移位值;
由此,对于所述方向指示符指示向上方向的权重,所述第三移位值增加。
10.根据权利要求9所述的神经网络,所述直方图分析器为所述区间中所有权重生成一个加权平均值,所述直方图分析器设置所述方向指示符,以向上方向指示所述区间中超过所述加权平均值的所有权重,所述直方图分析器设置所述方向指示符,以向下方向指示所述区间中低于所述加权平均值的所有权重的。
11.根据权利要求1所述的神经网络,其中所述移位器和所述累加器被实施为查找表(LUT),而无需使用乘法累加器(MAC)数字信号处理器(DSP)块。
12.根据权利要求1所述的神经网络,其中所述移位器和所述累加器在现场可编程门阵列(FPGA)中实施。
13.一种神经网络加速器,包括:
编码权重输入,用于接收输入到神经网络中节点的一个编码权重;
移位解码器,其从所述编码权重输入接收所述编码权重,所述移位解码器输出第一移位值和第二移位值;
第一移位器,其接收所述神经网络中所述节点的输入,所述第一移位器通过对所述输入移位所述第一移位值指示的多个比特位置来生成第一移位输入;
第二移位器,其接收所述神经网络中所述节点的所述输入,所述第二移位器通过对所述输入移位所述第二移位值指示的多个比特位置来生成第二移位的输入;
加法器,其将所述第一移位输入与所述第二移位输入相加,以生成将所述输入与所述编码权重相乘的一个结果。
14.根据权利要求13所述的神经网络加速器,还包括:
一个或多个查找表(LUT),其用作为所述第一移位器、所述第二移位器和所述加法器。
15.根据权利要求13所述的神经网络加速器,其中所述移位解码器还输出所述编码权重的第三移位值;
还包括:
第三移位器,其接收所述神经网络中所述节点的所述输入,所述第三移位器通过对所述输入移位所述第三移位值指示的多个比特位置来生成第三移位输入;
其中加法器还将所述第三移位值加到所述第一移位输入和所述第二移位输入,以生成将所述输入与所述编码权重相乘的结果。
16.根据权利要求15所述的神经网络加速器,其中所述第一移位器、所述第二移位器、所述第三移位器和所述加法器被实施为现场可编程门阵列(FPGA)上的一个或多个查找表(LUT)。
17.根据权利要求15所述的神经网络加速器,其中所述第一移位器、所述第二移位器、所述第三移位器是能够同时运行的并行块。
18.根据权利要求15所述的神经网络加速器,其中所述第一移位器、所述第二移位器、所述第三移位器由相同的块实施,其中所述第一移位器、所述第二移位器和所述第三移位器顺序运行。
19.一种神经网络系统,包括:
权重量化器,其接收神经网络中节点的权重,并生成指示所述权重中最高非零比特的位置的第一移位值,并生成指示所述权重的第二个最高非零比特的位置的第二移位值;
残差量化器,其生成第三移位值,指示所述权重中第三个最高非零比特的位置;
直方图分析器,其接收较大量化权重和较小量化权重之间的区间中的多个权重;
其中对于所述权重上重要性低于所述第三个最高非零比特的所有比特位置,所述较大量化权重和所述较小量化权重均具有全0比特;
所述直方图分析器为所述区间生成多个权重的加权平均值,并为所述区间中大于所述加权平均值的所有权重激活一个向上方向比特;
所述残差量化器为具有向上方向比特的权重增加所述第三移位值;
移位编码器,其对所述第一移位值、所述第二移位值和所述第三移位值进行编码以形成一个编码权重,所述移位编码器不将所述权重中第三个最高非零比特之后的数值包含在所述编码权重中;
移位器,其对所述节点的输入移位所述第一移位值以生成第一移位输入,并且对所述节点的输入移位所述第二移位值以生成第二移位输入,并且对所述节点的输入移位所述第三移位值,以生成第三移位输入;
加法器,其将所述第一移位输入、所述第二移位输入和所述第三移位输入相加以生成一个结果;
其中所述结果是将所述节点的输入乘以所述节点的权重的精确结果的一个近似值。
20.根据权利要求19所述的神经网络系统,还包括:
存储器,用于存储所述神经网络中多个节点的多个所述编码权重;
其中所述神经网络包括多个所述移位器和多个所述加法器用于所述神经网络中的所述多个节点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/575,421 US10872295B1 (en) | 2019-09-19 | 2019-09-19 | Residual quantization of bit-shift weights in an artificial neural network |
US16/575,421 | 2019-09-19 | ||
PCT/CN2019/111276 WO2021051463A1 (en) | 2019-09-19 | 2019-10-15 | Residual quantization of bit-shift weights in artificial neural network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111492369A true CN111492369A (zh) | 2020-08-04 |
CN111492369B CN111492369B (zh) | 2023-12-12 |
Family
ID=71812202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980002361.0A Active CN111492369B (zh) | 2019-09-19 | 2019-10-15 | 人工神经网络中移位权重的残差量化 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111492369B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112149797A (zh) * | 2020-08-18 | 2020-12-29 | Oppo(重庆)智能科技有限公司 | 神经网络结构优化方法和装置、电子设备 |
CN113408713A (zh) * | 2021-08-18 | 2021-09-17 | 成都时识科技有限公司 | 消除数据副本的方法、神经网络处理器及电子产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
US20180232627A1 (en) * | 2017-02-16 | 2018-08-16 | Intel IP Corporation | Variable word length neural network accelerator circuit |
CN108734285A (zh) * | 2017-04-24 | 2018-11-02 | 英特尔公司 | 神经网络的计算优化 |
CN108921292A (zh) * | 2018-05-02 | 2018-11-30 | 东南大学 | 面向深度神经网络加速器应用的近似计算系统 |
CN109635944A (zh) * | 2018-12-24 | 2019-04-16 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
-
2019
- 2019-10-15 CN CN201980002361.0A patent/CN111492369B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
US20180232627A1 (en) * | 2017-02-16 | 2018-08-16 | Intel IP Corporation | Variable word length neural network accelerator circuit |
CN108734285A (zh) * | 2017-04-24 | 2018-11-02 | 英特尔公司 | 神经网络的计算优化 |
CN108921292A (zh) * | 2018-05-02 | 2018-11-30 | 东南大学 | 面向深度神经网络加速器应用的近似计算系统 |
CN109635944A (zh) * | 2018-12-24 | 2019-04-16 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
Non-Patent Citations (1)
Title |
---|
张慧芳;金文光;: "低码率下CBC算法中位平面编码的新方法" * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112149797A (zh) * | 2020-08-18 | 2020-12-29 | Oppo(重庆)智能科技有限公司 | 神经网络结构优化方法和装置、电子设备 |
CN113408713A (zh) * | 2021-08-18 | 2021-09-17 | 成都时识科技有限公司 | 消除数据副本的方法、神经网络处理器及电子产品 |
CN113408713B (zh) * | 2021-08-18 | 2021-11-16 | 成都时识科技有限公司 | 消除数据副本的方法、神经网络处理器及电子产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111492369B (zh) | 2023-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10872295B1 (en) | Residual quantization of bit-shift weights in an artificial neural network | |
CN111758106B (zh) | 用于大规模并行神经推理计算元件的方法和系统 | |
CN112740171B (zh) | 乘法和累加电路 | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
CN110852416B (zh) | 基于低精度浮点数数据表现形式的cnn硬件加速计算方法及系统 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
US20120124117A1 (en) | Fused multiply-add apparatus and method | |
KR102153791B1 (ko) | 인공 신경망을 위한 디지털 뉴런, 인공 뉴런 및 이를 포함하는 추론 엔진 | |
Dai et al. | Vs-quant: Per-vector scaled quantization for accurate low-precision neural network inference | |
WO2020176250A1 (en) | Neural network layer processing with normalization and transformation of data | |
EP4008057B1 (en) | Lossless exponent and lossy mantissa weight compression for training deep neural networks | |
CN111492369B (zh) | 人工神经网络中移位权重的残差量化 | |
WO2020176248A1 (en) | Neural network layer processing with scaled quantization | |
CN114615507B (zh) | 一种图像编码方法、解码方法及相关装置 | |
CN115982528A (zh) | 基于Booth算法的近似预编码卷积运算方法及系统 | |
CN110955405A (zh) | 一种输入数据的处理及指数值获取方法、装置及电子设备 | |
CN113902109A (zh) | 一种神经网络规则化位串行计算的压缩方法及装置 | |
TW202109281A (zh) | 帶正負號多字乘法器 | |
Yeh et al. | Be Like Water: Adaptive Floating Point for Machine Learning | |
US9134958B2 (en) | Bid to BCD/DPD converters | |
WO2022247368A1 (en) | Methods, systems, and mediafor low-bit neural networks using bit shift operations | |
KR102592708B1 (ko) | 로그 영역의 연산을 수행하도록 구성된 신경망 가속기 | |
Popescu et al. | Representation range needs for 16-bit neural network training | |
NL2031771B1 (en) | Implementations and methods for processing neural network in semiconductor hardware |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40037991 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |