CN111126557A - 神经网络量化、应用方法、装置和计算设备 - Google Patents

神经网络量化、应用方法、装置和计算设备 Download PDF

Info

Publication number
CN111126557A
CN111126557A CN201811286005.XA CN201811286005A CN111126557A CN 111126557 A CN111126557 A CN 111126557A CN 201811286005 A CN201811286005 A CN 201811286005A CN 111126557 A CN111126557 A CN 111126557A
Authority
CN
China
Prior art keywords
quantization
neural network
factor
quantized
data type
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
Application number
CN201811286005.XA
Other languages
English (en)
Other versions
CN111126557B (zh
Inventor
沈旭
杨继伟
邓兵
黄建强
华先胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811286005.XA priority Critical patent/CN111126557B/zh
Publication of CN111126557A publication Critical patent/CN111126557A/zh
Application granted granted Critical
Publication of CN111126557B publication Critical patent/CN111126557B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种神经网络量化方法,包括:获取待量化的神经网络模型,从该神经网络模型的参数中确定多个待量化的参数;将每个待量化的参数转化为一个公共因子和一个量化因子的乘积,其中,公共因子为第一数据类型的数值,量化因子为第二数据类型的数值,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间;采用第一数据类型存储多个待量化的参数的公共因子,以及采用第二数据类型分别存储多个待量化的参数的量化因子。本发明一并公开了相应的神经网络量化装置和计算设备。

Description

神经网络量化、应用方法、装置和计算设备
技术领域
本发明涉及人工智能技术领域,尤其涉及一种神经网络量化、应用方法、装置和计算设备。
背景技术
深度学习技术被广泛应用到各个领域。虽然深度神经网络非常有效,但它们的高计算和内存成本严重挑战了它们在便携式设备上的应用。因此,将全精度神经网络转换为低比特整数版本的网络低位量化方法一直是一个活跃且有前景的研究课题。
网络量化(Network quantization)指的是,把神经网络模型的权值或激活值从高精度转化成低精度(例如将32位浮点数转化成8位整数或二值化为1位整数),同时保证模型准确率等指标与原来相近,模型大小变小,运行速度加快。
现有的将全精度网络量化为低比特网络的方法可大致分为两类:基于近似的方法和基于优化的方法。基于近似的方法在神经网络前向计算时利用低比特量化值,而在反向传播时采用原来的32位全精度值。使用不同的前向和后向近似会导致梯度不匹配的问题,这使得整个量化过程变得不稳定。基于优化的方法将神经网络的量化表示为离散约束的优化问题,该方法的迭代解决方案在训练期间具有很高的计算复杂度,且仅适用于对权重的量化。
发明内容
为此,本发明提供一种神经网络量化、应用方法、装置和计算设备,以力图解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种神经网络量化方法,包括:获取待量化的神经网络模型,从所述神经网络模型的参数中确定多个待量化的参数;将每个所述待量化的参数转化为一个公共因子和一个量化因子的乘积,其中,所述公共因子为第一数据类型的数值,所述量化因子为第二数据类型的数值,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间;采用所述第一数据类型存储所述多个待量化的参数的公共因子,以及采用所述第二数据类型分别存储所述多个待量化的参数的量化因子。
根据本发明的一个方面,提供一种神经网络应用方法,包括:获取量化神经网络模型,所述量化神经网络模型包括量化函数和多个权重,所述权重被转化为一个公共因子与一个量化因子的乘积,所述公共因子采用第一数据类型存储,所述量化因子采用第二数据类型存储,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间,所述量化函数适于将节点的输出值转化为一个公共因子与一个量化因子的乘积;将待处理的数据输入所述量化神经网络模型,按照以下方法确定所述量化神经网络模型中的节点的输出值:获取输入值集合,所述输入值集合包括位于该节点的上一个处理层的多个节点的输出值,采用所述量化函数分别将各输入值转化为公共因子与量化因子的乘积;获取所述各输入值所对应的权重的公共因子和量化因子;将各输入值的量化因子组成量化输入值向量,将各权重的量化因子组成量化权重向量,根据所述量化输入值向量、量化权重向量、各输入值的公共因子、各权重的公共因子的乘积来确定该节点的输出值。
根据本发明的一个方面,提供一种神经网络量化装置,包括:初始化模块,适于获取待量化的神经网络模型,从所述神经网络模型的参数中确定多个待量化的参数;量化模块,适于将每个所述待量化的参数转化为一个公共因子和一个量化因子的乘积,其中,所述公共因子为第一数据类型的数值,所述量化因子为第二数据类型的数值,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间;以及存储模块,适于采用所述第一数据类型存储所述多个待量化的参数的公共因子,以及采用所述第二数据类型分别存储所述多个待量化的参数的量化因子。
根据本发明的一个方面,提供一种神经网络应用装置,包括:初始化模块,适于获取量化神经网络模型,所述量化神经网络模型包括量化函数和多个权重,所述权重被转化为一个公共因子与一个量化因子的乘积,所述公共因子采用第一数据类型存储,所述量化因子采用第二数据类型存储,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间,所述量化函数适于将节点的输出值转化为一个公共因子与一个量化因子的乘积;量化计算模块,适于将待处理的数据输入所述量化神经网络模型,并按照以下方法确定所述量化神经网络模型中的节点的输出值:获取输入值集合,所述输入值集合包括位于该节点的上一个处理层的多个节点的输出值,采用所述量化函数分别将各输入值转化为公共因子与量化因子的乘积;获取所述各输入值所对应的权重的公共因子和量化因子;将各输入值的量化因子组成量化输入值向量,将各权重的量化因子组成量化权重向量,根据所述量化输入值向量、量化权重向量、各输入值的公共因子、各权重的公共因子的乘积来确定该节点的输出值。
根据本发明的一个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的神经网络量化和/或神经网络应用方法的指令。
根据本发明的又一个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的神经网络量化和/或神经网络应用方法。
本发明的神经网络量化方案可以将全精度(第一数据类型,例如float32等)的神经网络模型的参数(例如权重、偏置等)量化为一个全精度的公共因子和低精度(第二数据类型,例如int8)的量化因子的乘积,这样,对于模型中的参数,不必再存储所有参数的全精度值,而是用全精度值存储每一组参数的公共因子,用低精度值存储各参数的量化因子,这大大节省了模型参数所占用的存储空间。同时,全精度的公共因子也避免了因低位量化而给模型造成的精度损失。
与现有技术中的基于近似的方案相比,本方案不需要在计算梯度时进行近似计算,保证了梯度信息的无损传播。同时采用渐进式优化策略,保证了优化过程的稳定性。此外,与现有技术中的基于优化的方案相比,本方案不需要引入多余的损失项,可以同时量化模型的权重和各节点的输出值(激活值),量化过程是简单的端到端的训练,计算的复杂度较低。
基于本发明的神经网络量化方案,可以得到量化后的神经网络模型。量化后的神经网络模型的权重以全精度的公共因子和低精度的量化因子来实现联合存储。并且,量化后的神经网络模型中包括用于量化节点的输出值的第二量化函数。在应用量化后的神经网络模型进行前向计算时,模型中任一节点的输出值为量化输入值向量、量化权重向量、各输入值的公共因子、各权重的公共因子的乘积与预定偏置值的和,由于量化输入值向量、量化权重向量中的数值均为低精度,与现有技术中直接计算全精度的输入值的加权求和结果相比,本方案能够减少浮点数的乘法运算次数,提高计算效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的神经网络量化系统100的示意图;
图2示出了根据本发明一个实施例的神经网络量化方法200的流程图;
图3示出了根据本发明一个实施例的神经网络模型的结构图;
图4示出了设置了第一量化函数后的图3所示的神经网络模型的局部图;
图5示出了根据本发明一个实施例的激活函数的示意图;
图6示出了根据本发明一个实施例的常数T对量化效果的影响的示意图;
图7示出了设置了第一量化函数和第二量化函数后的图3所示的神经网络模型的局部图;
图8示出了图3所示的神经网络模型经量化后的局部结构示意图;
图9示出了根据本发明一个实施例的神经网络应用方法900的流程图;
图10示出了根据本发明一个实施例的计算设备1000的示意图;
图11示出了根据本发明一个实施例的神经网络量化装置1100的示意图;
图12示出了根据本发明一个实施例的神经网络应用装置1200的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据跟发明一个实施例的神经网络量化系统100的示意图。如图1所示,神经网络量化系统100包括移动终端110、服务器120和数据存储装置130。
移动终端110为用户侧的设备,其例如可以是桌面电脑、笔记本电脑等个人配置的计算机,也可以是手机、平板电脑、多媒体设备、智能可穿戴设备等移动设备,但不限于此。服务器120例如可以是个人所有的服务器,也可以是能够提供弹性计算服务的云服务器。数据存储装置130用于存储数据,其在硬件上可以实现为任意存储介质,在软件上可以实现为任意存储系统(例如文件存储系统、对象存储系统等)以及任意数据库软件。
在一个实施例中,数据存储装置130中存储有用于训练深度学习模型的多个训练样本和多个测试样本,服务器120可以采用训练样本来训练深度学习模型,并采用测试样本来测试训练好的深度学习模型的效果。
深度学习(Deep Learning)指的是在多层神经网络上运用的用于解决图像、文本等各种问题的机器学习算法的集合。深度学习模型例如可以是卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)、生成对抗网络(Generative Adversarial Networks,GAN)等,但不限于此。深度学习模型中通常都包含神经网络结构。神经网络包括输入层和多个处理层(最后一个处理层是输出层,位于输入层和输出层之间的处理层为隐藏层),每个处理层包括多个处理节点(神经元)。神经网络中的一个节点具有多个输入(一个节点的输入通常为其他节点的输出),每个输入对应于一个权重,该节点会对根据权重对各个输入进行加权求和,将求和的结果与偏置求和,将求和的结果输入激活函数(例如sigmoid、tanh、ReLU函数等)中,激活函数的输出即为该节点的输出值。
在一个实施例中,当服务器120完成深度学习模型的训练后,将训练好的模型移植到移动终端110中,以便用户在移动终端110上应用已训练好的模型,例如,应用训练好的模型来对待处理的数据进行分类、回归等。在典型的深度学习模型中,处理层的数量可能多达数百层,参数(权重、偏置等)的数量达到上亿个,在应用模型时,需要申请大量的内存并进行大量的浮点数乘法运算,而移动终端110的内存容量以及计算能力有限,因此,深度学习模型在移动终端上的应用仍存在瓶颈。针对该问题,一种可能的解决方法是网络量化,即,把神经网络模型的权值或激活值从高精度转化成低精度(例如将32位浮点数转化成8位整数或二值化为1位整数),从而减少内存占用和浮点数乘法计算。
现有的网络量化算法存在梯度不匹配、只能量化权重、计算复杂度较高等缺点,有鉴于此,本发明提供一种神经网络量化、应用方案,以避免现有网络量化算法所出现的问题,实现更优的神经网络量化效果。本发明的神经网络量化算法在服务器120中执行,以用于对已训练好的全精度的神经网络模型进行量化,得到量化后的神经网络模型。本发明的神经网络应用方法可以在移动终端110中执行,也可以在服务器120中执行,用于应用量化后的神经网络模型。基于本发明的神经网络量化方法,在应用量化后的神经网络模型时,能够大大减少内存占用和浮点数乘法运算次数。以下将对本发明的技术方案进行详细说明。
图2示出了根据本发明一个实施例的神经网络量化方法200的流程图。方法200在服务器120上执行,用于对已训练好的全精度的神经网络模型进行量化。如图2所示,方法200始于步骤S210。
在步骤S210中,获取待量化的神经网络模型,从神经网络模型的参数中确定多个待量化的参数。
待量化的神经网络模型为已经训练好的全精度的神经网络模型,该模型的参数采用第一数据类型存储。第一数据类型为全精度的、占用存储空间较大的数据类型,其通常是浮点类型,例如32位浮点型(float32)、64位浮点型(float64)、双精度浮点型(double)等。其中,一个32位浮点型数值所占用的存储空间为32位(bit),即4个字节(Byte);64位浮点型、双精度浮点型数值所占用的存储空间均为64位,即8个字节。
神经网络模型的参数包括权重(weight)和偏置(bias)。在神经网络计算过程中,权重用于做乘法运算(与相应的输入值相乘),偏置用于做加法运算,权重对于计算性能的影响更大,因此,在一个实施例中,待量化的参数为神经网络模型中的权重,对于偏置则不需要进行量化。进一步地,待量化的参数可以是神经网络模型中的所有权重,也可以是某几个处理层的权重,本发明对神经网络模型中待量化的参数的具体选择不做限制。
图3示出了根据本发明一个实施例的神经网络模型的结构图。图3所示的神经网络模型包括1个输入层和2个处理层(处理层1、处理层2)。输入层包括3个节点(节点1~节点3),即该神经网络模型需要接收3个输入x1、x2、x3。输入层的节点通常不进行任何计算,只是接收输入并将接收到的输入传递至与其相连的处理层(即处理层1)的节点。处理层1包括4个节点(节点4~节点7),节点4~节点7的输出根据上一层的输出值、权重、偏置和激活函数来确定,例如,将节点4~节点7的偏置记为b4~b7,激活函数均设置为sigmoid函数,sigmoid函数的表达式如下:
Figure BDA0001849057070000071
其中,exp表示以自然常数e为底的指数函数。
那么,节点4~节点7的输出值h4~h7分别为:
Figure BDA0001849057070000072
Figure BDA0001849057070000073
Figure BDA0001849057070000074
Figure BDA0001849057070000075
其中,p4~p7分别表示节点4~节点7的输入值向量,w4~w7分别表示节点4~节点7的权重向量。在图3所示的网络结构中,节点4~节点7的输入值向量相同,均为网络中第一层(输入层)的输出值向量[h1,h2,h3],也即整个网络的输入向量x=[x1,x2,x3]。
类似地,处理层2中的节点8、节点9的输出值b8、b9分别为:
Figure BDA0001849057070000081
Figure BDA0001849057070000082
其中,p8、p9分别表示节点8、节点9的输入值向量,w8、w9分别表示节点8、节点9的权重向量。在图3所示的网络结构中,节点8、节点9的输入值向量相同,均为网络中第二层(处理层1)的输出值向量[h4,h5,h6,h7]。
在图3所示的神经网络模型中,可以将所有的权重(即w41,w42,…,w97)均作为待量化的参数;也可以将计算处理层1的节点输出值所需要的权重(即w41,w42,…,w73)作为待量化的参数,也可以将某几个特定的权重(例如w41和w86)作为待量化的参数;也可以将所有的权重和偏置(即w41,w42,…,w97和b4~b9)均作为待量化的参数,等等。待量化的参数可以任意选择。
随后,在步骤S220中,将每个待量化的参数转化为一个公共因子和一个量化因子的乘积,其中,公共因子为第一数据类型的数值,量化因子为第二数据类型的数值,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间。
第二数据类型为精度较低且占用存储空间小于第一数据类型的数据类型。第二数据类型可以是整数类型,例如8位整型(int8)、二值型(binary)等。其中,一个8位整型数值所占用的存储空间为8位,即1个字节;二值型数值所占用的存储空间仅为1位。第二数据类型也可以是占用存储空间小于第一数据类型的浮点类型,例如,当第一数据类型为32位浮点型或64位浮点型时,第二数据类型可以是16位浮点型(float16),一个16位浮点型数值所占用的存储空间为16位,即2个字节。
根据一种实施例,可以按照以下步骤S222~S226来将待量化的参数转化为一个公共因子和一个量化因子的乘积。
在步骤S222中,在神经网络模型中设置第一量化函数,第一量化函数包括待定参数,第一量化函数的输入为第一数据类型的待量化的参数,输出为该待量化的参数所对应的公共因子和量化因子的乘积。
待量化的参数为神经网络模型中所有的权重,相应地,所有的权重都需要经过第一量化函数的计算。可以为所有的权重都设置相同的第一量化函数;也可以为每一个处理层的权重设置不同的第一量化函数(即对应于同一个处理层的权重使用相同的第一量化函数);也可以为每一个节点设置不同的第一量化函数(即为一个节点计算输出值时所用到的权重设置相同的第一量化函数),本发明对神经网络模型中第一量化函数的使用粒度不做限制。但是,为了保证能够起到量化的效果,至少需要有多个权重对应于一个相同的第一量化函数,而不能为每一个权重分别设置不同的第一量化函数。
在一个实施例中,为每一个处理层的权重设置不同的第一量化函数,即,对应于同一个处理层的权重使用相同的第一量化函数。按照该实施例在图3所示的神经网络模型中设置第一量化函数,设置了第一量化函数后的网络模型的局部放大图如图4所示。如图4所示,为计算节点4的输出值所需要的权重w41,w42,w43设置相同的第一量化函数410。在进行前向计算时,首先采用第一量化函数410将权重w41,w42,w43分别转化为一个公共因子和一个量化因子的乘积wq41(即α1*q41),wq42(即α1*q42),wq43(即α1*q43),在经过第一量化函数410的转化后,权重w41,w42,w43的公共因子相同,均为α1,量化因子有所区别,分别为q41,q42,q43。随后,根据wq41,wq42,wq43(即α1,q41,q42,q43)来计算节点4的输出值。
在一个实施例中,第一量化函数z1的表达式如下:
Figure BDA0001849057070000091
其中,α1、β1、o1为待定参数,n、si、T、bi为预设的常数,σ()为预设的基函数,α1为公共因子,
Figure BDA0001849057070000092
为量化因子,w为待量化的参数值(通常为权重值)。
式(2)中,待定参数α1、β1、o1的值需要经过下述步骤S224的训练而得出。在一个实施例中,α1、β1为第一数据类型的全精度值(例如float32),o1为第二数据类型的低精度值(例如int8)。σ()、n、si、T、bi均为预设值,以下介绍一下各预设值的设置。
1、σ()
σ()为第一量化函数的基函数,其需要满足全定义域可微且值域具有上下限的条件。基函数可以是神经网络中常用的激活函数。图5示出了多个激活函数的曲线图。Sigmoid函数的表达式如前述式(1)所示,参考图5,Sigmoid函数全定义域可微且值域为(0,1),因此Sigmoid函数可作为基函数σ()。
除了Sigmoid函数之外,tanh函数(图5中未示出)也可以作为基函数σ()。tanh函数的表达式如式(3)所示:
Figure BDA0001849057070000101
由于tanh函数全定义域可微,且其值域为(-1,1),因此tanh函数也可以作为基函数σ()。
ReLU函数的表达式如式(4)所示:
Figure BDA0001849057070000102
参考图5,ReLU函数在x=0处不可微,且值域没有上限,因此其不能作为基函数σ()。
2、n
n为预设的量化值集合中所包括的量化值的个数,量化值为第二数据类型的数值。在一个实施例中,第二数据类型为int8,则量化值集合为一个有限的8位整数集合。
量化值集合所包括的量化值的个数、各量化值的取值可以由本领域技术人员自行设置,本发明对此不做限制。例如,在一个实施例中,量化值集合为{-4,-2,-1,0,1,2,4},则n=7。在另一个实施例中,量化值集合为{-2,-1,0,1,2},则n=5。
3、si
将量化值集合中的量化值按照从小到大的顺序排序,si为量化值集合中第i+1个量化值与第i个量化值之差。例如,量化值集合为{-4,-2,-1,0,1,2,4},则s1=-2-(-4)=2,s2=-1-(-2)=1,s3=0-(-1)=1,以此类推。
4、T
T是一个用于调整量化程度的因子,其通常被设置为一个正整数。如图6所示,T越大,量化的程度越高。
在训练过程中,为了使模型更快收敛,可以在前向传播计算和反向传播计算中设置不同的T值。在一个实施例中,基函数σ()为sigmoid函数,在进行前向传播计算时,将T设置为正无穷,则σ()转化为阶跃函数:
Figure BDA0001849057070000111
在进行反向传播计算时,将T设置为一个正数,则σ()仍为sigmoid函数本身。
5、bi
bi的值可以按照以下方法确定:将对应于所述神经网络模型的同一个处理层的待量化的参数聚成n-2类,得到n-2个类中心c1~cn-2。聚类算法例如可以是Kmeans、DBSCAN等,但不限于此。随后,根据类中心的值来确定bi的值,其中,
Figure BDA0001849057070000112
例如,量化值集合为{-4,-2,-1,0,1,2,4},则n=7。对于图3、图4所示的神经网络模型,同一个处理层的权重使用相同的第一量化函数,则第一量化函数410中的bi的值可以按照以下方法确定:将权重w41,w42,…,w73的值聚成5类,得到5个类中心c1~c5。随后,按照式(6)来计算b1~b6的值。
前述第一量化函数用于量化权重,在一个实施例中,还可以在神经网络模型中设置用于量化节点的输出值(或称为激活值)的第二量化函数,第一量化函数和第二量化函数并用,从而可以同时实现权重和节点输出值的量化。第二量化函数中包括待定参数,第二量化函数的输入为第一数据类型的节点的输出值,输出为该节点的输出值所对应的公共因子和量化因子的乘积。第二量化函数z2的表达式与第一量化函数z1的表达式具有相同的结构,只是函数中的待定参数、预设常数的值稍有不同。
在一个实施例中,为每一个处理层的节点输出值设置不同的第二量化函数,即,同一个处理层的节点的输出值使用相同的第二量化函数。按照该实施例在图4所示的神经网络模型中设置第二量化函数,设置了第二量化函数后的网络模型的局部放大图如图7所示。如图7所示,为计算节点4的输出值所需要的权重w41,w42,w43设置相同的第一量化函数410,为节点1~节点3的输出值h1,h2,h3设置相同的第二量化函数710,为节点4的输出值h4设置第二量化函数720。第一量化函数410、第二量化函数710、第二量化函数720的表达式具有相同的结构,只是函数中的待定参数、预设常数的值稍有不同。在进行前向计算时,首先,采用第一量化函数410将权重w41,w42,w43分别转化为一个公共因子和一个量化因子的乘积wq41(即α1*q41),wq42(即α1*q42),wq43(即α1*q43),在经过第一量化函数410的转化后,权重w41,w42,w43的公共因子相同,均为α1,量化因子有所区别,分别为q41,q42,q43。采用第二量化函数710将节点1~节点3的输出值h1,h2,h3分别转化为一个公共因子和一个量化因子的乘积hq1(即α2*q1),hq2(即α2*q2),hq3(即α2*q3),在经过第二量化函数710的转化后,输出值h1,h2,h3的公共因子相同,均为α2,量化因子有所区别,分别为q1,q2,q3。随后,根据wq41,wq42,wq43,hq1,hq2,hq3(即α1,q41,q42,q43,α2,q1,q2,q3),来计算节点4的输出值。节点4的输出值h4经过第二量化函数720,转化为一个公共因子和一个量化因子的乘积hq4,hq4可以作为下一个处理层的节点的输入值。
在一个实施例中,第二量化函数z2的表达式如下:
Figure BDA0001849057070000121
其中,α2、β2、o2为待定参数,n、si、T、bi为预设的常数,σ()为预设的基函数,α2为公共因子,
Figure BDA0001849057070000122
为量化因子,h为节点的输出值。
式(7)中,待定参数α2、β2、o2的值需要经过下述步骤S224的训练而得出。在一个实施例中,α2、β2为第一数据类型的全精度值(例如float32),o2为第二数据类型的低精度值(例如int8)。σ()、n、si、T、bi均为预设值,其中,σ()、n、si、T的取值与第一量化函数z1相同,此处不再赘述,以下仅介绍bi的设置。
bi的值可以按照以下方法确定:将第二样本集中的训练样本输入设置了第二量化函数的神经网络模型,分别得到各节点的输出值的平均值,将位于同一个处理层的各节点的输出值的平均值聚成n-2类,得到n-2个类中心c1~cn-2。其中,第二样本集为用于训练待量化的神经网络模型所采用的训练样本集合的子集,例如,训练待量化的神经网络模型所采用的训练样本集合为A,第二样本集为B,则有B∈A。聚类算法例如可以是Kmeans、DBSCAN等,但不限于此。随后,按照前述式(6)来确定bi的值。
例如,量化值集合为{-2,-1,0,1,2},则n=5。对于图7所示的神经网络模型,同一个处理层的节点输出值使用相同的第二量化函数,则第二量化函数710中的bi的值可以按照以下方法确定:将节点1~节点3的输出值的平均值
Figure BDA0001849057070000131
的值聚成3类,得到3个类中心c1~c3。随后,按照式(6)来计算b1~b4的值。
在步骤S224中,采用第一样本集对包含第一量化函数的神经网络模型进行训练,以确定第一量化函数的待定参数,其中,第一样本集为用于训练步骤S210中的待量化的神经网络模型所采用的训练样本集合的子集。训练完成后,第一量化函数中的待定参数α1、β1、o1即被确定,即,第一量化函数的表达式被确定。
在一个实施例中,若在待量化的神经网络模型中同时设置了第一量化函数和第二量化函数,则步骤S224进一步包括:采用第一样本集对包含第一量化函数和第二量化函数的神经网络模型进行训练,以确定第一量化函数、第二量化函数的待定参数,其中,第一样本集为用于训练步骤S210中的待量化的神经网络模型所采用的训练样本集合的子集。训练完成后,第一量化函数中的待定参数α1、β1、o1,第二量化函数中的待定参数α2、β2、o2即被确定,即,第一量化函数、第二量化函数的表达式被确定。
在步骤S226中,根据训练好的第一量化函数来确定待量化的参数所对应的公共因子和量化因子。
参考式(2),训练好的第一量化函数的所有待定参数α1、β1、o1都已确定,那么,给定一个待量化的参数w,根据式(2),即可确定其所对应的公共因子α1和量化因子
Figure BDA0001849057070000132
在一个实施例中,若在待量化的神经网络模型中同时设置了第一量化函数和第二量化函数,则步骤S226还包括:根据训练好的第二量化函数来确定节点的输出值所对应的公共因子和量化因子。
参考式(2)和式(7),训练好的第一量化函数的所有待定参数α1、β1、o1,以及第二量化函数的所有待定参数α2、β2、o2均被确定,那么,给定一个待量化的参数w,根据式(2),即可确定其所对应的公共因子α1和量化因子
Figure BDA0001849057070000141
给定一个节点的输出值h,根据式(7),即可确定其所对应的公共因子α2和量化因子
Figure BDA0001849057070000142
随后,在步骤S230中,采用第一数据类型存储多个待量化的参数的公共因子,以及采用第二数据类型分别存储多个待量化的参数的量化因子。
例如,经过前述步骤S220,将待量化的参数w41转化为公共因子α1与量化因子
Figure BDA0001849057070000143
的乘积wq41。为了便于叙述,将量化因子记为q41。采用第一数据类型(例如float32)存储公共因子α1,采用第二数据类型(例如int8)存储量化因子q41。在后续进行神经网络的前向计算时,参与计算的不再是w41,而是wq41
根据一种实施例,在将每个待量化的参数转化为一个公共因子和一个量化因子的乘积之后,在神经网络模型中删除第一量化函数。第一量化函数仅用于将待量化的参数转化为公共因子与量化因子,转化完成后,将公共因子与量化因子分别存储,并删除神经网络模型中的第一量化函数结构。量化后的神经网络模型中不再包括第一量化函数,当后续应用量化后的神经网络模型进行前向计算时,只需要获取相应参数的公共因子和量化因子进行计算即可。
图8示出了图3所示的神经网络模型经量化后的局部结构示意图。如图8所示,量化后的网络模型中仅包括第二量化函数710、720,不再包括第一量化函数410。在进行前向计算时,采用第二量化函数710将节点1~节点3的输出值h1,h2,h3分别转化为一个公共因子和一个量化因子的乘积hq1(即α2*q1),hq2(即α2*q2),hq3(即α2*q3),在经过第二量化函数710的转化后,输出值h1,h2,h3的公共因子相同,均为α2,量化因子有所区别,分别为q1,q2,q3。随后,获取量化后的权重值wq41,wq42,wq43,即获取权重值wq41,wq42,wq43的公共因子α1和量化因子q41,q42,q43。随后,根据wq41,wq42,wq43,hq1,hq2,hq3(即α2,q1,q2,q3,α1,q41,q42,q43)来计算节点4的输出值。节点4的输出值h4经过第二量化函数720,转化为一个公共因子和一个量化因子的乘积hq4,hq4可以作为下一个处理层的节点的输入值。
基于本发明的神经网络量化方案,可以将全精度(第一数据类型,例如float32等)的神经网络模型的参数(例如权重、偏置等)量化为一个全精度的公共因子和低精度(第二数据类型,例如int8)的量化因子的乘积,这样,对于模型中的参数,不必再存储所有参数的全精度值,而是用全精度值存储每一组参数的公共因子,用低精度值存储各参数的量化因子,这大大节省了模型参数所占用的存储空间。同时,全精度的公共因子也避免了因低位量化而给模型造成的精度损失。
图9示出了根据本发明一个实施例的神经网络应用方法900的流程图。方法900通常在移动终端110中实施,也可以在服务器120中实施。如图9所示,方法900始于步骤S910。
在步骤S910中,获取量化后的神经网络模型,量化后的神经网络模型包括量化函数和多个权重,权重被转化为一个公共因子与一个量化因子的乘积,公共因子采用第一数据类型存储,量化因子采用第二数据类型存储,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间,量化函数适于将节点的输出值转化为一个公共因子与一个量化因子的乘积。
量化后的神经网络模型即按照前述方法200对全精度(参数均采用第一数据类型存储)的神经网络模型进行量化所得到的网络模型。例如,量化后的神经网络模型为采用方法200对图3所示的神经网络模型进行量化所得到的模型,在该模型中,包括用于量化节点输出值的量化函数,例如量化函数710、720等,且该模型的权重采用第一数据类型的公共因子与第二数据类型的量化因子联合存储。
随后,在步骤S920中,将待处理的数据输入所述量化后的神经网络模型,按照以下方法确定量化后的神经网络模型中的节点的输出值:获取输入值集合,输入值集合包括位于该节点的上一个处理层的多个节点的输出值,采用量化函数分别将各输入值转化为公共因子与量化因子的乘积;获取各输入值所对应的权重的公共因子和量化因子;将各输入值的量化因子组成量化输入值向量,将各权重的量化因子组成量化权重向量,根据量化输入值向量、量化权重向量、各输入值的公共因子、各权重的公共因子的乘积来确定该节点的输出值。
例如,参考图8,在应用量化后的网络模型计算节点4的输出值时,首先,获取输入值集合,输入值集合即为节点1~节点3的输出值。随后,采用第二量化函数710将节点1~节点3的输出值h1,h2,h3分别转化为一个公共因子和一个量化因子的乘积hq1=α2*q1,hq2=α2*q2,hq3=α2*q3,在经过第二量化函数710的转化后,输出值h1,h2,h3的公共因子相同,均为α2,量化因子有所区别,分别为q1,q2,q3。随后,获取量化后的权重值wq41,wq42,wq43的公共因子和量化因子,即获取权重值wq41,wq42,wq43的公共因子α1和量化因子q41,q42,q43
将各输入值的量化因子组成量化输入值向量[q1,q2,q3],将各权重的量化因子组成量化权重向量[q41,q42,q43],根据量化输入值向量[q1,q2,q3],量化权重向量[q41,q42,q43],各输入值的公共因子α2,各权重的公共因子α1的乘积来确定节点4的输出值,若节点4的激活函数为sigmoid函数,则节点4的输出值为h4=sigmoid([q1,q2,q3][q41,q42,q43]Tα1α2+b4)。在该算式中,[q1,q2,q3],[q41,q42,q43]均为第二数据类型,α1、α2、b4为第一数据类型。当第一数据类型为浮点型,第二数据类型为整数型时,为了得到节点4的输出值,需要经过3次整数乘法,2次整数加法,1次浮点数与整数的乘法,1次浮点数乘法,1次浮点数加法。
对于未经量化的全精度的神经网络模型,节点4的输出值为h4=sigmoid(h1w41+h2w42+h3w43+b4),该算式中的各个数值均为第一数据类型。当第一数据类型为浮点型时,为了得到节点4的输出值,需要经过3次浮点数乘法和3次浮点数加法。
因此,本发明的神经网络量化及应用方法,可以减少浮点数乘法的运算次数,从而提高了运算效率。
图10示出了根据本发明一个实施例的计算设备1000的示意图。如图7所示,在基本的配置1002中,计算设备1000典型地包括系统存储器1006和一个或者多个处理器1004。存储器总线1008可以用于在处理器1004和系统存储器1006之间的通信。
取决于期望的配置,处理器1004可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器1004可以包括诸如一级高速缓存1010和二级高速缓存1012之类的一个或者多个级别的高速缓存、处理器核心1014和寄存器1016。示例的处理器核心1014可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器1018可以与处理器1004一起使用,或者在一些实现中,存储器控制器1018可以是处理器1004的一个内部部分。
取决于期望的配置,系统存储器1006可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器1006可以包括操作系统1020、一个或者多个应用1022以及程序数据1024。应用1022实际上是多条程序指令,其用于指示处理器1004执行相应的操作。在一些实施方式中,应用1022可以布置为在操作系统上使得处理器1004利用程序数据1024进行操作。
计算设备1000还可以包括有助于从各种接口设备(例如,输出设备1042、外设接口1044和通信设备1046)到基本配置1002经由总线/接口控制器1030的通信的接口总线1040。示例的输出设备1042包括图形处理单元1048和音频处理单元1050。它们可以被配置为有助于经由一个或者多个A/V端口1052与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口1044可以包括串行接口控制器1054和并行接口控制器1056,它们可以被配置为有助于经由一个或者多个I/O端口1058和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备1046可以包括网络控制器1060,其可以被布置为便于经由一个或者多个通信端口1064与一个或者多个其他计算设备1062通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备1000中,应用1022例如可以包括神经网络量化装置1100和/或神经网络应用装置1200,装置1100、装置1200均包括多条程序指令。神经网络量化装置1100可以指示处理器1004执行本发明的神经网络量化方法200,使得计算设备1000实现为本发明的服务器120,实现对神经网络模型的参数(权重和偏置)和节点输出值(激活值)的量化,使模型占用的存储空间变小。神经网络应用装置1200可以在量化后的神经网络模型的基础上进行高效的前向计算,使得计算设备1000实现为本发明的移动终端110或服务器120,从而减少内存占用和浮点数乘法计算。
图11示出了根据本发明一个实施例的神经网络量化装置1100的示意图。神经网络量化装置1100驻留于服务器120中,用于执行本发明的神经网络量化方法200。如图11所示,神经网络量化装置包括初始化模块1110、量化模块1120和存储模块1130。
初始化模块1110,适于获取待量化的神经网络模型,从神经网络模型的参数中确定多个待量化的参数。初始化模块1110具体用于执行如前述步骤S210的方法,关于初始化模块1110的处理逻辑和功能可以参见前述步骤S210的相关描述,此处不再赘述。
量化模块1120,适于将每个待量化的参数转化为一个公共因子和一个量化因子的乘积,其中,公共因子为第一数据类型的数值,量化因子为第二数据类型的数值,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间。量化模块1120具体用于执行如前述步骤S220的方法,关于量化模块1120的处理逻辑和功能可以参见前述步骤S220的相关描述,此处不再赘述。
存储模块1130,适于采用第一数据类型存储多个待量化的参数的公共因子,以及采用第二数据类型分别存储所述多个待量化的参数的量化因子。存储模块1130具体用于执行如前述步骤S230的方法,关于存储模块1130的处理逻辑和功能可以参见前述步骤S230的相关描述,此处不再赘述。
图12示出了根据本发明一个实施例的神经网络应用装置1200。神经网络应用装置1200驻留于移动终端110或服务器120中,用于执行本发明的神经网络应用方法900。如图12所示,神经网络应用装置包括初始化模块1210、和量化计算模块1220。
初始化模块1210,适于获取量化后的神经网络模型,该量化后的神经网络模型包括量化函数和多个权重,权重被转化为一个公共因子与一个量化因子的乘积,公共因子采用第一数据类型存储,量化因子采用第二数据类型存储,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间,量化函数适于将节点的输出值转化为一个公共因子与一个量化因子的乘积。初始化模块1210具体用于执行如前述步骤S910的方法,关于初始化模块1210的处理逻辑和功能可以参见前述步骤S910的相关描述,此处不再赘述。
量化计算模块1220,适于将待处理的数据输入量化后的神经网络模型,并按照以下方法确定量化后的神经网络模型中的节点的输出值:获取输入值集合,输入值集合包括位于该节点的上一个处理层的多个节点的输出值,采用量化函数分别将各输入值转化为公共因子与量化因子的乘积;获取各输入值所对应的权重的公共因子和量化因子;将各输入值的量化因子组成量化输入值向量,将各权重的量化因子组成量化权重向量,根据量化输入值向量、量化权重向量、各输入值的公共因子、各权重的公共因子的乘积来确定该节点的输出值。量化计算模块1220具体用于执行如前述步骤S920的方法,关于量化计算模块1220的处理逻辑和功能可以参见前述步骤S920的相关描述,此处不再赘述。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的神经网络量化和/或神经网络应用方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (20)

