CN109697510A - 具有神经网络的方法和装置 - Google Patents
具有神经网络的方法和装置 Download PDFInfo
- Publication number
- CN109697510A CN109697510A CN201811199602.9A CN201811199602A CN109697510A CN 109697510 A CN109697510 A CN 109697510A CN 201811199602 A CN201811199602 A CN 201811199602A CN 109697510 A CN109697510 A CN 109697510A
- Authority
- CN
- China
- Prior art keywords
- value
- updated value
- accumulation
- weight
- updated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 262
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000009825 accumulation Methods 0.000 claims abstract description 276
- 230000004044 response Effects 0.000 claims abstract description 27
- 230000001186 cumulative effect Effects 0.000 claims abstract description 17
- 238000007667 floating Methods 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 41
- 238000012549 training Methods 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 16
- 210000004218 nerve net Anatomy 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 23
- 230000004913 activation Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 17
- 238000012544 monitoring process Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000005303 weighing Methods 0.000 description 11
- 230000001537 neural effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 210000005036 nerve Anatomy 0.000 description 6
- 239000000047 product Substances 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000003909 pattern recognition Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000011469 building brick Substances 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
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/08—Learning methods
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Image Analysis (AREA)
- Feedback Control In General (AREA)
Abstract
一种处理器实现的神经网络方法包括:计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值;通过在累积缓冲区中累积个体更新值来生成累积更新值;以及响应于累积更新值等于或大于阈值,通过使用累积更新值更新权重来训练神经网络。
Description
相关申请的交叉引用
本申请要求于2017年10月23日在韩国知识产权局提交的韩国专利申请No.10-2017-0137374的优先权,其公开内容通过引用全部并入本文中。
技术领域
本公开涉及具有神经网络的方法和装置。
背景技术
由于在经过大量训练之后的专用计算架构可以提供计算上直观的特征提取或识别、输入模式和输出模式之间的映射、对输入模式的模式识别或各种形式的分类,已经通过处理器实现的神经网络模型来实现仅作为示例的特征提取、模式识别和/或分析的技术自动化。经训练的提取这种信息或识别、生成这种映射、执行这种模式识别或执行这种分类的能力可以被称为神经网络的学习能力。这种经训练的能力还可以使专用计算架构能够将输入模式或对象或输入模式或对象的一部分加以分类,例如,分类为属于一个或多个预定组的成员。此外,由于专门的训练,这种经过专门训练的神经网络因此可以由此具有相对于例如神经网络可能尚未被训练的输入模式来生成相对准确或可靠输出的推广能力。然而,因为这种操作是通过这种专用计算架构执行的,并且以不同于在非计算机实现或非自动化方法中执行的自动化方式执行,所以这种操作还引发了仅由于实现它们的自动化和专用计算架构方式而出现的问题或缺点。
神经网络装置对复杂的输入数据执行许多操作。
发明内容
提供了本发明内容以简化形式介绍下面在具体实施方式中进一步描述的对理念的选择。本发明内容不意在识别所请求保护的主题的关键特征或必要特征,也不意在用作帮助确定所请求保护的主题的范围。
在一个总体方面,提供了一种处理器实现的神经网络方法,所述方法包括:计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值;通过在累积缓冲区中累积个体更新值来生成累积更新值;以及响应于累积更新值等于或大于阈值,通过使用累积更新值更新权重来训练所述神经网络。
所述阈值可以是与所述权重的最低有效比特相对应的值;以及所述更新可以包括:基于所述累积更新值来确定有效更新值;将所述有效更新值加到所述权重上;以及从所述累积缓冲区的累积更新值中减去所述有效更新值。
所述有效更新值可以是所述累积更新值的一部分。
所述有效更新值可以是所述权重的最低有效比特的倍数。
所述方法还可以包括:以预定更新周期确定所述累积更新值是否可以等于或大于所述阈值。
所述方法还可以包括:响应于所述累积更新值小于所述阈值,在所述累积缓冲区中累积个体更新值,直到下一个更新周期为止。
所述权重可以是包括第一符号比特、第一整数部分和第一小数部分在内的定点值;所述累积更新值可以是包括第二符号比特和第二小数部分在内的定点值;以及所述更新可以包括将表示所述累积更新值的第二小数部分的比特中与所述权重的第一小数部分重叠的至少一个比特的值加到所述权重上。
所述更新可以包括:将与所述第一小数部分重叠的所述至少一个比特的值初始化为与所述第二符号比特相同的值。
所述方法还可以包括:调整所述累积更新值的小数点的位置。
所述调整可以包括:响应于所述个体更新值的平均值小于第二阈值,向所述累积更新值的较低比特方向移动所述累积更新值的小数点的位置;以及响应于所述个体更新值的平均值大于所述第二阈值,向所述累积更新值的较高比特方向移动所述累积更新值的小数点的位置。
所述第二阈值可以是1/a乘以所述阈值;以及a可以是自然数。
所述权重可以是其中所述第一小数部分的比特数可以被调整的动态定点值。
所述权重可以是包括第一符号比特、第一指数部分、第一尾数部分和第一偏置值在内的浮点值;所述累积更新值可以是包括第二符号比特、第二指数部分、第二尾数部分和第二偏置值在内的浮点值;以及所述更新可以包括:将所述权重的有效数范围中包括的累积更新值的有效值加到所述权重上。
所述方法还可以包括:调整所述累积更新值的第二偏置值。
所述调整可以包括:响应于所述累积更新值的第二指数大于所述阈值,增加所述第二偏置值;以及响应于所述累积更新值小于第二阈值,减小所述第二偏置值。
所述第二阈值可以是1/b乘以所述阈值;以及b可以是自然数。
一种非暂时性计算机可读存储介质可以存储指令,所述指令在由处理器执行时,使所述处理器执行所述方法。
在另一总体方面,提供了一种神经网络装置,所述装置包括:一个或多个处理器,被配置为:计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值,通过在累积缓冲区中累积所述个体更新值来生成累积更新值,以及响应于累积更新值等于或大于阈值,通过使用所述累积更新值更新所述权重来训练所述神经网络。
所述阈值可以是与所述权重的最低有效比特相对应的值;以及所述一个或多个处理器还被配置为:基于所述累积更新值来确定有效更新值,将所述有效更新值加到所述权重上,以及从所述累积缓冲区的累积更新值中减去所述有效更新值。
所述有效更新值可以是所述累积更新值的一部分。
所述有效更新值可以是所述权重的最低有效比特的倍数。
所述一个或多个处理器还被配置为:以预定更新周期来确定所述累积更新值是否可以等于或大于所述阈值。
所述一个或多个处理器还被配置为:响应于所述累积更新值小于所述阈值,在所述累积缓冲区中累积个体更新值,直到下一个更新周期为止。
所述权重可以是包括第一符号比特、第一整数部分和第一小数部分在内的定点值;所述累积更新值可以是包括第二符号比特和第二小数部分在内的定点值;所述一个或多个处理器还被配置为:将表示所述累积更新值的第二小数部分的比特中与所述权重的第一小数部分重叠的至少一个比特的值加到所述权重上。
所述一个或多个处理器还被配置为:将与所述第一小数部分重叠的所述至少一个比特的值初始化为与所述第二符号比特相同的值。
所述一个或多个处理器还被配置为:调整所述累积更新值的小数点的位置。
所述一个或多个处理器还被配置为:响应于所述个体更新值的平均值小于第二阈值,向所述累积更新值的较低比特方向移动所述累积更新值的小数点的位置,以及响应于所述个体更新值的平均值大于所述第二阈值,向所述累积更新值的较高比特方向移动所述累积更新值的小数点的位置。
所述第二阈值可以是1/a乘以所述阈值;以及a可以是自然数。
所述权重可以是包括第一符号比特、第一指数部分、第一尾数部分和第一偏置值在内的浮点值;所述累积更新值可以是包括第二符号比特、第二指数部分、第二尾数部分和第二偏置值在内的浮点值;以及所述一个或多个处理器还被配置为:将所述权重的有效数范围中包括的所述累积更新值的有效值加到所述权重上。
所述装置还可以包括:存储器,被配置为存储一个或多个程序,其中,所述一个或多个处理器被配置为:响应于执行所述一个或多个程序,计算所述个体更新值,生成所述累积更新值,以及训练所述神经网络。
在另一总体方面,提供了一种处理器实现的神经网络方法,所述方法包括:计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值;通过将个体更新值相加来生成累积更新值;以及响应于累积更新值等于或大于阈值,通过使用累积更新值更新权重来训练神经网络。
所述更新可以包括:将累积更新值的一部分确定为有效更新值;以及通过将有效更新值加到所述权重上来更新所述权重。
所述方法还可以包括:从所述累积更新值中减去所述有效更新值;将另一个体更新值加到所述累积更新值上;以及响应于所述累积更新值等于或大于所述阈值,使用所述累积更新值来重新更新所述权重。
所述方法还可以包括:基于第二阈值与个体更新值的平均值和累积更新值中的任一个或二者之间的比较,按因子来调整所述累积更新值的大小,其中,所述更新可以包括:使用经调整的累积更新值来更新所述权重。
附加方面将部分地在以下描述中阐述,且将部分地通过以下描述而变得清楚明白,或者可以通过对所提出的实施例的实践来获知。
附图说明
通过以下结合附图对实施例的描述,这些和/或其他方面将变得明确并且更容易理解,在附图中:
图1是示出了根据一个或多个实施例的神经网络的示例的图;
图2是示出了根据一个或多个实施例的处理神经网络中的参数的方法的示例的流程图;
图3A是示出了根据一个或多个实施例的浮点值的示例的图,图3B是示出了根据一个或多个实施例的定点值的示例的图,以及图3C是示出了根据一个或多个实施例的定点值的另一示例的图;
图4是示出了根据一个或多个实施例的处理神经网络中的参数的方法的另一示例的流程图;
图5是示出了根据一个或多个实施例的使用定点参数的神经网络的示例的图;
图6是示出了根据一个或多个实施例的将有效更新值加到权重上的过程的示例的图;
图7是示出了根据一个或多个实施例的处理使用定点参数的神经网络中的参数的方法的示例的流程图;
图8A是示出了根据一个或多个实施例的调整累积更新值的小数点的位置的过程的示例的图,以及图8B是示出了根据一个或多个实施例的调整累积更新值的小数点的位置的过程的另一示例的图;
图9是示出了根据一个或多个实施例的使用浮点参数的神经网络的示例的图;
图10是示出了根据一个或多个实施例的处理使用浮点参数的神经网络中的参数的方法的示例的流程图;以及
图11是示出了根据一个或多个实施例的神经网络装置的配置的框图。
图12是示出了被配置为实现神经网络推理操作的电子系统或设备的示例的图。
具体实施方式
提供以下详细描述来帮助读者获得对本文描述的方法、装置和/或系统的全面理解。然而,在理解了本申请的公开之后,本文描述的方法、装置和/或系统的各种改变、修改和等同物将是显而易见的。例如,本文描述的操作序列仅仅是示例,并且不限于本文阐述的那些,而是除了必须以特定顺序发生的操作之外,可以在理解本申请的公开内容之后显而易见地改变。此外,为了更加清楚和简洁,可以省略对已知特征的描述。
本文所述的特征可以以不同的形式来体现,并且不应被解释为受限于本文所述的示例。相反,本文描述的示例仅仅是为了说明实现本文描述的方法、装置和/或系统的许多可能方式中的一些方式来提供的,在理解了本申请的公开内容后这些可能方式是清楚明白的。
现在详细参考实施例,在附图中示出了实施例的示例,其中,贯穿附图类似的附图标记表示类似的元素。在这点上,呈现的实施例可以具有不同形式,并且不应当被解释为受限于本文所阐明的描述。因此,下面通过参考附图来描述实施例,以仅解释各个方面。本文中所使用的术语“和/或”包括相关列出项目中的一个或多个的任意和所有组合。诸如“...中的至少一项”之类的表述在元素列表之前时修饰整个元素列表,而不是修饰列表中的单独元素。
如本文所使用的,术语“包括”或“包含”等不应该被解释为必须包括说明书中描述的所有各种元素或操作,并且应当排除其中的一些,或者可以被解释为包括附加组件或操作。
而且,如本文所使用的,可以使用包括诸如“第一”或“第二”之类的序数在内的术语来描述各种元素,但是这些元素不应该受限于这些术语。这些术语仅用于将一个元素与另一元素彼此区分的目的。
实施例涉及用于处理神经网络中的参数的方法和装置,并且关于广泛知晓的事项将省略其详细描述。
图1是示出了根据一个或多个实施例的神经网络10的示例的图。
从而,如图1所示,神经网络10可以具有包括输入层、隐藏层和输出层在内的结构。神经网络10可基于接收到的输入数据(例如,I1和I2)来执行操作并基于操作的结果来生成输出数据(例如,O1和O2)。
神经网络10可以是深度神经网络(DNN)或者包括两个或更多个隐藏层在内的n层神经网络。例如,如图1所示,神经网络10可以是包括输入层(层1)、两个隐藏层(层2和层3)以及输出层(层4)在内的DNN。DNN可以是全连接神经网络、卷积神经网络(CNN)、递归神经网络(RNN)、深度信念网络或受限玻尔兹曼机。DNN还可以包括分别具有这种完全、卷积、递归(recurrent)连接的不同或重叠的神经网络部分。然而,DNN并不限于此。
神经网络10可以被配置为通过基于深度学习以非线性关系互映射输入数据和输出数据来执行作为非限制性示例的对象分类、对象识别、语音识别和图像识别。作为非限制性示例,这种深度学习指示用于解决问题的处理器实现的机器学习方案,例如与来自大数据集的自动化图像或语音识别相关的问题。可以通过监督或无监督学习或训练映射输入数据和输出数据来实现深度学习,使得当经过训练时,所得到的机器学习模型、引擎或示例NN可以直观地将进一步的输入数据映射到具有期望准确度或可靠性的输出数据。本文中,应当注意:关于示例或实施例(例如关于示例或实施例可以包括或实现的内容)的对术语“可以”的使用意味着存在包括或实现这种特征的至少一个示例或实施例,而并不是所有示例和实施例都限于此。
当神经网络10包括DNN结构时,神经网络10可以包括可提取有效信息的更多层,例如用于模式识别或用于分类目的。在图1中,神经网络10被示出为包括四层,然而这仅是示例,且神经网络10可包括更少或更多的层。例如,对于总共五个或更多个层,神经网络可以包括一个或多个输入层、三个或更多个隐藏层、以及一个或多个输出层。此外,神经网络10可以包括具有不同于图1所示的各种结构的层。
神经网络10中包括的每个层可包括被称为“处理元件(PE)”、“单元”或类似术语的多个节点。节点也可以被称为人工神经元,尽管这种引用并不旨在赋予关于神经网络架构如何计算地映射或由此直观地识别信息以及人类神经元如何操作的任何相关性,即,术语人工神经元仅仅是一个技术术语,指的是神经网络的硬件实现节点。例如,如图1所示,输入层(层1)可包括两个节点并且第二层(层2)可包括三个节点。然而,这仅是示例,并且神经网络10中包括的每个层可包括各种数量的节点。
神经网络10中包括的不同层所包括的节点可彼此连接或链接以交换数据。例如,层中的一个节点可从另一层中的其他节点接收数据并根据接收到的数据来操作,以及向又一层中的其他节点输出操作结果。附加地,在递归连接示例中,层中的一个节点可以接收来自先前时间的来自其自身和/或来自该层的另一节点的数据。连接的数量可以与后续层中包括的节点的数量相对应。例如,在相邻的全连接层中,当前层的每个节点可以具有到后续层的每个节点的相应连接,注意在一些示例中,在训练或优化期间,这种全连接稍后可以被修剪或最小化。
每个节点的输出值可被称为激活,或者是由相应节点的这种预定激活函数产生的值。因此,激活可以是一个节点的输出值,并且同时由于与下一层的相应连接而可以是下一层中包括的节点的输入值。每个节点可基于从前一层中包括的节点接收的作为结果的激活和权重来确定其激活。权重是用于在每个节点处计算激活的参数,并且可以是向节点之间的连接关系指派的值。例如,可以将来自前一层的节点的输出通过前一层的节点和下一层的节点之间的加权连接作为输入向下一层或后一层的节点提供,且加权连接的权重在神经网络的训练期间被进行各种调整,直到针对期望目标训练好神经网络为止。可能存在通向下一层的节点的附加连接,例如用于通过可以加权或可以不加权的连接提供偏置连接值和/或用于提供可以加权的上述示例递归连接。在训练和实现期间,可以选择性地实现、移除并改变这种连接和连接权重,以生成或获得由此训练的作为结果的神经网络,并且可以针对训练的目标来将其相应地实现,例如针对任何上述示例识别目标来实现。
在神经网络的训练期间,可以改变架构、相邻节点之间的选择性连接以及相应的连接权重。神经网络的连接权重也可以被称为神经网络的参数。例如,在非限制性监督训练示例中,仅作为示例,可以基于带标记的输入图像信息或期望的相应输出图像分类以及通过反向传播来训练神经网络。在训练中,可以递归地调整不同隐藏层的节点之间的连接权重,直到例如以期望的准确率或低于最大错误率来训练出相应的神经网络模型为止。分别训练的神经网络可以存储在训练或识别装置的存储器中。例如,经训练的神经网络可以存储在经训练的矢量、矩阵或多个矩阵、或其他格式中,其中矩阵的元素表示或暗示相应神经网络结构的相应经训练的加权连接(参数)。所存储的经训练的神经网络还可以包括超参数信息,其可以定义相应神经网络的特定结构或架构,示例存储的经训练的参数与该特定结构或架构相对应。超参数可限定多少隐藏层、这些层的功能(例如它们是否是卷积层),仅作为示例,诸如神经网络结构有多少这种卷积、解卷积、采样、递归和/或全连接的隐藏层以及各自的结构。超参数还可以包括不同示例中的神经网络中的任何偏置和/或上下文节点的配置和值的信息、节点的相应激活函数、节点的类型(例如,在一些示例中的长短期(longshort-term)存储节点),并且定义神经网络的任何递归结构或任何其他递归结构,其可以在不同的实施例中变化。在上述示例中,当存在多个输入层时,超参数可以例如还描述神经网络的架构,其中,由第一输入层之后的神经网络的一部分作用的神经网络内的信息与由第二输入层之后的神经网络的另一部分作用的神经网络信息合并或考虑,或者进一步地,神经网络的这种部分和其他部分是单个输入层之后的发散部分,其相应的信息随后以类似方式合并。类似地,在具有不同的输出层的示例中,超参数还可以例如描述神经网络的结构,其中,神经网络中由神经网络的早期部分所作用的神经网络信息发散或者由神经网络的不同(例如,独立或相关)部分在神经网络内分别考虑,用于最终的分别考虑并提供给不同的输出层或不同的输出之前的层,然后由单个输出层统一作用。这里,神经网络内的示例神经网络信息可以是驻留在神经网络的各个层或由神经网络的各个层表示的信息,和/或驻留在神经网络内的各个连接处或由神经网络内的各个连接表示的相应信息。在一些示例中,例如在隐藏层是卷积层的情况下,该层可以输出或生成向卷积层提供的并取决于卷积层的各个应用的卷积核的信息的一个或多个经提取的特征信息。在该示例中,卷积层的输入可以是二维、三维或更多维信息,例如三维体积,并且卷积层的输出也可以是取决于设置的卷积参数、卷积核和卷积层的架构的多维信息。作为非限制性示例,神经网络10的输入以及输入层的示例输入数据可以类似地是单维或多维信息,诸如具有像素、时间捕捉数据、体积数据、特征信息、特征向量或特征图的形式。因此,输入数据可以代表图像信息、音频信息或其他信息。在例如利用电池状态监视来实现神经网络100的示例中,输入信息备选地可以是各种电池状态信息,例如电压、电流、温度等,诸如在不同的时间点或在不同的时间段处的电池状态信息。
因此,返回图1,每个节点可以是接收一个或多个数据值(例如,通过这种加权连接)并输出作为结果的激活并且由此可以将输入映射到输出的计算单元。计算单元可以与节点的激活函数相对应。作为非限制性示例,例如,如果σ是激活函数,是在第(i-1)层的第k个节点和第i层的第j节点之间的连接的权重,并且是第i层的第j个节点的偏置连接值,并且是第i层的第j个节点的作为结果的激活,则激活可以通过以下等式1来表达。
[等式1]
如图1所示,第二层(层2)中的第一节点的激活可被表达为此外,根据等式1,可具有值然而,上述等式1仅是用于描述用于处理神经网络中的数据的激活和权重的示例,但是不限于此。激活可以是通过如下方式获得的值:通过修正线性单元(ReLU)来处理通过对从前一层接收的激活的加权和(weighted sum)应用激活函数所获得的值。
神经网络10可使用低精度数系统。低精度数系统是通过使用具有比典型的高精度神经网络的比特数相对少的比特数的数据作为参数和/或激活结果来在减少精度损失的同时减少计算量的系统。例如,典型的高精度神经网络使用32比特或64比特浮点或定点数据作为参数和激活结果,而神经网络10可使用低精度数系统,其可使用8比特或16比特浮点或定点数据作为参数和/或激活结果。
如前所述,对使用8比特或16比特浮点或定点数据的神经网络10的使用意味着例如神经网络10的一层或多层的多个节点中的每一个节点的激活值、权重以及偏置连接值具有8比特或16比特浮点或定点数据格式。然而,使用低精度数系统的神经网络10可使用具有更小比特数的浮点或定点数据作为参数,并不限于上述示例。
在神经网络10中,大量的数据集在多个相互连接的节点之间交换并且通过层进行许多计算过程。使用低精度数系统的神经网络10在许多计算过程期间使用具有比典型的高精度神经网络小的比特数的数据,且因此与典型的高精度神经网络相比,可以减少神经网络10的计算量。此外,因为神经网络10使用比典型的更高精度神经网络少的比特数,所以神经网络10可以用相同的资源来处理比典型的更高精度神经网络复杂的数据集。然而,即使使用低精度数系统的神经网络10减少了计算量,可能需要一种最小化精度损失的技术。现在将参考图2至12来更详细地描述使用这种低精度数系统的神经网络10中最小化精度损失的方法。
图2是示出了根据一些实施例的处理神经网络中的参数的方法的示例的流程图。神经网络可以是使用低精度数系统的神经网络。参数可以是向神经网络中包括的节点之间的连接关系指派的权重。在下文中,要在神经网络中处理的参数将被描述为权重,但是参数不一定限于权重。参数可以指代在神经网络中处理的任何数据。
参考图2,在操作210中,神经网络装置可以计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值。权重可以是浮点值或定点值。下面将参考图3A至3C来描述浮点值和定点值。
图3A是示出了根据一些实施例的浮点值30的示例的图。图3B是示出了根据一些实施例的定点值35的示例的图。图3C是示出了根据一些实施例的定点值的另一示例的图。
参考图3A,浮点值30可包括符号比特310、指数部分320、尾数部分330和偏置值340。浮点意味着将数分成指示小数点部分(即,尾数)的部分和指示小数点位置的部分(即,指数)。
尾数部分330可对应于指示小数点部分的部分。指数部分320可对应于指示小数点位置的部分。符号比特310可确定浮点值30的符号。偏置值340可以是加到指数部分320上的值或被从指数部分320中减去的值,并被确定为表示负指数的值。浮点值30可包括符号比特310、与指数部分320相对应的比特以及与尾数部分330相对应的比特。偏置值340可以相对于浮点值30被预先确定并被单独存储在存储器和本地存储器中的一个或两个中,诸如累积缓冲区。
同时,当符号比特310表示符号,指数部分320表示指数,尾数部分330表示尾数,并且偏置值340表示偏置值时,浮点值30可以是满足下述等式2的值。
[等式2]
浮点值=(-1)符号·2指数-偏置·尾数
参考图3B,定点值35可包括符号比特315、整数部分325、小数部分335和小数点345。定点意味着表示使用小数点的具有固定位数的小数的记号。
符号比特315可确定定点值35的符号。整数部分325可对应于表示定点值35的整数的部分。小数部分335可对应于表示定点值35的小数的部分。小数点345可意味着作为用于区分定点值35的整数部分325和小数部分335的参考的点。
同时,可以参考图3C来描述由定点值35表示的值。参考图3C,定点值35可以是8比特定点值。定点值35也可包括整数部分325、小数部分335和小数点345。
表示整数部分325和小数部分335的每个比特可以具有1或0的值。此外,如图3C所示,代表整数部分325和小数部分335的比特可以顺序地具有值-8、+4、+2、+1、+0.5、+0.25、+0.125和+0.0625。当整数部分325的最高有效比特是1时,由于由整数部分325的最高有效比特表示的值是-8,即使整数部分325和小数部分335中包括的其他比特具有特定值,由定点数35表示的值也可以是负的。整数部分325的最高有效比特可对应于确定定点值35的符号的符号比特315。
然而,图3C仅是示例,且定点值35可以是16比特定点值并且可以是具有任何适合数量比特的定点值。此外,定点值35可通过编码表达方法、1的补码方法和2的补码方法中的任一项来表示负数。
返回图2,个体更新值可以是为了更新权重而计算的值,例如在图1的神经网络10训练期间。神经网络中学习的目标是权重。如前所述,在学习过程中反复更新权重,以使得神经网络逐渐受到训练,以输出至少满足学习准确度阈值或不超过最大误差阈值的准确结果。作为更新权重的方法之一,例如可使用梯度下降算法。梯度下降算法可意味着通过在损失函数或误差函数的梯度方向上调整参数以找到损失函数或误差函数的最低点来最小化误差的算法。例如,当损失函数表示L,参数是θ,并且学习速率是η时,参数可根据下面的等式3调整。
[等式3]
为了更新参数而计算的可意味着用于在损失函数的梯度方向上调整参数的梯度。例如,当参数是权重时,可以是为了更新权重来计算的个体更新值。此外,学习速率η可以是变化的确定器,其控制对参数θ进行的这种变化的速度或积极程度。
一般地,个体更新值具有比权重小得多的值。因此,与上述典型的高精度神经网络方法相比,如果神经网络使用低精度数系统(例如,8比特或16比特),则个体更新值可能不被包括在权重可以表示的值的范围内。因此,当权重可以根据等式3来更新时,个体更新值可能被忽略,并且权重可能不被更新。尽管权重需要重复地更新以让神经网络逐渐地输出更好的结果,由于个体更新值的量值,权重可能不被更新,且因此训练这种低精度神经网络可能是困难的或不切实际的。
相反,根据本公开的神经网络装置可执行操作220、230和240使得个体更新值不被忽略,而是反映在更新权重的过程中,因此可以在没有这种障碍和弊端的情况下训练低精度神经网络。在操作220中,神经网络装置可以在累积缓冲区中累积个体更新值。累积缓冲区可以是用于累积个体更新值的专用硬件,并且可以是被分配用于累积个体更新值的存储器。个体更新值可被累积在累积缓冲区中,并可变为累积更新值。累积缓冲区可存储累积更新值。
在使用低精度数系统的神经网络中,例如图1的神经网络10作为非限制性示例,神经网络装置可以将个体更新值累积为可影响权重的量值,使得在训练神经网络期间更新权重的过程中不忽略个体更新值。
在操作230中,如果累积缓冲区的累积更新值等于或大于阈值,神经网络装置可通过使用累积更新值来更新权重。神经网络装置可确定累积缓冲区的累积更新值是否等于或大于阈值。阈值可以是用于确定累积更新值是否已被累积到可影响权重的量值的值。例如,阈值可以是与权重的最低有效数相对应的值。
如果权重是定点值,权重的最低有效数可以是与表示权重的比特中最低有效比特相对应的数。例如,如果权重的最低有效比特表示数2-4,则权重的最低有效数可以是数2-4,并且阈值可以是与最低有效数2-4相对应的2-4。在示例中,数2-4可以与包括4比特整数部分和4比特小数部分在内的8比特定点数据的大于零的最小可能值相对应。
如果权重是浮点值,权重的最低有效数可以是与表示权重的指数部分的比特中的最低有效比特相对应的数。然而,如果权重是浮点值,则可以考虑偏置值来确定最低有效数。例如,即使表示权重的指数部分的比特中的最低有效比特表示数20,如果偏置值是8,权重的最低有效数不是数而是数21-8=2-7,并且阈值可以是与最低有效数2-7相对应的2-7。
然而,这仅是示例,并且阈值可以是与权重的最低有效数相对应的值和与累积更新值的最高有效数相对应的值之间的任何适当的值。
如果累积更新值等于或大于阈值,由于累积更新值具有可影响权重的量值,神经网络装置可通过使用累积更新值来更新权重。
具体地,神经网络装置可将累积更新值的可以被加到权重的有效数上的部分确定为有效更新值。有效更新值可意味着累积更新值中的实际用于更新权重的值。权重可表示的值的范围受限于向权重分配的比特数。因此,各值中只有与比权重的最低有效数高的权重的有效数相对应的值可加到权重上。
例如,当权重是包括1比特符号比特、3比特整数部分和4比特小数部分在内的8比特定点值时,权重的有效数可以是数22,21,20,2-1,2-2,2-3和2-4。由于权重可表示的值的范围的限制,为了给权重加上一个值,权重需要包括与22,21,20,2-1,2-2,2-3和2-4中任一个数相对应的至少一个值。例如,假设要加到权重上的值是1.265625(十进制数)。由于十进制数1.265625等于1×20+1×2-2+1×2-6,与权重的有效数相对应的1×20和1×2-2可以被加到权重上,反之由于权重可代表的值的范围的限制,可能无法将1×2-6加到权重上。
同时,可以加到权重的有效数上的部分可包括由权重的最低有效数表示的值的倍数。在前面的示例中,与权重的最低有效数相对应的值是2-4,并且累积更新值的可以被加到权重的有效数的部分是22,21,20,2-1,2-2,2-3,并且2-4是与数22,21,20,2-1,2-2,2-3和2-4相对应的值。数22,21,20,2-1,2-2,2-3和2-4都是作为与最低有效数相对应的值的2-4的倍数。
由于阈值可以是与权重的最低有效数相对应的值,有效更新值可包括阈值的倍数。例如,当累积更新值表示“累积更新”并且阈值表示“阈值”,有效更新值可以由下面的等式4表达。
[等式4]
在等式4中,可以是通过将“累积更新”除以“阈值”而获得的商。有效更新值可意味着通过将商乘以阈值而获得的值,该商是通过将累积更新值除以阈值来获得的。此外,有效更新值可以是阈值的倍数中的小于累积更新值的最大值。例如,如果“累积更新”是2.2(十进制数)并且阈值是1(十进制数),则有效更新值可以是作为阈值1的倍数的1和2中的小于累积更新值2.2的最大值的2。
神经网络装置可将有效更新值加到权重上。由于有效更新值是实际用于更新权重的值,则神经网络装置可通过将有效更新值加到权重上来更新权重。
神经网络装置还可以从累积缓冲区的累积更新值中减去有效更新值。由于累积缓冲区中的累积更新值的有效更新值被反映到权重,神经网络装置可从累积缓冲区中的累积更新值中减去有效更新值。例如,由于权重被更新,可根据下面的等式5来减去累积更新值。
[等式5]
在等式5中,由于是有效更新值,累积缓冲区的累积更新值可具有通过从先前累积更新值中减去有效更新值而获得的值。
神经网络装置可在更新权重后在累积缓冲区的累积更新值中连续累积个体更新值,并可重复以上描述的过程。根据本公开的处理神经网络中的参数的方法可以将比权重值小得多的个体更新值累积到可影响权重的量值,并且通常可以将个体更新值应用于权重,而不是忽视或丢弃个体更新值,从而最小化使用低精度数系统的神经网络中的舍入误差。此外,根据本公开的处理神经网络中的参数的方法可通过在将累积更新值更新到权重后,在累积缓冲区中连续维持累积更新值的剩余部分来最小化精度损失。
同时,神经网络装置可在每个预定更新周期确定累积更新值是否等于或大于阈值。更新周期可由用户预先确定和/或可由神经网络装置确定。此外,更新周期可被设置为用于确定累积更新值是否等于或大于阈值的任何适合的周期。
如果个体更新值相对较小,则更新周期可被确定为相对较长。如果个体更新值相对较大,则更新周期可被确定为相对较短。例如,更新周期可被没置为每次计算出个体更新值时被重复,或者可被没置为每十次计算个体更新值时被重复,但是不限于此。例如,更新周期可被设置为与神经网络的n次学习相对应的周期。
如果累积更新值小于阈值,神经网络装置可在累积缓冲区中继续累积到下一个更新周期的所计算的个体更新值。神经网络装置可在下一个更新周期中再次确定累积更新值是否等于或大于阈值,并且如果累积更新值等于或大于阈值,则通过使用累积更新值来更新权重。
由于在预定周期中累积更新值被确定为等于或大于阈值,并且神经网络装置中使用的参数被周期性地更新,神经网络的开销可被减少。参考图4,下面将描述周期性地确定累积更新值是否等于或大于阈值并更新权重的方法的示例。
图4是示出了根据一些实施例的处理神经网络中的参数的方法的另一示例的流程图。
参考图4,在操作410中,时间t可被初始化为0,并且可预先确定更新周期update_period和阈值threshold。时间t可具有计算个体更新值的值,作为基本单元。例如,t=4可意味着计算了四个个体更新值的时间,但不限于此。更新周期可以是1、4或等于或大于1的任何适合的值。阈值可以是用于确定累积更新值是否已累积到可影响权重的量值的值。
在操作420中,神经网络装置可计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值。个体更新值可以是通过使用梯度下降算法来更新权重的梯度值。
在操作430中,神经网络装置可在累积缓冲区中累积个体更新值并在时间t处加1。在操作440中,神经网络装置可确定时间t是否对应于更新周期。如果时间t不对应于更新周期,则神经网络装置可返回操作420并再次计算个体更新值。
如果时间t对应于更新周期,则神经网络装置可执行操作450。在操作450中,神经网络装置可确定累积缓冲区的累积更新值是否等于或大于阈值。如果累积更新值小于阈值,则神经网络装置可返回操作420并再次计算个体更新值。这时,时间t可被初始化为0,并且可以针对下一个更新周期来重复上述操作。
如果累积更新值等于或大于阈值,则神经网络装置可执行操作460。在操作460中,神经网络装置可通过使用累积更新值来更新权重。例如,神经网络装置可通过根据上面的等式4将有效更新值加到权重上来更新权重。此外,当更新权重时,神经网络装置可以从累积缓冲区的累积更新值中减去有效更新值。
图5是示出了根据一些实施例的使用定点参数的神经网络的示例的图。
参考图5,在使用定点参数的神经网络中,权重50可以是包括第一符号比特510、第一整数部分520、第一小数部分530和第一小数点540在内的定点值;并且累积更新值55可以是包括第二符号比特515、第二小数部分535和第二小数点在内的定点值。根据一些实施例,权重50可以是第一小数点540可移动的动态定点值。由于第一小数点540移动,可以调整第一小数部分530的比特数(长度)。
累积更新值55可不包括整数部分。例如,当第一小数点540和第二小数点相同时,由于累积更新值55可仅表示比权重50显著小的值,所以累积更新值55可不包括整数部分,而可包括小数部分(即,第二小数部分535)。同时,第二小数点可以与第一小数点540相同,但也可以不同。可以根据情况来调整第二小数点。在下文中,将参考图8A和8B来详细描述调整第二小数点的位置的过程。
权重50可以是具有m个比特的定点值(m是任意自然数)。累积更新值55可以是具有n个比特的定点值(n是任何自然数)。m和n可以是相同的值,也可以是不同的值。在使用低精度数系统的神经网络中,m和n中的每一个可具有值8或16,但不限于此。
累积更新值55可具有与权重50相比相对小的值。因此,与代表权重50的每个比特相对应的值可以大体上大于与代表累积更新值55的每个比特相对应的值。然而,与代表权重50的任何一个比特相对应的值可以等于与代表累积更新值55的任一个比特相对应的值。为了更新权重50,由于累积更新值55的一部分需要被加到权重50上,权重50的一些较低比特可与累积更新值55的一些较高比特重叠。
当在权重50和累积更新值55之间重叠的比特550是k个比特时(k是任意自然数)时,神经网络可获得与使用具有(m+n-2-k)个比特的定点数据大体上相同的效果。
在权重50和累积更新值55之间重叠的比特550可根据阈值560来确定。阈值560可以是用于确定累积更新值55是否已累积到可影响权重50的量值的值。例如,阈值560可以是与权重50的最低有效数相对应的值。重叠比特550可以是表示累积更新值55的比特中的表示等于或大于阈值560的值的比特。重叠比特550可以与权重50的一些较低比特重叠并且因此可以与权重50相加。同时,权重50的较低比特可表示第一小数部分530。
如果累积个体更新值并且累积更新值55增加到可影响权重50的量值,则神经网络装置可通过使用累积更新值55来更新权重50。例如,神经网络装置可将表示累积更新值55的第二小数部分535的比特中的与权重50的第一小数部分530重叠的至少一个比特550加到权重50上。由重叠的至少一个比特550表示的值可对应于有效更新值。
同时,可在将表示累积更新值55的第二小数部分535的比特中的与权重50的第一小数部分530重叠的至少一个比特550所表示的值加到权重50上的过程中应用填充方法。在下文中,参考图6,将详细描述将有效更新值加到权重上的过程。
图6是示出了根据一些实施例的将有效更新值614加到权重630上的过程的示例的图。
参考图6,示出累积更新值610。累积更新值610可以是个体更新值的累积值。累积更新值610还可以是n比特定点值。表示累积更新值610的一些比特可被确定为有效更新值614。有效更新值614可对应于位于相对于阈值的上方的比特中的除符号比特612以外的比特。
同时,可以填充有效更新值614,以便被加到作为m比特定点值的权重630上。如图6所示,填充后的有效更新值620可包括符号比特612、填充部分616和有效更新值614。填充部分616可用表示与符号比特612相同的值的比特来填充。由于填充后的有效更新值620是与权重630具有相同数量比特的m比特定点值,填充后的有效更新值620可与权重630相加。例如,填充后的有效更新值620可根据符号比特612被加到权重630上,或者被从权重630中减去。
回到图5,神经网络装置可将重叠的至少一个比特550表示的值加到权重50上,然后初始化与第二符号比特515重叠的至少一个比特550的值。由于将重叠的至少一个比特550表示的值加到权重50上,必须将累积更新值55减去该值。由于重叠的至少一个比特550的值被初始化为与第二符号比特515相同的值,可以将累积更新值55减去重叠的至少一个比特550表示的值。
例如,假设作为正数的累积更新值55是0100011(不包括符号比特)并且与权重50的第一小数部分530重叠的至少一个比特550是01,其是累积更新值55的2个高比特。此外,假设累积更新值55的最高有效比特表示数2-2。由于将作为与权重50的第一小数部分530重叠的至少一个比特550表示的值01的0×2-2+1×2-3=2-3加到权重50上,必须从累积更新值55中减去2-3。如果从累积更新值55中减去2-3,累积更新值55变为0000011。由于累积更新值55的第二符号比特515是0(例如,由于累积更新值55是正数值),重叠的至少一个比特550被初始化为0。与前面的示例不同,当累积更新值55是负数值时,重叠的至少一个比特550的值可被初始化为作为与符号比特相同值的1。
图7是示出了根据一些实施例的处理使用定点参数的神经网络中的参数的方法的示例的流程图。神经网络可以是图5中描述的使用定点参数的神经网络。
参考图7,在操作710中,时间t可被初始化为0,并且可预先确定监视周期、更新周期和阈值。在操作720中,神经网络装置可计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值。
在操作730中,神经网络装置可在累积缓冲区中累积个体更新值并在时间t处加1。在操作740中,神经网络装置可确定时间t是否对应于监视周期。如果时间t对应于监视周期,神经网络装置可执行操作745。
在操作745中,神经网络装置可监视累积更新值或个体更新值并基于监视的结果来调整累积更新值的第二小数点的位置。由于调整了累积更新值的第二小数点的位置,可调整在权重和累积更新值之间重叠的比特数并且可调整累积更新值的小数部分的比特数(长度)。
神经网络装置可基于个体更新值和权重的相对量值来调整第二小数点的位置,以最小化精度损失或减少开销。
例如,如果个体更新值的平均值小于1/a乘以阈值(a是任意自然数),神经网络装置可以向累积更新值的较低比特方向移动第二小数点的位置。
个体更新值的平均值小于1/a乘以阈值意味着个体更新值具有非常小的值。由于累积更新值的第二小数点的位置向较低比特方向移动,累积更新值可表示较小的值,并且个体更新值可以被更准确地反映到累积更新值上。由于基于精确地反映个体更新值的累积更新值来更新权重,神经网络的精度损失可被最小化。
此外,当个体更新值的平均值大于1/a乘以阈值时,神经网络装置可向累积更新值的较高比特方向移动第二小数点的位置。
个体更新值的平均值大于1/a乘以阈值意味着个体更新值具有相对大的值。由于累积更新值的第二小数点的位置向较高比特方向移动,可以省略表示累积更新值的比特中具有可被忽略的量值的比特。因此,可减少神经网络的开销。然而,前述描述仅仅是示例,并且神经网络可基于各种标准来调整第二小数点的位置或第二小数部分的比特数(长度)。在下文中,将参考图8A和8B来详细描述调整累积更新值的小数点位置的过程。
图8A是示出了根据一些实施例的调整累积更新值的小数点的位置的过程的示例的图,以及图8B是示出了根据一些实施例的调整累积更新值的小数点的位置的过程的另一示例的图。
参考图8A,示出了监视到的累积更新值82,其中监视到的累积更新值82的当前累积值830与个体更新值820可具有与阈值810相比相当小的量值。由于监视到的累积更新值82可表示的值的范围存在限制,个体更新值820可能无法被准确地反映到累积更新值82。因此,神经网络可向累积更新值82的较低比特的方向移动累积更新值82的小数点的位置。
具有移动后的小数点的累积更新值83可更精确地反映当前累积值830和个体更新值820。同时,由于小数点移动了,与累积更新值83可附加表示的值相对应的比特可以填充0或任意数。
参考图8B,示出了监视到的累积更新值84,其中,即使个体更新值840比阈值810小,监视到的累积更新值84的个体更新值840也具有相当大的值,并且当前累积值850具有比阈值810大的值。为了省略表示累积更新值84的比特中的具有可被忽略的量值的比特,神经网络装置可向累积更新值84的较高比特方向移动累积更新值84的小数点的位置,由此防止在更新周期期间累积更新值84超过可由m个比特表示的值。
返回图7,在操作745中,神经网络装置可调整累积更新值的第二小数点的位置,然后返回操作720以再次计算个体更新值。
同时,如果在操作740中确定时间t不对应于监视周期,神经网络装置可执行操作750。在操作750中,神经网络装置可确定时间t是否对应于更新周期。如果时间t不对应于更新周期,神经网络装置可返回操作720并再次计算个体更新值。这时,时间t可被初始化为0,并且可以在下一个更新周期期间重复上述操作。
如果时间t对应于更新周期,神经网络装置可执行操作760。在操作760中,神经网络装置可确定累积缓冲区的累积更新值是否等于或大于阈值。如果累积更新值小于阈值,神经网络装置可返回操作720以再次计算个体更新值。
如果累积更新值等于或大于阈值,则神经网络装置可执行操作770。在操作770中,神经网络装置可通过使用累积更新值来更新权重。例如,神经网络装置可通过根据上面的等式4将有效更新值加到权重上来更新权重。此外,由于更新了权重,神经网络装置可以从累积缓冲区的累积更新值中减去有效更新值。神经网络装置可根据情况来调整权重的小数点的位置或小数部分的比特数(长度)。
图9是示出了根据一些实施例的使用浮点参数的神经网络的示例的图。
参考图9,在使用浮点参数的神经网络中,权重90可以是包括第一符号比特910、第一指数部分920、第一尾数部分930和第一偏置值940在内的浮点值;并且累积更新值95可以是包括第二符号比特915、第二指数部分925、第二尾数部分935和第二偏置值945在内的浮点值。
权重90可以是m比特(m是自然数)浮点值。累积更新值95可以是n比特(n是任何自然数)浮点值。m和n可以是相同的值,也可以是不同的值。在使用低精度数系统的神经网络中,m和n中的每一个可具有值8或16,但不限于此。
累积更新值95可以是权重90的个体更新值的累积值。然而,由于具有有限数量比特的浮点值的限制,累积更新值95可以是仅对累积更新值95的有效数范围内包括的每个个体更新值的有效值加以累积的值。
此外,由于具有有限数量比特的浮点值的限制,可仅将在权重90的有效数范围内包括的累积更新值95的有效值加到权重90上。累积更新值95的有效值可意味着累积更新值95中可被加到权重90的有效数上的部分。
由于权重90被累积更新值95的有效值所更新,可以将累积更新值95减去更新部分。由于具有有限数量比特的浮点值的限制,累积更新值95可不同于通过从更新后的权重中减去权重90而获得的值。
同时,由于改变了偏置值,可动态改变浮点值。因此,即使浮点值的指数部分是相同的,也可根据偏置值来表示相对小的值。可根据情况适当地调整权重90的第一偏置值940与累积更新值95的第二偏置值945之间的相对差。
图10是示出了根据一些实施例的处理使用浮点参数的神经网络中的参数的方法的示例的流程图。神经网络可以是图9中描述的使用浮点参数的神经网络。
参考图10,在操作1010中,时间t被初始化为0,并且可预先确定监视周期、更新周期和阈值。在操作1020中,神经网络装置可计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值。
在操作1030中,神经网络装置可在累积缓冲区中累积个体更新值并将时间t加1。在操作1040中,神经网络装置可确定时间t是否对应于监视周期。如果时间t对应于监视周期,神经网络装置可执行操作1045。
在操作1045中,神经网络装置可监视累积更新值或个体更新值并基于监视的结果来调整累积更新值的第二偏置值。由于调整了累积更新值的第二偏置值,可调整累积更新值可表示的值的范围。
神经网络装置可基于累积更新值和阈值的相对量值来调整累积更新值的第二偏置值,以最小化精度损失或减少开销。
例如,如果累积更新值的第二指数超过阈值,则神经网络装置可增加第二偏置值。累积更新值的第二指数超过阈值可意味着累积更新值具有相对大的值。由于累积更新值的第二偏置值增加,可忽略表示累积更新值的比特中的具有可被忽略的量值的比特。因此,可减少神经网络的开销。
如果累积更新值小于1/b乘以阈值(b是任意自然数),则神经网络装置还可减小第二偏差。累积更新值小于1/b乘以阈值意味着个体更新值具有非常小的值。由于减少了累积更新值的第二偏置值,累积更新值可表示较小的值,并且个体更新值可被更精确地反映到累积更新值。由于权重被精确反映个体更新值的累积更新值更新,神经网络的精度损失可被最小化。
在操作1045中,神经网络装置可调整累积更新值的第二偏置值的位置,然后返回操作1020以再次计算个体更新值。
同时,如果在操作1040中确定时间t不对应于监视周期,则神经网络装置可执行操作1050。在操作1050中,神经网络装置可确定时间t是否对应于更新周期。如果时间t不对应于更新周期,则神经网络装置可返回操作1020并再次计算个体更新值。这时,时间t可被初始化为0,并且可以在下一个更新周期期间重复上述操作。
如果时间t对应于更新周期,则神经网络装置可执行操作1060。在操作1060中,神经网络装置可确定累积缓冲区的累积更新值是否等于或大于阈值。如果累积更新值小于阈值,则神经网络装置可返回操作1020并再次计算个体更新值。
如果累积更新值等于或大于阈值,则神经网络装置可执行操作1070。在操作1070中,神经网络装置可通过使用累积更新值来更新权重。例如,神经网络装置可通过根据上面的等式4将有效更新值加到权重上来更新权重。此外,由于更新了权重,神经网络装置可以从累积缓冲区的累积更新值中减去有效更新值。神经网络装置可根据情况来调整权重的小数点的位置或小数部分的比特数(长度)。
同时,如图2、4、7和10所示的处理神经网络中的参数的方法可被记录在计算机可读记录介质上,其上记录有包括用于执行方法的指令的一个或多个程序。计算机可读记录介质的示例可以包括诸如硬盘、软盘和磁带之类的磁介质、诸如CD-ROM和数字视频盘(DVD)之类的光学介质、诸如光磁软盘之类的磁光介质、以及诸如ROM、RAM和闪存之类的硬件装置,具体地被配置为存储和执行程序指令。程序指令的示例可不仅包括编译器生成的机器语言代码,还包括可由计算机使用解释器等来执行的高级语言代码。
图11是示出了根据一些实施例的神经网络装置11的配置的框图。
参考图11,神经网络装置11可包括处理器1110和存储器1120。在图11中示出的神经网络装置11中仅示出与本实施例相关的组件。因此,在理解本申请的公开内容之后应当理解:神经网络装置11还可包括除了图11中示出的组件之外的组件。例如,神经网络装置11还可包括如图12所示的传感器模块和通信模块。
同时,神经网络装置11可对应于图2至10的神经网络装置。神经网络装置11还可按时间顺序处理图2、4、7和10中示出的方法。因此,即使在下面省略,也可理解参考图2、4、7和10描述的方法可被图11的神经网络装置11执行。
神经网络装置11可被包括在家用电器、移动计算设备和服务器中的至少一个中,或可有线地或无线地连接到家用电器、移动计算设备和服务器中的至少一个。神经网络装置11还可被实现为设备和服务器的组合。接收用户输入的设备与训练神经网络的服务器可以单独存在,或者可被包括在相同的设备中,或者可被包括在不同的服务器中,且因此当该服务器由此实现经训练的神经网络时可以通过设备和服务器之间的通信来执行推理。推理可在单个设备中执行,并不限于上述示例。
处理器1110代表一个或多个处理器。例如,处理器1110可以以逻辑门的阵列来实现,并且可以以通用微处理器和存储器的组合来实现,在该存储器中存储可以在微处理器中执行的程序。例如,处理器1110可以是中央处理单元(CPU)、图形处理单元(GPU)、硬件加速器等。
处理器1110可以通常地操作以控制神经网络装置11。例如,处理器1110一般可通过执行神经网络装置11中包括的存储器1120中存储的程序来控制神经网络装置11。处理器1110还可通过执行存储器1120中存储的程序来并行执行神经网络装置11的功能。
处理器1110可执行神经网络的各层中包括的每个节点的功能。例如,处理器1110可通过使用激活值和权重来执行神经网络操作或矩阵操作。处理器1110还可执行图2至10中描述的神经网络装置11的功能。
具体地,处理器1110可计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值。权重可以是浮点值或定点值。
此外,处理器1110可在累积缓冲区中累积个体更新值。累积缓冲区可以是用于累积个体更新值的专用硬件,并且可以是存储器1120的被分配用于累积个体更新值的部分。可以将个体更新值累积在累积缓冲区中,以作为累积更新值。累积缓冲区可存储累积更新值。
处理器1110可确定累积缓冲区的累积更新值是否等于或大于阈值。阈值可以是用于确定累积更新值是否已被累积到可影响权重的量值的值。例如,阈值可以是与权重的最低有效数相对应的值。
如果累积更新值等于或大于阈值,则至少一个处理器1110可通过使用累积更新值来更新权重。如果累积更新值等于或大于阈值,则由于累积更新值具有可影响权重的量值,处理器1110可通过使用累积更新值来更新权重。
处理器1110可将累积更新值的要被加到权重的有效数上的部分确定为有效更新值。处理器1110可将有效更新值加到权重上,并从累积缓冲区的累积更新值中减去有效更新值。
处理器1110可以将比权重值小得多的个体更新值累积到可影响权重的量值,并且通常可以将个体更新值应用于权重,而不是忽略或丢弃个体更新值,由此最小化使用低精度数系统的神经网络中的舍入误差。
同时,处理器1110还可在每个预定更新周期确定累积更新值是否等于或大于阈值。更新周期可由用户预先确定并可由处理器1110确定。如果累积更新值小于阈值,则处理器1110可在累积缓冲区中继续累积计算到下一个更新周期的个体更新值。
处理器1110可在下一个更新周期中再次确定累积更新值是否等于或大于阈值,并且如果累积更新值等于或大于阈值,则通过使用累积更新值来更新权重。
根据某个周期确定累积更新值是否等于或大于阈值并周期更新神经网络装置11中使用的参数,因此可以减少神经网络的开销。
当权重是包括第一符号比特、第一整数部分、第一小数部分和第一小数点在内的定点值并且累积更新值是包括第二符号比特、第二小数部分和第二小数点在内的定点值时,处理器1110可将表示累积更新值的第二小数部分的比特中的与权重的第一小数部分重叠的至少一个比特所表示的值加到权重上,并将重叠的至少一个比特所表示的值初始化为与第二符号比特相同的值。
此外,处理器1110可监视累积更新值和个体更新值,以及基于监视的结果来调整累积更新值的第二小数点的位置。例如,如果个体更新值的平均值小于1/a乘以阈值,则处理器1110向累积更新值的较低比特方向移动第二小数点的位置,并且如果平均值大于1/a乘以阈值,则可向累积更新值的较高比特方向移动第二小数点的位置。
同时,如果权重是包括第一符号比特、第一指数部分、第一尾数部分和第一偏置值在内的浮点值并且累积更新值是包括第二符号比特、第二指数部分和第二偏置值在内的浮点值时,处理器1110可将权重的有效数值范围中包括的累积更新值的有效值加到权重上。
此外,处理器1110可监视累积更新值,以及基于监视的结果来调整累积更新值的第二偏置值。例如,如果累积更新值的第二指数超过阈值,则处理器1110可增加第二偏置值,并且如果累积更新值小于1/b乘以阈值,则可减少第二偏置值。
存储器1120是存储神经网络装置11中处理的各条数据的硬件。例如,存储器1120可存储被神经网络装置11处理的数据和要处理的数据。存储器1120还可存储由神经网络装置11驱动的应用、驱动程序等。存储器1120可以是随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、动态随机存取存储器(DRAM)ROM、蓝光(Blu-ray)或其他光盘存储设备、硬盘驱动器(HDD)、固态驱动器(SSD)或闪存。
存储器1120还可包括由神经网络装置11中包括的处理器1110共享的内置存储器或支持处理器1110的多个内置存储器。
图12是示出了被配置为实现神经网络推理操作的电子系统或设备的示例的图。
参考图12,电子系统或设备1200包括传感器1210、处理器1220、本地存储器1225、存储器1230、显示器1250和用户接口(UI)1260。传感器1210、处理器1220、存储器1230、显示器1250和UI 1260经由总线1240彼此通信。电子系统或设备1200可以与上述神经网络(NN)处理装置中的任何一个或多个或全部相对应,并且实现上述NN处理过程或方法中的任何一个或多个或全部。作为非限制性示例,处理器1220可以与图11的处理器1110相对应,和/或存储器1230可以与图11的存储器1120相对应。本地存储器1225可以与任何上述临时或本地缓冲器/存储器相对应。在示例中,本地缓冲器/存储器可以是处理器1220的存储器或直接连接到处理器1220的缓冲器/存储器,例如,被配置为用于向/从处理器1220和本地存储器1225快速传送数据,注意备选方案也是可用的。还可以分配本地存储器1225以临时存储NN的特定层或NN的所有层的激活,其最终输出结果可以存储在存储器1230中和/或分别用于下一层的输入。在示例中,除了向下一层输入的目的之外,每个层的激活可以被丢弃,并且仅最后一层(或多层)输出存储到存储器1230或用于另一个过程的NN的结果,例如与作为电子系统或设备1200的移动电话的解锁和相应的显示操作协作。还如所指出的,作为非限制性示例,处理器1220可以表示被配置为上述NN处理装置、识别装置、拒绝装置和/或验证装置中的任何一个或任何组合的一个或多个处理器。
例如,传感器1210包括例如麦克风和/或图像传感器或相机,以感测视频数据和音频数据,从而识别、拒绝或验证对象。传感器1210使用公知的方案来感测图像,例如,将光学图像转换为电信号的方案。向处理器1220或存储器1230传送传感器1210的输出,并且也可以向本文讨论的任何NN的输入层直接传送传感器1210的输出或将其作为输入层来操作。
处理器1220可以被配置为执行参考图1至11描述的一个或多个或所有过程。例如,为了执行对象检测、识别、拒绝和/或验证操作,处理器1220可以使用在对上述图1至11所描述的操作中训练的神经网络来检测、识别、拒绝和/或验证输入数据中的一个或多个对象。可以通过显示器1250来输出任何识别、拒绝或验证操作的结果。此外,UI 1260提供电子设备1200的用户调整或选择性操作,UI 1260可以包括触摸屏或其他输入设备/系统。在示例中,处理器1220可以是图形处理器单元(GPU)、中央处理单元(CPU)、可重构处理器、应用处理器(AP)、神经处理单元(NPU)、张量处理单元(TPU)、硬件加速器或其他仿神经芯片,或具有任何其他类型的多处理器或单处理器配置。在示例中,处理器1220还表示多个处理器,例如,其中至少一个处理器被配置为这种专用神经网络实现处理器,并且另一个处理器被配置为执行电子设备的其他操作。例如,这种专用神经网络实现处理器也可以配置在安全区域中,相应的处理器1220和本地存储器1225与其他相应的处理器1220和存储器1230的其他操作安全地分离。
除了图1至11中描述的一个或多个NN处理装置和/或操作之外,如上所述,存储器1230还可以存储指令,当由处理器1220执行时,该指令使处理器1220执行电子系统或设备1200的附加操作、功能和控制,例如,基于由处理器1220使用经训练的神经网络执行的推理操作的电子系统的用户接口。电子系统或设备1200可以经由电子系统的输入/输出设备连接到外部设备,例如个人计算机(PC)或网络,以与外部设备交换数据。电子系统或设备1200可以是各种电子设备,仅作为非限制性示例,可以是移动设备,例如移动电话、智能电话、个人数字助理(PDA)、平板电脑或膝上型计算机;可以是计算设备,例如,PC、平板电脑或上网本计算机;可以是电子产品,例如电视(TV)、智能TV或用于门控制的安全设备。
由配置成执行本申请中描述的由硬件组件执行的操作的硬件组件来实现执行本申请中描述的操作的图1至12中的神经网络装置11、处理器1110、存储器1120、电子系统或设备1200、总线1240、处理器1220、本地存储器1225、传感器1210、存储器1230、显示器1250和用户接口1260。在适当的情况下可用于执行本申请中所描述的操作的硬件组件的示例包括控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行本申请所描述的操作的任何其它电子组件。在其它示例中,执行本申请中所描述的操作的一个或多个硬件组件通过计算硬件来实现(例如,通过一个或多个处理器或计算机来实现)。处理器或计算机可以由以下项实现:一个或多个处理元件(比如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或被配置为以定义的方式响应并执行指令以实现期望的结果的任何其它设备或设备的组合)。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件,诸如操作系统(OS)和在OS上运行的一个或多个软件应用,以执行本申请中描述的操作。硬件组件还可以响应于指令或软件的执行来访问、操纵、处理、创建和存储数据。为了简洁起见,在本申请中描述的示例的描述中可以使用单数术语“处理器”或“计算机”,但是在其它示例中可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件、或多种类型的处理元件、或两者兼有。例如,单个硬件组件或者两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器、或处理器和控制器来实现,并且一个或多个其它硬件组件可以由一个或多个其它处理器或另一处理器和另一控制器来实现。一个或多个处理器或者处理器和控制器可以实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可以具有不同的处理配置中的任何一种或多种,该处理配置的示例包括单处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、和多指令多数据(MIMD)多处理。
执行本申请中所描述的操作的图1至12所示的方法是由计算硬件来执行的,例如,由如以上描述而实现的、执行指令或软件以执行本申请所描述的操作(由所述方法执行的操作)的一个或多个处理器或计算机来执行的。例如,单个操作或者两个或更多个操作可以由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可以由一个或多个处理器或者处理器和控制器执行,并且一个或多个其它操作可以由一个或多个其它处理器或者另一处理器和另一控制器执行。一个或多个处理器或者处理器和控制器可以执行单个操作或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可以被编写为计算机程序、代码段、指令或其任何组合,用于单独或整体指示或配置一个或多个处理器或计算机以作为机器或专用计算机操作从而执行由上述硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码,例如由编译器产生的机器代码。在另一示例中,指令或软件包括由一个或多个处理器或者计算机使用解释器执行的更高级代码。可以基于附图中所示的框图和流程图以及说明书中的对应描述(其公开了用于执行由硬件组件执行的操作和如上所述的方法的算法)使用任何编程语言来编写指令或软件。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可以被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或其上。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RWs、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁光数据存储设备、光学数据存储设备、硬盘、固态盘以及被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并向一个或多个处理器或计算机提供指令或软件以及任何关联的数据、数据文件和数据结构使得该一个或多个处理器或计算机可以执行指令的任何其他设备。在一个示例中,指令或软件以及任何关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得一个或多个处理器或计算机以分布方式存储、访问和执行指令和软件以及任何关联的数据、数据文件和数据结构。
尽管本公开包括特定示例,但是在理解了本申请的公开内容之后将显而易见的是:在不脱离权利要求及其等同物的精神和范围的情况下,可以对这些示例进行形式和细节上的各种改变。本文描述的示例仅被认为是描述性的,而不是为了限制的目的。对每个示例中的特征或方面的描述被认为适用于其它示例中的类似特征或方面。如果所描述的技术以不同的顺序执行和/或如果所描述的系统、架构、设备或电路中的组件以不同的方式组合和/或被其它组件或其等同物替换或补充,则可以实现合适的结果。因此,本公开的范围不是由具体实施方式来限定的,而是由权利要求及其等同物来限定,并且在权利要求及其等同物的范围内的所有变化都被解释为被包括在本公开中。
神经网络装置可以对复杂的输入数据执行许多操作。期望有效处理神经网络操作的技术,使得神经网络装置可以实时分析高清晰度输入数据并提取信息。因此,本文已经公开了减少用于处理向神经网络输入的复杂数据的计算量同时最小化精度损失的方法和装置。
应当理解:本文所述实施例应当被认为仅是描述意义的,而不是为了限制目的。对每个实施例中的特征或方面的描述通常应当被看作可用于其他实施例中的其他类似特征或方面。
尽管已参考附图描述了一个或多个实施例,但在理解本申请的公开内容之后将理解:在不脱离所附权利要求所限定的精神和范围的情况下,可以进行形式和细节上的各种改变。
Claims (34)
1.一种处理器实现的神经网络方法,所述方法包括:
计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值;
通过在累积缓冲区中累积个体更新值来生成累积更新值;以及
响应于累积更新值等于或大于阈值,通过使用累积更新值更新权重来训练所述神经网络。
2.根据权利要求1所述的方法,其中:
所述阈值是与所述权重的最低有效比特相对应的值;以及
所述更新包括:
基于所述累积更新值来确定有效更新值;
将所述有效更新值加到所述权重上;以及
从所述累积缓冲区的累积更新值中减去所述有效更新值。
3.根据权利要求2所述的方法,其中,所述有效更新值是所述累积更新值的一部分。
4.根据权利要求2所述的方法,其中,所述有效更新值是所述权重的最低有效比特的倍数。
5.根据权利要求1所述的方法,还包括:以预定更新周期确定所述累积更新值是否等于或大于所述阈值。
6.根据权利要求5所述的方法,还包括:响应于所述累积更新值小于所述阈值,在所述累积缓冲区中累积个体更新值,直到下一个更新周期为止。
7.根据权利要求1所述的方法,其中:
所述权重是包括第一符号比特、第一整数部分和第一小数部分在内的定点值;
所述累积更新值是包括第二符号比特和第二小数部分在内的定点值;以及
所述更新包括将表示所述累积更新值的第二小数部分的比特中与所述权重的第一小数部分重叠的至少一个比特的值加到所述权重上。
8.根据权利要求7所述的方法,其中,所述更新包括:将与所述第一小数部分重叠的所述至少一个比特的值初始化为与所述第二符号比特相同的值。
9.根据权利要求7所述的方法,还包括:调整所述累积更新值的小数点的位置。
10.根据权利要求9所述的方法,其中,所述调整包括:
响应于所述个体更新值的平均值小于第二阈值,向所述累积更新值的较低比特方向移动所述累积更新值的小数点的位置;以及
响应于所述个体更新值的平均值大于所述第二阈值,向所述累积更新值的较高比特方向移动所述累积更新值的小数点的位置。
11.根据权利要求10所述的方法,其中:
所述第二阈值是1/a乘以所述阈值;以及
a是自然数。
12.根据权利要求7所述的方法,其中,所述权重是其中所述第一小数部分的比特数被调整的动态定点值。
13.根据权利要求1所述的方法,其中:
所述权重是包括第一符号比特、第一指数部分、第一尾数部分和第一偏置值在内的浮点值;
所述累积更新值是包括第二符号比特、第二指数部分、第二尾数部分和第二偏置值在内的浮点值;以及
所述更新包括:将所述权重的有效数范围中包括的累积更新值的有效值加到所述权重上。
14.根据权利要求13所述的方法,还包括:
调整所述累积更新值的第二偏置值。
15.根据权利要求14所述的方法,其中,所述调整包括:
响应于所述累积更新值的第二指数大于所述阈值,增加所述第二偏置值;以及
响应于所述累积更新值小于第二阈值,减小所述第二偏置值。
16.根据权利要求15所述的方法,其中:
所述第二阈值是1/b乘以所述阈值;以及
b是自然数。
17.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时,使所述处理器执行根据权利要求1所述的方法。
18.一种神经网络装置,所述装置包括:
一个或多个处理器,被配置为:
计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值,
通过在累积缓冲区中累积所述个体更新值来生成累积更新值,以及
响应于累积更新值等于或大于阈值,通过使用所述累积更新值更新所述权重来训练所述神经网络。
19.根据权利要求18所述的装置,其中:
所述阈值是与所述权重的最低有效比特相对应的值;以及
所述一个或多个处理器还被配置为:
基于所述累积更新值来确定有效更新值,
将所述有效更新值加到所述权重上,以及
从所述累积缓冲区的累积更新值中减去所述有效更新值。
20.根据权利要求19所述的装置,其中,所述有效更新值是所述累积更新值的一部分。
21.根据权利要求19所述的装置,其中,所述有效更新值是所述权重的最低有效比特的倍数。
22.根据权利要求18所述的装置,其中,所述一个或多个处理器还被配置为:以预定更新周期来确定所述累积更新值是否等于或大于所述阈值。
23.根据权利要求22所述的装置,其中,所述一个或多个处理器还被配置为:响应于所述累积更新值小于所述阈值,在所述累积缓冲区中累积个体更新值,直到下一个更新周期为止。
24.根据权利要求18所述的装置,其中:
所述权重是包括第一符号比特、第一整数部分和第一小数部分在内的定点值;
所述累积更新值是包括第二符号比特和第二小数部分在内的定点值;
所述一个或多个处理器还被配置为:将表示所述累积更新值的第二小数部分的比特中与所述权重的第一小数部分重叠的至少一个比特的值加到所述权重上。
25.根据权利要求24所述的装置,其中,所述一个或多个处理器还被配置为:将与所述第一小数部分重叠的所述至少一个比特的值初始化为与所述第二符号比特相同的值。
26.根据权利要求24所述的装置,其中,所述一个或多个处理器还被配置为:调整所述累积更新值的小数点的位置。
27.根据权利要求26所述的装置,其中,所述一个或多个处理器还被配置为:
响应于所述个体更新值的平均值小于第二阈值,向所述累积更新值的较低比特方向移动所述累积更新值的小数点的位置,以及
响应于所述个体更新值的平均值大于所述第二阈值,向所述累积更新值的较高比特方向移动所述累积更新值的小数点的位置。
28.根据权利要求27所述的装置,其中:
所述第二阈值是1/a乘以所述阈值;以及
a是自然数。
29.根据权利要求18所述的装置,其中:
所述权重是包括第一符号比特、第一指数部分、第一尾数部分和第一偏置值在内的浮点值;
所述累积更新值是包括第二符号比特、第二指数部分、第二尾数部分和第二偏置值在内的浮点值;以及
所述一个或多个处理器还被配置为:将所述权重的有效数范围中包括的所述累积更新值的有效值加到所述权重上。
30.根据权利要求18所述的装置,还包括:
存储器,被配置为存储一个或多个程序,
其中,所述一个或多个处理器被配置为:响应于执行所述一个或多个程序,计算所述个体更新值,生成所述累积更新值,以及训练所述神经网络。
31.一种处理器实现的神经网络方法,所述方法包括:
计算向神经网络中包括的节点之间的连接关系指派的权重的个体更新值;
通过将个体更新值相加来生成累积更新值;以及
响应于累积更新值等于或大于阈值,通过使用累积更新值更新权重来训练神经网络。
32.根据权利要求31所述的方法,其中,所述更新包括:
将累积更新值的一部分确定为有效更新值;以及
通过将有效更新值加到所述权重上来更新所述权重。
33.根据权利要求32所述的方法,还包括:
从所述累积更新值中减去所述有效更新值;
将另一个体更新值加到所述累积更新值上;以及
响应于所述累积更新值等于或大于所述阈值,使用所述累积更新值来重新更新所述权重。
34.根据权利要求31所述的方法,还包括:
基于第二阈值与个体更新值的平均值和累积更新值中的任一个或二者之间的比较,按因子来调整所述累积更新值的大小,
其中,所述更新包括:使用经调整的累积更新值来更新所述权重。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0137374 | 2017-10-23 | ||
KR1020170137374A KR20190044878A (ko) | 2017-10-23 | 2017-10-23 | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109697510A true CN109697510A (zh) | 2019-04-30 |
CN109697510B CN109697510B (zh) | 2024-03-08 |
Family
ID=63832196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811199602.9A Active CN109697510B (zh) | 2017-10-23 | 2018-10-15 | 具有神经网络的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11544549B2 (zh) |
EP (1) | EP3474195A1 (zh) |
JP (1) | JP7072484B2 (zh) |
KR (1) | KR20190044878A (zh) |
CN (1) | CN109697510B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6540725B2 (ja) * | 2017-01-30 | 2019-07-10 | 富士通株式会社 | 演算処理装置、方法、およびプログラム |
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
CN108427671B (zh) * | 2018-01-25 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 信息转换方法和装置、存储介质及电子装置 |
US10592208B2 (en) * | 2018-05-07 | 2020-03-17 | International Business Machines Corporation | Very low precision floating point representation for deep learning acceleration |
US11663441B2 (en) | 2018-09-27 | 2023-05-30 | Deepmind Technologies Limited | Action selection neural network training using imitation learning in latent space |
JP6852141B2 (ja) * | 2018-11-29 | 2021-03-31 | キヤノン株式会社 | 情報処理装置、撮像装置、情報処理装置の制御方法、および、プログラム |
US11995854B2 (en) * | 2018-12-19 | 2024-05-28 | Nvidia Corporation | Mesh reconstruction using data-driven priors |
JP7423083B2 (ja) | 2019-04-18 | 2024-01-29 | 慶應義塾 | 大腸癌の発癌リスクを検出する方法及びキット |
US11556615B2 (en) | 2019-05-03 | 2023-01-17 | Tesla, Inc. | Data path for scalable matrix node engine with mixed data formats |
JP7272121B2 (ja) * | 2019-06-07 | 2023-05-12 | 富士通株式会社 | 演算処理装置、制御方法、及び制御プログラム |
CN112446460A (zh) * | 2019-08-28 | 2021-03-05 | 上海寒武纪信息科技有限公司 | 用于处理数据的方法、装置以及相关产品 |
JP7342544B2 (ja) | 2019-09-09 | 2023-09-12 | 富士通株式会社 | 学習プログラムおよび学習方法 |
JP7322620B2 (ja) * | 2019-09-13 | 2023-08-08 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
JP2021124849A (ja) * | 2020-02-04 | 2021-08-30 | 富士通株式会社 | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム |
US10970619B1 (en) * | 2020-08-21 | 2021-04-06 | Moffett Technologies Co., Limited | Method and system for hierarchical weight-sparse convolution processing |
US20220199078A1 (en) * | 2020-12-22 | 2022-06-23 | Samsung Electronics Co., Ltd. | Electronic apparatus, system comprising electronic apparatus and server and controlling method thereof |
CN113984135A (zh) * | 2021-10-11 | 2022-01-28 | 青岛海尔空调电子有限公司 | 流量统计方法、装置、计算机可读存储介质及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918618A (en) * | 1988-04-11 | 1990-04-17 | Analog Intelligence Corporation | Discrete weight neural network |
CN1890629A (zh) * | 2003-12-18 | 2007-01-03 | 英特尔公司 | 使用按比例调整的整数的浮点运算 |
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
CN107004157A (zh) * | 2015-01-22 | 2017-08-01 | 高通股份有限公司 | 模型压缩和微调 |
CN107239826A (zh) * | 2017-06-06 | 2017-10-10 | 上海兆芯集成电路有限公司 | 在卷积神经网络中的计算方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0730373A (ja) * | 1993-07-07 | 1995-01-31 | Nippondenso Co Ltd | デジタルフィルタ |
JPH0784975A (ja) * | 1993-09-10 | 1995-03-31 | Hitachi Ltd | 情報処理装置および学習演算処理方法 |
ES2864149T3 (es) | 2014-03-06 | 2021-10-13 | Progress Inc | Red neuronal y método de entrenamiento de red neuronal |
US10831444B2 (en) | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN106650931A (zh) | 2016-12-09 | 2017-05-10 | 曙光信息产业(北京)有限公司 | 混合精度深度学习算法 |
KR102601604B1 (ko) | 2017-08-04 | 2023-11-13 | 삼성전자주식회사 | 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 |
-
2017
- 2017-10-23 KR KR1020170137374A patent/KR20190044878A/ko not_active Application Discontinuation
-
2018
- 2018-08-21 US US16/106,703 patent/US11544549B2/en active Active
- 2018-10-09 EP EP18199332.0A patent/EP3474195A1/en active Pending
- 2018-10-15 CN CN201811199602.9A patent/CN109697510B/zh active Active
- 2018-10-22 JP JP2018198683A patent/JP7072484B2/ja active Active
-
2022
- 2022-11-23 US US17/993,740 patent/US20230102087A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918618A (en) * | 1988-04-11 | 1990-04-17 | Analog Intelligence Corporation | Discrete weight neural network |
CN1890629A (zh) * | 2003-12-18 | 2007-01-03 | 英特尔公司 | 使用按比例调整的整数的浮点运算 |
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
CN107004157A (zh) * | 2015-01-22 | 2017-08-01 | 高通股份有限公司 | 模型压缩和微调 |
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
CN107239826A (zh) * | 2017-06-06 | 2017-10-10 | 上海兆芯集成电路有限公司 | 在卷积神经网络中的计算方法及装置 |
Non-Patent Citations (3)
Title |
---|
BOB RICKS等: "Training a quantum neural network", 《NIPS\'03: PROCEEDINGS OF THE 16TH INTERNATIONAL CONFERENCE ON NEURAL INFORMATION PROCESSING SYSTEMS》, pages 1019 * |
PHILIPP GYSEL: "Ristretto: Hardware-Oriented Approximation of Convolutional Neural Networks", 《ARXIV》, pages 1 - 73 * |
易会战: "低功耗技术研究—体系结构和编译优化", 《中国博士学位论文全文数据库 信息科技辑》, no. 05, pages 137 - 6 * |
Also Published As
Publication number | Publication date |
---|---|
JP2019079535A (ja) | 2019-05-23 |
EP3474195A1 (en) | 2019-04-24 |
JP7072484B2 (ja) | 2022-05-20 |
US11544549B2 (en) | 2023-01-03 |
US20190122106A1 (en) | 2019-04-25 |
KR20190044878A (ko) | 2019-05-02 |
CN109697510B (zh) | 2024-03-08 |
US20230102087A1 (en) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697510A (zh) | 具有神经网络的方法和装置 | |
CN104662526B (zh) | 用于高效地更新尖峰神经元网络的装置和方法 | |
WO2019157946A1 (zh) | 一种反洗钱方法、装置及设备 | |
WO2017084330A1 (zh) | 加速深度神经网络算法的加速芯片的运算装置及方法 | |
CN109871936A (zh) | 用于处理神经网络中的卷积运算的方法和装置 | |
WO2022068623A1 (zh) | 一种模型训练方法及相关设备 | |
CN107003929A (zh) | 用于异构核设备上的机器学习的应用特征化 | |
KR20160034814A (ko) | 뉴럴 네트워크를 수반한 클라이언트 장치 및 그것을 포함하는 시스템 | |
CN117332812A (zh) | 执行触摸运动预测的深度机器学习 | |
US20120209794A1 (en) | Self-organizing sequential memory pattern machine and reinforcement learning method | |
Niimi | Deep learning for credit card data analysis | |
CN109840628A (zh) | 一种短时多区域车速预测方法及系统 | |
US20200202199A1 (en) | Neural network processing method and apparatus based on nested bit representation | |
CN108647774A (zh) | 一种优化稀疏性矩阵运算的神经网络方法和电路 | |
CN114997412A (zh) | 一种推荐方法、训练方法以及装置 | |
CN109886169A (zh) | 应用于无人货柜的物品识别方法、装置、设备及存储介质 | |
CN110264270A (zh) | 一种行为预测方法、装置、设备和存储介质 | |
WO2020013726A1 (ru) | Способ интерпретации искусственных нейронных сетей | |
CN114004383A (zh) | 时间序列预测模型的训练方法、时间序列预测方法及装置 | |
US20220092424A1 (en) | Methods, systems, apparatus and articles of manufacture to apply a regularization loss in machine learning models | |
CN113407820B (zh) | 利用模型进行数据处理的方法及相关系统、存储介质 | |
Bharadi | QLattice environment and Feyn QGraph models—a new perspective toward deep learning | |
CN109588054A (zh) | 使用分布式模拟引擎对具有大型复杂数据集的系统的精确且详细的建模 | |
Shanmugavadivu et al. | Bio-optimization of deep learning network architectures | |
Zhang et al. | ReLP: reinforcement learning pruning method based on prior knowledge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |