CN113537447A - 多层神经网络的生成方法、装置、应用方法及存储介质 - Google Patents
多层神经网络的生成方法、装置、应用方法及存储介质 Download PDFInfo
- Publication number
- CN113537447A CN113537447A CN202010312882.0A CN202010312882A CN113537447A CN 113537447 A CN113537447 A CN 113537447A CN 202010312882 A CN202010312882 A CN 202010312882A CN 113537447 A CN113537447 A CN 113537447A
- Authority
- CN
- China
- Prior art keywords
- quantization
- layer
- neural network
- multilayer neural
- parameter
- 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/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/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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Abstract
本发明公开一种多层神经网络的生成方法、装置、应用方法及存储介质。所述生成方法包括:获取步骤,获取多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层;生成步骤,针对所述多层神经网络中的各量化层,基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数;以及更新步骤,基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。根据本公开,可改善多层神经网络的整体性能及降低多层神经网络的整体计算成本。
Description
技术领域
本发明涉及一种针对多层神经网络的建模领域,尤其涉及一种用于节省处理器资源的多层神经网络的生成方法、生成装置、应用方法及存储介质。
背景技术
在人工智能(AI)领域,基于深度学习(Deep Learning)的网络架构是当前使用最广泛的架构之一。基于深度学习的网络架构实际上是一种多层神经网络结构,例如,卷积神经网络(Convolutional neural network,CNN)是目前最常用的一种多层神经网络。在计算机视觉、计算机听觉和自然语言处理的技术领域中,卷积神经网络已经得到了广泛使用。但是,在目前所具有的多层神经网络中,其运行会产生大量的内存开销,占用大量的处理器资源。虽然在基于GPU的工作站或服务器上运行多层神经网络时能够取得较好的数据处理效果,但减少网络运行时占用的处理器资源仍然是提高网络性能的目标之一。从而,对于处理器资源有限的嵌入式设备(如智能手机、平板电脑等),多层神经网络几乎无法在嵌入式设备上运行。为了在嵌入式设备中应用多层神经网络、使得嵌入式设备能完成更加高效的运算,通常需要使用定点化操作来将多层神经网络中每层的浮点参数转换为定点参数,以适应嵌入式设备的运算需求。然而,由于定点化操作是有损操作,在多层神经网络中逐层执行定点化操作,将给整个系统带来累计误差,导致系统性能明显下降。
为了解决上述问题,量化神经网络被广泛用于嵌入式设备。通常,量化神经网络中量化层的量化方法涉及两种类型:一种类型是直接将待量化数据与预定义的量化阈值参数进行比较;另一种类型是基于可学习的量化区间参数,将待量化数据量化到由k比特表达的数值空间中,其中可学习的量化区间参数例如由量化上限和量化下限构成。例如,非专利文献“PACT:Parameterized Clipping Activation for Quantized Neural Networks”(Jungwook Choi,Zhuo Wang,Swagath Venkataramani,Pierce I-Jen Chuang,Vijayalakshmi Srinivasan,Kailash Gopalakrishnan;IBM Research AI,YorktownHeights,NY 10598,USA;arXiv:1805.06085v2[cs.CV]17Jul 2018)提出了一种训练量化层中可学习的量化区间参数的示例性方法。其主要操作为:为每一个量化层分配一个可学习的激活上限参数,并通过使用截断式RELU(整流线性单元,Rectified Linear Units)函数,将激活值限定在[0,可学习的上限参数]区间内;在量化阶段,对[0,可学习的上限参数]区间内的激活值线性量化为k比特;其中,该可学习的激活上限参数是损失函数值中的一个变量。
因此,一方面,在量化神经网络采用预定义的量化阈值参数作为量化层参数的情况下,可以应用联合定点化技术将量化神经网络转换为更适合硬件的定点神经网络,从而降低嵌入式设备运行时的计算开销。然而,由于量化阈值参数是预先定义,其意味着量化层对其输入数据的分布有所要求,比如半波高斯量化器(Half-Wave Gaussian Quantizer,HWGQ)要求量化层输入数据必须符合标准正态分布。这种对输入数据的要求,限制了神经网络的泛化能力,也限制了神经网络的整体性能。另一方面,在量化神经网络采用可学习的量化区间参数作为量化层参数的情况下,系统性能较采用预定义的量化阈值参数有较大提升,然而由于量化过程本身仍然涉及到大量浮点运算,网络运行时的计算开销并无法降低。
发明内容
鉴于上面的背景技术中的记载,本公开旨在解决上述问题中的至少一点。
根据本公开的一个方面,提供一种多层神经网络的生成方法,所述生成方法包括:获取步骤,获取多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层;生成步骤,针对所述多层神经网络中的各量化层,基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数;以及,更新步骤,基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。
根据本公开的另一个方面,提供一种多层神经网络的生成装置,所述生成装置包括:获取单元,其被构造为获取多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层;生成单元,其被构造为针对所述多层神经网络中的各量化层,基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数;以及,更新单元,其被构造为基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。
根据本公开的再一方面,提供一种多层神经网络的应用方法,所述应用方法包括:保存步骤,保存加载的多层神经网络;输入步骤,向保存的多层神经网络输入其所能执行的任务要求对应的数据集;以及,运行步骤,将所述数据集在所述多层神经网络中自上而下地进行卷积操作和量化操作,并输出结果。其中,在保存步骤中保存的多层神经网络是经上述生成方法而生成的多层神经网络。
根据本公开的又一方面,提供一种存储介质,用于存储在由处理器执行时能使得执行生成多层神经网络的指令,所述指令包括:获取步骤,获取多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层;生成步骤,针对所述多层神经网络中的各量化层,基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数;以及,更新步骤,基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。
根据本公开的又一方面,提供一种存储介质,用于存储在由处理器执行时能使得执行应用多层神经网络的指令,所述指令包括:保存步骤,其被构造为保存多层神经网络;输入步骤,其被构造为向保存的多层神经网络输入其所能执行的任务要求对应的数据集;以及,运行步骤,其被构造为将所述数据集在所述多层神经网络中自上而下地进行卷积操作和量化操作,并输出结果。
其中,在本公开中,所述生成步骤包括:基于所述量化比特参数和所述可学习的量化区间参数,确定量化步长;基于所述可学习的量化区间参数和所确定的量化步长,确定量化中心;以及,基于所确定的量化中心,确定所述量化阈值参数;其中所述量化比特参数基于量化特征图所需的比特数确定。
其中,在本公开中,所述更新步骤包括:子结构划分步骤,从所述多层神经网络中划分出至少一个子结构,其中,划分出的子结构的尾层为量化层;数据传递步骤,针对划分出的各个子结构,将除量化层以外的其它层的运算参数传递到量化层中,并基于传递的运算参数更新量化层中的所述所生成的量化阈值参数;以及,定点化步骤,对所述多层神经网络中的每层执行定点化处理,从而将浮点运算参数转换为定点参数。
如上所述可知,在本公开中,由于各量化层中的量化阈值参数是基于量化比特数和可学习的量化区间参数来生成得到的,因此各量化层中的量化阈值参数不是预先定义的,换句话说,根据本公开所生成得到的量化阈值参数是可学习的,因此各量化层对其输入数据的分布没有限制。从而,根据本公开所得到的多层神经网的整体性能(例如,精度)将得到改善。进一步地,在本公开中,在对待量化数据进行量化操作时,可根据所生成的量化阈值参数进行简单的数值比较运算,从而可降低多层神经网络的整体计算成本。
通过以下参考附图对典型实施例的说明,本公开的其它特征和优点将变得明显。
附图说明
并入说明书中并构成说明书的一部分的附图例示本公开的实施例,并且与实施例的描述一起用于解释本公开的原理。
图1是示意性地示出可实现根据本公开实施例的技术的硬件构造的框图。
图2是示意性地示出根据本公开实施例的多层神经网络的生成装置的构造框图。
图3是示意性地示出一种多层神经网络的示例。
图4是示意性地示出根据本公开实施例的多层神经网络的生成方法流程图。
图5是示意性地示出根据本公开实施例的如图4中所示的生成步骤S420的一种流程图。
图6是示意性地示出经由如图5中所示的步骤S422所得到的各子区间和各量化中心的示例。
图7A-7B是示意性地示出经由如图5中所示的步骤S423所得到的各量化阈值的示例。
图8是示意性地示出根据本公开实施例的如图4中所示的更新步骤S430的一种流程图。
图9A-9D是示意性地示出四种子结构的示例。
图10A示出了对图3所示的多层神经网络划分子结构的网络的示例,图10B为对图10A进行简化后的网络的示例。
图11是示意性地示出经量化阈值参数划分的数值空间的示例。
具体实施方式
下面将参照附图详细地描述本公开的示例性实施例。应注意,下面的描述实质上仅为说明性和示例性的,并且决不意图限制本公开及其应用或用途。除非另有具体说明,否则实施例中阐述的组件和步骤的相对布置、数值表达式和数值并不限制本公开的范围。另外,本领域技术人员已知的技术、方法和设备可能不会被详细地讨论,但在适当的情形中其应当是本说明书的一部分。
请注意,相似的附图标记和字母指代附图中相似的项目,因此,一旦一个项目在一个附图中被定义,则不必在下面的附图中对其进行讨论。下面将参照附图详细描述本公开。
(硬件构造)
首先将参照图1描述可实现下文中描述的技术的硬件构造。
硬件构造100例如包括中央处理单元(CPU)110、随机存取存储器(RAM)120、只读存储器(ROM)130、硬盘140、输入设备150、输出设备160、网络接口170和系统总线180。在一种实现方式中,硬件构造100可由计算机实现,诸如平板电脑、笔记本电脑、台式电脑或其他合适的电子设备。在另一种实现方式中,硬件构造100可由嵌入式设备实现,诸如数码相机、摄像机、网络相机或其他合适的电子设备。
在一种实现方式中,根据本公开的多层神经网络的生成装置由硬件或固件构造并且用作硬件构造100的模块或组件。例如,将在下文参照图2详细描述的多层神经网络的生成装置200用作硬件构造100的模块或组件。在另一种实现方式中,根据本公开的多层神经网络的生成方法、应用方法由存储在ROM 130或硬盘140中且由CPU 110执行的软件构造。例如,将在下文参照图4详细描述的过程400用作存储在ROM 130或硬盘140中的程序。
CPU 110是任意合适的可编程控制设备(诸如,处理器),并且可通过执行存储在ROM 130或硬盘140(诸如,存储器)中的各种应用程序来执行下文中要描述的各种功能。RAM120用于临时存储从ROM 130或硬盘140加载的程序或数据,并且也被用作CPU 110在其中执行各种过程(诸如,实施将在下文参照图4、图5及图8详细描述的技术)以及其他可用功能的空间。硬盘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中只示出一个硬件构造。但是,根据需要也可以使用多个硬件构造。
(多层神经网络的生成装置和生成方法)
接下来,将参照图2至图10B描述根据本公开的多层神经网络的生成。
图2是示意性地示出根据本公开实施例的多层神经网络的生成装置200的构造框图。其中,图2中所示的一些或全部模块可由专用硬件实现。如图2中所示,生成装置200包括获取单元210、生成单元220和更新单元230。进一步地,生成装置200还可包括存储单元240。
首先,例如,图1中所示的输入设备150接收由用户输入的用于得到多层神经网络的数据(例如,训练集、标注数据等)、根据特定任务处理对期望得到的多层神经网络的结构的定义数据等。接着,输入设备150经由系统总线180将所接收的数据传输到生成装置200。
然后,如图2中所示,获取单元210根据所接收的数据获取(也即,生成)多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层。其中,卷积层至少包含可学习的权重参数,量化层至少包含可学习的量化区间参数。作为一种示例,经由获取单元210所获取的多层神经网络例如为图3中所示的Alexnet二值量化神经网络。然而,显然不限于此。以图3中所示的神经网络为例,该神经网络具有如下两方面的特点。
特点1:二值化权重参数(Weights)。
根据权重参数的符号(正或负),使用1比特来表示权重参数,其中,对于正值的权重参数,二值化后以+1来表示,对于负值的权重参数,二值化后以-1来表示。进一步地,为了使二值化后的权重参数和输入到卷积层的输入特征图的卷积运算结果逼近全精权重参数和输入到卷积层的输入特征图的卷积运算结果,可在每个卷积滤波器中包含一个缩放系数α,利用该缩放系数α来提高使用二值化后的权重参数的运算结果的精度,即:利用二值化后的权重参数和α的乘积来逼近全精权重参数。该缩放系数α可按照以下公式(1)来计算。
其中,|W|l1表示滤波器在全精权重参数时对应的L1范数;n表示滤波器的权重参数的个数。
基于以上公式(1),可以以下公式(2)来表达基于二值化后的权重参数的卷积运算。
其中,Wb表示采用二值权重参数时的卷积滤波器;α表示采用二值权重参数时的卷积滤波器的缩放系数;表示卷积运算;bias表示卷积运算的偏置参数;X表示输入到卷积层的输入特征图(即卷积层的上一层的输出);Y表示卷积层的输出。
特点2:利用多比特来量化输入特征图(FeatureMaps)。
在量化层中,根据可学习的量化区间参数,可将来自量化层的上一层的输入特征图中的每个元素量化(映射)到由k比特表达的数值空间中去,k值为正整数,k值的选择取决于任务的性能要求(例如,多层神经网络的运算精度要求)。例如,假设量化层学习到的可学习的量化区间参数为[0,α],其可采用以下公式(3)的量化策略。
返回图2,在获取单元210获取了多层神经网络后,针对该多层神经网络中的各量化层,生成单元220基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数。其中,所述量化比特参数基于量化特征图所需的比特数确定。其中,所述比特数由期望得到的多层神经网络的精度确定。
在对各量化层生成相应的量化阈值参数后,更新单元230基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。其中所涉及的定点化操作例如可以是通用的定点化技术(诸如,Q值定点化等)。
另外,存储单元240可存储由更新单元230得到的定点神经网络,以便该定点神经网络可用于后续的诸如人脸检测等的特定任务处理。
图4中所示的方法流程图400是图2中所示的生成装置200的一种对应过程。如图4中所示,在获取步骤S410中,获取单元210根据所接收的数据获取(也即,生成)多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层。如上所述,作为一种示例,所获取的多层神经网络例如为图3中所示的Alexnet二值量化神经网络。然而,显然不限于此。
在生成步骤S420中,针对所获取的多层神经网络中的各量化层,生成单元220基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数。针对多层神经网络中的一个量化层,在一种实现方式中,在图4所示的生成步骤S420中,生成单元220参照图5执行相应的生成操作。
如图5中所示,在步骤S421中,生成单元220基于该量化层中的量化比特参数和可学习的量化区间参数,确定量化步长。其中,所述量化比特参数基于量化特征图所需的比特数确定,所述比特数由期望得到的多层神经网络的精度确定。其中,所述可学习的量化区间参数通常由量化上限和量化下限组成。所有超过量化上限的数值被裁剪至量化上限,所有低于量化下限的数值被裁剪至量化下限。整个量化区间的长度可根据特定任务处理的要求确定。在一种实现中,所确定的量化步长例如为所述可学习的量化区间参数所表示的长度与所述量化比特参数所表示的不同输出状态个数之间的商。作为一种示例,量化步长例如可通过如下的公式(4)计算得到。
其中,2k-1表示量化比特参数所表示的不同输出状态个数,k表示量化比特参数。
在步骤S422中,生成单元220基于可学习的量化区间参数和所确定的量化步长,确定量化中心。在一种实现中,例如如图6中所示,以量化比特参数k=2为例,生成单元220通过如下方式确定量化中心:
1)基于步骤S421中所确定的量化步长,将可学习的量化区域参数所表示的区间等间隔地分割为2k-1个子区间。例如,在k=2的情况下,可分割得到3个子区间,也即如图6中所示的子区间1、子区间2和子区间3。
2)将各子区间的端点值用作量化中心,其中一个量化中心的值对应于一个实际的量化输出值(将在步骤S423中描述)。例如,在k=2的情况下,可得到4个量化中心,也即如图6中所示的量化中心1、量化中心2、量化中心3和量化中心4。
在步骤S423中,生成单元220基于所确定的量化中心,确定所述量化阈值参数。在一种实现中,生成单元220将相邻的两个量化中心的值的平均值用作量化阈值参数。例如如图7A中所示,其中量化比特参数k依然为2,可得到3个量化阈值参数,也即如图7A中所示的量化阈值参数1、量化阈值参数2和量化阈值参数3,其中各量化阈值参数例如可通过如下的公式(5)计算得到。
量化阈值参数1(thres1)=(量化中心1的值+量化中心2的值)/2
量化阈值参数2(thres2)=(量化中心2的值+量化中心3的值)/2
量化阈值参数3(thres3)=(量化中心3的值+量化中心4的值)/2
…(5)
如步骤S422中所述,一个量化中心的值对应于一个实际的量化输出值。在这种情况下,量化输出值Y例如可通过如下的公式(6)表示。
其中,X表示量化层的输入,Y(X)表示输入X所对应的量化输出值。
此外,在量化中心1的值为0、且量化步长用β来表示的情况下,上述公式(6)可表示为如下的公式(7):
如图7A中所示,当量化中心1接近或等于0时,位于区间(量化中心1,量化阈值参数1)中的数值将被量化为一个接近或等于0的数值,从而导致部分信息丢失。在此种情况下,可以采用非均匀量化策略,即将量化阈值参数1与量化中心1重合。因此,在另一种实现中,生成单元220将第一个量化中心的值用作一个量化阈值参数,并将剩余的量化中心中相邻的两个量化中心的值的平均值用作其它的量化阈值参数。例如如图7B中所示,其中量化比特参数k依然为2,可得到3个量化阈值参数,也即如图7B中所示的量化阈值参数1、量化阈值参数2和量化阈值参数3,其中各量化阈值参数例如可通过如下的公式(8)计算得到。此外,在这种情况下,量化输出值Y例如依然可通过上述的公式(6)或(7)表示。
量化阈值参数1(thres1)=量化中心1的值
量化阈值参数2(thres2)=(量化中心2的值+量化中心3的值)/2
量化阈值参数3(thres3)=(量化中心3的值+量化中心4的值)/2
…(8)
返回图4,在针对多层神经网络中的各量化层均生成了对应的量化阈值参数之后,在更新步骤S430中,更新单元230基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。如上所述,其中所涉及的定点化操作例如可以是通用的定点化技术(诸如,Q值定点化等)。为了节约多层神经网络的存储空间,使得在嵌入式设备中运行多层神经网络成为可能,在一种实现方式中,在图4所示的更新步骤S430中,更新单元230参照图8执行相应的更新操作。
如图8中所示,在子结构划分步骤S431中,更新单元230从经由获取步骤S410所获取的多层神经网络中划分出至少一个子结构,其中,划分出的子结构的尾层为量化层。优选地,在经由获取步骤S410所获取的多层神经网络为卷积神经网络的情况下,为了使划分出的子结构中能够体现出卷积处理,则每个子结构中还可以包括卷积层。更优地,为了更好地体现卷积操作,每个子结构的首层为卷积层,底层为量化层。在卷积层和量化层之间可以有其他层,如规则化层(Batch normalization)、池化层、缩放层等。当然,在卷积层和量化层之间也可以没有其他层,即子结构中依次只有卷积层和量化层。图9A至图9D例示了四种子结构的示意图,但是,在本公开实施例的方案中,子结构的形式不限于图9A至图9D所示的结构,可以根据多层神经网络的实际结构,从中划分出满足上述条件的子结构。下面,以图3中所示的Alexnet二值量化神经网络为例,对子结构划分步骤S431中的划分子结构进行具体描述。
参见图3,二值量化神经网络中包含了8个卷积层,为了确保该神经网络的精度,可将首尾两个卷积层设为全精卷积层(即未进行二值化处理的卷积层),其余的卷积层为进行了二值化处理的二值卷积层。假设子结构的划分原则为:首层为二值卷积层、尾层为量化层,可从图3所示的神经网络中划分出五个子结构,划分了子结构的图3变为图10A所示的结构,图10A中每个虚线框表示一个子结构。其中,第一个子结构的首层为二值卷积层2,中间依次有池化层2和规则化层2,尾层为量化层2;第二个子结构的首层为二值卷积层3,中间有规则化层3,尾层为量化层3;第三个子结构的首层为二值卷积层4,中间有规则化层4,尾层为量化层4;第四个子结构的首层为二值卷积层5,中间依次有池化层5和规则化层5,尾层为量化层5;第五个子结构的首层为二值卷积层6,中间有规则化层6,尾层为量化层6。
为了简化神经网络的描述,可以依据表1为多层神经网络的各层赋以不同的字符标识。
层 | 字符标识 |
数据输入层 | D |
全精卷积层(含IP) | F |
二值卷积层(含IP) | C |
池化层 | P |
规则化层 | B |
量化层 | Q |
激活层(ReLU) | R |
损失层(Softmax WithLoss) | S |
Accuracy | A |
表1
其中,IP表示全连结层,其中的每个神经元连接所有的输入节点。基于表1所示的层与字符标识的对应关系,可将图10A所示的神经网络表达成如下所示的字符序列。
D→F→P→B→Q→C→P→B→Q→C→B→Q→C→B→Q→C→P→B→Q→C→B→Q→C→B→R→F→S→A
参照上述已划分的五个子结构可知,字符序列中的CPBQ子序列和CBQ子序列表示划分出的子结构,因此,通过采用诸如正则匹配子串查找等方式,可将划分出的五个子结构在上述字符序列表达成如下形式。
另外,由于神经网络是自上而下逐层运行的,因此为了确保神经网络的正确运行顺序,划分出的各个子结构之间不应当存在嵌套。例如,当神经网络中存在诸如C→C→B→Q→B→Q的子序列时,需按照如下所示的方式(无嵌套)来进行子结构的划分,即:中间的C→B→Q字符子序列表达为一个子结构,两端的C和B→Q不构成子结构。
而如果按照以下方式(有嵌套)划分子结构的话,则会出现运行错误的问题。
此外,如上所述可知,由于划分出的各个子结构均包含量化层,因此每个子结构均对应地包含经由生成步骤S420所生成的量化阈值参数。
返回图8,在对多层神经网络划分出各子结构后,在数据传递步骤S432中,针对划分出的各个子结构,更新单元230将除量化层以外的其它层的运算参数传递到量化层中,并基于传递的运算参数更新该子结构中量化层中的所生成的量化阈值参数。具体地,在数据传递步骤S432中,针对一个子结构的除量化层以外的每一层,自上而下地将上一层的运算参数和运算过程等价地传递到下一层,直至将各层的运算参数和运算过程都等价地传递到量化层,来更新量化层中的量化阈值参数。对于更新后的量化阈值参数而言,其可以反映出数据传递过程中所经历的各层的运算参数和运算过程(即各层的运算特性),在利用更新后的量化阈值参数进行量化(映射)处理时,可将整数作为量化(映射)处理的量化结果,从而可减少运算时所需的处理器资源。
下面以图9A所示的子结构为例,对数据传递步骤S432中的数据传递过程进行具体描述。图9A所示的子结构自上而下包括卷积层、规则化层和量化层。在卷积层中利用输入到卷积层的输入特征图(即卷积层的上一层的输出)X1进行上述公式(2)所示的运算后,向规则化层输出运算结果Y1。在规则化层中,对接收到的Y1进行规则化处理,并将规则化处理后的输出等价地传递给量化层。然后,在量化层中利用来自规则化层的输入特征图来更新上述公式(6)和(7)中的各量化阈值参数。图9B至图9D中所示的子结构可视为图9A中的子结构的变形,其传递过程与上述过程类似。例如,图9B所示的子结构相较于图9A的子结构,在卷积层和规则化层中多了池化层,由于池化操作本身不需要任何参数,因此其运算结果的传递与基于图9A的子结构的方式一致。图9C所示的子结构相较于图9A的子结构,取消了规则化层,增加了池化层,由于池化操作本身不需要任何参数,则卷积层的运算结果Y1被直接输入到量化层中。图9D所示的子结构相较于图9A的子结构,在卷积层和规则化层之间依次有池化层和缩放层,则卷积层中运算输出的Y1通过池化层传递到缩放层,在缩放层中利用输入的Y1进行缩放运算后,将输出结果传递到规则化层,最后由规则化层利用从缩放层输出的结果进行规则化处理,并将规则化处理后的结果传递给量化层。
下面,仍以图9A所示的子结构为例来说明具体的传递以及更新量化阈值参数的算法。
规则化层:卷积层的输出被传递到规则化层进行规则化处理,该规则化处理的过程可由如下公式(9)表达:
其中,mean为规则化层的均值参数,variance为规则化层的方差参数,scale为规则化层的缩放系数,gamma为规则化层的偏置参数,X2为卷积层传递到规则化层的输出(也即,Y1),Y2为规则化层的输出。其中,mean和variance为浮点类型的数值。
量化层:规则化层的输出被传递到量化层进行量化处理,从而量化层的输入可由如下的公式(10)表示:
以上述的公式(7)为例,则根据上述的公式(10),公式(7)可演化为如下的公式(11):
通过数学变换,公式(11)可演化为如下的公式(12):
经由上述的公式(12),可将量化层中经由生成步骤S420所生成的量化阈值参数(例如,thres1、thres2、thres3)更新为如下:
从而,上述的公式(12)可演化为如下的公式(13):
此外,为了使多层神经网络的结构变得更简单,在更新完各个子结构中的量化层中的量化阈值参数之后,更新单元230还可对子结构进行简化处理,也即,针对各个子结构,将运算参数已被完全传递到量化层的层从子结构中移除。由于除量化层外的其他层中,存在运算参数和运算过程已被完全等价地传递到量化层中的层。在运行多层神经网络时,这样的层已不再对数据进行运算,因此即使移除了这样的层也不会对运算精度产生负面影响。
以图9A所示的子结构为例,在将卷积层和规则化层中的运算参数和运算过程等价地传递到量化层后,一方面,由于规则化层的运算参数和运算过程已被等价地完全传递到量化层,因此,可将规则化层从子结构中移除。另一方面,虽然卷积层的卷积滤波器的缩放和偏置参数也被传递到量化层,但是,卷积层仍要运行与卷积滤波器的缩放和偏置参数都无关的运算,因此,卷积层不可被移除。经过上述的简化子结构的处理后,多层神经网络的结构可被大大地简化。基于上述简化原则,图10A所示的神经网络可变更为图10B所示的简化结构,其中,子结构中的量化层变为联合量化层。注意,这里是以图9A所示的子结构为例进行说明的,本公开实施例并不针对特定的子结构做限定,只要是子结构中的运算参数和运算过程都被完全地传递到量化层中的层,就可以从子结构中移除。
返回图8,在更新完各个子结构中的量化层中的量化阈值参数之后,在定点化步骤S433中,更新单元230对多层神经网络中的每层执行定点化处理,从而将浮点运算参数转换为定点参数。一种可选的定点化处理技术是Q值技术,该Q值为正整数N,表示将浮点数左移N位(放大操作,相当于乘以2的N次方)后取整,从而将浮点运算参数转换为定点参数(整数)。依据对多层神经网络的精度要求,既可以针对整个多层神经网络设定一个N值,也可以针对不同的层分别设定N值。下面以对图10B所示的经过了简化处理的神经网络的各层分别设置Q值为例,具体说明定点化过程。
由于图10B所示的神经网络中的五个子结构经过了数据传递步骤S432的基于数据传递的联合量化处理以及子结构简化处理,神经网络中的二值卷积层2至二值卷积层7中的运算参数为整数,因此,针对二值卷积层2至二值卷积层7的Q值可为1;由于其他层中的运算参数仍为浮点数,因此,针对全精卷积层1、量化层1的Q值为9,针对全精卷积层8的Q值为13,以此使图10B所示的神经网络中各层的运算参数都转换为定点参数。表2为针对图10B所示的神经网络设计的Q值表。
层 | Q值 |
全精卷积层1 | 9 |
量化层1 | 9 |
二值卷积层2 | 1 |
联合量化层2 | 1 |
二值卷积层3 | 1 |
联合量化层3 | 1 |
二值卷积层4 | 1 |
联合量化层4 | 1 |
二值卷积层5 | 1 |
联合量化层5 | 1 |
二值卷积层6(含IP) | 1 |
联合量化层6 | 1 |
二值卷积层7(含IP) | 1 |
全精卷积层8(含IP) | 13 |
表2
返回图4,在对多层神经网络更新完毕后,进一步地,在存储步骤S440中,存储单元240可存储由更新单元230得到的定点神经网络,以便该定点神经网络可用于后续的诸如人脸检测等的特定任务处理。
如上所述,在本公开中,由于各量化层中的量化阈值参数是基于量化比特数和可学习的量化区间参数来生成得到的,因此各量化层中的量化阈值参数不是预先定义的,换句话说,根据本公开所生成得到的量化阈值参数是可学习的,因此各量化层对其输入数据的分布没有限制。从而,根据本公开所得到的多层神经网的整体性能(例如,精度)将得到改善。进一步地,在本公开中,在对待量化数据进行量化操作时,可根据所生成的量化阈值参数进行简单的数值比较运算,从而可降低多层神经网络的整体计算成本。
(多层神经网络的应用方法)
在生成多层神经网络后,可将生成的多层神经网络应用于诸如人脸检测等的特定任务处理。例如,如上所述,本公开提供一种多层神经网络的应用方法,所述应用方法包括:保存步骤,保存加载的多层神经网络;输入步骤,向保存的多层神经网络输入其所能执行的任务要求对应的数据集;以及,运行步骤,将所述数据集在多层神经网络中自上而下地进行卷积操作和量化操作,并输出结果。其中,卷积操作基于输入的数据集或量化后的特征图以及多比特权重进行,量化操作将卷积操作输出的特征图量化为多比特表达的定点整数。其中,在所述运行步骤中涉及的量化操作包括:
1)基于多层神经网络中量化层中的量化阈值参数,将数值空间划分为各个子区间,其中一个子区间对应一个量化输出值。其中,数值空间表示输入到多层神经网络的各层中的实值数据集。以量化比特参数k=2为例,如上所述可知,在k=2的情况下,根据本公开可生成3个量化阈值参数(如图11中所示的量化阈值参数1、量化阈值参数2、量化阈值参数3),从而这3个量化阈值参数可将数值空间划分为4个子区间(如图11中所示的子区间1、子区间2、子区间3、子区间4)。其中,图11中所示的量化阈值参数1、量化阈值参数2、量化阈值参数3例如分别对应上述公式(13)中的thres1'、thres2'、thres3'。
2)确定卷积操作结果所属的子区间,并输出该子区间对应的量化输出值。例如,假设卷积操作结果属于图11中所示的子区间3,则根据上述的公式(13)可知,所输出的量化输出值例如为2。
上述的所有单元都是用于实现本公开中所述处理的示例性和/或优选模块。这些单元可以是硬件单元(诸如,现场可编程门阵列(FPGA)、数字信号处理器、专用集成电路等)和/或软件模块(诸如,计算机可读程序)。上面没有详尽地描述用于实现各步骤的单元。然而,当存在执行特定过程的步骤的情况下,可以存在用于实现该同一过程的对应功能模块或单元(通过硬件和/或软件实现)。通过描述的步骤和对应于这些步骤的单元的所有组合的技术方案包括在本申请的公开内容中,只要它们所构成的技术方案是完整的、适用的即可。
可以以多种方式来实施本发明的方法和装置。例如,可以通过软件、硬件、固件或其任何组合来实施本发明的方法和装置。除非另有具体说明,否则本方法的步骤的上述顺序仅旨在是说明性的,并且本发明的方法的步骤不局限于上述具体描述的顺序。此外,在一些实施例中,本发明还可以被实施为在记录介质中记录的程序,其包括用于实现根据本发明的方法的机器可读指令。因此,本发明也覆盖存储用于实现根据本发明的方法的程序的记录介质。
虽然已经通过示例详细地展示了本发明的一些具体实施例,但是本领域的技术人员应该理解,上述示例仅旨在是说明性的,并不限制本发明的范围。本领域的技术人员应该理解,上述实施例可以在不脱离本发明的范围和精神的情况下被修改。本发明的范围由所附权利要求约束。
Claims (16)
1.一种多层神经网络的生成方法,其特征在于,所述生成方法包括:
获取步骤,获取多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层;
生成步骤,针对所述多层神经网络中的各量化层,基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数;以及
更新步骤,基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。
2.根据权利要求1所述的生成方法,其中,所述生成步骤包括:
基于所述量化比特参数和所述可学习的量化区间参数,确定量化步长;
基于所述可学习的量化区间参数和所确定的量化步长,确定量化中心;以及
基于所确定的量化中心,确定所述量化阈值参数;
其中,所述量化比特参数基于量化特征图所需的比特数确定。
3.根据权利要求2所述的生成方法,其中,所述量化步长为所述可学习的量化区间参数所表示的长度与所述量化比特参数所表示的不同输出状态个数之间的商。
4.根据权利要求2所述的生成方法,其中,所述量化中心为各个子区间的端点值,其中所述子区间通过基于所述量化步长将所述可学习的量化区间参数所表示的区间进行分割得到。
5.根据权利要求2所述的生成方法,其中,所述量化阈值参数由相邻的两个量化中心的值的平均值构成,或由第一个量化中心的值及剩余的量化中心中相邻的两个量化中心的值的平均值构成。
6.根据权利要求1所述的生成方法,其中,所述更新步骤包括:
子结构划分步骤,从所述多层神经网络中划分出至少一个子结构,其中,划分出的子结构的尾层为量化层;
数据传递步骤,针对划分出的各个子结构,将除量化层以外的其它层的运算参数传递到量化层中,并基于传递的运算参数更新量化层中的所述所生成的量化阈值参数;以及
定点化步骤,对所述多层神经网络中的每层执行定点化处理,从而将浮点运算参数转换为定点参数。
7.根据权利要求6所述的生成方法,其中,划分出的子结构中包括卷积层。
8.根据权利要求6所述的生成方法,其中,在划分出的子结构中包括卷积层的情况下,在所述数据传递步骤中,
基于传递到量化层的归一化系数来更新量化层中的所述所生成的量化阈值参数;和/或
基于从卷积层传递到量化层的尺度系数来更新量化层中的所述所生成的量化阈值参数。
9.根据权利要求6所述的生成方法,其中,更新后的量化阈值参数通过基础系数、归一化系数和所述所生成的量化阈值参数之间针对基础系数的关联关系来表达。
10.根据权利要求6所述的生成方法,其中,所述更新步骤进一步包括:
子结构简化步骤,将运算参数已被完全传递到量化层的层从子结构中移除。
11.一种多层神经网络的生成装置,其特征在于,所述生成装置包括:
获取单元,其被构造为获取多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层;
生成单元,其被构造为针对所述多层神经网络中的各量化层,基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数;以及
更新单元,其被构造为基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。
12.一种多层神经网络的应用方法,其特征在于,所述应用方法包括:
保存步骤,保存加载的多层神经网络;
输入步骤,向保存的多层神经网络输入其所能执行的任务要求对应的数据集;以及
运行步骤,将所述数据集在所述多层神经网络中自上而下地进行卷积操作和量化操作,并输出结果。
13.根据权利要求12所述的应用方法,其中,在所述保存步骤中,加载的多层神经网络是经权利要求1-10中任一一项所述的生成方法而生成的多层神经网络。
14.根据权利要求12所述的应用方法,其中,所述量化操作包括:
基于所述多层神经网络中量化层中的量化阈值参数,将数值空间划分为各个子区间,其中一个子区间对应一个量化输出值;以及
确定卷积操作结果所属的子区间,并输出该子区间对应的量化输出值。
15.一种存储介质,用于存储在由处理器执行时能使得执行生成多层神经网络的指令,其特征在于,所述指令包括:
获取步骤,获取多层神经网络,其中,所述多层神经网络至少包括卷积层和量化层;
生成步骤,针对所述多层神经网络中的各量化层,基于该量化层中的量化比特参数和可学习的量化区间参数,生成量化阈值参数;以及
更新步骤,基于所生成的量化阈值参数和所述多层神经网络中各层的运算参数,对所述多层神经网络进行更新以获得定点神经网络。
16.一种存储介质,用于存储在由处理器执行时能使得执行应用多层神经网络的指令,其特征在于,所述指令包括:
保存步骤,其被构造为保存多层神经网络;
输入步骤,其被构造为向保存的多层神经网络输入其所能执行的任务要求对应的数据集;以及
运行步骤,其被构造为将所述数据集在所述多层神经网络中自上而下地进行卷积操作和量化操作,并输出结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010312882.0A CN113537447A (zh) | 2020-04-20 | 2020-04-20 | 多层神经网络的生成方法、装置、应用方法及存储介质 |
US17/230,577 US20210334622A1 (en) | 2020-04-20 | 2021-04-14 | Method, apparatus and storage medium for generating and applying multilayer neural network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010312882.0A CN113537447A (zh) | 2020-04-20 | 2020-04-20 | 多层神经网络的生成方法、装置、应用方法及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113537447A true CN113537447A (zh) | 2021-10-22 |
Family
ID=78123590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010312882.0A Pending CN113537447A (zh) | 2020-04-20 | 2020-04-20 | 多层神经网络的生成方法、装置、应用方法及存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210334622A1 (zh) |
CN (1) | CN113537447A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210156538A (ko) * | 2020-06-18 | 2021-12-27 | 삼성전자주식회사 | 뉴럴 네트워크를 이용한 데이터 처리 방법 및 데이터 처리 장치 |
-
2020
- 2020-04-20 CN CN202010312882.0A patent/CN113537447A/zh active Pending
-
2021
- 2021-04-14 US US17/230,577 patent/US20210334622A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210334622A1 (en) | 2021-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Imani et al. | Revisiting hyperdimensional learning for fpga and low-power architectures | |
CN110880038B (zh) | 基于fpga的加速卷积计算的系统、卷积神经网络 | |
Liaw et al. | Fast exact k nearest neighbors search using an orthogonal search tree | |
JP2019160319A (ja) | 多階層ニューラルネットワークモデルを最適化して適用する方法及び装置、及び記憶媒体 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
Salamat et al. | Accelerating hyperdimensional computing on fpgas by exploiting computational reuse | |
Imani et al. | Fach: Fpga-based acceleration of hyperdimensional computing by reducing computational complexity | |
US11610124B2 (en) | Learning compressible features | |
CN110969251A (zh) | 基于无标签数据的神经网络模型量化方法及装置 | |
Szlam et al. | Fast approximations to structured sparse coding and applications to object classification | |
US20200302283A1 (en) | Mixed precision training of an artificial neural network | |
CN110728350A (zh) | 用于机器学习模型的量化 | |
Kang et al. | Xcelhd: An efficient gpu-powered hyperdimensional computing with parallelized training | |
CN110263917B (zh) | 一种神经网络压缩方法及装置 | |
Liu et al. | Efficient neural networks for edge devices | |
CN112200296A (zh) | 网络模型量化方法、装置、存储介质及电子设备 | |
Gupta et al. | Align: A highly accurate adaptive layerwise log_2_lead quantization of pre-trained neural networks | |
CN113537447A (zh) | 多层神经网络的生成方法、装置、应用方法及存储介质 | |
CN115136141A (zh) | 用于实现混合信号集成电路的受限计算的操作变换的系统和方法 | |
CN111737406A (zh) | 文本检索方法、装置及设备、文本检索模型的训练方法 | |
JP2015162113A (ja) | システムパラメタ学習装置、情報処理装置、方法、及びプログラム | |
CN112036554B (zh) | 神经网络模型的处理方法、装置、计算机设备和存储介质 | |
Hirose et al. | Quantization error-based regularization in neural networks | |
CN113177634A (zh) | 基于神经网络输入输出量化的图像分析系统、方法和设备 | |
KR20210116182A (ko) | 소프트맥스 연산 근사화 방법 및 장치 |
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 |