1.一种神经网络量化方法,包括:
获取待量化的神经网络模型,从所述神经网络模型的参数中确定多个待量化的参数;
将每个所述待量化的参数转化为一个公共因子和一个量化因子的乘积,其中,所述公共因子为第一数据类型的数值,所述量化因子为第二数据类型的数值,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间;
采用所述第一数据类型存储所述多个待量化的参数的公共因子,以及采用所述第二数据类型分别存储所述多个待量化的参数的量化因子。
2.如权利要求1所述的方法,其中,所述待量化的神经网络模型的参数采用第一数据类型存储。
3.如权利要求1所述的方法,其中,所述待量化的参数为神经网络模型的权重。
4.如权利要求1所述的方法,其中,所述第一数据类型为32位浮点型,所述第二数据类型为8位整型。
5.如权利要求1所述的方法,其中,所述将每个所述待量化的参数转化为一个公共因子和一个量化因子的乘积的步骤包括:
在所述神经网络模型中设置第一量化函数,所述第一量化函数包括待定参数,所述第一量化函数的输入为第一数据类型的待量化的参数,输出为该待量化的参数所对应的公共因子和量化因子的乘积;
采用第一样本集对包含第一量化函数的神经网络模型进行训练,以确定所述第一量化函数的待定参数,其中,所述第一样本集为用于训练所述神经网络模型所采用的训练样本集合的子集;
根据训练好的第一量化函数来确定待量化的参数所对应的公共因子和量化因子。
6.如权利要求5所述的方法,其中,在所述将每个所述待量化的参数转化为一个公共因子和一个量化因子的乘积的步骤之后,还包括:在神经网络模型中删除所述第一量化函数。
7.如权利要求5所述的方法,还包括:
在所述神经网络模型中设置第二量化函数,所述第二量化函数包括待定参数,所述第二量化函数的输入为第一数据类型的节点的输出值,输出为该节点的输出值所对应的公共因子和量化因子的乘积;
采用第一样本集对包含第二量化函数的神经网络模型进行训练,以确定所述第二量化函数的待定参数,其中,所述第一样本集为用于训练所述神经网络模型所采用的训练样本集合的子集;
根据训练好的第二量化函数来确定节点的输出值所对应的公共因子和量化因子。
8.如权利要求5所述的方法,其中,所述第一量化函数z1为:
Figure FDA0001849057060000021
其中,α1、β1、o1为待定参数,n、si、T、bi为预设的常数,σ()为预设的基函数,α1为公共因子,
Figure FDA0001849057060000022
为量化因子,w为待量化的参数值。
9.如权利要求7所述的方法,其中,所述第二量化函数z2为:
Figure FDA0001849057060000023
其中,α2、β2、o2为待定参数,n、si、T、bi为预设的常数,σ()为预设的基函数,α2为公共因子,
Figure FDA0001849057060000024
为量化因子,h为节点的输出值。
10.如权利要求8或9所述的方法,其中,n为预设的量化值集合中所包括的量化值的个数,si为量化值集合中第i+1个量化值与第i个量化值之差。
11.如权利要求8或9所述的方法,其中,所述基函数为全定义域可微且值域具有上下限的函数。
12.如权利要求11所述的方法,其中,σ()为sigmoid函数或tanh函数。
13.如权利要求11所述的方法,其中,σ()为sigmoid函数,所述采用第一样本集对包含第一量化函数的神经网络模型进行训练的步骤包括:
在进行前向传播计算时,将T设置为正无穷,σ()转化为阶跃函数:
Figure FDA0001849057060000031
在进行反向传播计算时,将T设置为一个正数。
14.如权利要求8所述的方法,其中,bi按照以下方法确定:
将对应于所述神经网络模型的同一个处理层的待量化的参数聚成n-2类,得到n-2个类中心c1~cn-2
根据类中心的值来确定bi的值,其中,b1=c1-0.5*(c2-c1);bi=0.5*(ci-1+ci),1<i<n-1;bn-1=cn-2+0.5*(cn-2-cn-3)。
15.如权利要求9所述所述的方法,其中,bi按照以下方法确定:
将第二样本集中的训练样本输入设置了第二量化函数的神经网络模型,分别得到各节点的输出值的平均值,将位于同一个处理层的各节点的输出值的平均值聚成n-2类,得到n-2个类中心c1~cn-2,其中,所述第二样本集为用于训练所述神经网络模型所采用的训练样本集合的子集;
根据类中心的值来确定bi的值,其中,b1=c1-0.5*(c2-c1);bi=0.5*(ci-1+ci),1<i<n-1;bn-1=cn-2+0.5*(cn-2-cn-3)。
16.一种神经网络应用方法,包括:
获取量化后的神经网络模型,所述量化后的神经网络模型包括量化函数和多个权重,所述权重被转化为一个公共因子与一个量化因子的乘积,所述公共因子采用第一数据类型存储,所述量化因子采用第二数据类型存储,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间,所述量化函数适于将节点的输出值转化为一个公共因子与一个量化因子的乘积;
将待处理的数据输入所述量化后的神经网络模型,按照以下方法确定所述量化后的神经网络模型中的节点的输出值:
获取输入值集合,所述输入值集合包括位于该节点的上一个处理层的多个节点的输出值,采用所述量化函数分别将各输入值转化为公共因子与量化因子的乘积;
获取所述各输入值所对应的权重的公共因子和量化因子;
将各输入值的量化因子组成量化输入值向量,将各权重的量化因子组成量化权重向量,根据所述量化输入值向量、量化权重向量、各输入值的公共因子、各权重的公共因子的乘积来确定该节点的输出值。
17.一种神经网络量化装置,包括:
初始化模块,适于获取待量化的神经网络模型,从所述神经网络模型的参数中确定多个待量化的参数;
量化模块,适于将每个所述待量化的参数转化为一个公共因子和一个量化因子的乘积,其中,所述公共因子为第一数据类型的数值,所述量化因子为第二数据类型的数值,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间;以及
存储模块,适于采用所述第一数据类型存储所述多个待量化的参数的公共因子,以及采用所述第二数据类型分别存储所述多个待量化的参数的量化因子。
18.一种神经网络应用装置,包括:
初始化模块,适于获取量化后的神经网络模型,所述量化后的神经网络模型包括量化函数和多个权重,所述权重被转化为一个公共因子与一个量化因子的乘积,所述公共因子采用第一数据类型存储,所述量化因子采用第二数据类型存储,且第一数据类型所占用的存储空间大于第二数据类型所占用的存储空间,所述量化函数适于将节点的输出值转化为一个公共因子与一个量化因子的乘积;
量化计算模块,适于将待处理的数据输入所述量化后的神经网络模型,并按照以下方法确定所述量化后的神经网络模型中的节点的输出值:
获取输入值集合,所述输入值集合包括位于该节点的上一个处理层的多个节点的输出值,采用所述量化函数分别将各输入值转化为公共因子与量化因子的乘积;
获取所述各输入值所对应的权重的公共因子和量化因子;
将各输入值的量化因子组成量化输入值向量,将各权重的量化因子组成量化权重向量,根据所述量化输入值向量、量化权重向量、各输入值的公共因子、各权重的公共因子的乘积来确定该节点的输出值。
19.一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-16中任一项所述方法的指令。
20.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-16中任一项所述的方法。
CN201811286005.XA 2018-10-31 2018-10-31 神经网络量化、应用方法、装置和计算设备 Active CN111126557B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811286005.XA CN111126557B (zh) 2018-10-31 2018-10-31 神经网络量化、应用方法、装置和计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811286005.XA CN111126557B (zh) 2018-10-31 2018-10-31 神经网络量化、应用方法、装置和计算设备

