CN113361700A - 生成量化神经网络的方法、装置、系统、存储介质及应用 - Google Patents
生成量化神经网络的方法、装置、系统、存储介质及应用 Download PDFInfo
- Publication number
- CN113361700A CN113361700A CN202010142443.XA CN202010142443A CN113361700A CN 113361700 A CN113361700 A CN 113361700A CN 202010142443 A CN202010142443 A CN 202010142443A CN 113361700 A CN113361700 A CN 113361700A
- Authority
- CN
- China
- Prior art keywords
- neural network
- floating point
- quantization
- weights
- network
- 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
-
- 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
- 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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本发明公开一种生成量化神经网络的方法、装置、系统、存储介质及应用。所述方法包括:确定步骤,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;量化步骤,利用所确定的网络,对与其对应的浮点权重进行量化,以得到量化神经网络;以及更新步骤,基于经由所述量化神经网络得到的损失函数值,更新所述所确定的网络、所述浮点权重和所述量化神经网络中的量化权重。根据本公开,可解决神经网络量化过程中的梯度不匹配问题,从而能提高所生成的量化神经网络的性能。
Description
技术领域
本发明涉及图像处理,尤其涉及例如生成量化神经网络的方法、装置、系统、存储介质及应用。
背景技术
当前,深度神经网络(Deep Neural Networks,DNNs)被广泛地用于各种任务。随着网络中各种参数的增加,资源负荷成为将DNNs用于实际工业应用中的主要问题。为了减少实际应用所需要的存储资源和计算资源,对神经网络进行量化成为常规的手段。
在对神经网络进行量化的过程中(也即,生成量化神经网络的过程中),由于通常需要使用大量的不可导函数(例如,取符号操作(sign函数)),因此会导致梯度不匹配(也即,梯度信息损失)的问题,从而使得所生成的量化神经网络的性能受到影响。针对梯度不匹配问题,非专利文献“Mixed Precision DNNs:All you need is a goodparameterization”(Stefan Uhlich,Lukas Mauch,Kazuki Yoshiyama,FabienCardinaux,Javier Alonso García,Stephen Tiedemann,Thomas Kemp,Akira Nakamura;ICLR 2020)提出了一种示例性的方法。该非专利性文献公开了一种近似可导的神经网络量化方法,该示例性方法在利用sign函数和直通梯度评估器(Straight-Through Estimator,STE)对待量化的神经网络的浮点权重进行量化的过程中,引入了基于待量化的神经网络的精度而得到的辅助参数,以利用该辅助参数对由STE评估得到的与量化权重对应的反向梯度的方差进行平滑处理,从而起到修正梯度的作用。
如上所述可知,在上述的示例性方法中,仍然需要使用不可导函数,其仅是通过引入辅助参数来减缓神经网络量化过程中的梯度不匹配问题。由于在神经网络的量化过程中,依然存在梯度不匹配的问题,也即依然存在梯度信息的损失问题,从而所生成的量化神经网络的性能依然会受到影响。
发明内容
鉴于上面的背景技术中的记载,本公开旨在解决上述问题中的至少一点。
根据本公开的一个方面,提供一种生成量化神经网络的方法,所述方法包括:确定步骤,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;量化步骤,利用所确定的网络,对与其对应的浮点权重进行量化,以得到量化神经网络;以及,更新步骤,基于经由所述量化神经网络得到的损失函数值,更新所述所确定的网络、所述浮点权重和所述量化神经网络中的量化权重。
根据本公开的另一个方面,提供一种生成量化神经网络的装置,所述装置包括:确定单元,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;量化单元,利用所确定的网络,对与其对应的浮点权重进行量化,以得到量化神经网络;以及,更新单元,基于经由所述量化神经网络得到的损失函数值,更新所述所确定的网络、所述浮点权重和所述量化神经网络中的量化权重。
根据本公开的再一方面,提供一种生成量化神经网络的系统,所述系统包括:第一嵌入式设备,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;第二嵌入式设备,利用在所述第一嵌入式设备中所确定的网络,对与其对应的浮点权重进行量化,得到量化神经网络;以及,服务器,经由由所述第二嵌入式设备得到的量化神经网络计算损失函数值,并基于计算得到的损失函数值更新所述所确定的网络、所述浮点权重和所述量化神经网络中的量化权重;其中,所述第一嵌入式设备、第二嵌入式设备和服务器经由网络相互连接。
根据本公开的又一方面,提供一种存储介质,用于存储在由处理器执行时能使得执行生成量化神经网络的指令,所述指令包括:确定步骤,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;量化步骤,利用所确定的网络,对与其对应的浮点权重进行量化,以得到量化神经网络;以及,更新步骤,基于经由所述量化神经网络得到的损失函数值,更新所确定的网络、所述浮点权重和所述量化神经网络中的量化权重。
其中,在本公开中,待量化的神经网络中的一个浮点权重对应于一个用于直接输出量化权重的网络。在本公开中,用于直接输出量化权重的网络例如可被称为元网络。其中,在本公开中,一个元网络包括:用于对浮点权重进行卷积的模块;以及,用于约束所述用于对浮点权重进行卷积的模块的输出的第一目标函数。其中,对于待量化的神经网络中的一个浮点权重和与其对应的元网络,该网络中的第一目标函数基于该浮点权重中元素的优先级,将所述用于对浮点权重进行卷积的模块的输出中能够降低目标任务损失的元素优先趋向于量化权重。
根据本公开的又一方面,提供一种应用量化神经网络的方法,所述方法包括:加载量化神经网络;向所述量化神经网络输入其所能执行的任务要求对应的数据集;将所述数据集在所述量化神经网络中自上而下地在各层中进行运算;以及,输出结果。其中,所加载的量化神经网络是根据上述生成量化神经网络的方法所得到的量化神经网络。
如上所述可知,在对神经网络进行量化的过程中,本公开通过使用能直接输出量化权重的元网络来替代常规方法中需要用到的sign函数和STE,并通过将元网络和待量化的神经网络进行协同训练的方式来生成量化神经网络,从而可达到信息无损失的目的。因此,根据本公开,可解决神经网络量化过程中的梯度不匹配问题,从而能提高所生成的量化神经网络的性能。
通过以下参考附图对典型实施例的说明,本公开的其它特征和优点将变得明显。
附图说明
并入说明书中并构成说明书的一部分的附图例示本公开的实施例,并且与实施例的描述一起用于解释本公开的原理。
图1是示意性地示出可实现根据本公开实施例的技术的硬件构造的框图。
图2是示意性地示出根据本公开实施例的用于直接输出量化权重的元网络的示例。
图3是示意性地示出根据本公开实施例的如图2中所示的用于对浮点权重进行卷积的模块210的一种结构。
图4A是示意性地示出根据本公开实施例的元网络中的各模块分别由一个神经网络层构成的示例。
图4B是示意性地示出根据本公开实施例的元网络中的各模块分别由不同数量的神经网络层构成的示例。
图5是示意性地示出根据本公开实施例的生成量化神经网络的装置的构造框图。
图6是示意性地示出根据本公开实施例的生成量化神经网络的方法流程图。
图7是示意性地示出根据本公开实施例的如图6中所示的更新步骤S630的一种流程图。
图8是示意性地示出根据本公开实施例的对由3个网络层所构成的待量化的神经网络进行量化生成量化神经网络的结构图的示例。
图9是示意性地示出根据本公开实施例的如图8中所示的对最后一个浮点权重进行量化权重生成的元网络的结构的示例。
图10是示意性地示出根据本公开实施例的生成量化神经网络的系统的配置框图。
具体实施方式
下面将参照附图详细地描述本公开的示例性实施例。应注意,下面的描述实质上仅为说明性和示例性的,并且决不意图限制本公开及其应用或用途。除非另有具体说明,否则实施例中阐述的组件和步骤的相对布置、数值表达式和数值并不限制本公开的范围。另外,本领域技术人员已知的技术、方法和设备可能不会被详细地讨论,但在适当的情形中其应当是本说明书的一部分。
请注意,相似的附图标记和字母指代附图中相似的项目,因此,一旦一个项目在一个附图中被定义,则不必在下面的附图中对其进行讨论。下面将参照附图详细描述本公开。
(硬件构造)
首先将参照图1描述可实现下文中描述的技术的硬件构造。
硬件构造100例如包括中央处理单元(CPU)110、随机存取存储器(RAM)120、只读存储器(ROM)130、硬盘140、输入设备150、输出设备160、网络接口170和系统总线180。在一种实现方式中,硬件构造100可由计算机实现,诸如平板电脑、笔记本电脑、台式电脑或其他合适的电子设备。
在一种实现方式中,根据本公开的生成量化神经网络的装置由硬件或固件构造并且用作硬件构造100的模块或组件。例如,将在下文参照图5详细描述的生成量化神经网络的装置500用作硬件构造100的模块或组件。在另一种实现方式中,根据本公开的生成量化神经网络的方法由存储在ROM 130或硬盘140中且由CPU 110执行的软件构造。例如,将在下文参照图6详细描述的过程600用作存储在ROM 130或硬盘140中的程序。
CPU 110是任意合适的可编程控制设备(诸如,处理器),并且可通过执行存储在ROM 130或硬盘140(诸如,存储器)中的各种应用程序来执行下文中要描述的各种功能。RAM120用于临时存储从ROM 130或硬盘140加载的程序或数据,并且也被用作CPU 110在其中执行各种过程(诸如,实施将在下文参照图6至图7详细描述的技术)以及其他可用功能的空间。硬盘140存储诸如操作系统(OS)、各种应用、控制程序、待量化的神经网络、生成得到的量化神经网络、预先定义的数据(例如,阈值(THs))等多种信息。
在一种实现方式中,输入设备150用于允许用户与硬件构造100交互。在一个实例中,用户可通过输入设备150输入例如待量化的神经网络、特定任务处理信息(例如,物体检测任务)等,其中待量化的神经网络包括例如各种权重(例如,浮点权重)。在另一实例中,用户可通过输入设备150触发本发明的对应处理。此外,输入设备150可采用多种形式,诸如按钮、键盘或触摸屏。
在一种实现方式中,输出设备160用于将最终生成得到的量化神经网络存储到例如硬盘140中或用于向诸如物体检测、物体分类、图像分割等的特定任务处理输出最终生成的量化神经网络。
网络接口170提供用于将硬件构造100连接到网络的接口。例如,硬件构造100可经由网络接口170与经由网络连接的其他电子设备进行数据通信。可选地,可以为硬件构造100提供无线接口以进行无线数据通信。系统总线180可以提供用于在CPU 110、RAM 120、ROM 130、硬盘140、输入设备150、输出设备160和网络接口170等之间相互传输数据的数据传输路径。虽然被称为总线,但是系统总线180并不限于任何特定的数据传输技术。
上述硬件构造100仅仅是说明性的,并且决不意图限制本公开、其应用或用途。而且,为了简明起见,图1中只示出一个硬件构造。但是,根据需要也可以使用多个硬件构造。例如,可在一个硬件结构中得到将在下文描述的能直接输出量化权重的元网络,可在另一个硬件结构中得到量化神经网络,并且其中所涉及的计算等操作可用又一个硬件结构来执行,其中这些硬件结构可通过网络连接。在这种情况下,用于得到元网络和量化神经网络的硬件结构例如可由嵌入式设备实现,诸如相机、摄像机、个人数字助理(PDA)或其他合适的电子设备,用于执行计算等操作的硬件结构例如可由计算机(例如,服务器)实现。
(元网络)
在对待量化的神经网络中的浮点权重进行量化的过程中,为了避免使用会引起信息损失(也即,梯度不匹配)问题的sign函数和STE,发明人认为可通过对每一个浮点权重对应地设计一个能直接输出量化权重的元网络来替代使用sign函数和STE,从而达到信息无损失的目的。另外,在对待量化的神经网络中的浮点权重进行量化的过程中,实际上并非所有的浮点权重都是重要的。例如,对于重要度高的浮点权重,在对其进行量化的过程中,由于轻微的信息损失也会对所生成的量化神经网络的性能造成严重的影响,因此在对这些重要度高的浮点权重进行量化时,需要保证它们的量化权重更加地趋向于“+1”或“-1”。而对于重要度低的浮点权重,在对其进行量化的过程中,即使发生轻微的信息损失也不会对所生成的量化神经网络的性能造成影响;另外,对浮点权重进行量化的目的是得到具有最好的性能的量化神经网络,而不是要将所有的浮点权重的量化权重都趋向于“+1”或“-1”,因此在对这些重要度低的浮点权重进行量化时,不需要使得它们的量化权重那么精确地趋向于“+1”或“-1”。
其中,在本公开中,对于上述重要度高的浮点权重,可通过如下数学假设作进一步地限定。假设对于所有的向量v,其属于n维实数集Rn、均存在一个k稀疏表达,且同时存在一个极小的ε(其属于(0,1))和最优量化权重其中,在对量化神经网络进行更新优化的过程中,伴随着将任务目标函数用于特定的任务,该更新优化过程可具有如下公式(1)和公式(2)所表达的属性:
因此,发明人认为,为了有助于生成更高精度的量化权重,对应于待量化的神经网络中的一个浮点权重,能直接输出其量化权重的元网络可被设计为具有如图2所示的结构,如图2中所示,能直接输出量化权重的元网络200包括:用于对浮点权重进行卷积的模块210;以及,用于约束用于对浮点权重进行卷积的模块210的输出的第一目标函数220。其中,为了有助于保存浮点权重的几何流形结构,用于对浮点权重进行卷积的模块210可被设计为具有如图3所示的结构,如图3中所示,用于对浮点权重进行卷积的模块210包括:用于转化浮点权重的维度的第一模块211;以及,用于将第一模块211的输出的维度转化为浮点权重的维度的第二模块212。其中,为了使得在对神经网络进行量化时能够节省计算资源,用于对浮点权重进行卷积的模块210可进一步包括:用于从第一模块211的输出中提取主成分的第三模块213;此时,第二模块212用于将第三模块213的输出的维度转化为浮点权重的维度。其中,第一模块211、第二模块212和第三模块213的输入形状大小和输出通道数基于浮点权重的形状大小确定。其中,第一目标函数220对用于对浮点权重进行卷积的模块210的输出的约束为:基于浮点权重中元素的优先级,将用于对浮点权重进行卷积的模块210的输出中能够有助于降低目标任务损失(也即,有助于提高任务性能)的元素优先趋向于量化权重。
下面以待量化的神经网络中的浮点权重w为例进行说明,其中浮点权重的矩阵形状例如为[卷积核宽度,卷积核高度,输入通道数,输出通道数]。在一种实现中,第一模块211可用作编码功能模块,用于将浮点权重w转化为高维度。具体地,为了能将浮点权重w转化为高维度结构,以生成更富有目标任务的区分性的特征,编码功能模块的输入形状大小可设置为与浮点权重w的矩阵形状大小相同,且编码功能模块的输出通道数可设置为至少大于或等于浮点权重w的卷积核大小的平方的四倍,其中浮点权重w的卷积核大小的平方也即为“卷积核宽度”与“卷积核高度”的乘积。
第三模块213可用作压缩功能模块,用于将编码功能模块的输出结果进行主成分分析并压缩提取主成分。具体地,为了提取经过转化后的高维度结构的主成分,以筛选出各个元素的优先级,压缩功能模块的输入形状大小可设置为与编码功能模块的输出形状大小相同,且压缩功能模块的输出通道数可设置为至少大于或等于浮点权重的卷积核大小的两倍,但同时小于或等于编码功能模块的输出通道数的一半。
第二模块212可用作解码功能模块,用于将编码功能模块或压缩功能模块的输出结果进行激活解码。具体地,为了还原浮点权重w的维度以生成量化权重,解码功能模块的输入形状大小可设置为与编码功能模块或压缩功能模块的输出形状大小相同,且解码功能模块的输出通道数可设置为与浮点权重的矩阵形状大小相同。
第一目标函数220可用作量化目标函数,用于约束解码功能模块的输出结果以得到浮点权重w的量化权重wq。其中,为了导出量化目标函数,在本公开中,可定义如下假设:
假设存在一个泛函数F(w),同时形成函数tanh(F(w)),使得对于w的双曲正切函数tanh(F(w))中的梯度可被表示为如下的公式(3)和公式(4):
具体地,在本公开中,量化目标函数例如可被定义为如下的公式(5):
在上述公式(5)中,b表示量化参考向量,其目的在于约束解码功能模块的输出结果趋向于量化权重wq;表示优化约束后得到的最优量化权重,其中,wq与为向量,均属于mn维实数集;m、n表示量化权重的输入通道数以及输出通道数;‖wq‖表示L1范数运算子,其目的在于通过稀疏性法则鉴别浮点权重w中各元素的优先级,其中,具有鉴别浮点权重w中各元素的优先级的运算子均可被使用。
进一步地,在本公开中,上述编码功能模块(也即,第一模块211)、压缩功能模块(也即,第三模块213)和解码功能模块(也即,第二模块212)可分别由至少一个神经网络层(例如,全连接层)构成。其中,构成每一个功能模块的神经网络层的个数可由需要生成的量化神经网络的精度决定。以用于对浮点权重进行卷积的模块210同时包括编码功能模块、压缩功能模块和解码功能模块为例,在一种实现中,例如如图4A中所示,编码功能模块由全连接层410构成,压缩功能模块由全连接层420构成,解码功能模块由全连接层430构成。在另一种实现中,例如如图4B中所示,编码功能模块由全连接层441-442构成,压缩功能模块由全连接层451-453构成,解码功能模块由全连接层461-462构成。然而显然不限于此,可根据实际需要生成的量化神经网络的精度来设定构成各功能模块的神经网络层的个数。此外,关于构成各功能模块的神经网络层的输入输出形状大小,在本公开中没有特别地限定。
(生成量化神经网络的装置和方法)
接下来,将以通过一个硬件构造实现为例,参照图5至图9描述根据本公开的量化神经网络的生成。
图5是示意性地示出根据本公开实施例的生成量化神经网络的装置500的构造框图。其中,图5中所示的一些或全部模块可由专用硬件实现。如图5中所示,装置500包括确定单元510、量化单元520和更新单元530。进一步地,装置500还可包括存储单元540。
首先,例如,图1中所示的输入设备150接收由用户输入的待量化的神经网络及对各网络层的浮点权重的定义等。接着,输入设备150经由系统总线180将所接收的数据传输到装置500。
然后,如图5中所示,确定单元510,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络(也即,上述的“元网络”)。通常,一个待量化的神经网络由多少个网络层构成,便会对应地有多少个浮点权重需要量化。因此,在需要被量化的浮点权重的个数为N个的情况下,则确定单元510便会为每一个浮点权重确定一个对应的元网络。其中,可使用传统神经网络的初始化方式(例如,均值为0、方差为1的高斯分布)对所确定的元网络进行初始化。
量化单元520利用确定单元510所确定的元网络,对与其对应的浮点权重进行量化,以得到量化神经网络。也就是说,对于每一个浮点权重,量化单元520会利用与该浮点权重对应的元网络对其进行量化,以得到相应的量化权重。在所有的浮点权重被量化后,便可得到相应的量化神经网络。
更新单元530基于经由所述量化神经网络得到的损失函数值,更新确定单元510所确定的元网络、待量化的神经网络中的浮点权重和所述量化神经网络中的量化权重。
此外,更新单元530还将判断经过更新后的量化神经网络是否满足预定条件,例如已经完成了需要更新的总次数(例如,T次)或已经达到了预定性能(例如,损失函数值趋向于恒定值)。如果量化神经网络还未满足预定条件,量化单元520和更新单元530将再一次地执行相应的操作。
如果量化神经网络已经满足预定条件,存储单元540存储由量化单元520得到的量化神经网络,以便该量化神经网络可用于后续的诸如物体检测、物体分类、图像分割等的特定任务处理。
图6中所示的方法流程图600是图5中所示的装置500的一种对应过程。如图6中所示,对于待量化的神经网络,在确定步骤S610中,确定单元510基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络(也即,上述的“元网络”)。如上所述,确定单元510会对每一个浮点权重确定一个对应的元网络。
在量化步骤S620中,量化单元520利用在确定单元S610中所确定的元网络,对与其对应的浮点权重进行量化,以得到量化神经网络。也就是说,在量化步骤S620中,对于每一个浮点权重,量化单元520会利用与该浮点权重对应的元网络对其进行量化,以得到相应的量化权重。在所有的浮点权重被量化后,便可得到相应的量化神经网络。对于任意一个浮点权重(例如,浮点权重w),在一种实现方式中,例如可通过如下操作对浮点权重w进行量化:
首先,量化单元520对浮点权重w进行变形,并将变形结果作为与浮点权重w对应的元网络的输入。如上所述可知,浮点权重w的矩阵形状为[卷积核宽度,卷积核高度,输入通道数,输出通道数],也就是说,浮点权重w的矩阵形状是一个四维矩阵。通过变形操作后,浮点权重w的矩阵形状被变形为一个二维矩阵,其矩阵形状为[卷积核宽度×卷积核高度,输入通道数×输出通道数]。
然后,量化单元520利用与浮点权重w对应的元网络,对变形后的浮点权重w进行量化以得到对应的量化权重。由于元网络的输入是二维矩阵,因此所得到的量化权重的矩阵形状也是二维矩阵。从而,量化单元520还需要对所得到的量化权重进行变形,使其变形为具有与浮点权重w的矩阵形状相同的矩阵形状,也即,需要将量化权重的矩阵形状变形为四维矩阵。
返回图6,在所有的浮点权重被量化后,在更新步骤S630中,更新单元530基于经由所述量化神经网络得到的损失函数值,更新确定单元510所确定的元网络、待量化的神经网络中的浮点权重和所述量化神经网络中的量化权重。
进一步地,在更新步骤S630的操作结束后,在存储步骤S640中,存储单元540存储由量化步骤S620得到的量化神经网络,以便该量化神经网络可用于后续的诸如物体检测、物体分类、图像分割等的特定任务处理。其中,例如将量化神经网络的量化权重或将对量化权重定点化后的定点权重存储到存储单元540中。其中,对量化权重进行定点化的操作例如是对量化权重进行取整运算。
在一种实现方式中,为了提高所生成的量化神经网络的精度,在图6所示的更新步骤S630中,更新单元530参照图7执行相应的更新操作。
如图7中所示,在步骤S631中,更新单元530基于一损失函数值更新在量化步骤S620中得到的量化神经网络中的量化权重。其中,在本公开中,该损失函数值例如可被称为任务损失函数值。其中,任务损失函数值基于用于更新量化神经网络的第二目标函数得到。其中,在本公开中,该第二目标函数例如可被称为任务目标函数。其中,任务目标函数可根据任务的不同而被设置为不同的函数。例如,在利用本公开为人脸检测任务生成相应的量化神经网络的情况下,任务目标函数可被设置为用于人脸检测的实际检测函数,例如用于YOLO中的目标检测函数。在一种实现方式中,更新单元530例如通过如下方式来更新量化神经网络中的量化权重:
首先,更新单元530利用在量化步骤S620中得到的量化神经网络进行前向传播运算,并根据任务目标函数计算任务损失函数值。
然后,更新单元530利用用于更新量化权重的函数,基于计算得到的任务损失函数值对量化权重进行更新。其中,用于更新量化权重的函数例如可被定义为如下的公式(6):
返回图7,在步骤S632中,更新单元530基于另一损失函数值更新浮点权重和所确定的元网络。其中,在本公开中,该损失函数值例如可被称为量化损失函数值。其中,量化损失函数值基于更新的量化权重和元网络中的第一目标函数(也即,量化目标函数)得到。对应于被更新的量化权重中的一个,在一种实现方式中,更新单元530通过如下方式来更新用于得到该量化权重的浮点权重和对应的元网络:
一方面,更新单元530利用用于更新浮点权重的函数,基于由上述公式(6)计算得到的梯度值对浮点权重进行更新。其中,用于更新浮点权重的函数例如可被定义为如下的公式(7):
Wt+1=Wt-ηgΘ…(7)
在上述公式(7)中,η表示元网络训练学习率,t表示当前量化神经网络的更新次数(也即,训练迭代次数),wt表示第t次更新的浮点权重。
一方面,更新单元530利用通用的反向传播运算,基于计算得到的量化损失函数值对元网络中的自身权重进行更新。
此外,在本公开中,对于更新单元530所执行的两个更新操作,可分别采用两个独立的神经网络优化器来进行联合训练。
返回图7,在步骤S633中,更新单元530判断其所执行的更新操作的次数是否达到预定的需要更新总次数(例如,T次)。在所执行的更新次数小于T的情况下,过程将重新进入量化步骤S620。否则,过程将进入存储步骤S640,也即,被最后一次更新的量化神经网络将被存储到存储单元540中,以便该量化神经网络可用于后续的诸如物体检测、物体分类、图像分割等的特定任务处理
在图7中所示的流程S630中,是以更新次数是否达到预定的需要更新的总次数来作为停止更新操作的条件。然而,显然不必局限于此。作为一种替换,也可以损失函数值(例如,上述的任务损失函数值)是否趋向于恒定值来作为停止更新操作的条件。
作为一种示例,下面将描述根据本公开实施例的生成量化神经网络的算法流程:
此外,如上所述,一个待量化的神经网络由多少个网络层构成,便会对应地有多少个浮点权重需要量化。因此,作为一种示例,以待量化的神经网络由3个网络层构成为例,根据本公开实施例的对该待量化的神经网络进行量化以得到对应的量化神经网络的结构图例如如图8所示。如图8中所示,其中所示每一个元网络的输出是与输入该元网络的浮点权重对应的量化权重,其中所示的元优化器即是上述用于更新元网络的神经网络优化器。其中,在图8中,元网络与元优化器之间的点虚线表示元网络约束的反向传播梯度,其余虚线表示量化神经网络的反向传播梯度。此外,如上所述,在本公开中,元网络中用于对浮点权重进行卷积的模块例如可由编码功能模块、压缩功能模块和解码功能模块构成。因此,作为一种示例,如图8中所示的对最后一个浮点权重进行量化权重生成的元网络的结构例如如图9所示。其中,在图9中,解码功能模块与元优化器之间的点虚线表示元网络约束的反向传播梯度,其余虚线表示量化神经网络的反向传播梯度。
如上所述,在对神经网络进行量化的过程中,本公开通过使用能直接输出量化权重的元网络来替代常规方法中需要用到的sign函数和STE,并通过将元网络和待量化的神经网络进行协同训练的方式来生成量化神经网络,从而可达到信息无损失的目的。因此,根据本公开,可解决神经网络量化过程中的梯度不匹配问题,从而能提高所生成的量化神经网络的性能。
(生成量化神经网络的系统)
如图1中所述,作为本公开的一种应用,下面,将以通过三个硬件构造实现为例,参照图10描述根据本公开的量化神经网络的生成。
图10是示意性地示出根据本公开实施例的生成量化神经网络的系统1000的配置框图。如图10中所示,系统1000包括第一嵌入式设备1010、第二嵌入式设备1020和服务器1030,其中第一嵌入式设备1010、第二嵌入式设备1020和服务器1030经由网络1040相互连接,其中第一嵌入式设备1010和第二嵌入式设备1020例如可为诸如摄像机等电子设备,服务器例如可为计算机等电子设备。
如图10中所示,第一嵌入式设备1010,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络(也即,元网络)。
第二嵌入式设备1020,利用在第一嵌入式设备1010中所确定的元网络,对与其对应的浮点权重进行量化,得到量化神经网络。
服务器1030,经由由第二嵌入式设备1020得到的量化神经网络计算损失函数值,并基于计算得到的损失函数值更新所确定的元网络、浮点权重和量化神经网络中的量化权重。其中,在服务器1030更新完元网络、浮点权重和量化神经网络中的量化权重后,会将更新后的元网络发送给第一嵌入式设备1010,且会将更新后的浮点权重和量化权重发送给第二嵌入式设备1020。
上述的所有单元都是用于实现本公开中所述处理的示例性和/或优选模块。这些单元可以是硬件单元(诸如,现场可编程门阵列(FPGA)、数字信号处理器、专用集成电路等)和/或软件模块(诸如,计算机可读程序)。上面没有详尽地描述用于实现各步骤的单元。然而,当存在执行特定过程的步骤的情况下,可以存在用于实现该同一过程的对应功能模块或单元(通过硬件和/或软件实现)。通过描述的步骤和对应于这些步骤的单元的所有组合的技术方案包括在本申请的公开内容中,只要它们所构成的技术方案是完整的、适用的即可。
可以以多种方式来实施本发明的方法和装置。例如,可以通过软件、硬件、固件或其任何组合来实施本发明的方法和装置。除非另有具体说明,否则本方法的步骤的上述顺序仅旨在是说明性的,并且本发明的方法的步骤不局限于上述具体描述的顺序。此外,在一些实施例中,本发明还可以被实施为在记录介质中记录的程序,其包括用于实现根据本发明的方法的机器可读指令。因此,本发明也覆盖存储用于实现根据本发明的方法的程序的记录介质。
虽然已经通过示例详细地展示了本发明的一些具体实施例,但是本领域的技术人员应该理解,上述示例仅旨在是说明性的,并不限制本发明的范围。本领域的技术人员应该理解,上述实施例可以在不脱离本发明的范围和精神的情况下被修改。本发明的范围由所附权利要求约束。
Claims (18)
1.一种生成量化神经网络的方法,其特征在于,所述方法包括:
确定步骤,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;
量化步骤,利用所确定的网络,对与其对应的浮点权重进行量化,以得到量化神经网络;以及
更新步骤,基于经由所述量化神经网络得到的损失函数值,更新所述所确定的网络、所述浮点权重和所述量化神经网络中的量化权重。
2.根据权利要求1所述的方法,其中,在所述确定步骤中,所述所确定的网络包括:
用于对浮点权重进行卷积的模块;以及
用于约束所述用于对浮点权重进行卷积的模块的输出的第一目标函数。
3.根据权利要求2所述的方法,其中,所述用于对浮点权重进行卷积的模块包括:
用于转化浮点权重的维度的第一模块;以及
用于将所述第一模块的输出的维度转化为浮点权重的维度的第二模块。
4.根据权利要求3所述的方法,其中,所述用于对浮点权重进行卷积的模块进一步包括:
用于从所述第一模块的输出中提取主成分的第三模块;
其中,所述第二模块用于将所述第三模块的输出的维度转化为浮点权重的维度。
5.根据权利要求4所述的方法,其中,对于待量化的神经网络中的一个浮点权重和所确定的、与其对应的网络,基于该浮点权重的形状大小确定该网络中的第一模块、第二模块和第三模块的输入形状大小和输出通道数。
6.根据权利要求4所述的方法,其中,所述第一模块、所述第二模块和所述第三模块分别由至少一个神经网络层构成。
7.根据权利要求2所述的方法,其中,对于待量化的神经网络中的一个浮点权重和所确定的、与其对应的网络,该网络中的第一目标函数基于该浮点权重中元素的优先级,将所述用于对浮点权重进行卷积的模块的输出中能够降低目标任务损失的元素优先趋向于量化权重。
8.根据权利要求1所述的方法,其中,所述更新步骤包括:
基于一损失函数值更新所述量化神经网络中的量化权重,其中该损失函数值基于用于更新量化神经网络的第二目标函数得到;以及
基于另一损失函数值更新所述浮点权重和所确定的网络,其中该损失函数值基于更新的量化权重和所述第一目标函数得到。
9.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
存储步骤,用于存储在所述更新步骤结束后,由所述量化步骤得到的量化神经网络。
10.根据权利要求9所述的方法,其中,在所述存储步骤中,存储所述量化神经网络的量化权重或对所述量化权重定点化后的定点权重。
11.一种生成量化神经网络的装置,其特征在于,所述装置包括:
确定单元,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;
量化单元,利用所确定的网络,对与其对应的浮点权重进行量化,以得到量化神经网络;以及
更新单元,基于经由所述量化神经网络得到的损失函数值,更新所述所确定的网络、所述浮点权重和所述量化神经网络中的量化权重。
12.根据权利要求11所述的装置,其中,所述确定单元所确定的网络包括:
用于对浮点权重进行卷积的模块;以及
用于约束所述用于对浮点权重进行卷积的模块的输出的第一目标函数。
13.根据权利要求12所述的装置,其中,对于待量化的神经网络中的一个浮点权重和所确定的、与其对应的网络,该网络中的第一目标函数基于该浮点权重中元素的优先级,将所述用于对浮点权重进行卷积的模块的输出中能够降低目标任务损失的元素优先趋向于量化权重。
14.根据权利要求11所述的装置,其特征在于,所述装置进一步包括:
存储单元,用于存储在所述更新单元的操作结束后,由所述量化单元得到的量化神经网络。
15.一种生成量化神经网络的系统,其特征在于,所述系统包括:
第一嵌入式设备,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;
第二嵌入式设备,利用在所述第一嵌入式设备中所确定的网络,对与其对应的浮点权重进行量化,得到量化神经网络;以及
服务器,经由由所述第二嵌入式设备得到的量化神经网络计算损失函数值,并基于计算得到的损失函数值更新所述所确定的网络、所述浮点权重和所述量化神经网络中的量化权重;
其中,所述第一嵌入式设备、第二嵌入式设备和服务器经由网络相互连接。
16.一种存储介质,用于存储在由处理器执行时能使得执行生成量化神经网络的指令,其特征在于,所述指令包括:
确定步骤,基于待量化的神经网络中的浮点权重,分别确定与所述浮点权重对应的、用于直接输出量化权重的网络;
量化步骤,利用所确定的网络,对与其对应的浮点权重进行量化,以得到量化神经网络;以及
更新步骤,基于经由所述量化神经网络得到的损失函数值,更新所确定的网络、所述浮点权重和所述量化神经网络中的量化权重。
17.一种应用量化神经网络的方法,其特征在于,所述方法包括:
加载量化神经网络;
向所述量化神经网络输入其所能执行的任务要求对应的数据集;
将所述数据集在所述量化神经网络中自上而下地在各层中进行运算;以及
输出结果。
18.根据权利要求17所述的方法,其中,所加载的量化神经网络是根据权利要求1-10任一所述的方法所得到的量化神经网络。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010142443.XA CN113361700A (zh) | 2020-03-04 | 2020-03-04 | 生成量化神经网络的方法、装置、系统、存储介质及应用 |
US17/189,014 US20210279574A1 (en) | 2020-03-04 | 2021-03-01 | Method, apparatus, system, storage medium and application for generating quantized neural network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010142443.XA CN113361700A (zh) | 2020-03-04 | 2020-03-04 | 生成量化神经网络的方法、装置、系统、存储介质及应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113361700A true CN113361700A (zh) | 2021-09-07 |
Family
ID=77523395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010142443.XA Pending CN113361700A (zh) | 2020-03-04 | 2020-03-04 | 生成量化神经网络的方法、装置、系统、存储介质及应用 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210279574A1 (zh) |
CN (1) | CN113361700A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11507823B2 (en) * | 2019-01-22 | 2022-11-22 | Black Sesame Technologies Inc. | Adaptive quantization and mixed precision in a network |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017097585A (ja) * | 2015-11-24 | 2017-06-01 | 株式会社リコー | 学習装置、プログラム及び学習方法 |
US10831444B2 (en) * | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN106127103B (zh) * | 2016-06-12 | 2019-06-25 | 广州广电运通金融电子股份有限公司 | 一种离线身份认证的方法和装置 |
US11216719B2 (en) * | 2017-12-12 | 2022-01-04 | Intel Corporation | Methods and arrangements to quantize a neural network with machine learning |
-
2020
- 2020-03-04 CN CN202010142443.XA patent/CN113361700A/zh active Pending
-
2021
- 2021-03-01 US US17/189,014 patent/US20210279574A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210279574A1 (en) | 2021-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10789734B2 (en) | Method and device for data quantization | |
US11657254B2 (en) | Computation method and device used in a convolutional neural network | |
Habib et al. | Optimization and acceleration of convolutional neural networks: A survey | |
US11270187B2 (en) | Method and apparatus for learning low-precision neural network that combines weight quantization and activation quantization | |
US9916531B1 (en) | Accumulator constrained quantization of convolutional neural networks | |
EP3657399A1 (en) | Weight pruning and quantization method for a neural network and accelerating device therefor | |
CN110663048B (zh) | 用于深度神经网络的执行方法、执行装置、学习方法、学习装置以及记录介质 | |
WO2020014590A1 (en) | Generating a compressed representation of a neural network with proficient inference speed and power consumption | |
US20220083866A1 (en) | Apparatus and a method for neural network compression | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
JP7009020B2 (ja) | 学習方法、学習システム、学習装置、方法、適用装置、及びコンピュータプログラム | |
US20230017072A1 (en) | Systems And Methods For Improved Video Understanding | |
US11636667B2 (en) | Pattern recognition apparatus, pattern recognition method, and computer program product | |
US20200234128A1 (en) | Resource-Aware Training for Neural Networks | |
WO2021042857A1 (zh) | 图像分割模型的处理方法和处理装置 | |
CN110781686A (zh) | 一种语句相似度计算方法、装置及计算机设备 | |
CN113971733A (zh) | 一种基于超图结构的模型训练方法、分类方法及装置 | |
US20240095522A1 (en) | Neural network generation device, neural network computing device, edge device, neural network control method, and software generation program | |
Yu et al. | Heterogeneous federated learning using dynamic model pruning and adaptive gradient | |
CN113361700A (zh) | 生成量化神经网络的方法、装置、系统、存储介质及应用 | |
WO2019234291A1 (en) | An apparatus, a method and a computer program for selecting a neural network | |
WO2021081854A1 (zh) | 一种卷积运算电路和卷积运算方法 | |
WO2020165491A1 (en) | Apparatus and a method for neural network compression | |
WO2023115814A1 (zh) | Fpga硬件架构及其数据处理方法、存储介质 | |
US20220300784A1 (en) | Computer-readable recording medium having stored therein machine-learning program, method for machine learning, and calculating machine |
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 |