CN113396427A - 用于人工神经网络的比特量化的方法和系统 - Google Patents
用于人工神经网络的比特量化的方法和系统 Download PDFInfo
- Publication number
- CN113396427A CN113396427A CN202080008330.9A CN202080008330A CN113396427A CN 113396427 A CN113396427 A CN 113396427A CN 202080008330 A CN202080008330 A CN 202080008330A CN 113396427 A CN113396427 A CN 113396427A
- Authority
- CN
- China
- Prior art keywords
- neural network
- artificial neural
- layers
- bit quantization
- layer
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 391
- 238000013139 quantization Methods 0.000 title claims abstract description 311
- 238000000034 method Methods 0.000 title claims abstract description 175
- 230000004913 activation Effects 0.000 claims description 92
- 238000004364 calculation method Methods 0.000 claims description 46
- 238000013527 convolutional neural network Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 31
- 238000012549 training Methods 0.000 claims description 17
- 238000013473 artificial intelligence Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 47
- 230000006870 function Effects 0.000 description 32
- 238000007792 addition Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 11
- 230000009467 reduction Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 238000011176 pooling Methods 0.000 description 7
- 230000007423 decrease Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013529 biological neural network Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000010187 selection method Methods 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- 230000000946 synaptic effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/048—Activation functions
-
- 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/0495—Quantised networks; Sparse networks; Compressed networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Analysis (AREA)
Abstract
本公开提供了一种人工神经网络的比特量化方法。所述方法可以包括:(a)在人工神经网络中选择待量化的一个参数或一个参数组;(b)比特量化以将所选参数或参数组的数据表示的大小减小到比特单位;(c)确定所述人工神经网络的精度是否等于或大于预定目标值;(d)当所述人工神经网络的精度等于或大于所述目标值时,重复步骤(a)至(c)。
Description
技术领域
本公开涉及一种用于人工神经网络的比特量化的方法和系统,更具体地,涉及一种能够在保持人工神经网络的基本精度的同时减少存储使用的用于比特量化的方法和系统。
背景技术
人工神经网络是一种模拟生物大脑的计算机结构。在人工神经网络中,大脑中神经元对应的节点相互连接,且神经元之间突触耦合的强度用权重表示。人工神经网络通过人工神经元(节点)的训练,改变节点之间突触耦合的强度,从而构建具有给定问题解决能力的模型。
人工神经网络可以指多层感知机(multi-layer perceptron),狭义上的一种前馈神经网络,但不限于此,而可能包括各种类型的神经网络,如径向基函数网络(radialbasis function network)、自组织网络(self-organizing network)和循环神经网络(recurrentneural network)。
近来,多层深度神经网络被广泛用作图像识别技术,且多层深度神经网络的一个代表示例是卷积神经网络(CNN)。在一般的多层前馈神经网络的情况下,输入数据仅限于一维形式,但如果将由两到三个维度组成的图像数据平坦化为一维数据,就会丢失空间信息,且在保持图像的空间信息的同时训练神经网络可能很困难。然而,卷积神经网络可以在保持二维(2D)或三维(3D)空间信息的同时训练视觉信息。
具体地,卷积神经网络在识别视觉数据的模式方面是有效的,因为它包括一个最大池化(Max-Pooling)过程,该过程在保持图像空间信息的同时有效识别相邻图像的特征,并收集和强化提取的图像的特征。然而,卷积神经网络等具有多层结构的深度神经网络使用深层结构来提供高识别性能,但其结构非常复杂,需要大量的计算和大量的存储。在多层深度神经网络中,内部发生的大部分操作都是使用乘法和加法或累加来执行的,人工神经网络中节点之间的连接数量很大,需要乘法的参数例如权重数据、特征图(feature map)数据、激活图(activation map)数据等都很大,因此在训练过程或识别过程中需要大量的计算。
发明内容
技术问题
如上所述,在卷积神经网络等多层深度神经网络的训练和识别过程中,需要大量的计算和存储。作为减少多层深度神经网络的计算量和存储量的方法,可以使用以比特为单位减小人工神经网络计算中使用的参数的数据表示大小的比特量化方法。传统的比特量化方法使用均匀比特量化,用相同的比特数对人工神经网络的所有参数进行量化,而传统的均匀比特量化方法存在的问题是不能准确反映对于在人工神经网络中使用的每个参数改变比特数对整体性能的影响。
本公开公开的实施方案旨在提供一种方法和系统,用于将构成人工神经网络的每个参数数据或根据特定标准分组的参数数据量化为特定比特数,从而能在提高人工神经网络的整体性能的同时保持人工智能的准确性。
解决问题的方法
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的方法。该方法包括以下步骤:(a)从人工神经网络中使用的多个参数中选择至少一个参数;(b)比特量化以将所选参数的操作所需的数据大小减小到比特单位;(c)确定人工神经网络的精度是否大于或等于预定目标值;(d)如果人工神经网络的精度大于或等于目标值,则对该参数重复执行步骤(b)到(c),以进一步减少该参数的数据表示中的比特数。另外,该方法还包括步骤(e)如果人工神经网络的精度小于目标值,则将该参数的比特数恢复到人工神经网络的精度大于目标值时的比特数,然后重复步骤(a)到(d)。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的方法。该方法包括以下步骤:(a)通过参数选择模块选择多个层中的至少一层;(b)通过比特量化模块比特量化以将所选层的参数的数据表示的大小减小到比特单位;(c)由精度确定模块确定人工神经网络的精度是否大于或等于预定目标值;以及(d)当人工神经网络的精度大于或等于目标值时,重复步骤(a)到(c)。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的方法。该方法包括以下步骤:(a)从来自人工神经网络的权重、特征图和激活图数据中选择一个或多个数据或一组或多组数据;(b)通过比特量化模块比特量化以将所选数据的数据表示大小减小到比特单位;(c)测量人工神经网络的人工智能精度是否大于或等于目标值;并且(d)重复步骤(a)到(c),直到人工神经网络的数据中没有更多的数据需要量化。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的方法。该方法包括:根据人工神经网络的一个或多个参数训练人工神经网络;根据根据实施方案的人工神经网络的比特量化方法对人工神经网络的一个或多个参数执行比特量化;根据执行了比特量化的人工神经网络的一个或多个参数训练人工神经网络。
根据本公开的另一个实施方案,提供了一种用于量化人工神经网络的比特的系统。该系统可以包括:参数选择模块,其用于选择人工神经网络中的至少一个参数;比特量化以将所选参数的数据表示的大小减小到比特单位;以及精度确定模块,其确定人工神经网络的精度是否大于或等于预定目标值。若人工神经网络的精度大于目标值,精度确定模块控制参数选择模块和比特量化模块执行量化,从而在保持人工神经网络的精度高于目标值的同时使得多个参数中的每个具有最小比特数。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的系统。该系统包括参数选择模块,其用于在构成人工神经网络的多个层中选择至少一层;比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及精度确定模块,其确定人工神经网络的精度是否大于或等于预定目标值,若人工神经网络的精度等于或大于目标值,则精度确定模块控制参数选择模块和比特量化模块对多个层中的另一层进行比特量化,比特量化模块为多个层的所有权重设置n比特(其中n为n>0的整数),并为多个层的输出数据设置m比特(其中m为m>0的整数)。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的系统。该系统包括:参数选择模块,其用于从构成人工神经网络的多个层中选择至少一层;比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及精度确定模块,其确定人工神经网络的精度是否大于或等于预定目标值,其中当人工神经网络的精度大于或等于目标值时,精度确定模块控制参数选择模块和比特量化模块对多个层中的另一层进行比特量化,其中比特量化模块为多个层的权重和输出数据分配n比特(n为n>0的整数),并不同地设置分配给多个层中的每层的比特数。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的系统。该系统包括:参数选择模块,其用于从构成人工神经网络的多个层中选择至少一层;比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及精度确定模块,其确定人工神经网络的精度是否大于或等于预定目标值,当人工神经网络的精度大于或等于目标值时,其中精度确定模块控制参数选择模块和比特量化模块对多个层中的另一层执行比特量化,并且其中比特量化模块单独且不同地分配多个层的权重和输出数据的比特数。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的系统。该系统包括:参数选择模块,其用于从构成人工神经网络的多个层中选择至少一层;比特量化模块,其用于将用于储存所选层的参数的存储大小减小到比特单位;以及精度确定模块,其确定人工神经网络的精度是否大于或等于预定目标值,其中当人工神经网络的精度大于或等于目标值时,精度确定模块控制参数选择模块和比特量化模块对多个层中的另一层执行比特量化,并且其中比特量化模块为多个层中使用的每个权重分配不同的比特数。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的系统。该系统包括:参数选择模块,其用于从构成人工神经网络的多个层中选择至少一层;比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及精度确定模块,其确定人工神经网络的精度是否等于或大于预定目标值,其中当人工神经网络的精度大于或等于目标值时,精度确定模块控制参数选择模块和比特量化模块对多个层中的另一层执行比特量化,并且其中比特量化模块对从多个层输出的输出数据的特定单元单独地分配不同的比特数。
根据本公开的实施方案,提供了一种用于量化人工神经网络的比特的系统。该系统包括:参数选择模块,其用于从构成人工神经网络的多个层中选择至少一层;比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及精度确定模块,其确定人工神经网络的精度是否大于或等于预定目标值,其中当人工神经网络的精度大于或等于目标值时,精度确定模块控制参数选择模块和比特量化模块对多个层中的另一层执行比特量化,并且其中比特量化模块为从多个层输出的输出数据的各个值分配不同的比特。
本发明的效果
根据本公开的各种实施方案,可以通过量化人工神经网络中例如训练或推断的操作所需的数据的比特数来提高整体操作性能。
另外,可以实现一种人工神经网络,该人工神经网络在减少实现人工神经网络所需的硬件资源,并减少功耗和存储使用量的同时不会损害人工智能精度。
附图说明
将参考以下描述的附图描述本公开的实施方案,其中相同的附图标记表示相同的元件,但不限于此。
图1示出了根据本公开的实施方案的用于使用多个层和多个层权重对于输入数据获得输出数据的人工神经网络的示例。
图2至3根据本公开的实施方案说明图1所示的人工神经网络的具体实现示例。
图4示出了根据本公开的实施方案的包括多个层的人工神经网络的另一示例。
图5示出了根据本公开的实施方案的用于输入数据和卷积层中的卷积操作的权重核。
图6示出了根据本公开的实施方案的通过使用第一权重核对输入数据执行卷积来生成第一激活图的过程。
图7示出了根据本公开的实施方案的通过使用第二权重核对输入数据执行卷积来生成第二激活图的过程。
图8示出了根据本公开的实施方案的将卷积层作为矩阵来进行计算的过程。
图9示出了根据本公开实施方案的矩阵中的全连接层的操作过程。
图10示出了根据本公开实施方案的将卷积层作为矩阵的比特量化过程。
图11是示出根据本公开的实施方案的量化人工神经网络的比特的方法的流程图。
图12是示出根据本公开的另一个实施方案的量化人工神经网络的比特的方法的流程图。
图13是示出根据本公开的其他一个实施方案的人工神经网络的比特量化方法的流程图。
图14是示出根据本公开的实施方案的人工神经网络的每层的计算量的示例的图表。
图15是示出根据本公开的实施方案的其中通过前向比特量化方法执行比特量化的人工神经网络的每层比特数的图表。
图16是示出根据本公开的实施方案的其中通过反向比特量化方法执行比特量化的人工神经网络的每层比特数的图表。
图17是示出根据本公开的实施方案的其中通过高计算成本层第一比特量化方法执行比特量化的人工神经网络的每层比特数的图表。
图18是示出根据本公开的实施方案的其中通过低计算成本层第一比特量化方法执行比特量化的人工神经网络的每层比特数的图表。
图19示出了根据本公开的实施方案的人工神经网络的硬件实现的示例。
图20示出了根据本公开的另一个实施方案的人工神经网络的硬件实现的示例。
图21示出了根据本公开的其他一个实施方案的人工神经网络的硬件实现的示例。
图22示出了根据本公开的实施方案的用于对人工神经网络执行比特量化的系统的配置。
具体实施方式
下面将结合附图,对实现本公开的具体细节进行详细说明。然而,在以下描述中,如果本公开的主题可能不必要地晦涩难懂,则可能省略广为人知的功能或配置的详细描述。
在附图中,对相同或相应的元件指定相同的参考数字。另外,在以下实施方案的描述中,可以省略相同或对应元件的多余描述。然而,即使省略了对元件的描述,也意味着这种元件不包括在任何实施方案中。
在本公开中,″参数″可以表示构成人工神经网络的每一层的人工神经网络或权重数据、特征图数据和激活图数据中的一个或多个。另外,″参数″可以表示人工神经网络或构成由这种数据表示的人工神经网络的每层。另外,在本公开中,″比特量化″可以表示操作或用于减少表示参数或参数组的数据表示中的比特数的操作。
本公开提供了量化方法和系统的各种实施方案,该量化方法和系统用于将相关操作中使用的参数的数据表示的大小减小到比特单位以减少数字硬件系统的计算、存储使用和功耗。在一些实施方案中,本公开的比特量化方法和系统可以将人工神经网络操作中使用的参数的大小减小到比特单位。通常,人工神经网络的计算使用32位、16位或8位单元的数据结构(例如,CPU、GPU、内存、缓存、缓冲区等)。因此,本公开的量化方法和系统可以将用于计算人工神经网络的参数的大小减少到32、16和8位以外的比特数。此外,可以单独且不同地为人工神经网络的每个参数或参数组分配特定数量的比特。
在一些实施方案中,本公开的比特量化方法和系统可以为人工神经网络模型的所有权重设置n比特,其中n为n>0的整数,并为每层的输出数据设置m比特,其中m为m>0的整数。
在另一个实施方案中,本公开的比特量化方法和系统可以为人工神经网络模型的每层的权重和输出数据分配n比特,其中n可以对于每层设置为不同的数字。
在另一个实施方案中,本公开的比特量化方法和系统为人工神经网络模型的每层的权重和输出数据分配不同的比特,而且,可以对于对应层的权重和输出特征图参数向每层分配不同的比特数。
本公开的比特量化方法和系统可以应用于各种人工神经网络。例如,当本公开的比特量化方法和系统应用于卷积人工神经网络(CNN)时,可以将不同的比特单独分配给此人工神经网络的每层中使用的权重核。
在另一个实施方案中,本公开的比特量化方法和系统可以为多层人工神经网络模型的每层中使用的每个权重分配不同的比特,将单独的比特分配给每层输出数据的特定单元,或为输出数据的各个值分配不同的比特。
上述根据本公开各种实施方案的比特量化方法和系统可以将上述实施方案中的任何一个应用于人工神经网络模型,但不限于此,且这些实施方案中的一个或多个可以组合并应用于人工神经网络模型。
图1示出了根据本公开的实施方案的使用多个层和多个层权重对于输入数据获得输出数据的人工神经网络100的示例。
通常,例如人工神经网络100的多层人工神经网络包括基于机器学习技术和认知科学中的生物神经网络的结构实现的统计训练算法,或者执行其算法的结构。即,在人工神经网络100中,与生物神经网络一样,节点(即通过组合突触形成网络的人工神经元)反复调整突触的权重,可以通过训练创建具有解决问题能力的机器学习模型以减少对应于特定输入的正确输出与推断输出之间的误差。
在一个示例中,人工神经网络100可以实现为多层感知机(MLP),该多层感知机由包括一个或多个节点及其间的连接的层组成。然而,根据本实施方案的人工神经网络100不限于MLP的结构,而是可以使用具有多层结构的各种人工神经网络结构中的一种来实现。
如图1所示,当提供来自外部的输入数据时,人工神经网络100配置为通过均由一个或多个节点组成的多个层1101、1102、...、110N输出与输入数据相对应的输出数据。
一般而言,人工神经网络100的训练方法包括通过输入教师信号(正确答案)来训练以优化以解决问题的监督学习方法、不需要教师信号的无监督学习方法以及使用监督学习和无监督学习的半监督学习方法。图1所示的人工神经网络100根据用户的选择使用监督学习方法、无监督学习方法和半监督学习方法中的至少一种。因此,可以训练生成输出数据的人工神经网络100。
图2至图3根据本公开的一个实施方案说明图1所示的人工神经网络100的具体实现示例。
参考图2,人工神经网络200可以包括输入节点(X0,X1...Xn-1,Xn),输入数据210输入到该输入节点(X0,X1...Xn-1,Xn)中,输出与输入数据210对应的输出数据的输出节点(Y0,Y1...Yn-1,Yn),以及位于输入节点和输出节点之间的隐藏节点和多个参数。输入节点(X0,X1...Xn-1,Xn)是配置输入层220的节点并从外部接收输入数据210(例如图像),且输出节点(Y0,Y1...Yn-1,Yn)是配置输出层240的节点并且可以向外部输出输出数据。位于输入节点和输出节点之间的隐藏节点是配置隐藏层230的节点并且可以将输入节点的输出数据连接到输出节点的输入数据。如图2所示,输入层220的每个节点可以完全连接到输出层240的每个输出节点,或者可以不完全连接。另外,输入节点可以用于接收来自外部的输入数据并将其传输到隐藏节点。在这种情况下,隐藏节点和输出节点可以对数据进行计算,并且可以通过将接收到的输入数据乘以参数或权重来进行计算。当每个节点的计算完成时,将所有的计算结果相加,然后可以使用预设的激活函数输出输出数据。
隐藏节点和输出节点(Y0,Y1...Yn-1,Yn)具有激活函数。该激活函数可以是函数、符号函数、线性函数、logistic sigmoid函数、超正切函数、ReLU函数和归一化指数函数(softmax function)中的一种。该激活函数可以由技术人员根据人工神经网络的学习方法适当确定。
人工神经网络200通过重复地将权重值更新或修改为适当的值来进行机器学习。人工神经网络200的机器学习的代表性方法包括监督学习和无监督学习。
监督学习是在任意神经网络要为输入数据计算的目标输出数据明确定义的状态下更新权重值的一种学习方法,从而使得通过将输入数据放入神经网络而得到的输出数据更接近目标数据。图2的多层人工神经网络200可以基于监督学习而生成。
参考图3,作为多层人工神经网络的另一个示例,有一个卷积神经网络(CNN)300,它是一种深度神经网络(DNN)。卷积神经网络(CNN)是由一个或几个卷积层、一个池化层和一个全连接层组成的神经网络。卷积神经网络(CNN)具有适合训练二维数据的结构,可以通过反向传播算法(backpropagation algorithm)进行训练。它是DNN的代表性模型之一,广泛应用于图像中的目标分类和目标检测等各个应用领域。
在此,需要说明的是,本公开的多层人工神经网络不限于图2和3所示的人工神经网络,并且可以通过机器学习其他各种人工神经网络中的其他类型的数据来获得训练模型。
图4示出了根据本公开的实施方案的包括多个层的人工神经网络的另一示例。图4所示的人工神经网络400是卷积人工神经网络(CNN),包括多个卷积层(CONV)420、多个子采样层(SUBS)430和多个全连接层(FC)440。
CNN 400的CONV 420通过将卷积权重核应用于输入数据410来生成特征图。这里,CONV 420可以作为一种模板,用于从高维输入数据(例如,图像或视频)提取特征。具体地,可以在改变输入数据410的一部分的位置的同时多次重复应用一个卷积以为整个输入数据410提取特征。另外,SUBS 430用于减小由CONV 420生成的特征图的空间分辨率。子采样的作用是降低输入数据(例如特征图)的维度,并且由此可以降低输入数据410的分析问题的复杂度。SUBS 430可以使用取最大值的最大池化算子或取特征图一部分值的平均值的平均池化算子。SUBS 430不仅通过池化操作降低了特征图的维度,而且还具有使特征图对移位和失真具有鲁棒性的效果。最后,FC 440可执行基于特征图对输入数据进行分类的函数。
CNN 400可以根据CONV 420、SUBS 430和FC 440的层数或算子的类型来执行各种配置和函数。例如,CNN 400可以包括例如AlexNet、VGGNet、LeNet和ResNet的各种CNN配置中的任何一种,但不限于此。
当输入图像数据作为输入数据410时,具有上述配置的CNN 400的CONV 420可以将权重应用于输入数据410以通过卷积操作生成特征图,并且在这种情况下,一组要使用的权重可以称为权重核。权重核由一个n x m x d(这里,n表示与输入图像数据一样具有特定大小的行,m表示特定大小的列,d表示输入图像数据的通道,并且这些维度的数量是大于或等于1的整数)三维矩阵构成,并且可以通过以指定间隔遍历输入数据410而通过卷积操作生成特征图。此时,如果输入数据410是具有多个通道(例如RGB的三个通道)的彩色图像,则权重核可以遍历输入数据410的每个通道,计算卷积,然后生成对于每个通道的特征图。
图5示出了根据本公开的实施方案的用于卷积操作的卷积层输入数据和权重核。
如图所示,输入数据510可以是由特定大小的行530和特定大小的列540构成的二维矩阵中显示的图像或视频。如上所述,输入数据510可以具有多个通道550,其中通道550可以表示输入数据图像的颜色分量的数量。同时,权重核520可以是用于卷积以在扫描输入数据510的预定部分时提取相应部分的特征的权重核。与输入数据图像一样,权重核520可以配置为具有特定大小的行560、特定大小的列570和特定数量的通道580。通常,权重核520的行560和列570的大小设置为相同,并且通道580的数量可以与输入数据图像的通道550的数量相同。
图6示出了根据本公开的实施方案的用于通过使用第一核对输入数据执行卷积来生成第一激活图的过程。
第一权重核610可以是指示图2的权重核620的第一通道的权重核。第一权重核610可以通过以指定的间隔遍历输入数据并执行卷积来最终生成第一激活图630。当第一权重核610应用于输入数据510的一部分时,通过将在该部分的特定位置处的每个输入数据值与权重核的相应位置处的值相乘而生成的所有值相加来执行卷积。通过此卷积过程,生成第一结果值620,并且每次第一权重核610遍历输入数据510时,生成卷积的结果值以形成特征图。特征图的每个元素值通过卷积层的激活函数被转换成第一激活图630。
图7示出了根据本公开的实施方案通过使用第二权重核对输入数据执行卷积来生成第二激活图的过程。
如图6所示,在使用第一权重核610对输入数据510执行卷积以生成第一激活图620之后,如图7所示,可以通过使用第二权重核710对输入数据510执行卷积来生成第二激活图730。
第二权重核710可以是指示图5的权重核520的第二通道的权重核。第二权重核710可以通过以指定的间隔遍历输入数据并执行卷积来最终生成第二激活图730。如图6所示,当将第二权重核710应用于输入数据510的一部分时,通过将由使得该部分的特定位置处的每个输入数据值与权重核的相应位置处的值相乘而生成的所有值相加来执行卷积。通过此卷积过程,生成第二结果值720,并且每次第二权重核710遍历输入数据510时,生成卷积的结果值以形成特征图。特征图的每个元素值通过卷积层的激活函数被转换成第二激活图730。
图8示出了根据本公开实施方案的当输入特征图具有一个通道时矩阵中的卷积层的计算过程。
图8所示的卷积层420可以对应于图4中所示的CONV 420。在图8中,输入到卷积层420的输入数据810显示为大小为6×6的二维矩阵,并且权重核814显示为大小为3×3的二维矩阵。然而,卷积层420的输入数据810和权重核814的大小不限于此,并且可以根据包括卷积层420的人工神经网络的性能和要求进行各种改变。
如图所示,当输入数据810输入到卷积层420时,权重核814以预定间隔(例如1)遍历输入数据810,并因此,可以执行逐元素相乘(elementwise multiplication),其中输入数据810和权重核814中相同位置的值相乘。权重核814以规则的间隔遍历输入数据810并且通过逐元素相乘对获得的值求和816。
具体地,权重核814将在输入数据810的特定位置820处计算的逐元素相乘的值(例如″3″)分配给特征图818的对应元素824。接下来,权重核814将在输入数据810的下一个位置822处计算的逐元素相乘的值(例如″1″)分配给特征图818的对应元素826。以这种方式,当权重核814遍历输入数据810并且分配计算出的逐元素相乘的值,就完成了大小为4×4的特征图818。此时,如果输入数据810由例如三个通道(R通道、G通道、B通道)组成,则可以通过卷积生成每个通道的特征图,其中对于每个通道相同的权重核或不同的通道对于输入数据810的每个通道遍历数据并执行逐元素相乘812和求和816。
再参考图4,CONV 420可以通过将激活函数应用于根据参考图2-8所描述的方法而生成的特征图来生成作为卷积层的最终输出结果的激活图。这里的激活函数可以是sigmoid函数、径向基函数(RBF)、整流线性单元(ReLU)等各种激活函数中的任意一种,或者是各种激活函数、其修改函数、或其他函数中的任意一种。
同时,SUBS 430接收激活图作为输入数据,该激活图是CONV420的输出数据。SUBS430执行减小激活图的大小或突出显示特定数据的函数。当SUBS 430使用最大池化时,选择并输出激活图特定区域中值的最大值。以这种方式,通过SUBS 430的拉取过程(pullingprocess)可以去除输入数据的噪声,并且可以减小数据的大小。
另外,FC 440可以接收SUBS 430的输出数据并生成最终输出数据450。将从SUBS430提取的激活图一维平坦化以输入到全连接层440。
图9示出了根据本公开实施方案的全连接层作为矩阵的操作过程。
图9所示的全连接层440可以对应于图4的FC 440。如以上所述,从最大池化层430提取的激活图可以平坦化为一维以输入到全连接层440。在一维上平坦化的激活图可以接收为来自全连接层440的输入数据910。在全连接层440中,可以使用一维权重核914来执行输入数据910和权重核914的逐元素相乘912。可以对输入数据910和权重核914的逐元素相乘的结果进行求和916并且将其作为输出数据918输出。在这种情况下,输出数据918可以表示输入到CNN 400的输入数据410的推断值。
具有上述配置的CNN 400接收用于多层中的每层的二维或一维矩阵的输入数据,并通过例如逐元素相乘和权重核求和的复杂操作对输入数据执行训练和推断过程。因此,根据构成CNN 400的层数或操作的复杂性,数据训练和推断所需的资源(例如,算子的数量或存储量)可能会显着增加。因此,为了减少诸如CNN 400的具有多个层的人工神经网络的计算量和存储量,可以对用于每层的输入和输出数据执行比特量化。在一个实施方案中,对于需要大量计算和存储的CONV 420和FC 440可以执行具有多个层的CNN 400的比特量化。
图10示出了根据本公开的实施方案的将卷积层作为矩阵的比特量化过程。
在卷积层中执行的比特量化可以包括权重或权重核量化(1028),用于减少卷积操作中使用的权重核的每个元素值的比特数;和/或特征图量化或激活图量化(1030),用于减少特征图或激活图的每个元素值的比特数。
根据实施方案的卷积层的比特量化过程可以如下执行。在通过将权重核1014应用于卷积层的输入数据1010来执行卷积之前,对权重核1014执行量化716过程以生成量化权重核1018。另外,通过将量化权重核1018应用于输入数据1010并执行逐元素相乘(1012)和求和(1020)以输出卷积值以生成特征图,然后可以通过激活函数生成激活图1022。接下来,可以通过激活图的量化1024来生成最终的量化激活图1026。
在上述卷积层的比特量化过程中,权重核量化1028可以使用以下等式来执行。
其中,af是要量化的权重值,例如一个实数的权重和权重核中的每个权重,k代表要量化的比特数,aq代表af以k比特量化后的结果。即根据上述公式,首先使af乘以一个预定的二进制数2k,从而af增加k比特,以下简称″第一值″。接下来,通过对第一值进行舍入或截断操作,去除af小数点后的数字,以下简称″第二值″。第二值除以一个二进制数2k,比特数又减少k比特,从而可以计算出最终的量化权重核的元素值。对权重或权重核1014的所有元素值重复执行这样的权重或权重核量化1028,以生成量化权重值1018。
同时,可以通过下列等式执行特征图或激活图量化1030。
af=af·clip(-11)
在特征图或激活图量化1030中,可以使用与权重或权重核量化1028方法相同的公式。然而,在特征图或激活图量化中,可以通过在对每个元素值应用量化之前应用裁剪(clip)以添加将特征图或激活图1022的每个元素值af(例如,特征图或激活图的实数)归一化为0和1之间的值的过程。
接下来,将归一化的值af乘以预定的二进制数2k,从而af增加k比特,以下称为″第一值″。接下来,通过对第一值进行舍入或截断操作,去除af小数点后的数字,以下简称″第二值″。第二值除以一个二进制数2k,比特数又减少k比特,从而可以计算出最终的量化特征图或激活图1026的元素值。对特征图或激活图1022的所有元素值重复执行这样的特征图或激活图的量化1030,以生成量化特征图或激活图1026。
通过所描述的权重或权重核量化1028和特征图或激活图量化1030,卷积神经网络的卷积层420的卷积操作所需的存储大小和计算量可以以比特单位减少。
图11是示出根据本公开的实施方案的量化人工神经网络的比特的方法的流程图。本实施方案是将人工神经网络中可量化的数据组的单位假定为属于构成人工神经网络的各层的所有参数的示例。
如图所示,人工神经网络的比特量化方法1100可以由从人工神经网络S1110中包括的多个层中选择至少一层开始。可以根据所选择的层对人工神经网络的整体性能或计算量或存储量的影响来确定在人工神经网络中包括的多个层中要选择的层。在一个实施方案中,在上述参考图1-3描述的多层人工神经网络中,可以任意选择对人工神经网络的整体性能或计算量影响大的层。另外,对于参考图4-10描述的卷积人工神经网络(CNN)400,由于卷积层420和/或全连接层440对CNN 400的整体性能或计算量影响大,可以选择这些层420和440中的至少一个。
可以根据所选择的层对人工神经网络的整体性能或计算量的影响来确定选择包括在人工神经网络中的多层中的至少一层的方法。然而,本公开不限于此,且可以包括各种方法中的一种。例如,从人工神经网络中包括的多层中选择至少一层可以根据以下方法执行:(i)根据构成人工神经网络的多层的排列顺序从接收输入数据的第一层到后续层循序选择层的方法,(ii)根据构成该人工神经网络的多层的排列顺序从生成最终输出数据的最后一层到前层循序选择层的方法,(iii)在构成人工神经网络的多层中选择计算量最高的层的方法,或(iv)从构成人工神经网络的多层中选择计算量最少的层的方法。
当在S1110中完成人工神经网络的层选择时,操作可以进行到步骤S1120,将参数的数据表示大小(例如,所选择层的权重)减小到比特单位。
在一个实施方案中,当所选择的层的参数中的输出数据的权重或大小减小到比特单位时,可以执行参考图4-10描述的权重核量化1028和激活图量化1024。例如,权重核量化1028可以通过以下等式来计算。
这里,af表示待量化的权重核的元素值,例如实数权重核系数,k表示待量化的比特数,aq表示af以k比特量化的结果。即,根据上述等式,首先,af乘以预定的二进制数2k,从而af增加k比特,即″第一值″。接下来,通过对第一值进行舍入或截断操作,去除af小数点后的数字,即″第二值″。第二值除以二进制数2k,比特数又减少k比特,从而可以计算出最终的量化权重核的元素值。对权重核1014的所有元素值重复执行这样的权重核量化1028,以生成量化权重核1018。
同时,可以通过以下等式执行激活图量化1030。
af=af·clip(-1,1)
在激活图量化1030中,在对激活图1022的每个元素值(例如,实数系数)进行量化之前应用裁剪,由此可以添加将激活图1022的每个元素值归一化到0到1之间的值的过程。接下来,归一化的af乘以预定的二进制数2k,从而af增加k比特,即″第一值″。接下来,通过对第一值进行舍入或截断操作,去除af小数点后的数字,即″第二值″。第二值除以二进制数2k,比特数又减少k比特,从而可以计算出最终的量化激活图1026的元素值。对激活图1022的所有元素值重复执行激活图的这种量化1030,并生成量化激活图1026。
在上述实施方案中,已经描述了减少权重值或激活图数据的比特数的示例,以减小在人工神经网络中选择的层的参数的数据表示的大小。然而,本公开的比特量化方法不限于此。在另一个实施方案中,可以为包含在人工神经网络中的所选层中的各种数据的多个计算步骤之间存在的中间阶段中的数据分配不同的比特。因此,当在人工神经网络的硬件中实现时,为了减小存储有各数据的存储器(例如缓冲区、寄存器或缓存),可以减少存储在相应存储器中的每个数据的比特数并且可以减少相应的存储器的比特数。在另一个实施方案中,可以以比特单位减小数据路径的数据比特的大小,人工神经网络中选择的层的数据通过该数据路径传输。
在执行步骤S1120之后,可以进行步骤S1130,确定人工神经网络的精度是否等于或大于预定目标值。如果人工神经网络的输出结果(例如人工神经网络的训练结果或推断结果)的精度在人工神经网络所选层的参数的数据表示大小减小为比特单位之后大于预定目标值,可以预期,即使额外减少数据的比特,也可以保持人工神经网络的整体性能。
相应地,当在步骤S1130中确定人工神经网络的精度大于或等于目标值时,过程进行到步骤S1120以进一步将所选层的数据表示大小减小为比特单位。
在步骤S1130中,如果人工神经网络的精度不高于目标值,则可以确定人工神经网络的精度由于当前执行的比特量化而下降。因此,在这种情况下,可以将在紧接之前执行的比特量化中满足精度目标值的最小比特数确定为所选层的参数的最终比特数,即,步骤S1140。
接着,确定是否完成了人工神经网络的所有层的比特量化,即步骤S1150。在此步骤中,如果确定对人工神经网络的所有层都完成了比特量化,则整个过程结束。另一方面,如果人工神经网络的层中还存在未进行比特量化的层,则执行步骤S1110,对对应的层执行比特量化。
这里,在步骤S1110中,从人工神经网络中包括的多层中选择其他层可以根据以下方法执行:(i)根据构成人工神经网络的多层的排列顺序循序选择先前所选层的下一层的方法,即″前向比特量化″,(ii)根据构成人工神经网络的多层的排列顺序,在反向方向选择先前所选层的前一层的方法,即″反向比特量化″,(iii)在构成人工神经网络的多层中,根据计算量的顺序,在先前所选层之后选择计算量更高的层的方法,即,″高计算成本比特量化″,或(iv)在构成人工神经网络的多层中,根据计算量的顺序,在先前所选层之后选择计算量更低的层的方法,即,″低计算成本比特量化″。
在一个实施方案中,人工神经网络的精度可以指在学习给定问题(例如,识别作为输入数据的图像中包括的对象)的解决方案之后,人工神经网络在推断阶段提供该问题的解决方案的概率。另外,上述比特量化方法中使用的目标值可以表示人工神经网络的比特量化后要保持的最小精度。例如,假设目标值为90%的精度,即使在由比特量化选择的层的参数以比特单位减小之后,若人工神经网络的精度为90%或更高,也可以执行额外的比特量化。例如,在执行了第一次比特量化之后,如果测得人工神经网络的精度为94%,则可以执行额外的比特量化。在执行了第二次比特量化之后,如果测得人工神经网络的精度为88%,则由第一次比特量化确定的比特数,当前所执行的比特量化的结果被放弃,并且将由第一次比特量化确定的比特数(即表示对应数据的比特数)确定为最终的比特量化结果。
在一个实施方案中,在根据计算成本比特量化方法包括多个层的人工神经网络中,当基于多层中的计算量选择一层以执行比特量化时,每层的计算量可以确定如下。也就是,当一次加法运算在人工神经网络的特定层执行n比特和m比特相加时,运算量计算为(n+m)/2。另外,当人工神经网络的特定层使n比特与m比特相乘时,对应运算的计算量可以计算为n×m。相应地,人工神经网络的特定层的计算量可以是该层执行的所有加法和乘法的计算量求和的结果。
另外,根据计算成本比特量化方法,通过基于人工神经网络中的计算量从多层中选择一层来执行比特量化的方法不限于图11中所示的,且各种修改是可能的。
在另一个实施方案中,对于图11所示实施方案中的每层的参数的比特量化可以对于权重和激活图分别执行。例如,首先对所选层的权重执行量化,由此,权重有n比特。分别地,通过对所选层的输出激活数据执行比特量化,可以确定激活图数据的表示比特数为m比特。替代地,可以在为对应层的权重和激活图数据分配相同比特时执行量化,由此,可以将相同的比特n用于权重和激活图数据。
图12是示出根据本公开的另一个实施方案的人工神经网络的比特量化方法的流程图。
如图所示,人工神经网络的比特量化方法1200可以开始于在人工神经网络S1210中包括的多层中选择计算量最高的层。
当在步骤S1210中完成人工神经网络的层选择时,操作可以进行到将所选层的参数的数据表示的大小减小为比特单位的步骤S1220。在一个实施方案中,当所选层的数据的大小减小到比特单位时,可以执行参考图4-10描述的权重核量化1028和激活图量化1024。
在执行完步骤S1220之后,可以进行确定目前为止反映比特量化结果的人工神经网络的精度是否大于或等于预定目标值的步骤S1230。如果在步骤S1230中确定人工神经网络的精度大于或等于目标值,则将对应层的数据大小设置为当前比特量化结果,进行到步骤S1210后,可以重复执行步骤S1210至S1230。也就是,通过进行到步骤S1210,对人工神经网络中的所有层重新计算计算量,并在此基础上再次选择计算量最大的层。
在步骤S1230中,如果人工神经网络的精度不高于目标值,则取消对当前所选层的比特缩减量化,并且将该层从层选择步骤S1210中可选择的层目标中排除。然后,步骤S1240,可以选择对应层之后计算量更大的层。接下来,步骤S1250,可以将所选层的数据大小减小为比特单位。
在步骤S1260中,确定到目前为止反映比特量化结果的人工神经网络的精度是否大于或等于目标值。如果人工神经网络的精度不高于目标值,确定人工神经网络的所有层的比特量化是否完成(S1270)。如果在步骤S1270中确定完成了人工神经网络所有层的比特量化,则整个比特量化过程结束。另一方面,如果在步骤S1270中确定还没有完成人工神经网络的所有层的比特量化,则过程可以进行到步骤S1240。
如果在步骤S1260中确定人工神经网络的精度大于或等于目标值,则过程进行到步骤1220以进行后续步骤。
图13是示出根据本公开的另一实施方案的具有多个层的人工神经网络的比特量化方法的流程图。
如图所示,具有多层的人工神经网络的比特量化方法1300包括步骤S1310至S1350,为人工神经网络中包括的所有层中的每层搜索精度波动点。方法1300首先将人工神经网络中包括的所有层的数据的比特大小固定为最大值,并选择其中没有执行搜索精度波动点的一层(S1310)。
当在步骤S1310中完成人工神经网络的层选择时,可以进行到将所选择的层的数据的大小减小为比特单位的步骤S1320。在一个实施方案中,当所选层的数据的大小减小到比特单位时,可以执行参考图4-10描述的权重核量化1028和激活图量化1024。
在执行完步骤S1320之后,可以执行确定到目前为止反映比特量化结果的人工神经网络的精度是否大于或等于预定目标值的步骤S1330。如果在步骤S1330中确定人工神经网络的精度大于或等于目标值,则过程进行到步骤S1320以对当前所选层执行额外的比特缩减量化。
在步骤S1330中,如果人工神经网络的精度不高于目标值,则将当前所选层的数据比特数设置为最近满足目标值的最小比特数。此后,确定是否已经完成了对人工神经网络的所有层的精度变化点的搜索(S1340)。在此步骤中,如果还没有完成对所有层的精度变化点的搜索,则流程可以进行到步骤S1310。在步骤S1310中,选择另一层,其中人工神经网络包括的所有层的数据的比特大小为最大,并且没有执行性能变化点的搜索。
如果在步骤S1340中确定已经完成了对人工神经网络所有层的精度变化点的搜索,则可以将人工神经网络各层精度变化点对应的比特量化结果反映在人工神经网络S1350。在一个实施方案中,在步骤S1350中,将对应的层设置为紧接在根据上述步骤S1310至S1350确定的人工神经网络的每层的精度变化点(例如,每层中人工神经网络的精度下降之处)之前的数据的比特大小。
在另一个实施方案中,在步骤S1350中,将对应的层设置为大于紧接在根据上述步骤S1310至S1340确定的人工神经网络的每层的精度变化点之前的参数的计算所需的资源的大小。例如,可以将人工神经网络的每层的参数的比特数设置为比紧接在精度变化点之前的比特数大2比特。然后,对在步骤1350中设置了每层的数据大小的人工神经网络执行比特量化方法S1360。步骤S1360中执行的比特量化方法可以包括例如图11或图12所示的方法。
根据上述各种实施方案的人工神经网络的比特量化方法不限于在人工神经网络的多层中的每层的权重核和特征图或激活图上执行。在一个实施方案中,本公开的比特量化方法,首先执行人工神经网络的所有层的权重核或权重,可以再对反映了权重核量化的人工神经网络的所有层的特征图执行比特量化。在另一个实施方案中,可以先对人工神经网络的所有层的特征图进行比特量化,然后再对反映了特征图量化的人工神经网络的所有层的核执行比特量化。
另外,本公开的人工神经网络的比特量化方法不限于对人工神经网络的每层的权重核应用相同程度的比特量化。在一个实施方案中,本公开的比特量化方法,可以以人工神经网络的每层的权重核为单位执行比特量化,也可以执行单独比特量化,使得每个作为每个权重核的元素的权重单位中具有不同的比特。
在下文中,将参照附图描述根据本公开各种实施方案的用于量化人工神经网络的比特的方法的执行结果的示例。
图14是示出根据本公开的实施方案的人工神经网络的每层的计算量的示例的图表。图14所示的人工神经网络是包括16层的VGG-16模型的卷积人工神经网络的示例,且该人工神经网络的每层具有不同的计算量。
例如,由于第二层、第四层、第六层、第七层、第九层和第十层的计算量最高,当遵循高计算成本比特量化方法时,可以先应用比特量化。另外,在对第二、四、六、七、九、十层执行比特量化之后,可以对计算量次之的第14层执行比特量化。
图15是示出根据本公开的实施方案的其中已经通过前向比特量化方法执行了比特量化的人工神经网络的每层比特数的图表。
如上所述,前向量化是基于人工神经网络中包括的多层的排列顺序,从最早的层(例如,从最先接收输入数据的层)循序执行比特量化的方法。图15示出了在对图14所示的VGG-16模型的人工神经网络应用前向量化之后每层的比特数,以及通过前向量化人工神经网络的计算量的减少率。例如,当执行n比特和m比特相加时,对应计算的计算量计算为(n+m)/2。另外,当执行n比特和m比特相乘时,对应计算的计算量可以计算为n×m。因此,人工神经网络的总计算量可以是该人工神经网络执行的加法和乘法的所有计算量求和的结果。
如图所示,当使用前向量化对VGG-16模型的人工神经网络执行比特量化时,排列在人工神经网络前侧的层的比特数相对减少了更多,而排列在人工神经网络后侧的层的比特数相对减少了更少。例如,人工神经网络第一层的比特殊数减少到12比特,第二层和第三层的比特数减少到9比特,而第16层减少到13比特,第15层的比特数仅减少到多达15比特。如上所述,当从人工神经网络的第一层到第16层循序应用前向量化时,人工神经网络的总计算量的减少率计算为56%。
图16是示出根据本公开的实施方案的其中已经通过反向比特量化方法执行了比特量化的人工神经网络的每层比特数的图表。
反向量化是基于人工神经网络中包括的多层的排列顺序,从最后一层(例如,从最终输出输出数据的层)循序执行比特量化的方法。图16示出了在对图14所示的VGG-16模型的人工神经网络应用反向量化之后每层的比特数,以及通过反向量化人工神经网络的计算量的减少率。
如图所示,当使用反向量化对VGG-16模型的人工神经网络执行比特量化时,排列在人工神经网络后侧的层的比特数相对减少了更多,而排列在人工神经网络前侧的层的比特数相对减少了更少。例如,第一层、第二层、第三层的比特数分别减少到15比特,第四层的比特数减少到14比特,而第16层减少到9比特,第15层的比特数减少到15比特。如上所述,当从人工神经网络的第一层到第16层循序应用反向量化时,人工神经网络的总计算量的减少率计算为43.05%。
图17是示出根据本公开的实施方案的人工神经网络的每层的比特数,其中通过高计算成本层第一比特量化方法执行比特量化的图表。
高计算层第一量化或高计算量化是从人工神经网络中包括的多层中计算量更高的层循序执行比特量化的方法。图17示出了在将高计算量化应用于图14所示的VGG-16模型的人工神经网络之后,每层的比特数和通过高计算量化人工神经网络的计算量的减少率。
如图所示,当使用高计算量化对VGG-16模型的人工神经网络执行比特量化时,人工神经网络的多层中计算量高的层的比特数相对减少了更多。例如,第二层和第十层的比特数分别减少到5和6比特,而第一层的比特数减少到14比特。以这种方式,当按照计算量的顺序对人工神经网络的层应用高计算量化时,整个人工神经网络的计算量减少率计算为70.70%。
图18是示出根据本公开的实施方案的人工神经网络的每层的比特数,其中通过低计算成本比特量化方法执行比特量化的图表。
低计算层第一量化或低计算量化是从人工神经网络中包括的多层中计算量更低的层循序执行比特量化的方法。图18示出了图14所示的VGG-16模型的人工神经网络在应用低计算量量化后的每一层的比特数和通过低计算量量化人工神经网络的计算量的减少率。
如图所示,即使在使用低计算量量化对VGG-16模型的人工神经网络执行比特量化时,人工神经网络的多层中的高计算量层的比特数也相对减少。例如,第六层和第七层的比特数分别减少到6和5比特,而第一层的比特数减少到13比特。如此,当按照计算量的顺序对人工神经网络的层应用低计算量量化时,整个人工神经网络的计算量的减少率计算为49.11%。
在下文中,将详细描述根据本公开的各种实施方案的应用了比特量化的人工神经网络的硬件实现示例。当在硬件中实现包括多层的卷积人工神经网络时,权重核可以布置在用于执行卷积层的卷积的处理单元的外部和/或内部。
在一个实施方案中,权重核可以存储在与执行卷积层的卷积的处理单元分离的存储器(例如寄存器、缓冲区、缓存等)中。在这种情况下,在对权重核应用比特量化以减少权重核的元素值的比特数后,可以根据权重核的比特数确定存储的大小。另外,可以根据取决于比特量化结果的比特数设定乘法器或加法器的比特宽度,该乘法器或加法器布置在通过接收储存在存储器中的权重核的元素值和输入特征图的元素值以执行乘法和/或加法运算的处理单元中。
在另一个实施方案中,权重核可以以硬连线形式在用于执行卷积层的卷积处理单元中实现。在这种情况下,在对权重核应用比特量化以减少权重核的元素值的比特数后,可以根据权重核的比特数在处理单元中实现表示权重核的每个元素值的硬连线。另外,可以根据结果来自比特量化的比特数设定乘法器或加法器的比特大小,该乘法器或加法器布置在通过接收硬连线权重核的元素值和输入特征图的元素值以执行乘法和/或加法运算的处理单元中。
下面描述的图19至21示出了根据本公开的另一实施方案的包括多层的人工神经网络的硬件实现的示例。根据本公开的用于包括多层的人工神经网络的比特量化的方法和系统能够通过将本公开应用于任何人工神经网络(ANN)计算系统(例如CPU、GPU、FPGA和ASIC)来减少所需的计算量、算子的比特大小和存储器。另外,在本示例中,已经基于整数示出了实施方案,但是也可以执行浮点运算。
图19示出了根据本公开的实施方案的人工神经网络的硬件实现的示例。图示的人工神经网络显示了在硬件实现卷积人工神经网络的卷积层的卷积乘法处理装置1900的示例。这里,将通过如下假设来描述卷积层:假设卷积是通过将大小为3x3x3的权重核应用于输入特征图的一部分,即大小为3x3x3的数据来执行的。每层的权重核的大小和数量可能会根据应用领域和输入/输出特征图通道的数量而有所不同。
如图所示,权重核可以储存在权重核缓存1910中,该缓存1910与用于执行卷积层的卷积的处理单元1930分离。在这种情况下,在对权重核应用比特量化以减少权重核的元素值(w 1,w 2,...,w 9)的比特数后,缓存的大小可以根据权重核的比特数确定。另外,可以根据结果来自比特量化的权重核元素值的比特数设定乘法器或加法器的比特大小,该乘法器或加法器布置在接收储存在存储器中的权重核的元素值和输入特征图的元素值并执行乘法和/或加法运算的处理单元1930中。
根据实施方案,输入特征图缓存1920可以接收并储存输入数据的一部分,即与权重核的大小对应的部分。权重核遍历输入数据,并且输入特征图缓存1920可以循序接收和储存与权重核的位置对应的输入数据的一部分。储存在输入特征图缓存1920中的一部分输入数据(x 1,x 2,...,x 9)和储存在权重核缓存1910的权重核的一些元素值(w 1,w2,...,w 9)分别输入到对应的乘法器1932以执行逐元素相乘。通过乘法器1932的逐元素相乘的结果值由树加法器1934进行求和并输入加法器1940。当输入数据由多个通道组成时,例如,当输入数据是RGB彩色图像时,加法器1940可以将储存在累加器1942中的值(初始值为0)与输入特定通道的总和值相加并再次将其储存在累加器1942中。储存在累加器1942中的总和值可以通过将其加回到下一个通道的加法器1940的总和值而输入累加器1942。对输入数据的所有通道执行加法器1940和累加器1942的求和过程,并且可以将全部的总和值输入到输出激活图缓存1950。可以对对应于权重核输入数据中的遍历位置的权重核和部分输入数据重复上述卷积过程。
如上所述,当权重核的元素值储存在布置在处理单元1930外部的权重核缓存1910中时,可以通过根据本公开的比特量化减少权重核元素值的比特数。因此,可以减小权重核缓存1910的大小以及处理单元1930的乘法器和加法器的大小。此外,随着处理单元1930的大小减小,处理单元1930的计算速度和功耗也会降低。
图20示出了根据本公开的另一实施方案的人工神经网络的硬件实现的示例。
图示的人工神经网络示出了以硬件方式实现卷积人工神经网络的卷积层的卷积乘法处理装置2000的示例。这里,卷积层通过将大小为3x3x3的权重核应用于输入激活图上的一部分(即大小为3x3x3的数据)来执行卷积。
如图所示,权重核可以储存在与处理单元2030分离的权重核缓存2010中,用于执行卷积层的卷积。在这种情况下,对权重核应用比特量化后,权重核的元素值(w 1,w2,...,w 9)的比特数减少,然后可以根据权重核的比特数确定缓存的大小。另外,可以根据由比特量化得到的权重核元素值的比特数来设定布置在处理单元2030中的乘法器或加法器的比特大小,该处理单元2030接收储存在存储器中的权重核的元素值和输入激活图或特征图的元素值并执行乘法和/或加法运算。
根据实施方案,输入激活图缓存2020可以接收和储存由多个通道(例如,三个RGB通道)构成的输入数据的一部分,即,与权重核的大小对应的部分。权重核遍历输入数据,并且输入激活图缓存2020可以循序接收和储存与权重核的位置对应的部分输入数据。每个储存在输入激活图缓存2020中的部分输入数据(x 1,x 2,...,x 27)和每个储存在权重核缓存2010中的权重核的元素值(w 1,w 2,...,w 27)都输入到相应的乘法器以执行逐元素相乘。此时,权重核缓存2010的核元素值(w 1,w 2,...,w 9)和储存在输入激活图权重缓存2020中的输入数据的第一通道的一部分(x 1,x 2,...,x 9)输入到第一卷积处理单元2032。另外,权重核缓存2010的权重核元素值(w 10,w 11,...,w 18)和储存在输入激活图缓存2020中的第二通道输入数据(x 10,x 11,...,x 18)输入到第二卷积处理单元2034。另外,权重核缓存2010的权重核元素值(w 19,w20,...,w 27)和储存在输入激活图缓存2020中输入数据(x 10,x 11,...,x 18)的第三通道的一部分输入到第三卷积处理单元2036。
第一卷积处理单元2032、第二卷积处理单元2034和第三卷积处理单元2036中的每个可以以与图19所示的处理单元1930相同的方式操作。由第一卷积处理单元2032、第二卷积处理单元2034和第三卷积处理单元2036中的每个计算得到的卷积的结果值可以由树加法器2038求和并输入到输出激活图缓存2040。
如上所述,当权重核的元素值储存在布置在处理单元2030外部的权重核缓存2010中时,可以通过根据本公开的比特量化来减少权重核元素值的比特数。因此,可以减小权重核缓存2010的大小以及处理单元2030的乘法器和加法器的大小。此外,随着处理单元2030的大小减小,处理单元2030的计算速度和功耗也会降低。
图21示出了根据本公开的另一实施方案的人工神经网络的硬件实现的示例。
图示的人工神经网络示出了以硬件方式实现卷积人工神经网络的卷积层的卷积乘法处理装置2200的示例。这里,卷积层通过将大小为3x3x3的权重核应用于输入激活图的一部分(即大小为3x3x3的数据)来执行卷积。
如图所示,权重核可以在用于执行卷积层的卷积的处理单元2220中以硬连线形式实现。在这种情况下,在对权重核应用比特量化以减少权重核的元素值(w 1K,w 2K,...,w27K)的比特数后,可以根据权重核的比特数确定缓存的大小。另外,可以根据由比特量化得到的权重核元素值的比特数来设定布置在处理单元2030中的乘法器或加法器的比特大小,该处理单元2030接收在处理单元2220中实现为连线的权重核的元素值和输入激活图或特征图的元素值并执行乘法和/或加法运算。
根据一个实施方案,输入激活图缓存2210可以接收和储存由多个通道(例如,三个RGB通道)组成的输入数据的一部分,该部分对应于权重核的大小。权重核遍历输入数据,并且输入激活图缓存2210可以循序接收和储存与权重核的位置对应的部分输入数据。储存在输入激活图缓存2210中的部分输入数据(x 1,x 2,...,x 27)和在处理单元2220中实现为连线的权重核的元素值(w 1K,w 2K,...w 27K)分别输入到相应的乘法器以执行逐元素相乘。在这种情况下,在处理单元2220中实现为连线的权重核元素值(w 1K,w 2K,...,w 9K)和储存在输入激活图缓存2210中的输入数据的第一通道的一部分(x 1,x 2,...,x 9)输入到第一卷积处理单元2222。另外,在处理单元2220中实现为连线的权重核元素值和储存在输入激活图缓存2210中的输入数据的第二通道的一部分输入到第二卷积处理单元2224。另外,权重核缓存2210的权重核元素值(w 19K,w 20K,...,w 27K)和储存在输入激活图缓存2210中的输入数据的第三通道的一部分(x 19,x 20,...,x 27)输入到第三卷积处理单元2226。
由第一卷积处理单元2222、第二卷积处理单元2224和第三卷积处理单元2226中的每个计算的卷积结果可以由树加法器2228求和并输入到输出激活图缓存2230。
如上所述,当在处理单元2220中以硬连线形式实现权重核的元素值时,可以通过根据本公开的比特量化来减少权重核元素值的比特数。因此,具有减少其中实现的连线数量以及处理单元2220的乘法器和加法器的大小的效果。而且,随着处理单元2220的大小下降,处理单元2220的计算速度和功耗也可能下降。
图22示出了根据本公开的实施方案的用于对人工神经网络执行比特量化的系统的配置。
如图所示,系统2300可以包括参数选择模块2310、比特量化模块2320和精度确定模块2330。参数选择模块2310可以分析输入人工神经网络的配置信息。人工神经网络的配置信息可以包括人工神经网络包括的层数、每层的功能和作用、每层的输入/输出数据的信息、每层执行的乘法和加法的类型和数量、每层执行的激活函数的类型,每层输入到的权重核的类型和配置、每层权重核的大小和数量、输出特征图的大小、权重核的初始值(例如错误设置的权重核的元素值)等,但不限于此。根据人工神经网络的类型(例如卷积人工神经网络、循环人工神经网络、多层感知机等),人工神经网络的配置信息可以包括各种元素的信息。
参数选择模块2310可以参考输入的人工神经网络配置信息,从人工神经网络中选择至少一个待量化的参数或参数组。如何选择人工神经网络中的一个参数或数据或参数组可以根据待选参数对整体性能或计算量或该人工神经网络的硬件实现所需的资源量的影响来确定。参数的选择可以通过从一个权重、一个特征图和激活图、一个权重核、一层中的所有权重、一层中的所有特征图或激活图中选择一个来执行。
在一个实施方案中,在参考上述图4至10描述的卷积人工神经网络(CNN)400的情况下,由于卷积层420和/或全连接层440对CNN 400的整体性能或计算量有很大影响,可以选择权重核或这些层420和440中的至少一层的特征图/激活图作为待量化的一个参数。
在一个实施方案中,可以选择人工神经网络中包括的多个层中的至少一个,并且可以将该层中的所有权重核或该层的所有激活图数据设置为一个参数组。该选择方法可以根据所选层对人工神经网络的整体性能或计算量的影响来确定,但不限于此,并且可以包括各种方法中的一种。例如,从人工神经网络中包括的多层中选择至少一层可以根据以下方法执行:(i)根据构成人工神经网络的多层的排列顺序从接收输入数据的第一层到后续层循序选择层的方法,(ii)根据构成该人工神经网络的多层的排列顺序从生成最终输出数据的最后一层到前层循序选择层的方法,(iii)在构成人工神经网络的多层中选择计算量最高的层的方法,或(iv)从构成人工神经网络的多层中选择计算量最少的层的方法。
当参数选择模块2310完成了用于人工神经网络的量化的数据目标的选择时,所选数据的信息输入到比特量化模块2320。比特量化模块2320可以通过参考所选参数的输入信息将对应参数的数据表示大小减小到比特单位。所选参数的操作所需的资源可以包括用于储存所选参数的存储器或用于传输所选参数的数据路径,但不限于此。
在一个实施方案中,当比特量化模块2320将所选参数的数据大小减小到比特单位时,可以执行参考图4至13描述的权重核量化和/或激活图量化。
当比特量化模块2320完成了对所选参数的比特量化,其将比特量化的人工神经网络信息传输给精度确定模块2330。精度确定模块2330可以将比特量化的人工神经网络信息反映在输入到系统2300的人工神经网络的配置信息中。比特量化模块2320可以基于其中反映了比特量化的人工神经网络信息的人工神经网络的配置信息来确定人工神经网络的精度是否大于或等于预定目标值。例如,在将表示人工神经网络中所选参数的数据的大小减小到比特单位后,如果人工神经网络的输出结果的精度(例如人工神经网络的推断结果)大于预定目标值,精度确定模块2330可以预测即使在执行额外的比特量化时也可以保持人工神经网络的整体性能。
因此,当精度确定模块2330确定人工神经网络的精度大于或等于目标值时,将控制信号传输至参数选择模块2310,以使参数选择模块2310选择人工神经网络中包括的另一参数或参数组。这里,选择人工神经网络中的一个参数的方法可以根据以下方法执行:(i)根据构成人工神经网络的每个参数或参数组的排列顺序循序选择先前所选参数的下一参数的方法(″前向比特量化″),(ii)根据构成人工神经网络的参数或参数组的排列顺序,在反向方向选择先前所选参数的前一参数的方法(″反向比特量化″),(iii)在构成人工神经网络的多个参数中,根据计算量的顺序,在先前所选参数之后选择计算量更高的参数的方法(″高计算成本比特量化″),或(iv)在构成人工神经网络的多个参数中,根据计算量的顺序,在先前所选参数之后选择计算量更低的参数的方法(″低计算成本比特量化″)。
另一方面,如果精度确定模块2330确定人工神经网络的精度不大于或等于目标值,则可以确定人工神经网络的精度由于对当前所选参数执行的比特量化而降低。因此,在这种情况下,可以将由紧接之前执行的比特量化确定的比特数确定为最终比特数。在一个实施方案中,人工神经网络的精度可以指在学习给定问题(例如,识别作为输入数据的图像中包括的对象)的解决方案之后,人工神经网络在推断阶段提供该问题的解决方案的概率。另外,上述比特量化方法中使用的目标值可以表示人工神经网络的比特量化后要保持的最小精度。例如,假设目标值为90%的精度,即使用于储存由比特量化选择的层的参数的存储大小减小到比特单位,若人工神经网络的精度为90%或更高,也可以执行额外的比特量化。例如,在执行了第一次比特量化之后,如果测得人工神经网络的精度为94%,则可以执行额外的比特量化。在执行了第二次比特量化之后,如果测得人工神经网络的精度为88%,则可以忽略当前所执行的比特量化的结果,并且将由第一次比特量化确定的数据表示的比特数确定为最终的比特量化结果。
在一个实施方案中,根据计算成本比特量化方法,当基于计算量选择参数或参数组以执行比特量化时,可以如下确定每个参数的计算量。也就是,在人工神经网络的特定运算中执行n比特和m比特求和时,对应运算的计算量计算为(n+m)/2。另外,在人工神经网络的特定运算中,使得n比特和m比特相乘时,对应运算的运算量可以计算为n×m。因此,人工神经网络的特定参数的计算量可以是对该参数执行的所有加法和乘法的计算量求和的结果。
在这种比特量化中,可以选择特定参数或参数组的选择方法作为权重数据或属于每层的特征图和激活图数据,或属于一层的每个权重核,或一个权重核中每个权重数据的单独参数组。
作为参考,根据本公开的实施方案,图22所示的元件可以实现为例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)的软件或硬件元件。
然而,″元件″并不意味着限于软件或硬件,并且每个元件可以配置为在可寻址存储介质中或者可以配置为担任一个或多个处理器。
因此,作为一个示例,元件包括例如软件元件、面向对象的软件元件、类元件和任务元件以及过程、功能、属性、过程、子例程、程序代码段、驱动程序、固件、微码、电路、数据、数据库、数据结构、表、数组和变量。
元件和元件内提供的功能可以组合成较少数量的元件或进一步分成额外元件。
本公开的实施方案还可以以包括可由计算机执行的指令的记录介质的形式(例如由计算机执行的程序模块)来实现。计算机可读介质可以是计算机可以访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。此外,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于储存例如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。通信介质通常包括计算机可读指令、数据结构、程序模块或调制数据信号(例如载波,或其他传输机制)中的其他数据,并且包括任何信息传递介质。
虽然在此已经结合了一些实施方案描述了本公开,但是应当理解,在不脱离本领域技术人员所理解的本公开的范围的情况下可以做出各种修改和改变。此外,这种修改和改变应被视为落入本说明书所附权利要求的范围内。
Claims (41)
1.一种用于量化人工神经网络的比特的方法,所述方法包括:
(a)通过参数选择模块选择多个层中的至少一层;
(b)通过比特量化模块比特量化以将所选层的参数的数据表示的大小减小到比特单位;
(c)通过精度确定模块确定所述人工神经网络的精度是否大于或等于预定目标值;以及
(d)当所述人工神经网络的所述精度大于或等于所述目标值时,重复执行步骤(a)至(c)。
2.根据权利要求1所述的方法,
其中所述人工神经网络为卷积神经网络,且所述多个层包括多个卷积层和多个全连接层,
其中(a)所述选择包括选择所述多个卷积层中的至少一层,以及
其中(b)所述比特量化包括比特量化以将所选卷积层的权重核和特征图中的至少一个元素值的数据表示的大小减小到比特单位。
3.根据权利要求2所述的方法,
其中(a)所述选择包括选择所述多个全连接层中的至少一层,以及
其中(b)所述比特量化包括将所选全连接层的权重核的元素值的数据表示的大小减小到比特单位。
4.根据权利要求1所述的方法,
其中(b)所述比特量化包括:
将所述参数的值裁剪到0和1之间;
通过将裁剪值乘以预定二进制数计算第一值;
通过所述第一值的舍入或截断计算第二值;以及
通过将所述第二值除以所述二进制数计算量化参数。
5.根据权利要求4所述的方法,
还包括使用所述舍入或截断去除所述第一值的小数点。
6.根据权利要求1所述的方法,
其中(a)所述选择包括按照所述多个层的位置顺序选择所述多个层的一层。
7.根据权利要求6所述的方法,
其中(a)所述选择包括通过使用根据所述多个层的排列顺序循序选择接收输入数据的第一层到后续层的方法、和根据所述多个层的排列顺序循序选择生成输出数据的最后一层到前层的方法中的一种方法来从所述多个层中选择至少一层。
8.根据权利要求1所述的方法,
其中(a)所述选择包括:
确定所述多个层中的每层的计算量;以及
按照所确定的计算量的顺序选择所述多个层中的一层。
9.根据权利要求8所述的方法,
其中(a)所述选择包括通过使用从所述多个层中选择计算量最高的层的方法、和从所述多个层中选择计算量最低的层的方法中的一种方法来从所述多个层中选择至少一层。
10.根据权利要求1所述的方法,
还包括通过使用以比特单位减小的数据表示根据所述多个层的参数来训练所述人工神经网络。
11.根据权利要求1所述的方法,
还包括使用以比特单位减小的数据表示根据所述多个层的参数来执行所述人工神经网络的推断过程。
12.根据权利要求1所述的方法,
其中所述比特量化包括将所述多个层的所有权重的数据表示的大小设置为n比特(其中n为n>0的整数),以及将所述多个层的输出数据的数据表示的大小设置为m比特(其中m是m>0的整数)。
13.根据权利要求12所述的方法,
还包括单独且不同地分配所述多个层的参数中权重和输出数据的比特数。
14.根据权利要求1所述的方法,
其中所述比特量化包括将所述多个层的参数中权重和输出数据的数据表示的大小分配为n比特(其中n为n>0的整数),以及将分配给所述多个层中的每层的数据表示的比特数设置为不同。
15.根据权利要求2所述的方法,
其中所述比特量化还包括向所述卷积神经网络的所述多个卷积层的每个权重核分配不同的比特数。
16.根据权利要求1所述的方法,
其中所述比特量化包括对所述多个层的参数中每个权重不同地分配权重的数据表示的比特数。
17.根据权利要求1所述的方法,
其中所述比特量化包括单独且不同地分配所述多个层的参数中输出数据的特定单元的数据表示的比特数。
18.根据权利要求1所述的方法,
其中所述比特量化包括不同地分配所述多个层的参数中输出数据的各个值的数据表示的比特数。
19.一种用于量化人工神经网络的比特的方法,包括:
(a)通过参数选择模块从来自所述人工神经网络的权重、特征图和激活图数据中选择一个或多个数据或一组或多组数据;
(b)通过比特量化模块比特量化以将所选数据的数据表示大小减小到比特单位;
(c)测量所述人工神经网络的人工智能精度是否大于或等于目标值;以及
(d)重复步骤(a)到(c),直到所述人工神经网络的数据中没有更多的数据需要量化。
20.根据权利要求19所述的方法,
其中所述所选数据包括权重核,并且(b)所述比特量化包括将所述权重核的元素值的数据表示的大小减小到比特单位。
21.根据权利要求19所述的方法,
其中所述所选数据包括权重,并且(b)所述比特量化包括将所述权重的数据表示的大小减小到比特单位。
22.一种用于量化人工神经网络的比特的方法,所述方法包括:根据所述人工神经网络的一个或多个参数训练所述人工神经网络;根据所述人工神经网络的比特量化方法,对所述人工神经网络的一个或多个参数执行比特量化;根据执行了比特量化的所述人工神经网络的一个或多个参数训练所述人工神经网络。
23.一种非暂时性计算机可读存储介质,其中记录了包括指令的程序,所述指令用于根据权利要求1至22中任一项所述的人工神经网络的比特量化方法来执行每个指令。
24.一种用于人工神经网络的比特量化系统,包括:
参数选择模块,其用于从所述人工神经网络的多个参数中选择至少一个参数;
比特量化模块,其用于将所选参数的数据表示的大小减小到比特单位;以及
精度确定模块,其用于确定所述人工神经网络的精度是否大于或等于预定目标值,
其中,当所述人工神经网络的精度大于或等于所述目标值时,所述精度确定模块控制所述参数选择模块和所述比特量化模块,从而对所述多个参数中的另一个参数执行比特量化。
25.根据权利要求24所述的比特量化系统,
其中所述人工神经网络是包括多个层的卷积神经网络,并且所述多个层包括多个卷积层和多个全连接层,
其中所述参数选择模块选择所述多个卷积层中的至少一层,并且
其中,所述比特量化模块将所选卷积层的权重核和特征图中至少一个元素值的数据表示的大小减小到比特单位。
26.根据权利要求24所述的比特量化系统,
其中所述参数选择模块选择所述多个全连接层中的至少一层,并且
其中,所述比特量化模块将所选全连接层的权重核的元素值的数据表示的大小减小到比特单位。
27.根据权利要求24所述的比特量化系统,
其中所述比特量化模块将所述参数裁剪为介于0和1之间的值,
通过将裁剪值乘以预定二进制数来计算第一值,
通过所述第一值的舍入或截断计算第二值;以及
通过将所述第二值除以所述二进制数计算量化参数。
28.根据权利要求27所述的比特量化系统,
其中所述比特量化模块使用所述舍入或截断去除所述第一值的小数点。
29.根据权利要求24所述的比特量化系统,
其中所述参数选择模块按照所述多个参数的位置顺序选择所述多个参数之一。
30.根据权利要求29所述的比特量化系统,
其中所述参数选择模块通过使用根据构成所述神经网络的所述多个层的排列顺序循序选择接收输入数据的第一层到后续层的方法、和根据构成所述神经网络的所述多个层的排列顺序循序选择生成输出数据的最后一层到前层的方法来从所述多个层中选择至少一层。
31.根据权利要求24所述的比特量化系统,
其中所述参数选择模块确定所述多个参数中的每个的计算量;并且按照所确定的计算量的顺序选择所述多个参数之一。
32.根据权利要求31所述的比特量化系统,
其中所述参数选择模块通过使用从构成所述神经网络的所述多个层中选择计算量最高的层的方法、和从所述多个层中选择计算量最低的层的方法来从所述多个层中选择至少一层。
33.根据权利要求24所述的比特量化系统,
其中所述系统通过使用以比特单位减小的数据表示根据所述多个参数来训练所述人工神经网络。
34.根据权利要求24所述的比特量化系统,
其中所述系统使用以比特单位减小的数据表示根据所述多个参数来执行所述人工神经网络的推断过程。
35.根据权利要求25所述的比特量化系统,
其中所述系统向所述卷积神经网络的所述多个卷积层的权重核分配不同的比特数。
36.一种用于人工神经网络的比特量化系统,包括:
参数选择模块,其用于从构成所述人工神经网络的所述多个层中选择至少一层;
比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及
精度确定模块,其用于确定所述人工神经网络的精度是否大于或等于预定目标值,
其中,如果所述人工神经网络的精度等于或大于所述目标值,则所述精度确定模块控制所述参数选择模块和所述比特量化模块以对所述多个层中的另一层执行比特量化,并且
其中,所述比特量化模块为所述多个层的所有权重设置n比特(其中n为n>0的整数),并为所述多个层的输出数据设置m比特(其中m为m>0的整数)。
37.一种用于人工神经网络的比特量化系统,包括:
参数选择模块,其用于从构成所述人工神经网络的所述多个层中选择至少一层;
比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及
精度确定模块,其用于确定所述人工神经网络的精度是否大于或等于预定目标值,
其中,如果所述人工神经网络的精度等于或大于所述目标值,则所述精度确定模块控制所述参数选择模块和所述比特量化模块以对所述多个层中的另一层执行比特量化,并且
其中,所述比特量化模块为所述多个层的权重和输出数据分配n比特(其中n为n>0的整数),并将分配给所述多个层中的每层的比特数设置为不同。
38.一种用于人工神经网络的比特量化系统,包括:
参数选择模块,其用于从构成所述人工神经网络的所述多个层中选择至少一层;
比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及
精度确定模块,其用于确定所述人工神经网络的精度是否大于或等于预定目标值,
其中,如果所述人工神经网络的精度等于或大于所述目标值,则所述精度确定模块控制所述参数选择模块和所述比特量化模块对所述多个层中的另一层执行比特量化,并且
其中,所述比特量化模块单独且不同地分配所述多个层的权重和输出数据的比特数。
39.一种用于人工神经网络的比特量化系统,包括:
参数选择模块,其用于从构成所述人工神经网络的所述多个层中选择至少一层;
比特量化模块,其用于将用于储存所选层的参数的存储的大小减小到比特单位;以及
精度确定模块,其用于确定所述人工神经网络的精度是否大于或等于预定目标值,
其中,如果所述人工神经网络的精度等于或大于所述目标值,则所述精度确定模块控制所述参数选择模块和所述比特量化模块以对所述多个层中的另一层执行比特量化,并且
其中,所述比特量化模块为所述多个层中使用的每个权重分配不同的比特数。
40.一种用于人工神经网络的比特量化系统,包括:
参数选择模块,其用于从构成所述人工神经网络的所述多个层中选择至少一层;
比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及
精度确定模块,其用于确定所述人工神经网络的精度是否大于或等于预定目标值,
其中,如果所述人工神经网络的精度等于或大于所述目标值,则所述精度确定模块控制所述参数选择模块和所述比特量化模块以对所述多个层中的另一层执行比特量化,并且
其中,所述比特量化模块为从所述多个层输出的输出数据的特定单元单独分配不同的比特数。
41.一种用于人工神经网络的比特量化系统,包括:
参数选择模块,其用于从构成所述人工神经网络的所述多个层中选择至少一层;
比特量化模块,其用于将所选层的参数的数据表示的大小减小到比特单位;以及
精度确定模块,其用于确定所述人工神经网络的精度是否大于或等于预定目标值,
其中,如果所述人工神经网络的精度等于或大于所述目标值,则所述精度确定模块控制所述参数选择模块和所述比特量化模块以对所述多个层中的另一层执行比特量化,并且
其中,所述比特量化模块将不同的比特分配给从所述多个层输出的输出数据的各个值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0022047 | 2019-02-25 | ||
KR20190022047 | 2019-02-25 | ||
KR10-2019-0067585 | 2019-06-07 | ||
KR1020190067585A KR102152374B1 (ko) | 2019-02-25 | 2019-06-07 | 인공신경망의 비트 양자화 방법 및 시스템 |
PCT/KR2020/002559 WO2020175862A1 (ko) | 2019-02-25 | 2020-02-21 | 인공신경망의 비트 양자화 방법 및 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113396427A true CN113396427A (zh) | 2021-09-14 |
Family
ID=72469560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080008330.9A Pending CN113396427A (zh) | 2019-02-25 | 2020-02-21 | 用于人工神经网络的比特量化的方法和系统 |
Country Status (2)
Country | Link |
---|---|
KR (5) | KR102152374B1 (zh) |
CN (1) | CN113396427A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231794A1 (zh) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | 一种神经网络参数量化方法和装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102499517B1 (ko) * | 2020-11-26 | 2023-02-14 | 주식회사 노타 | 최적 파라미터 결정 방법 및 시스템 |
KR102600978B1 (ko) * | 2021-01-08 | 2023-11-10 | 한국과학기술원 | 저비트 정밀도 심층신경망 학습 장치 및 그 방법 |
KR102340091B1 (ko) * | 2021-03-26 | 2021-12-16 | 세종대학교산학협력단 | 인공신경망의 양자화 오차 보상 시스템 및 그 방법 |
WO2023038159A1 (ko) * | 2021-09-07 | 2023-03-16 | 주식회사 노타 | 레이어 별 경량화를 통한 딥러닝 모델 최적화 방법 및 시스템 |
CN114781650B (zh) * | 2022-04-28 | 2024-02-27 | 北京百度网讯科技有限公司 | 一种数据处理方法、装置、设备以及存储介质 |
KR20230172920A (ko) | 2022-06-16 | 2023-12-26 | 서울대학교산학협력단 | 레거시 환경의 실행을 위한 딥러닝 프로그램 코드의 양자화 장치 및 방법 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328647A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
US9916531B1 (en) * | 2017-06-22 | 2018-03-13 | Intel Corporation | Accumulator constrained quantization of convolutional neural networks |
CN108288087A (zh) * | 2017-01-09 | 2018-07-17 | 三星电子株式会社 | 用于减少深度学习网络的权重存储位的系统和方法 |
US20180341857A1 (en) * | 2017-05-25 | 2018-11-29 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
CN109102064A (zh) * | 2018-06-26 | 2018-12-28 | 杭州雄迈集成电路技术有限公司 | 一种高精度的神经网络量化压缩方法 |
US20190050710A1 (en) * | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102601604B1 (ko) * | 2017-08-04 | 2023-11-13 | 삼성전자주식회사 | 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 |
-
2019
- 2019-06-07 KR KR1020190067585A patent/KR102152374B1/ko active IP Right Grant
-
2020
- 2020-02-21 CN CN202080008330.9A patent/CN113396427A/zh active Pending
- 2020-08-31 KR KR1020200110330A patent/KR102261715B1/ko active IP Right Grant
-
2021
- 2021-02-10 KR KR1020210019469A patent/KR20210023912A/ko active Application Filing
-
2022
- 2022-10-12 KR KR1020220130437A patent/KR20220142986A/ko not_active IP Right Cessation
-
2024
- 2024-06-07 KR KR1020240074371A patent/KR20240093407A/ko not_active Application Discontinuation
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328647A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
CN107646116A (zh) * | 2015-05-08 | 2018-01-30 | 高通股份有限公司 | 用于定点神经网络的位宽选择 |
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
CN108288087A (zh) * | 2017-01-09 | 2018-07-17 | 三星电子株式会社 | 用于减少深度学习网络的权重存储位的系统和方法 |
US20180341857A1 (en) * | 2017-05-25 | 2018-11-29 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
US9916531B1 (en) * | 2017-06-22 | 2018-03-13 | Intel Corporation | Accumulator constrained quantization of convolutional neural networks |
US20190050710A1 (en) * | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
CN109102064A (zh) * | 2018-06-26 | 2018-12-28 | 杭州雄迈集成电路技术有限公司 | 一种高精度的神经网络量化压缩方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231794A1 (zh) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | 一种神经网络参数量化方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20200106475A (ko) | 2020-09-14 |
KR20200104201A (ko) | 2020-09-03 |
KR102152374B1 (ko) | 2020-09-07 |
KR20240093407A (ko) | 2024-06-24 |
KR102261715B1 (ko) | 2021-06-07 |
KR20220142986A (ko) | 2022-10-24 |
KR20210023912A (ko) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113396427A (zh) | 用于人工神经网络的比特量化的方法和系统 | |
JP6977864B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
US12073309B2 (en) | Neural network device and method of quantizing parameters of neural network | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
US20220138529A1 (en) | Method and system for bit quantization of artificial neural network | |
CN112116001B (zh) | 图像识别方法、装置及计算机可读存储介质 | |
WO2022006919A1 (zh) | 基于激活定点拟合的卷积神经网络训练后量化方法及系统 | |
CN111989697A (zh) | 用于并行和分布式张量计算的神经硬件加速器 | |
CN111352656B (zh) | 使用按位运算的神经网络设备和方法 | |
KR20190090858A (ko) | 데이터 관리를 위한 시스템들 및 방법들 | |
US11657285B2 (en) | Methods, systems, and media for random semi-structured row-wise pruning in neural networks | |
US11544542B2 (en) | Computing device and method | |
CN112446888A (zh) | 图像分割模型的处理方法和处理装置 | |
Pichel et al. | A new approach for sparse matrix classification based on deep learning techniques | |
Peng et al. | Mbfquant: a multiplier-bitwidth-fixed, mixed-precision quantization method for mobile cnn-based applications | |
US20220164639A1 (en) | A system for mapping a neural network architecture onto a computing core and a method of mapping a neural network architecture onto a computing core | |
US11429771B2 (en) | Hardware-implemented argmax layer | |
CN114766024A (zh) | 用于修剪神经网络的方法和设备 | |
JP2021527859A (ja) | 深層領域拡張を使用した画像内の不規則形状のセグメント化 | |
US11699077B2 (en) | Multi-layer neural network system and method | |
US12061988B1 (en) | Decomposition of ternary weight tensors | |
CN112633464A (zh) | 用于识别图像的计算系统和方法 | |
US20230004352A1 (en) | Hardware architecture for processing tensors with complementary sparsity | |
US20240046098A1 (en) | Computer implemented method for transforming a pre trained neural network and a device therefor | |
US20210319299A1 (en) | Inference device and inference method |
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 |