Publications (2)

Publication Number Publication Date
CN111126557A true CN111126557A (zh) 2020-05-08
CN111126557B CN111126557B (zh) 2024-03-29

Family

ID=70485381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811286005.XA Active CN111126557B (zh) 2018-10-31 2018-10-31 神经网络量化、应用方法、装置和计算设备

Country Status (1)

Country Link
CN (1) CN111126557B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112990440A (zh) * 2021-04-02 2021-06-18 安谋科技(中国)有限公司 用于神经网络模型的数据量化方法、可读介质和电子设备
WO2022006919A1 (zh) * 2020-07-10 2022-01-13 中国科学院自动化研究所 基于激活定点拟合的卷积神经网络训练后量化方法及系统
WO2022155890A1 (en) * 2021-01-22 2022-07-28 Qualcomm Incorporated Decreased quantization latency

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150106313A1 (en) * 2013-10-11 2015-04-16 General Electric Company Predictive modeling of high-bypass turbofan engine deterioration
CN106779053A (zh) * 2016-12-15 2017-05-31 福州瑞芯微电子股份有限公司 一种基于影响因子和神经网络的知识点摸底方法
CN107292382A (zh) * 2016-03-30 2017-10-24 中国科学院声学研究所 一种神经网络声学模型激活函数定点量化方法
US20180268289A1 (en) * 2017-03-15 2018-09-20 Nuance Communications, Inc. Method and System for Training a Digital Computational Learning System

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150106313A1 (en) * 2013-10-11 2015-04-16 General Electric Company Predictive modeling of high-bypass turbofan engine deterioration
CN107292382A (zh) * 2016-03-30 2017-10-24 中国科学院声学研究所 一种神经网络声学模型激活函数定点量化方法
CN106779053A (zh) * 2016-12-15 2017-05-31 福州瑞芯微电子股份有限公司 一种基于影响因子和神经网络的知识点摸底方法
US20180268289A1 (en) * 2017-03-15 2018-09-20 Nuance Communications, Inc. Method and System for Training a Digital Computational Learning System

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈俊保;方向忠;: "卷积神经网络的定点化研究", 信息技术, no. 07, 24 July 2018 (2018-07-24) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022006919A1 (zh) * 2020-07-10 2022-01-13 中国科学院自动化研究所 基于激活定点拟合的卷积神经网络训练后量化方法及系统
WO2022155890A1 (en) * 2021-01-22 2022-07-28 Qualcomm Incorporated Decreased quantization latency
CN116830578A (zh) * 2021-01-22 2023-09-29 高通股份有限公司 减少的量化等待时间
CN112990440A (zh) * 2021-04-02 2021-06-18 安谋科技(中国)有限公司 用于神经网络模型的数据量化方法、可读介质和电子设备
CN112990440B (zh) * 2021-04-02 2023-09-19 安谋科技(中国)有限公司 用于神经网络模型的数据量化方法、可读介质和电子设备

