CN110874628A - 人工神经网络及其中控制定点的方法 - Google Patents
人工神经网络及其中控制定点的方法 Download PDFInfo
- Publication number
- CN110874628A CN110874628A CN201910534156.0A CN201910534156A CN110874628A CN 110874628 A CN110874628 A CN 110874628A CN 201910534156 A CN201910534156 A CN 201910534156A CN 110874628 A CN110874628 A CN 110874628A
- Authority
- CN
- China
- Prior art keywords
- values
- ann
- virtual overflow
- virtual
- point format
- 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 109
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000013139 quantization Methods 0.000 claims abstract description 68
- 238000001514 detection method Methods 0.000 claims abstract description 45
- 238000009825 accumulation Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 35
- 230000015654 memory Effects 0.000 description 19
- 230000035508 accumulation Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 238000013527 convolutional neural network Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000011176 pooling Methods 0.000 description 6
- 101100313175 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) TCD1 gene Proteins 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 101000857682 Homo sapiens Runt-related transcription factor 2 Proteins 0.000 description 2
- 102100025368 Runt-related transcription factor 2 Human genes 0.000 description 2
- 238000001444 catalytic combustion detection Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 208000006930 Pseudomyxoma Peritonei Diseases 0.000 description 1
- 108700012364 REG1 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 229920000306 polymethylpentene Polymers 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010977 unit operation Methods 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
-
- 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/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural 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)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Neurology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
提供了人工神经网络(ANN)系统和ANN系统中控制定点格式的方法。ANN系统包括处理器、虚拟溢出检测电路和数据格式控制器。处理器针对ANN的每层中包括的多个节点执行节点操作,以获得节点操作的多个结果值,并且基于用于每层的当前量化的第k个定点格式对所获得的多个结果值执行量化操作,以获得多个量化值。虚拟溢出检测电路生成对所获得的多个量化值的有效位数的分布加以指示的虚拟溢出信息。数据格式控制器基于所生成的虚拟溢出信息确定用于每层的后续量化的第(k+1)个定点格式。通过使用虚拟溢出控制定点格式,有效地防止溢出和/或下溢。
Description
相关申请的交叉参考
本申请要求于2018年9月3日在韩国知识产权局(KIPO)提交的韩国专利申请No.10-2018-0104403的优先权,其公开内容通过引用其全部内容结合于此。
技术领域
根据一个或多个示例性实施例致的装置和方法总体上涉及神经网络,并且更具体地涉及执行动态定点策略的神经网络和人工神经网络中控制定点的方法。
背景技术
定点运算和浮点运算是由诸如处理器的数字电路执行的基本操作。与定点运算相比,浮点运算提供更好的精度和更宽的表达范围,但却是更长的操作时间和更高的功耗。因此,相对于浮点运算,定点运算提供了更经济或有效的数字信号处理。定点运算在训练需要大量计算的人工神经网络(ANN)时尤为重要。然而,定点运算方案由于实数的窄范围而具有溢出的风险。当操作中的数据大小变得大于处理器的寄存器大小时,发生溢出。可以减小对应于分数部分的大小的分数长度以防止溢出。然而,当不必要地减小分数长度时,可能发生下溢并且可能不必要地牺牲精度或值分辨率。
发明内容
一个或多个示例性实施例的方面提供了一种能够有效地执行动态定点策略的人工神经网络(ANN)系统。
一个或多个示例性实施例的方面还提供了一种ANN系统中的控制定点的方法,能够有效地执行动态定点策略。
根据示例性实施例的一方面,提供了一种人工神经网络(ANN)系统,包括:处理器,被配置为针对ANN的每层中包括的多个节点执行节点操作,以获得节点操作的多个结果值,并且基于用于每层的当前量化的第k个定点格式对所获得的多个结果值执行量化操作,以获得多个量化值;虚拟溢出检测电路,被配置为生成对所获得的多个量化值的有效位数的分布加以指示的虚拟溢出信息;和数据格式控制器,被配置为基于所生成的虚拟溢出信息确定用于每层的后续量化的第(k+1)个定点格式。
根据另一示例性实施例的一方面,提供了一种人工神经网络(ANN)系统,包括:虚拟溢出检测电路,被配置为:生成与多个量化值对应的多个温度计码,其中多个量化值是通过基于定点格式执行量化操作而获得的;以及基于所生成的多个温度计码生成虚拟溢出信息,该虚拟溢出信息指示多个量化值的有效位数的分布;和数据格式控制器,被配置为基于所生成的虚拟溢出信息来更新定点格式。
根据另一示例性实施例的一方面,提供了一种人工神经网络(ANN)系统中控制定点格式的方法,该方法包括:针对ANN的每层中包括的多个节点执行节点操作,以获得节点操作的多个结果值;基于用于每层的当前量化的第k个定点格式对所获得的多个结果值执行量化操作,以获得多个量化值;生成对所获得的多个量化值的有效位数的分布加以指示的虚拟溢出信息;和基于所生成的虚拟溢出信息确定用于每层的后续量化的第(k+1)个定点格式。
根据另一示例性实施例的一方面,提供了一种人工神经网络(ANN)系统中控制定点格式的方法,该方法包括:基于第k个定点格式执行量化操作以获得多个量化值;生成对所获得的多个量化值的有效位数的分布加以指示的虚拟溢出信息;和基于生成的虚拟溢出信息更新用于后续量化的定点格式。
根据另一示例性实施例的一方面,提供了一种非暂时性计算机可读记录介质,其上记录有计算机可执行的程序,用于执行上述方法中的任一方法。
根据一个或多个示例性实施例的ANN系统和ANN系统中控制定点的方法可以通过使用虚拟溢出控制定点格式来有效地防止溢出和/或下溢,从而增强ANN系统的性能并降低ANN系统的功耗。
附图说明
从以下结合附图的详细描述中将更清楚地理解一个或多个示例性实施例,其中:
图1是示出根据示例性实施例的人工神经网络(ANN)系统中控制定点的方法的流程图;
图2是示出根据示例性实施例的ANN系统的框图;
图3A和3B是用于描述根据一个或多个示例性实施例的由ANN系统驱动的深度学习神经网络结构的示例的图;
图4是示出根据示例性实施例的ANN系统中包括的处理器的框图;
图5A和5B是用于描述根据一个或多个示例性实施例的基于定点格式的量化操作的图;
图6是示出根据示例性实施例的与一个层中包括的多个节点相对应的多个量化值的示例的图;
图7是示出图6的多个量化值的有效位数的频率分布的图;
图8是示出根据示例性实施例的虚拟溢出检测电路的示图;
图9是示出图8的虚拟溢出检测电路中包括的累加器的示例性实施例的图;
图10和11是用于描述图8的虚拟溢出检测电路的操作的图;
图12是示出图8的虚拟溢出检测电路中包括的零数据检测电路的示例性实施例的图;
图13是示出根据示例性实施例的虚拟溢出检测电路的示图;
图14是用于描述图13的虚拟溢出检测电路的操作的图;
图15是示出根据示例性实施例的虚拟溢出检测电路的示图;
图16是示出根据示例性实施例的控制定点格式的方法的流程图;
图17A和17B是用于描述根据一个或多个示例性实施例的防止溢出的方法的图;
图18A和18B是用于描述根据一个或多个示例性实施例的防止下溢的方法的示图;
图19是示出根据示例性实施例的量化值的有效位数的示例分布的示图;以及
图20是示出根据示例性实施例的ANN系统的框图。
具体实施方式
在下文中将参考附图更全面地描述各种示例实施例,附图中示出了一些示例性实施例。在附图中,相同的附图标记始终表示相同的元件。可以省略重复的描述。
在下文中,应理解诸如“a,b或c中的至少一个”和“a,b和/或c”的表达表示仅a,仅b,仅c,a和b两者,a和c两者,b和c两者,a,b和c的全部或其变体。
图1是示出根据示例性实施例的人工神经网络(ANN)系统中控制定点的方法的流程图。
参照图1,针对ANN的每层中包括的多个节点执行节点操作,以生成(例如,获得)节点操作的多个结果值(S100)。ANN是机器学习方案,是使用通过连接线连接的多个人工神经元来模拟生物系统(例如,人脑)的软件和/或硬件的操作模型。ANN使用具有生物神经元的简化功能的人工神经元,并且人工神经元通过预定连接强度的连接线连接以执行人类的识别或学习。最近,正在研究深度学习以克服ANN的局限性。下面将参考图3A和3B描述可以应用一个或多个示例性实施例的深度学习ANN结构。
基于用于ANN的每层的当前量化的第k个定点格式来执行对于或针对多个结果值的量化操作,以生成(例如,获得)多个量化值(S200)。下面将参考图5A和5B描述基于定点策略的量化。
生成对多个量化值的有效位数的分布加以指示的虚拟溢出信息(S300)。这里,虚拟溢出信息不是指示是否实际发生溢出的信息,而是指示后续操作期间溢出概率的信息。另外,虚拟溢出信息还可以包括指示后续操作期间下溢概率的信息。
在一个或多个示例性实施例中,可以生成指示有效位数的频率值的多个计数信号,并且可以提供多个计数信号作为虚拟溢出信息。有效位包括从每个量化值的最高有效位开始具有值1的第一位和第一位的低位。下面将参考图6到15描述生成虚拟溢出信息的一个或多个示例性实施例。
基于虚拟溢出信息确定用于每层的后续量化的第(k+1)个定点格式(S400)。ANN学习或ANN训练可以是指或包括更新当前ANN的权重值。可以通过根据前馈方案和/或反向传播方案重复执行节点操作来进行权重值的更新。在执行重复节点操作时,每当针对一个层完成节点操作的一次迭代时,可以更新定点格式。当ANN包括多个层时,可以针对每层确定定点格式,并且可以针对每层执行定点格式的更新。用于后续节点操作结果的量化的第(k+1)个定点格式可以与用于当前节点操作结果的量化的第k个定点格式不同或相同。下面将参考图16至19描述更新定点格式的一个或多个示例性实施例。
这样,通过使用虚拟溢出控制定点格式,可以有效地防止溢出和/或下溢。因此,可以增强ANN系统的性能并且可以降低ANN系统的功耗。
在相关技术中,获得量化值本身的分布,并且计算平均值和统计离差(诸如量化值的方差)以管理定点策略。相反,根据一个或多个示例性实施例,可以获得量化值的虚拟溢出信息(例如,有效位数的分布)而不是量化值本身,并且可以基于虚拟溢出信息来管理定点策略。根据一个或多个示例性实施例,可以显著减少用于动态管理定点的硬件资源和计算量,并且可以实现有效的动态定点策略。
图2是示出根据示例性实施例的ANN 100系统的框图。
参照图2,ANN系统100可包括多个处理器110,任务管理器TKMNG 120,数据格式控制器DFCON 130和虚拟溢出检测电路VODET 140。ANN系统100还可以包括特殊功能寄存器SFR 150和存储器MEM 160。
ANN系统100可以由多个处理器110驱动。例如,多个处理器110可以包括如图2所示的异构处理器。根据示例性实施例,多个处理器110可包括至少两个同构处理器。可以由多个处理器110执行和处理诸如图像分类服务,用户认证服务,高级驾驶员辅助系统(ADAS)服务和/或语音助理服务的各种服务(例如,任务TK或应用)。
任务TK可以包括多个操作或算术运算中的至少一个。例如,任务TK可以表示诸如图像分类服务,基于生物信息的用户认证服务,ADAS服务,语音助理服务等的应用。例如,多个操作可以包括各种操作,例如卷积运算,修正线性单元(RELU)运算等。
多个处理器110可包括中央处理单元(CPU)111,图形处理单元(GPU)112,神经处理单元(NPU)113,数字信号处理器(DSP)114,图像信号处理器(ISP)115和专用硬件(DHW)116。例如,专用硬件116可以包括视觉处理单元(VPU),视觉知识产权(VIP)等中的至少一个。每个处理器可以称为处理元件(PE)。
虽然图2仅示出了计算资源作为多个处理器110的示例,但是多个处理器110还可以包括通信资源,诸如用于控制对存储器160的访问的直接存储器访问单元(DMA),用于支持各种内部和/或外部通信的连接等。
任务管理器120从外部设备或用户接收要执行的任务TK,管理或调度所接收的任务TK,并将任务TK分配给多个处理器110。例如,任务管理器120可以将包括在任务TK中的操作分配给多个处理器110,并生成指示任务TK的计算路径的路径信息。任务TK的计算路径可以包括任务TK中包括的操作的序列和用于执行任务TK中包括的操作的处理器的驱动序列。
多个处理器110中的至少一个可以针对ANN的每层中包括的多个节点执行节点操作,以生成节点操作的多个结果值,并且基于用于每层的当前量化的第k个定点格式来对多个结果值执行量化操作,以生成多个量化值。换句话说,多个处理器110中的至少一个可以执行图1中的过程S100和S200。
虚拟溢出检测电路140可以生成对多个量化值的有效位数的分布加以指示的虚拟溢出信息VOINF。换句话说,虚拟溢出检测电路140可以执行图1中的过程S300。如下面将参照图6和7所描述的,虚拟溢出检测电路140可以生成指示有效位数的频率值的多个计数信号,并提供多个计数信号作为虚拟溢出信息。
数据格式控制器130可以基于虚拟溢出信息VOINF确定用于每层的后续量化的第(k+1)个定点格式FPFMT。换句话说,数据格式控制器130可以执行图1中的过程S400。
在一个或多个示例性实施例中,数据格式控制器130可以将确定的第(k+1)个定点格式FPFMT提供给特殊功能寄存器150,并且特殊功能寄存器150可以将其中存储的第k个定点格式更新为第(k+1)个定点格式FPFMT。多个处理器110可以使用从特殊功能寄存器150提供的动态更新的定点格式来执行任务TK。
在一个或多个其他示例性实施例中,数据格式控制器130可以直接向多个处理器110提供定点格式FPFMT,该定点格式FPFMT在每次重复一层的节点操作时都被更新。换句话说,当对一层执行当前节点操作时,数据格式控制器130可以向多个处理器110提供第k个定点格式,并当对一层执行后续节点操作时,数据格式控制器130可以向多个处理器110提供第(k+1)个定点格式,。在这种情况下,多个处理器110可以基于从数据格式控制器130直接提供的动态更新的定点格式来执行任务TK。
存储器160可以存储由ANN系统100处理的各种数据。存储器160可以包括至少一个易失性存储器,例如动态随机存取存储器(DRAM),同步DRAM(SDRAM),静态随机存取存储器(SRAM)等,和/或包括至少一个非易失性存储器,例如电可擦除可编程只读存储器(EEPROM),闪存,相变随机存取存储器(PRAM),电阻随机存取存储器(RRAM),磁随机存取存储器(MRAM),铁电随机存取存储器(FRAM),纳米浮栅存储器(NFGM),或聚合物随机存取存储器(PoRAM)等。
在一个或多个示例性实施例中,任务管理器120、数据格式控制器130和/或虚拟溢出检测电路140的至少一部分或全部可以实现为硬件,可以实现为存储在存储设备(诸如非暂时性计算机可读介质)中的软件(或程序代码),或者可以实现为硬件和软件的组合。
应当理解,ANN系统100中的所有元件可以经由至少一个总线彼此连接,因此ANN系统100中的所有元件可以经由至少一个总线彼此通信。
此外,ANN系统100还可以包括软件元素,例如框架,内核或设备驱动程序,中间件,应用编程接口(API),应用程序或应用等。至少一部分软件元素可以称为操作系统(OS)。
图3A和3B是用于描述根据一个或多个示例性实施例的由ANN系统驱动的深度学习神经网络结构的示例的图。
参考图3A,通用神经网络可以包括输入层IL,多个隐藏层HL1,HL2,...,HLn和输出层OL。
输入层IL可以包括i个输入节点x1,x2,...,xi,其中i是自然数。长度为i的输入数据(例如,矢量输入数据)IDAT可以输入到输入节点x1,x2,...,xi,使得输入数据IDAT的每个元素被输入到输入节点x1,x2,...,xi中的相应一个。
多个隐藏层HL1,HL2,...,HLn可以包括n个隐藏层,其中n是自然数,并且可以包括多个隐藏节点h1 1,h1 2,h1 3,...,h1 m,h2 1,h2 2,h2 3,...,h2 m,hn 1,hn 2,hn 3,...,hn m。例如,隐藏层HL1可以包括m个隐藏节点h1 1,h1 2,h1 3,...,h1 m,隐藏层HL2可以包括m个隐藏节h2 1,h2 2,h2 3,...,h2 m,以及隐藏层HLn可以包括m个隐藏节点hn 1,hn 2,hn 3,...,hn m,其中m是自然数。
输出层OL可以包括j个输出节点y1,y2,...,yj,其中j是自然数。输出节点y1,y2,...,yj中的每一个可以对应于要归类的类中的相应一个。输出层OL可以输出针对每个类的与输入数据IDAT相关联的输出值(例如,类得分或简单地,得分)。输出层OL可以被称为完全连接层,并且可以指示例如输入数据IDAT对应于轿车的概率。
图3A中所示的神经网络的结构可以由关于节点之间的分支(或连接)(示出为线)的信息和分配给每个分支的加权值来表示。一层内的节点可以不彼此连接,但是不同层的节点可以彼此完全或部分地连接。
每个节点(例如,节点h1 1)可以接收先前节点(例如,节点x1)的输出,可以对接收的输出执行计算操作、运算或计算,并且可以输出计算操作、运算或计算的结果作为到后续节点(例如,节点h2 1)的输出。每个节点可以通过将输入应用于特定函数(例如,非线性函数)来计算要输出的值。
通常,可以预先设置神经网络的结构,并且使用数据来适当地设置节点之间的连接的加权值,其中该数据属于哪个类的答案已知。具有已知答案的数据被称为“训练数据”,确定加权值的过程被称为“训练”。神经网络在训练过程中“学习”。一组可独立训练的结构和加权值被称为“模型”,以及通过具有确定的加权值的模型来预测输入数据属于哪个类,然后输出预测值的过程被称为“测试”过程。
图3A中所示的通用神经网络可能不适合于处理输入图像数据(或输入声音数据),因为每个节点(例如,节点h1 1)连接到前一层的所有节点(例如,包括在层IL中的节点x1,x2,...,xi),随着输入图像数据的大小增加,加权值的数量急剧增加。因此,已经研究了通过将滤波技术与通用神经网络组合而实现的卷积神经网络(CNN),使得通过卷积神经网络有效地训练二维图像(例如,输入图像数据)。
参考图3B,卷积神经网络可以包括多个层CONV1,RELU1,CONV2,RELU2,POOL1,CONV3,RELU3,CONV4,RELU4,POOL2,CONV5,RELU5,CONV6,RELU6,POOL3和FC。
与通用神经网络不同,卷积神经网络的每层可以具有宽度、高度和深度三个维度,因此输入到每层的数据可以是具有宽度、高度和深度三个维度的体数据。例如,如果图3B中的输入图像是尺寸为32个宽度单位(例如,32个像素)和32个高度单位(例如,32个像素)以及三个颜色通道R、G和B,对应于输入图像的输入数据IDAT可以具有32×32×3的大小。图3B中的输入数据IDAT可以称为输入体数据或输入激活体。
卷积层CONV1,CONV2,CONV3,CONV4,CONV5和CONV6中的每一个可以对输入体数据执行卷积运算。在图像处理中,卷积运算表示基于具有加权值的掩模处理图像数据的操作,并且通过将输入值乘以加权值并将总乘积值相加来获得输出值。掩模可以称为滤波器、窗或内核。
更详细地,每个卷积层的参数可以由一组可学习的滤波器构成或可以包括一组可学习的滤波器。每个滤波器可以在空间上较小(沿宽度和高度),但可以延伸过输入体的整个深度。例如,在正向传导期间,每个滤波器可以在输入体的宽度和高度上滑动(更精确地,卷积),并且可以在任何位置处在滤波器和输入的条目之间计算点积。当滤波器在输入体的宽度和高度上滑动时,可以生成二维激活图,该二维激活图给出在每个空间位置处的该滤波器的响应。结果,可以通过沿深度维度堆叠这些激活图来生成输出体。例如,如果具有32×32×3大小的输入体数据通过具有四个有零填充的滤波器的卷积层CONV1,则卷积层CONV1的输出体数据可以具有32×32×12的大小(例如,体积数据的深度增加)。
RELU层RELU1,RELU2,RELU3,RELU4,RELU5和RELU6中的每一个可以执行修正线性单元运算,其对应于由例如函数f(x)=max(0,x)定义的激活函数(例如,对于所有负输入x,输出为零)。例如,如果尺寸为32×32×12的输入体数据通过RELU层RELU1以执行修正线性单元运算,则RELU层RELU1的输出体数据可具有32×32×12的大小(例如,维持体积数据的大小)。
池化层POOL1,POOL2和POOL3中的每一个可以沿着宽度和高度的空间维度对输入体数据执行下采样操作。例如,以2×2矩阵形式排列的四个输入值可以基于2×2滤波器被转换为一个输出值。例如,可以基于2×2最大池化来选择以2×2矩阵形式排列的四个输入值的最大值,或者可以基于2×2平均池化来获得以2×2矩阵形式排列的四个输入值的平均值。例如,如果具有32×32×12大小的输入体数据通过具有2×2滤波器的池化层POOL1,则池化层POOL1的输出体积数据可以具有16×16×12的大小(例如,体数据的宽度和高度减小,并且体数据的深度保持)。
通常,一个卷积层(例如,CONV1)和一个RELU层(例如,RELU1)可以在卷积神经网络中形成CONV/RELU层对,CONV/RELU层对可以在卷积神经网络中重复排列,并且可以在卷积神经网络中周期性地插入池化层,从而减小图像空间大小并提取图像特征。
输出层或完全连接层FC可以输出针对每个类的输入体数据IDAT的结果(例如,类得分)。例如,当重复进行卷积运算和下采样运算时,可以将与二维图像对应的输入体数据IDAT转换为一维矩阵或矢量。例如,完全连接的层FC可以表示输入体积数据IDAT对应于轿车、卡车、飞机、船和马的概率。
应当理解,卷积神经网络中包括的层的类型和数量可以不限于上面参考图3B描述的示例,并且可以根据一个或多个其他示例性实施例改变或变化。另外,应当理解,卷积神经网络还可以包括其他层,例如softmax层和偏置添加层等,softmax层用于将对应于预测结果的得分值转换为概率值,偏置添加层用于添加至少一个偏置。
这样,深度学习ANN可以包括多个层,并且可以针对多个层中的每一个独立地确定定点格式。每层中的节点可以基于相同的定点格式执行量化。当ANN包括多个层时,虚拟溢出检测电路140可以生成分别与多个层对应的多个虚拟溢出信息,并且数据格式控制器130可以基于多个虚拟溢出信息确定用于多个层中的每层的后续量化的第(k+1)个定点格式。
图4是示出根据示例性实施例的ANN系统中包括的处理器200的框图。
参考图4,处理器200可以包括控制单元CTRL 210(例如,控制器),逻辑单元LOG220(例如,逻辑),嵌入式存储器eMEM 230,输入寄存器REGI 240,权重寄存器REGW 250和结果寄存器REGR 260。应理解,处理器可包括附加元件(例如,诸如信号总线的通用元件)。
控制单元210控制处理器200的整体操作。控制单元210可以在ANN的实现中控制指令和数据的流动。嵌入式存储器230可以存储处理器200的指令和数据。节点操作的输入数据和权重值可以分别存储在输入寄存器240和权重寄存器250中。逻辑单元220可以基于存储在寄存器240和250中的输入数据和权重值来执行节点操作,并且将节点操作的结果值存储在结果寄存器260中。输入寄存器240和权重寄存器250可以用操作速度比嵌入式存储器230高的存储器来实现,使得输入数据和权重值可以从嵌入式存储器230加载到寄存器240和250。
控制单元210可以基于从图2中的特殊功能寄存器150或数据格式控制器130提供的定点格式FPFMT对存储在结果寄存器260中的结果值执行量化操作。量化值或量化后的值可以存储在嵌入式存储器230中。如上所述,可以动态地更新定点格式。
图5A和5B是用于描述根据一个或多个示例性实施例的基于定点格式的量化操作的图。
参考图4和5A,节点操作的结果值RVL可以存储在结果寄存器260中,并且控制单元210可以基于定点格式FPFMT执行结果值RVL的量化操作以生成量化值QVL。
例如,定点格式FPFMT可以用Qm.n表示法表示。在Qm.n表示法中,m表示整数部分的位数,n表示分数部分的位数。换句话说,Qm.n表示在小数点位置RPP之前分配m位并且在小数点位置RPP之后分配n位。对应于分配给量化值QVL的全部位数的位宽度BW是m+n,并且对应于分配给分数部分的位数的分数长度是n。
图5B示出了具有位宽度为N的量化值QVL的示例,即,包括N位B1~BN。在图5B的示例中,整数部分的位数是5,并且定点格式可以表示为Q5.N-5。从最高有效位BN开始具有0的三个位BN,BN-1和BN-2对应于无效位。从最高有效位BN开始具有1的第一位BN-3和低位B1~BN-4对应于有效位。因此,在图5B中的示例量化值QVL中,无效位数是3并且有效位数是N-3。
根据一个或多个示例性实施例,虚拟溢出检测电路140可以检测与每层中的多个节点相对应的多个量化值的有效位数的频率值,以提供频率值作为虚拟溢出信息VOINF。
图6是示出与一层中包括的多个节点相对应的多个量化值的示例的图,图7是示出图6的多个量化值的有效位数的频率分布的图。
在下文中,为了便于说明和描述,假设一层包括十个节点,但是应当理解,这仅是示例,并且其他示例性实施例不限于此。每层可包括各种数量的节点。作为示例,第一至第十量化值QVL1~QVL10中的每一个包括第一至第N位Q1~QN。
参考图6,第一量化值QVL1包括两个无效位QN和QN-1,并且第一量化值QVL1的有效位数VBN是N-2,第二量化值QVL2包括六个无效位QN,QN-1,QN-2,QN-3,QN-4和QN-5以及第二量化值QVL2的有效位数VBN是N-6,并且第三量化值QVL3包括五个无效位QN,QN-1,QN-2,QN-3和QN-4以及第三量化值QVL3的有效位数VBN是N-5。以这种方式,可以分别针对第一至第十量化值QVL1~OVL10中的每一个确定有效位数VBN。
为了便于说明和描述,图6示出了有效位数在N到N-6之间分布的情况,但是应当理解,这仅是示例,并且其他示例性实施例不限于此。取决于节点操作的结果,有效位数可以在0到N之间分布。
图6的量化值QVL1~QVL10的分布可以表示为如图7所示的频率分布图。频率分布图表示有效位数VBN与对应频率值f(VBN)之间的映射关系。如图7中所示,f(N)=f(N-3)=f(N-4)=f(N-5)=f(N-6)=1,f(N-1)=2,f(N-2)=3,以及f(N-7)~f(0)=0。因此,频率值的总数NT变为10。
这样,可以通过累加与一层中包括的多个节点相对应的多个量化值的有效位数0~N来确定频率值f(0)~f(N)。如下所述,可以使用诸如温度计码生成电路、累加电路等的硬件来生成多个计数信号SC(0)~SC(N),以及可以提供多个计数信号SC(0)~SC(N)作为上述虚拟溢出信息VOINF。
图8是示出根据示例性实施例的虚拟溢出检测电路300的图。
参考图8,虚拟溢出检测电路300可包括温度计码生成电路310、累加电路320和减法电路330。
温度计码生成电路310可以替换每个量化值QVLi的所有有效位以生成每个温度计码TCDi。温度计码生成电路310可以顺序地接收与每层中包括的多个节点相对应的多个量化值,并且顺序地生成与多个量化值对应的多个温度计码。
在一个或多个示例性实施例中,例如图8所示,温度计码生成电路310可以包括多个OR(或)逻辑门311~315。多个OR逻辑门311~315可以对每个量化值QVLi的每两个相邻位执行OR逻辑运算,以生成每个温度计码TCDi。例如,OR逻辑门311对每个量化值QVLi的第N位QN和第(N-1)位QN-1执行OR逻辑运算,以生成每个温度计码TCDi的第(N-1)位TN-1,并且OR逻辑门312对每个量化值QVLi的第(N-1)位QN-1和第(N-2)位QN-2执行OR逻辑运算以生成每个温度计码TCDi的第(N-2)位TN-2。对应于每个量化值QVLi的最高位的第N位QN可以被提供为对应于每个温度计码TCDi的最高位的第N位TN。这样,多个OR逻辑门311~315可以基于量化值QVLi的第一至第N位Q1~QN生成温度计码TCDi的第一至第N位T1~TN。
累加电路320可以逐位累加多个温度计码以生成多个累加值ACC(1)~ACC(N)。累加电路320可以包括分别接收温度计码TCDi的位T1~TN的多个累加器AU 321~326。在针对对应于每层中包括的多个节点的多个温度计码完成累加之后,多个累加器321~326可以输出所存储的值作为多个累加值ACC(1)~ACC(N)。下面将参考图9描述累加器AU的示例。
减法电路330可以将多个累加值ACC(1)~ACC(N)中的两个相邻累加值相减,以生成多个计数信号SC(1)~SC(N)。可以将多个计数信号SC(1)~SC(N)作为虚拟溢出信息VOINF提供给图2中的数据格式控制器130。
减法电路330可以包括多个减法器331~335。例如,减法器331可以从第(N-1)个累加值ACC(N-1)中减去第N个累加值ACC(N)以生成第(N-1)个计数信号SC(N-1),并且减法器332可以从第(N-2)个累加值ACC(N-2)中减去第(N-1)个累加值ACC(N-1)以生成第(N-2)个计数信号SC(N-2)。可以提供第N累加值ACC(N)作为第N计数信号SC(N)。这样,多个减法器331~335可以基于第一至第N累加值ACC(1)~ACC(N)生成第一至第N计数信号SC(1)~SC(N)。
图9是示出图8的虚拟溢出检测电路300中包括的累加器AU的示例性实施例的图。
参考图9,包括在图8中的累加电路320中的每个累加器AU可包括加法器和缓冲器。累加器AU可以累加温度计码的每个位Tj,以提供每个累加值ACC(j)。可以响应于复位信号RST初始化缓冲器,并且响应于输出控制信号OUTEN将存储的值输出为累加值ACC(j),其中输出控制信号OUTEN是在针对对应于每层中包括的多个节点的多个温度计码完成累加之后被激活的。
图10和11是用于根据一个或多个示例性实施例描述图8的虚拟溢出检测电路300的操作的图。
图10示出了对应于图6的多个量化值QVL1~OVL10的多个温度计码TCD1~TCD10。
参考图8和10,温度计码生成电路310可以顺序地接收多个量化值QVL1~QVL10,并且分别顺序地生成与多个量化值QVL1~QVL10对应的多个温度计码TCD1~TCD10。如图10所示,温度计码的无效位具有值0并且有效位具有值1。
图11示出了多个累加值ACC(1)~ACC(10),它们是多个温度计码TCD1~TCD10的按位累加。如上所述,减法电路330可以将多个累加值ACC(1)~ACC(N)中的两个相邻累加值相减,以生成多个计数信号SC(1)~SC(N)。结果,由图8的虚拟溢出检测电路300生成的多个计数信号SC(1)~SC(N)可以与图7中示出的频率值f(1)~f(N)才目同。
图12是示出图8的虚拟溢出检测电路300中包括的零数据检测电路的示例性实施例的图。
参考图12,零数据检测电路可以用一个减法器实现。减法器可以从每层中包括的多个节点的总数NT中减去第一累加值ACC(1),以生成零数据计数信号SC(0)。多个节点的总数NT等于量化值的总数以及有效位数的频率值的总和NT(如参考图7所述)。
零数据表示所有位具有值0的量化。对应于零数据的温度计码对于所有位具有值0,因此零数据不对累加电路320的累加值ACC(1)~ACC(N)有贡献。第一累加值ACC(1)表示至少一位为1的量化值的数量。结果,可以通过从总数NT中减去第一累加值ACC(1)来生成零数据计数信号SC(0)。零数据计数信号SC(0)可以包括在虚拟溢出信息VOINF中并提供给数据格式控制器130。
如参考图8到12所示,虚拟溢出检测电路300可以生成与多个量化值对应的多个温度计码,并基于多个温度计码生成虚拟溢出信息VOINF。虚拟溢出检测电路300可以生成对关于每层的有效位数的频率值加以指示的多个计数信号SC(0)~SC(N),并提供多个计数信号SC(0)~SC(N)作为虚拟溢出信息VOINF。
这样,根据一个或多个示例性实施例的ANN系统和ANN系统中控制定点的方法可以通过使用虚拟溢出控制定点格式来有效地防止溢出和/或下溢。结果,增强了ANN系统的性能并降低了ANN系统的功耗,从而改善了ANN系统的功能。
图13是示出根据示例性实施例的虚拟溢出检测电路400的图。
参考图13,虚拟溢出检测电路400可以包括温度计码生成电路410、计数码生成电路420和累加电路430。
温度计码生成电路410可以替换每个量化值QVLi的所有有效位以生成每个温度计码TCDi。温度计码生成电路410可以顺序地接收与每层中包括的多个节点相对应的多个量化值,并且顺序地生成与多个量化值对应的多个温度计码。
在一个或多个示例性实施例中,例如图13所示,温度计码生成电路410可以包括多个OR(或)逻辑门411~415。多个OR逻辑门411~415可以对每个量化值QVLi的每两个相邻位执行OR逻辑运算,以生成每个温度计码TCDi。例如,OR逻辑门411对第N位QN和第(N-1)位QN-1执行OR逻辑运算,以生成温度计码TCDi的第(N-1)位TN-1,以及OR逻辑门412对第(N-1)位QN-1和第(N-2)位QN-2执行OR逻辑运算以生成温度计码TCDi的第(N-2)位TN-2。可以提供对应于量化值QVLi的最高位的第N位QN作为对应于温度计码TCDi的最高有效位的第N位TN。这样,多个OR逻辑门411~415可以基于量化值QVLi的第一至第N位Q1~QN生成温度计码TCDi的第一至第N位T1~TN。
计数码生成电路420可以相对于每个温度计码TCDi将最高有效位保持为有效位1并且将其他有效位从1替换为0,以生成每个计数码CCDi。计数码生成电路420可以顺序地接收与每层中包括的多个节点相对应的多个温度计码,并且顺序地生成与多个温度计码对应的多个计数码。
在一个或多个示例性实施例中,参考图13,计数码生成电路420可以包括多个异或(XOR)逻辑门421~425。
多个XOR逻辑门421~425可以对每个温度计码TCDi的每两个相邻位执行XOR逻辑运算,以生成对应于每个温度计码TCDi的每个计数码CCDi。例如,XOR逻辑门421对每个温度计码TCDi的第N位TN和第(N-1)位TN-1执行XOR逻辑运算,以生成计数码CCDi的第(N-1)位CN-1,并且XOR逻辑门422对每个计数码TCDi的第(N-1)位TN-1和第(N-2)位TN-2执行XOR逻辑运算,以生成每个计数码CCDi的第(N-2)位CN-2。可以提供对应于每个温度计码TCDi的最高位的第N位TN作为对应于每个计数码CCDi的最高位的第N位CN。这样,多个XOR逻辑门421~425可以基于温度计码TCDi的第一至第N位T1~TN生成计数码CCDi的第一至第N位C1~CN。
累加电路430可以逐位累加多个计数码以生成多个计数信号SC(1)~SC(N)。累加电路430可以包括分别接收计数码CCDi的位C1~CN的多个累加器AU 431~436。在针对对应于每层中包括的多个节点的多个计数码完成累加之后,多个累加器431~436可以输出所存储的值作为多个计数信号SC(1)~SC(N)。累加器AU的示例与参考图9描述的相同(或类似)。
图14是用于描述根据示例性实施例的图13的虚拟溢出检测电路400的操作的图。
图14示出了对应于图6的多个量化值QVL1~QVL10和图10的多个温度计码TCD1~TCD10的多个计数码CCD1~CCD10。
参考图13和14,计数码生成电路420可以顺序地接收多个温度计码TCD1~TCD10,并且分别顺序地生成与多个温度计码TCD1~TCD10相对应的多个计数码CCD1~CCD10。如图14所示,计数码的无效位具有值0,最高有效位具有值1并且其他有效位具有值0。
在图14的底部示出多个计数信号SC(1)~SC(N),可以通过多个计数码CCD1~CCD10的按位累加来生成。结果,由图13的虚拟溢出检测电路400生成的多个计数信号SC(1)~SC(N)可以与图7中示出的频率值f(1)~f(N)相同。
如参考图13和14所描述的,虚拟溢出检测电路400可以生成与多个量化值对应的多个温度计码,并基于多个温度计码生成虚拟溢出信息VOINF。虚拟溢出检测电路400可以生成对关于每层的有效位数的频率值加以指示的多个计数信号SC(0)~SC(N),并提供多个计数信号SC(0)~SC(N)作为虚拟溢出信息VOINF。
这样,根据示例性实施例的ANN系统和ANN系统中控制定点的方法可以通过使用虚拟溢出控制定点格式来有效地防止溢出和/或下溢。因此,增强了ANN系统的性能并降低了ANN系统的功耗,从而改善了ANN系统的功能。
图15是示出根据示例性实施例的虚拟溢出检测电路500的图。
参考图15,虚拟溢出检测电路500可以包括多路复用器MUX 510、第一检测电路DET1 520和第二检测电路DET2 530。
多路复用器510可以顺序地接收每层中包括的多个量化值,并且基于每个量化值QVLi中包括的符号位QS将多个量化值划分为正量化值PQVL和负量化值NQVL。
第一检测电路520可以生成正计数信号PSC(1)~PSC(N),其指示正量化值PQVL的有效位数的频率值。第二检测电路530可以生成负计数信号NSC(1)~NSC(N),其指示负量化值NQVL的有效位数的频率值。在一个或多个示例性实施例中,第一检测电路520和第二检测电路530中的每一个可以实现为如参考图8到14所述的虚拟溢出检测电路。
结果,图15的虚拟溢出检测电路500可以生成多个正计数信号PSC(1)~PSC(N)和多个负计数信号NSC(1)~NSC(N),其中多个正计数信号指示多个正量化值PQVL的有效位数的频率值,以及多个负计数信号指示多个负量化值NQVL的有效位数的频率值。可以提供多个正计数信号PSC(1)~PSC(N)和多个负计数信号NSC(1)~NSC(N)作为上述虚拟溢出信息VOINF。如参考图12所描述的零数据计数信号SC(0)还可以包括在虚拟溢出信息VOINF中。
根据一个或多个示例性实施例,可以基于虚拟溢出信息VOINF确定多个量化值是处于溢出接近状态还是处于下溢接近状态。在一个或多个示例性实施例中,如将参考图16所描述的那样,可以基于与每层中包括的多个节点相对应的多个量化值的最大有效位数N的频率值f(N)来确定溢出接近状态和下溢接近状态。
图16是示出根据示例性实施例的控制定点格式的方法的流程图。
参考图16,获得与每层中包括的多个节点相对应的多个量化值的最大有效位数N的频率值f(N)(S510)。最大有效位数N对应于多个量化值的位宽度或数位数目。
可以基于最大有效位数N的频率值f(N)来确定溢出接近状态和下溢接近状态。在一个或多个示例性实施例中,可以将最大有效位数N的频率值f(N)相对于有效位数0~N的频率值f(0)~f(N)的总和NT的比率f(N)/NT与溢出阈值比RH或下溢阈值比RL进行比较,以确定多个量化值是处于溢出接近状态还是处于下溢接近状态。
当比率f(N)/NT高于溢出阈值比RH时(S520:是),减小用于量化的定点格式的分数长度FL(S540)。下面将参考图17A和17B描述分数长度FL的减小。
当比率f(N)/NT低于下溢阈值比RL时(S530:是),增加用于量化的定点格式的分数长度FL(S550)。下面将参考图18A和18B描述分数长度FL的增加。
当比率f(N)/NT不高于溢出阈值比RH(S520:NO)并且不低于下溢阈值比RL(S530:NO)时,保持用于量化的定点格式的分数长度FL(S560)。
图17A和17B是用于描述根据一个或多个示例性实施例的防止溢出的方法的图。
参考图2和17A,当(或基于)对应于每层中的多个节点的多个量化值的有效位数0~N的最大有效位数N的频率值f(N)相对于有效位数0~N的频率值f(0)~f(N)的总和NT的比率f(N)/NT高于溢出阈值比RH,数据格式控制器130可以确定多个量化值处于溢出接近状态。这里,溢出接近状态指示了在所关联层的后续节点操作期间发生溢出的概率非常高。
图17B示出了基于用于层的当前量化的第k个定点格式Qm.n的一个量化值QVL(K)以及基于用于该层的后续量化的第(k+1)个定点格式Qm+1.n-1的对应量化值QVL(K+1)。
参考图17B,第k个定点格式Qm.n指示了在小数点位置RPP(K)之前的m位的整数部分IPRT和在小数点位置RPP(K)之后的n位的分数部分FPRT。第(k+1)个定点格式Qm+1.n-1指示了在小数点位置RPP(K+1)之前的m+1位的整数部分IPRT和在小数点位置RPP(K+1)之后的n-1位的小数部分FPRT。换句话说,第k个定点格式Qm.n的分数长度FL(K)是n,并且第(k+1)个定点格式Qm+1.n-1的分数长度FL(K+1)是n-1。
这样,当数据格式控制器确定多个量化值处于溢出接近状态时(如上参考图17A所述),数据格式控制器130可以将第(k+1)个定点格式Qm+1.n-1的分数长度FL(K+1)减小为小于第k个定点格式Qm.n的分数长度FL(K)。可能降低了精度(或值分辨率),但可以通过减小后续节点操作的分数长度来防止溢出。
图18A和18B是用于描述根据一个或多个示例性实施例的防止下溢的方法的图。
参考图2和18A,当对应于每层中的多个节点的多个量化值的有效位数0~N的最大有效位数N的频率值f(N)相对于有效位数0~N的频率值f(0)~f(N)的总和NT的比率f(N)/NT低于下溢阈值比RL时,数据格式控制器130可以确定多个量化值处于下溢接近状态。这里,下溢接近状态指示了在所关联层的后续节点操作期间发生下溢的概率非常高。
图18B示出了基于用于层的当前量化的第k个定点格式Qm.n的一个量化值QVL(K)以及基于用于该层的后续量化的第(k+1)个定点格式Qm-1.n+1的对应量化值QVL(K+1)。
参考图18B第k个定点格式Qm.n表示在小数点位置RPP(K)之前的m位的整数部分IPRT和在小数点位置RPP(K)之后的n位的分数部分FPRT。第(k+1)个定点格式Qm-1.n+1表示在小数点位置RPP(K+1)之前的m-1位的整数部分IPRT和在小数点位置RPP(K+1)之后的n+1位的小数部分FPRT。换句话说,第k个定点格式Qm.n的分数长度FL(K)是n,并且第(k+1)个定点格式Qm-1.n+1的分数长度FL(K+1)是n+1。
这样,当数据格式控制器确定多个量化值处于下溢接近状态时(如参考图18A所述),数据格式控制器130可以将第(k+1)个定点格式Qm-1.n+1的分数长度FL(K+1)增加到比第k个定点格式Qm.n的分数长度FL(K)长。可以通过增加后续节点操作的分数长度来增加精度(或值分辨率)并且可以防止下溢。
图19是示出根据示例性实施例的量化值的有效位数的示例分布的图。
参考图19,量化值的有效位数VBN的频率值f(VBN)可以近似为正态分布。在这种情况下,图2中的数据格式控制器130可以计算有效位数VBN的平均值M和方差σ2,并且基于平均值M和方差σ2确定用于后续量化的第(k+1)个定点格式的分数长度。
图19示出了频率值f(VBN)接近正态分布的示例,但是应当理解,这仅是示例,并且一个或多个其他示例性实施例不限于此。例如,根据另一示例性实施例,在卷积神经网络(CNN)的情况下,有效位数VBN的频率值f(VBN)可近似为单端伽马分布。在这种情况下,可以基于伽马分布的平均值和方差来计算步长,并且可以基于步长确定分数长度。
图20是示出根据示例性实施例的ANN系统的框图。
参考图20,ANN系统可以包括第一电子设备1101和第二电子设备1201。在本示例性实施例中,深度学习系统可以由第一电子设备1101和第二电子设备1201驱动。
第一电子设备1101可以包括多个异构处理器1110、任务管理器TKMNG 1120、数据格式控制器DFCON 1130、虚拟溢出检测电路VODET 1140、特殊功能寄存器SFR 1150和存储器MEM 1160。第一电子设备1201可以包括多个异构处理器1210、任务管理器1220、数据格式控制器1230、虚拟溢出检测电路1240、特殊功能寄存器1250和存储器1260。第一电子设备1101中的多个异构处理器1110和第二电子设备1201中的多个异构处理器1210可以分别包括CPU 1111和1211,GPU 1112和1212,NPU 1113和1213,DSP 1114和1214,ISP 1115和1215,以及专用硬件1116和1216。
多个异构处理器1110和1210、任务管理器1120和1220,数据格式控制器1130和1230、虚拟溢出检测电路1140和1240、特殊功能寄存器1150和1250、以及图20中的存储器1160和1260可以与上面参考图1,2,3A-3B,4,5A-5B和6至19描述的那些基本相同或相似。
在一个或多个示例性实施例中,一些异构处理器(例如,1111,1112,1113,1114,1115和1116)可以包括在第一电子设备1101中,并且其他异构处理器(例如,1211,1212,1213,1214,1215和1216)可以包括在第二电子设备1201中。第一电子设备1101可以是直接与用户交互的电子设备(例如,由用户直接控制)。第二电子设备1201可以与第一电子设备1101物理分离,并且可以与第一电子设备1101互操作。
在一个或多个示例性实施例中,第一电子设备1101可以是任何计算设备和/或移动设备,诸如个人计算机(PC),膝上型计算机,移动电话,智能电话,平板计算机,个人数字助理(PDA),便携式多媒体播放器(PMP),数码相机,便携式摄像机,音乐播放器,视频播放器,便携式游戏机,导航设备,可穿戴设备,物联网(IoT)设备,万物互联(IoE)设备,虚拟现实(VR)设备,增强现实(AR)设备,服务器,工作站,自主控制设备等。
在一个或多个示例性实施例中,第二电子设备1201可以是可与第一电子设备1101互操作的任何计算设备和/或移动设备。例如,第二电子设备1201可以是依赖于第一电子设备1101的伴随设备,例如可穿戴设备(例如,智能手表)。或者,第二电子设备1201可以是控制IoT设备和/或IoE设备的内部服务器(例如,家庭网关),或外部服务器(例如,云服务器)。
示例性实施例可以应用于包括深度学习、ANN和/或机器学习系统的各种设备和系统。例如,示例性实施例可以应用于诸如移动电话,智能电话,平板电脑,膝上型计算机,PDA,PMP,数码相机,便携式游戏机,可穿戴系统,IoT系统,VR系统,AR系统等。
前述是示例性实施例的说明,而不应被解释为对其进行限制。尽管已经描述了一些示例性实施例,但是本领域技术人员将容易理解,在不实质上脱离本发明构思的情况下可以进行许多修改。
Claims (20)
1.一种人工神经网络ANN系统,包括:
处理器,被配置为针对ANN的每层中包括的多个节点执行节点操作,以获得节点操作的多个结果值,并且基于用于每层的当前量化的第k个定点格式对所获得的多个结果值执行量化操作,以获得多个量化值;
虚拟溢出检测电路,被配置为生成对所获得的多个量化值的有效位数的分布加以指示的虚拟溢出信息;以及
数据格式控制器,被配置为基于所生成的虚拟溢出信息确定用于每层的后续量化的第(k+1)个定点格式。
2.如权利要求1所述的ANN系统,其中,所述虚拟溢出检测电路还被配置为:
生成与所获得的多个量化值对应的多个温度计码;和
基于所生成的多个温度计码生成所述虚拟溢出信息。
3.如权利要求1所述的ANN系统,其中,所述虚拟溢出检测电路还被配置为生成对所述有效位数的频率值加以指示的多个计数信号,并提供所生成的多个计数信号作为所述虚拟溢出信息。
4.如权利要求1所述的ANN系统,其中,所述数据格式控制器还被配置为:
计算所述有效位数的平均值和方差;和
基于计算的平均值和计算的方差确定第(k+1)个定点格式的分数长度。
5.如权利要求1所述的ANN系统,其中,所述数据格式控制器还被配置为基于所生成的虚拟溢出信息确定所述多个量化值是处于溢出接近状态还是处于下溢接近状态。
6.如权利要求5所述的ANN系统,其中,基于数据格式控制器确定所述多个量化值处于溢出接近状态,所述数据格式控制器还被配置为将第(k+1)个定点格式的分数长度减小为比第k个定点格式的分数长度短。
7.如权利要求5所述的ANN系统,其中,基于数据格式控制器确定所述多个量化值处于下溢接近状态,所述数据格式控制器还被配置为将第(k+1)个定点格式的分数长度增大为比第k个定点格式的分数长度长。
8.如权利要求5所述的ANN系统,其中,所述数据格式控制器还被配置为基于所述有效位数中的最大有效位数的频率值相对于所述有效位数的频率值总和的比率高于溢出阈值比,来确定所述多个量化值处于溢出接近状态。
9.如权利要求5所述的ANN系统,其中,所述数据格式控制器还被配置为基于所述有效位数中的最大有效位数的频率值相对于所述有效位数的频率值总和的比率低于下溢阈值比,来确定所述多个量化值处于下溢接近状态。
10.如权利要求1所述的ANN系统,其中,所述虚拟溢出检测电路包括:
温度计码生成电路,被配置为顺序地接收所获得的多个量化值并替换每个量化值的有效位,以顺序地生成与所获得的多个量化值对应的多个温度计码。
11.如权利要求10所述的ANN系统,其中,所述温度计码生成电路包括:
多个OR逻辑门,被配置为对每个量化值的每两个相邻位执行OR逻辑运算以生成每个温度计码。
12.如权利要求10所述的ANN系统,其中,所述虚拟溢出生成电路还包括:
累加电路,被配置为逐位累加所生成的多个温度计码以生成多个累加值;以及
减法电路,被配置为将所生成的多个累加值的两个相邻累加值相减,以生成多个计数信号,并提供所生成的多个计数信号作为所述虚拟溢出信息。
13.如权利要求10所述的ANN系统,其中,所述虚拟溢出生成电路还包括:
计数码生成电路,被配置为顺序地接收所生成的多个温度计码,针对每个温度计码将最高有效位保持为有效位1并且将其他有效位从1替换为0,以顺序地生成与所生成的多个温度计码对应的多个计数码;以及
累加电路,被配置为逐位累加所生成的多个计数码以生成多个计数信号,并提供所生成的多个计数信号作为所述虚拟溢出信息。
14.如权利要求13所述的ANN系统,其中,所述计数码生成电路包括:
多个XOR逻辑门,被配置为对每个温度计码的每两个相邻位执行XOR逻辑运算,以生成与每个温度计码对应的每个计数码。
15.如权利要求1所述的ANN系统,其中,所述虚拟溢出检测电路包括:
多路复用器,被配置为顺序地接收所获得的多个量化值,并基于每个量化值中包括的符号位将所接收的多个量化值划分为正量化值和负量化值;
第一检测电路,被配置为生成对正量化值的有效位数的频率值加以指示的正计数信号;以及
第二检测电路,被配置为生成对负量化值的有效位数的频率值加以指示的负计数信号。
16.如权利要求1所述的ANN系统,其中:
所述虚拟溢出检测电路还被配置为生成与ANN的多个层对应的多个虚拟溢出信息,以及
所述数据格式控制器还被配置为基于所生成的多个虚拟溢出信息来确定针对每层的第(k+1)个定点格式。
17.一种人工神经网络ANN系统,包括:
虚拟溢出检测电路,被配置为:
生成与多个量化值对应的多个温度计码,其中所述多个量化值是通过基于定点格式执行量化操作而获得的,和
基于所生成的多个温度计码生成虚拟溢出信息,该虚拟溢出信息指示所述多个量化值的有效位数的分布;以及
数据格式控制器,被配置为基于所生成的虚拟溢出信息来更新所述定点格式。
18.一种人工神经网络ANN系统中控制定点格式的方法,所述方法包括:
针对ANN的每层中包括的多个节点执行节点操作,以获得节点操作的多个结果值;
基于用于每层的当前量化的第k个定点格式对所获得的多个结果值执行量化操作,以获得多个量化值;
生成对所获得的多个量化值的有效位数的分布加以指示的虚拟溢出信息;以及
基于所生成的虚拟溢出信息确定用于每层的后续量化的第(k+1)个定点格式。
19.如权利要求18所述的方法,其中,生成虚拟溢出信息包括:
生成与所获得的多个量化值对应的多个温度计码;
基于生成的多个温度计码生成对所述有效位数的频率值加以指示的多个计数信号;以及
提供所生成的多个计数信号作为所述虚拟溢出信息。
20.如权利要求18所述的方法,其中,确定用于后续量化的第(k+1)个定点格式包括:
基于所生成的虚拟溢出信息确定所获得的多个量化值是处于溢出接近状态还是处于下溢接近状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180104403A KR20200026455A (ko) | 2018-09-03 | 2018-09-03 | 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법 |
KR10-2018-0104403 | 2018-09-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110874628A true CN110874628A (zh) | 2020-03-10 |
Family
ID=69641379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910534156.0A Pending CN110874628A (zh) | 2018-09-03 | 2019-06-19 | 人工神经网络及其中控制定点的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11775807B2 (zh) |
KR (1) | KR20200026455A (zh) |
CN (1) | CN110874628A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663464B2 (en) * | 2018-09-20 | 2023-05-30 | Kneron (Taiwan) Co., Ltd. | Deep neural network with low-precision dynamic fixed-point in reconfigurable hardware design |
CN109359732B (zh) * | 2018-09-30 | 2020-06-09 | 阿里巴巴集团控股有限公司 | 一种芯片及基于其的数据处理方法 |
KR102600978B1 (ko) * | 2021-01-08 | 2023-11-10 | 한국과학기술원 | 저비트 정밀도 심층신경망 학습 장치 및 그 방법 |
KR102628658B1 (ko) * | 2021-03-04 | 2024-01-25 | 삼성전자주식회사 | 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법 |
US20230308467A1 (en) * | 2022-03-24 | 2023-09-28 | At&T Intellectual Property I, L.P. | Home Gateway Monitoring for Vulnerable Home Internet of Things Devices |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4945494A (en) * | 1989-03-02 | 1990-07-31 | Texas Instruments Incorporated | Neural network and system |
CN101373957A (zh) * | 2007-08-24 | 2009-02-25 | 锐迪科创微电子(北京)有限公司 | 数字增益控制方法及电路 |
CN105512724A (zh) * | 2015-12-01 | 2016-04-20 | 中国科学院计算技术研究所 | 加法器装置、数据累加方法及数据处理装置 |
US20160328646A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
US20160328645A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
CN107688855A (zh) * | 2016-08-12 | 2018-02-13 | 北京深鉴科技有限公司 | 针对于复杂神经网络的分层量化方法与装置 |
CN107844322A (zh) * | 2017-07-20 | 2018-03-27 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN107924485A (zh) * | 2015-09-23 | 2018-04-17 | 英特尔公司 | 具有基于电阻的学习规则电路的电子神经网络电路 |
CN108345939A (zh) * | 2017-01-25 | 2018-07-31 | 微软技术许可有限责任公司 | 基于定点运算的神经网络 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6879971B1 (en) * | 1995-12-22 | 2005-04-12 | Pavilion Technologies, Inc. | Automated method for building a model |
CN106575379B (zh) | 2014-09-09 | 2019-07-23 | 英特尔公司 | 用于神经网络的改进的定点整型实现方式 |
US20170061279A1 (en) | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
KR101644039B1 (ko) | 2015-06-11 | 2016-07-29 | 에스케이텔레콤 주식회사 | 고정소수점 연산 방법 및 고정소수점 연산 장치 |
GB201607713D0 (en) | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
US10643124B2 (en) | 2016-08-12 | 2020-05-05 | Beijing Deephi Intelligent Technology Co., Ltd. | Method and device for quantizing complex artificial neural network |
US10491239B1 (en) * | 2017-02-02 | 2019-11-26 | Habana Labs Ltd. | Large-scale computations using an adaptive numerical format |
US10650303B2 (en) | 2017-02-14 | 2020-05-12 | Google Llc | Implementing neural networks in fixed point arithmetic computing systems |
-
2018
- 2018-09-03 KR KR1020180104403A patent/KR20200026455A/ko active Search and Examination
-
2019
- 2019-03-28 US US16/367,662 patent/US11775807B2/en active Active
- 2019-06-19 CN CN201910534156.0A patent/CN110874628A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4945494A (en) * | 1989-03-02 | 1990-07-31 | Texas Instruments Incorporated | Neural network and system |
CN101373957A (zh) * | 2007-08-24 | 2009-02-25 | 锐迪科创微电子(北京)有限公司 | 数字增益控制方法及电路 |
US20160328646A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
US20160328645A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
CN107580712A (zh) * | 2015-05-08 | 2018-01-12 | 高通股份有限公司 | 定点神经网络的降低的计算复杂度 |
CN107636697A (zh) * | 2015-05-08 | 2018-01-26 | 高通股份有限公司 | 基于浮点神经网络量化的定点神经网络 |
CN107924485A (zh) * | 2015-09-23 | 2018-04-17 | 英特尔公司 | 具有基于电阻的学习规则电路的电子神经网络电路 |
CN105512724A (zh) * | 2015-12-01 | 2016-04-20 | 中国科学院计算技术研究所 | 加法器装置、数据累加方法及数据处理装置 |
CN107688855A (zh) * | 2016-08-12 | 2018-02-13 | 北京深鉴科技有限公司 | 针对于复杂神经网络的分层量化方法与装置 |
CN108345939A (zh) * | 2017-01-25 | 2018-07-31 | 微软技术许可有限责任公司 | 基于定点运算的神经网络 |
CN107844322A (zh) * | 2017-07-20 | 2018-03-27 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
Non-Patent Citations (4)
Title |
---|
TAESIK NA 等: "On-chip training of recurrent neural networks with limited numerical precision", 《2017 INTERNATIONAL JOINT CONFERENCE ON NEURAL NETWORKS (IJCNN)》, 3 July 2017 (2017-07-03), pages 3716 - 3723 * |
代睿: "面向综合的数控振荡器与全数字锁相环研究与设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 April 2018 (2018-04-15), pages 136 - 235 * |
李康玉: "含谐波的电能计量系统的研究与实现", 《中国优秀硕士学位论文全文数据库 工程科技II辑》, 15 December 2013 (2013-12-15), pages 042 - 1690 * |
王旭: "核信号数字化处理过程关键技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 February 2018 (2018-02-15), pages 135 - 932 * |
Also Published As
Publication number | Publication date |
---|---|
US20200074285A1 (en) | 2020-03-05 |
KR20200026455A (ko) | 2020-03-11 |
US11775807B2 (en) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110874628A (zh) | 人工神经网络及其中控制定点的方法 | |
US20210004663A1 (en) | Neural network device and method of quantizing parameters of neural network | |
US11928595B2 (en) | Method of managing data representation for deep learning, method of processing data for deep learning and deep learning system performing the same | |
US20160358069A1 (en) | Neural network suppression | |
US9411726B2 (en) | Low power computation architecture | |
JP7240657B2 (ja) | ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム | |
US11003736B2 (en) | Reduced dot product computation circuit | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
JP2020009444A (ja) | ニューラルネットワークにおいてパラメータを処理する方法及び装置 | |
US20200151573A1 (en) | Dynamic precision scaling at epoch granularity in neural networks | |
US20230297819A1 (en) | Processor array for processing sparse binary neural networks | |
US11704556B2 (en) | Optimization methods for quantization of neural network models | |
Lemaire et al. | An analytical estimation of spiking neural networks energy efficiency | |
KR20200049366A (ko) | 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법 | |
EP3663938B1 (en) | Signal processing method and apparatus | |
JP2018194974A (ja) | 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 | |
CN111382759A (zh) | 一种像素级分类方法、装置、设备及存储介质 | |
KR20240025523A (ko) | 깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름 | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
TW202138999A (zh) | 用於卷積運算的資料劃分方法及處理器 | |
CN112789627A (zh) | 一种神经网络处理器、数据处理方法及相关设备 | |
WO2021081854A1 (zh) | 一种卷积运算电路和卷积运算方法 | |
CN110009091B (zh) | 学习网络在等价类空间中的优化 | |
KR20240025540A (ko) | 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션 | |
CN111788567A (zh) | 一种数据处理设备以及一种数据处理方法 |
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 |