Also Published As

Publication number Publication date
CN111126557B (zh) 2024-03-29

Similar Documents

Publication Publication Date Title
CN111758106B (zh) 用于大规模并行神经推理计算元件的方法和系统
Kim et al. I-bert: Integer-only bert quantization
Murillo et al. Deep PeNSieve: A deep learning framework based on the posit number system
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
US20220335299A9 (en) Processing method and accelerating device
JP7029321B2 (ja) 情報処理方法、情報処理装置およびプログラム
Faraone et al. AddNet: Deep neural networks using FPGA-optimized multipliers
US20190164043A1 (en) Low-power hardware acceleration method and system for convolution neural network computation
US20170061279A1 (en) Updating an artificial neural network using flexible fixed point representation
WO2018140294A1 (en) Neural network based on fixed-point operations
TW201915839A (zh) 對人工神經網路及浮點神經網路進行量化的方法及裝置
WO2019238029A1 (zh) 卷积神经网络系统和卷积神经网络量化的方法
CN113348474A (zh) 具有非均匀尾数的神经网络激活压缩
CN111126557B (zh) 神经网络量化、应用方法、装置和计算设备
Langroudi et al. Positnn framework: Tapered precision deep learning inference for the edge
US11341400B1 (en) Systems and methods for high-throughput computations in a deep neural network
Choi et al. Retrain-less weight quantization for multiplier-less convolutional neural networks
EP3931758A1 (en) Neural network layer processing with scaled quantization
Panwar et al. Modified distributed arithmetic based low complexity CNN architecture design methodology
Wu et al. Phoenix: A low-precision floating-point quantization oriented architecture for convolutional neural networks
CN112085175A (zh) 基于神经网络计算的数据处理方法和装置
US11604973B1 (en) Replication of neural network layers
CN116166217A (zh) 执行浮点操作的系统和方法
Ren et al. Hardware implementation of KLMS algorithm using FPGA
JP2024506441A (ja) 正規化関数のためのデジタル回路機構

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
GR01 Patent grant
GR01 Patent grant