CN110689109B - 神经网络方法和装置 - Google Patents

神经网络方法和装置 Download PDF

Info

Publication number
CN110689109B
CN110689109B CN201910558887.9A CN201910558887A CN110689109B CN 110689109 B CN110689109 B CN 110689109B CN 201910558887 A CN201910558887 A CN 201910558887A CN 110689109 B CN110689109 B CN 110689109B
Authority
CN
China
Prior art keywords
values
value
neural network
gradient
gradient values
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.)
Active
Application number
CN201910558887.9A
Other languages
English (en)
Other versions
CN110689109A (zh
Inventor
李俊行
朴炫宣
宋准镐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110689109A publication Critical patent/CN110689109A/zh
Application granted granted Critical
Publication of CN110689109B publication Critical patent/CN110689109B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Image Analysis (AREA)
  • Feedback Control In General (AREA)
  • Machine Translation (AREA)
  • Complex Calculations (AREA)

Abstract

提供了神经网络方法和装置。一种处理器实现的神经网络包括:计算用于更新神经网络的权重的各个个体梯度值;基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;调整所述各个个体梯度值以与所述残余梯度值的比特数字相对应;对经调整的各个个体梯度值、所述残余梯度值以及所述权重进行求和;以及基于所述求和的结果来更新所述权重和所述残余梯度值以训练所述神经网络。

Description

神经网络方法和装置
相关申请的交叉引用
本申请要求于2018年7月4日在韩国知识产权局提交的韩国专利申请No.10-2018-0077894的优先权,其全部公开内容通过引用被并入本文中用于所有目的。
技术领域
本公开涉及神经网络方法和装置。
背景技术
特征提取、模式识别和/或分析(仅作为示例)的技术自动化已经通过作为专门的计算架构的处理器实现的神经网络模型而得到实现,该处理器实现的神经网络模型在经过大量训练之后可以提供计算上直观的特征提取或识别、输入模式与输出模式之间的映射、输入模式的模式识别、归类或各种形式的分类。提取这种信息或识别、生成这种映射、执行这种模式识别或执行这种归类或分类的经训练的能力可以被称为神经网络的学习能力。这种经训练的能力还可以使专门的计算架构能够将输入模式或对象或输入模式或对象的一部分例如分类为属于一个或多个预定组的成员。此外,由于专门的训练,这种经过特殊训练的神经网络由此可以具有针对例如神经网络可能没有针对其被训练的输入模式来生成相对准确或可靠的输出的推广能力。然而,因为这些运算是通过这种专门的计算架构来执行的,并且以与在非计算机实现的方法或非自动化方法中执行它们不同的自动化方式来执行,所以它们还招致仅由于它们被实现的自动化和专门的计算架构方式而出现的问题或缺陷。
这种神经网络实现针对复杂的输入数据还需要许多运算,这可能需要大的功耗并且需要长的处理时间。此外,所实现的用于降低这种处理需求的尝试导致准确度和精度的降低。
发明内容
提供本发明内容以便以简化的形式来介绍下面将在具体实施方式中被进一步描述的概念的选择。本发明内容不意在识别所要求保护的主题的关键特征或必要特征,其也不意在被用作帮助确定所要求保护的主题的范围。
在一个总的方面,一种处理器实现的神经网络方法包括:计算用于更新神经网络的权重的各个个体梯度值;基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;调整所述各个个体梯度值以与所述残余梯度值的比特数字相对应;对经调整的个体梯度值、所述残余梯度值以及所述权重进行求和;以及基于所述求和的结果来更新所述权重和所述残余梯度值以训练所述神经网络。
所述方法可以包括:将所述累积梯度值中能够与表示所述权重的比特数字求和的值确定为有效梯度值;以及通过从所述累积梯度值中减去所述有效梯度值来计算所述残余梯度值。
所述方法可以包括:量化所述各个个体梯度值,其中,个体梯度值中小于所述残余梯度值的最低有效比特数字的值被省略;以及填充经量化的各个个体梯度值,其中,存在高达与所述残余梯度值的最高有效比特数字相对应的比特数字的值。
所述方法可以包括:基于设定的比特数量来映射所述经调整的个体梯度值和所述残余梯度值以进行所述求和,以及计算中间求和值;以及基于所述比特数量来映射所述权重,以及对所述中间求和值和所述权重进行求和。
所述方法可以包括:填充所述经调整的个体梯度值、所述残余梯度值以及所述权重,其中,值被映射到所有比特数字;以及对经填充的个体梯度值、经填充的中间求和值和经填充的权重进行求和。
所述方法可以包括:将所述求和的结果中与表示所述权重的比特数字相对应的比特数字值更新到经更新的权重,以及将所述求和的结果中不与表示所述权重的比特数字相对应的比特数字值更新到所述残余梯度值。
所述方法可以包括:获得符号比特,所述符号比特是所述求和的结果的最高有效比特;以及添加所获得的符号比特,使得所获得的符号比特是所述经更新的权重和/或经更新的残余梯度值之一的最高有效比特。
在一个总的方面,一种神经网络处理器实现的方法包括:计算用于更新神经网络的权重的各个个体梯度值;基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算各个残余梯度值;调整所述各个个体梯度值以与表示所述残余梯度值的比特数字相对应;将所述残余梯度值中除符号比特之外的剩余值串接到所述权重,以及计算中间串接值;对经调整的各个个体梯度值和所述残余梯度值进行求和;以及基于所述求和的结果来更新所述权重和所述残余梯度值以训练所述神经网络。
所述方法可以包括:将所述累积梯度值中能够与表示所述权重的比特数字求和的值确定为有效梯度值;以及通过从所述累积梯度值中减去所述有效梯度值来计算所述残余梯度值。
所述方法可以包括:量化所述各个个体梯度值,其中,所述个体梯度值中小于所述残余梯度值的最低有效比特数字的值被省略;以及填充经量化的个体梯度值,其中,存在高达与表示所述残余梯度值的最高有效比特数字相对应的比特数字的值。
所述方法可以包括:基于比特数量来映射所述经调整的各个个体梯度值和所述中间串接值,以及对所述经调整的各个个体梯度值和所述中间串接值进行求和。
在一个总的方面,一种非暂时性计算机可读记录介质上记录有计算机可读指令,所述计算机可读指令在由一个或多个处理器执行时使所述一个或多个处理器执行上述方法中的任何一种方法。
所述方法可以包括:填充所述经调整的各个个体梯度值和所述中间串接值,其中,值被映射到所有比特数字;以及对经填充的经调整的各个个体梯度值和经填充的中间串接值进行求和。
所述方法可以包括:将所述求和的结果中与表示所述权重的比特数字相对应的比特数字值更新到经更新的权重,以及将所述求和的结果中不与表示所述权重的比特数字相对应的比特数字值更新到所述残余梯度值。
所述方法可以包括:获得符号比特,所述符号比特是所述求和的结果的最高有效比特;以及添加所获得的符号比特,使得所获得的符号比特是所述经更新的权重和/或经更新的残余梯度值的最高有效比特。
在一个总的方面,一种神经网络装置包括一个或多个处理器,所述一个或多个处理器被配置为:计算用于更新神经网络的权重的各个个体梯度值;基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;调整所述各个个体梯度值以与表示所述残余梯度值的比特数字相对应;对经调整的个体梯度值、所述残余梯度值以及所述权重进行求和;以及基于所述求和的结果来更新所述权重和所述残余梯度值。
在一个总的方面,一种神经网络装置包括一个或多个处理器,所述一个或多个处理器被配置为:计算用于更新所述神经网络的权重的各个个体梯度值;基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;调整所述各个个体梯度值以与表示所述残余梯度值的比特数字相对应;将所述残余梯度值中除符号比特之外的剩余值串接到所述权重,以及计算中间串接值;对经调整的各个个体梯度值和所述残余梯度值进行求和;以及基于所述求和的结果来更新所述权重和所述残余梯度值。
在一个总的方面,一种非暂时性计算机可读记录介质上记录有计算机可读指令,所述计算机可读指令在由一个或多个处理器执行时执行上述方法中的任何方法。
其他特征和方面将根据以下具体实施方式、附图、权利要求而变得明显。
附图说明
图1示出了根据一个或多个实施例的神经网络将浮点格式的参数量化为定点格式的参数的示例。
图2示出了根据一个或多个实施例的在神经网络中执行的运算。
图3A是示出了根据一个或多个实施例的浮点值的示例的图;图3B是根据一个或多个实施例的定点值的示例,以及图3C是示出了根据一个或多个实施例的定点值的另一示例的图。
图4是示出了根据一个或多个实施例的更新神经网络的参数的过程的图。
图5是示出了根据一个或多个实施例的处理神经网络中的参数的方法的示例的流程图。
图6是用于说明根据一个或多个实施例的更新定点参数格式的权重的示例的图。
图7是示出了根据一个或多个实施例的更新权重和残余梯度值的示例的图。
图8是示出了根据一个或多个实施例的更新权重和残余梯度值的示例的图。
图9是示出了根据一个或多个实施例的通过使用加法器来更新权重和残余梯度值的示例的图。
图10是示出了根据一个或多个实施例的通过使用加法器来更新权重和残余梯度值的示例的图。
图11是示出了根据一个或多个实施例的通过使用加法器来更新权重和残余梯度值的示例的图。
图12是示出了根据一个或多个实施例的通过使用加法器来更新权重和残余梯度值的示例的图。
图13是示出了根据一个或多个实施例的处理使用低精度数***的神经网络中的参数的方法的流程图。
图14是示出了根据实施例的神经网络装置的硬件配置的框图。
图15是根据一个或多个实施例的电子***的框图。
在整个附图和具体实施方式中,相同的附图标记指代相同的元素。附图可以不按比例,并且为了清楚、说明和方便,可以夸张附图中的元素的相对尺寸、比例和描绘。
具体实施方式
提供以下详细描述以帮助读者获得对本文中所描述的方法、装置和/或***的全面理解。然而,在理解本申请的公开内容之后,本文中所描述的方法、装置和/或***的各种改变、修改和等同物将是显而易见的。例如,本文中所描述的操作顺序仅仅是示例,并且不限于本文所阐述的顺序,而是可以改变,如在理解本申请的公开内容之后可以变得显而易见的那样(除了必须按照一定的顺序发生的情况外)。此外,为了增加清楚度和简要度,可以省略对本领域已知特征的描述。
本文中所描述的特征可以用不同的形式来体现,并且不应被解释为受限于本文中所描述的示例。相反,提供本文中所描述的示例仅仅是为了说明实现本文中所描述的方法、装置和/或***的许多可能方式中的一些方式,这些方式在理解本申请的公开内容之后将是显而易见的。
在整个公开中使用的表述“根据实施例”不一定指代相同的实施例,因为他们可以指代相同的实施例并且也可以指代一些或全部都可以不同的各种实施例。类似地,本文中针对示例或实施例对术语“可以”的使用(例如,关于什么示例或实施例可以包括或实现)意味着存在包括这种特征在内或实现这种特征的至少一个示例或实施例,同时所有示例和实施例不限于此。
可以在功能块组件和各种处理步骤的意义上来描述实施例。可以由被配置为执行指定功能的任意数量的硬件和/或软件组件以及存储用于这种硬件的指令的计算机可读介质或一个或多个处理器来实现这种功能块中的一些或全部。例如,根据本公开的功能块可以由一个或多个微处理器或者由用于预定功能的电路组件来实现。另外,例如,根据本公开的功能块可以用任何编程或脚本语言来实现。功能块可以被实现为在一个或多个处理器上执行的算法。此外,本文所描述的实施例可以采用用于电子配置、信号处理和/或控制、数据处理等的任意数量的已有技术。
此外,所呈现的各个附图中示出的组件之间的连接线或连接符意在表示组件之间的示例功能关系和/或物理或逻辑连接。在实际设备中,组件之间的连接可以由许多备选或附加的功能关系、物理连接或逻辑连接来表示。
图1示出了根据一个或多个实施例的神经网络将浮点格式的参数量化为定点格式的参数的示例。
参照图1,神经网络学习装置10可以与具有各种处理功能的计算设备相对应,包括(但不限于):生成神经网络、训练神经网络或使神经网络学习、将浮点格式神经网络量化为定点格式神经网络网络、重新训练神经网络和/或实现神经网络的功能。例如,神经网络学习装置10可以实现为或实现成各种类型的设备,例如,个人计算机(PC)、服务器设备、移动设备等。神经网络10和/或神经网络推断装置的神经网络组件也可以与图14的神经网络装置1400相对应。
神经网络学习装置10可以通过反复训练给定的初始神经网络(使给定的初始神经网络反复学习)来生成经训练的神经网络11。在该状态下,在确保神经网络的处理准确度方面,初始神经网络可以具有浮点格式参数,例如32比特浮点精度的参数。参数可以包括向神经网络输入/从神经网络输出的各种类型的数据,例如,神经网络的输入/输出激活、以及权重、偏置等。随着重复进行初始或过渡神经网络的训练,可以调整神经网络的浮点参数以针对给定输入来输出更准确的输出,例如直到满足预定的准确度或预定的不准确度为止。
神经网络学习装置10可以向诸如神经网络推断装置20之类的硬件加速器发送经训练的神经网络11,要注意,神经网络推断装置不限于以下进一步讨论的这种加速器。神经网络推断装置20可以表示移动设备、嵌入式设备等,或者可以被包括在移动设备、嵌入式设备等中。神经网络推断装置20可以是用于驱动量化神经网络21的专用硬件。神经网络推断装置20被实施有相对低的能力或低的性能,神经网络推断装置20可以被实现为更适合于定点运算而不是浮点运算。在示例中,神经网络推断装置20可以与张量处理单元(TPU)、神经引擎等相对应但是不限于此,它们是用于驱动神经网络的专用模块,例如如本文中进一步讨论的TPU、神经引擎等。
如上所述,用于驱动经量化的神经网络21的神经网络推断装置20可以在独立于神经网络学习装置10的单独设备中实现。本公开不限于此,并且神经网络推断装置20可以在与神经网络学习装置10相同的设备中实现。
与定点计算相比,浮点计算可能需要相对大量的运算和相对频繁的存储器访问。特别地,处理一些神经网络的乘法和累积(MAC)运算可能需要许多运算。因此,在可能具有相对低的处理性能的智能电话、平板计算机、可穿戴设备等的典型的神经网络推断装置中,对具有浮点格式参数的神经网络的处理可能不流畅。因此,为了在充分减少上述设备中的运算数量的同时在可允许的准确度损失内驱动神经网络,可能需要量化在神经网络中处理的浮点格式参数。这种参数量化可以表示具有高精度的浮点格式参数到具有低精度的定点格式参数的转换。
神经网络10或神经网络量化装置执行量化以将经训练的神经网络11的参数转换为具有特定比特数量的定点格式。在示例中,神经网络量化装置可以通过被包括在神经网络学习装置10和神经网络推断装置20中来进行运算,或者可以作为与神经网络学习装置10分离的独立的第三硬件加速器来进行运算,其中,第三硬件加速器作为执行神经网络学习装置10的剩余运算的一个或多个处理器。例如,考虑到要部署经量化的神经网络21的神经网络学习装置10或神经网络推断装置20的设备处理性能,量化可以将经训练的神经网络11的参数转换为具有特定比特数量的定点格式。在示例中,神经网络量化装置可以向要部署经量化的神经网络21的神经网络推断装置20发送经量化的神经网络21。
因此,一个或多个实施例提供改进神经网络的处理运算的技术改进,例如,这些改进可以改进存储器空间需求,改进存储器访问和计算速度,并且允许在包括智能电话、平板计算机和其他移动电子设备在内的较小的电子设备上使用更复杂的神经网络。
可以部署经量化的神经网络21的神经网络推断装置20可以表示以下各项或者可以被包括在以下各项中:例如,自主车辆、机器人、智能电话、平板设备、增强现实(AR)设备、物联网(IoT)设备等,这些设备通过使用神经网络来执行语音识别、图像识别等,但是本公开不限于此。
图2示出了根据一个或多个实施例的在神经网络2中执行的运算。
参照图2,神经网络2可以具有包括输入层、隐藏层和输出层在内的结构,可以基于所接收的输入数据(例如,I1和I2)来执行运算,并且可以基于上述运算的结果来生成输出数据(例如,O1和O2)。
如上所述,神经网络2可以是包括两个或更多个隐藏层在内的深度神经网络(DNN)或n层神经网络。例如,如图2中所示,神经网络2可以是包括输入层层1、两个隐藏层(第二层层2和第三层层3)以及输出层层4在内的DNN。当神经网络2由DNN架构实现时,由于神经网络2包括用于处理有效信息的相对更多的层,因此神经网络2可以处理比具有单个层的神经网络复杂的数据集。尽管神经网络2被示出为包括四个层,但这仅仅是示例,并且神经网络2可以包括更多的或更少的层,或者包括更多的或更少的节点。换句话说,神经网络2可以包括具有与图2中所示的结构不同并且用于各种和/或共同的经训练的目标的各种结构的层。
神经网络2中包括的每个层可以包括多个节点。节点可以与由硬件组件实现的多个节点相对应,其中,多个节点被称为处理元件(PE)、处理单元或与其类似的术语。例如,如图2中所示,层1可以包括两个节点(node),并且层2和层3中的每一个层可以包括三个节点。然而,这仅仅是作为示例,并且在神经网络2中包括的每个层可以包括各种数量的节点(node)。
因此,神经网络2包括多个层,并且每个层包括多个节点。取决于神经网络2的架构,各层内和/或相邻层中包括的节点可以根据相应的连接(例如,其可以被加权或者可以不被加权)被选择性地连接。例如,神经网络2可以由处理器(即,一个或多个处理器)来实现,其中,处理器被配置为利用各自包括多个节点在内的这种多个层来生成神经网络结构/架构,并且被配置为在神经网络结构的相邻层中的相邻节点之间应用这种示例加权连接,和/或在层内应用示例卷积核或加权连接,以解释向神经网络结构应用的输入数据。仅作为示例,本文中对输入数据的这种“解释”可以包括所执行的识别、验证或拒绝,或者输入数据二元或多类分类、聚类、模式观察、变换和/或回归,以及各种示例中的神经网络的任何其他经训练的目标。
因此,如所述的,神经网络2的各个层中包括的节点可以彼此连接以处理数据。例如,一个节点可以从其他节点接收数据并处理该数据,并且可以向其他节点输出运算结果。
每个节点的输入和输出可以分别被称为输入激活和输出激活,即,作为相对于至少针对对应节点的输入信息所应用的对应节点的一个或多个激活函数的相应结果。例如,激活可以简单得如对多个加权输入的总和应用的修正线性单元(ReLU)、S形函数或tanh,或者节点可以更复杂,作为非限制性示例,例如门控或长短期记忆节点。换句话说,激活可以是与一个或多个节点的输出相对应并且与下一层中包括的一个或多个节点的输入相对应的参数。示例神经网络的每个节点可以基于从前一层中包括的节点接收的激活以及对应的权重和偏置来生成其自己的激活。权重可以是示例神经网络的用于计算每个节点中的输出激活的经训练的参数,并且可以是向节点之间的连接关系分配的值。例如,权重可以是神经网络的经训练的参数,其由对初始或过渡神经网络的参数进行训练而产生。因此,可以将经训练的权重应用于针对节点的特定输入(或者来自前一节点/层的作为结果的激活),并且将相应的其他经训练的权重应用于针对该节点的其他相应输入,使得节点的相对于这种加权输入的激活,并且可以是随后被输出并且被分配给该节点与一个或多个接下来的节点之间的连接关系的值或激活结果。除了这种权重参数之外,神经网络还可以针对这种激活来应用偏置。例如,可以在神经网络的训练期间设置或训练该偏置。
如所述的,每个节点可以由接收输入并输出输出激活的计算单元或处理元件来进行处理,并且最后可以映射每个节点的输入和输出。在以下等式1中,σ表示激活函数,表示从第(i-1)层中包括的第k个节点到第i层中包括的第j个节点的权重,/>表示第i层中包括的第j个节点的偏置,并且/>表示第i层的第j个节点的激活,使得可以如下计算激活/>
等式1
如图2中所示,第二层层2的第一个节点CH 1的激活可以被表示为此外,根据等式1,/>可以具有值/>然而,上述等式1仅是用于描述被用来处理神经网络2中的数据的激活、权重和偏置的示例,并且本公开不限于此。激活可以是通过允许从前一层接收的激活的加权和通过激活函数(例如,上述S形函数(sigmoidfunction)或修正线性单元(ReLU)函数)而获得的值。
神经网络2可以使用低精度数***。低精度数***可以是通过使用具有比典型的浮点数***方法的比特数量相对少的比特数量的数据来减少计算量同时降低精度损失的***。例如,与使用32比特或64比特浮点或定点数据的这种典型的神经网络不同,然而作为非限制性示例,在示例中,神经网络2使用具有8比特或16比特浮点或定点数据作为参数的低精度数***。
神经网络2使用这种8比特或16比特浮点或定点数据意味着诸如神经网络2的特定节点的激活值、权重和/或偏置值之类的参数具有8比特或16比特浮点或定点数据格式。然而,使用低精度数***的神经网络2可以使用具有更少比特数量的浮点或定点数据作为参数,并且不限于上述示例。
在神经网络2中,大量数据集在多个相互连接的节点之间交换,并且可以通过层经历许多计算过程。使用低精度数***的神经网络2在许多计算过程期间使用具有比先前的32比特或64比特方法的神经网络的比特数量更少的比特数量的数据,且因此与先前的神经网络方法相比,可以减少计算量。然而,使用低精度数***的神经网络2可以实现一种用于减少计算量并最小化精度损失的技术。
图3A是示出了根据一个或多个实施例的浮点值30的示例的图。图3B是根据实施例的定点值35的示例。图3C是示出了根据一个或多个实施例的定点值的另一示例的图。
参照图3A,浮点值30可以包括符号比特310、指数部分320、尾数部分330和偏置340。浮点指示将数划分成指示小数点部分的部分(即尾数)和指示小数点位置的部分。
尾数部分330可以与指示小数点部分的部分相对应。指数部分320可以与指示小数点位置的部分相对应。符号比特310可以确定浮点值30的符号。偏置340可以是被添加到指数部分320或从指数部分320中减去并且被确定为表示负指数的值。浮点值30可以包括符号比特310、与指数部分320相对应的比特,以及与尾数部分330相对应的比特。可以针对浮点值30来预先确定并单独存储偏置340。
当符号比特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可以通过编码表达方法、一补码方法和二补码方法中的任何一种来表示负数。
图4是示出了根据一个或多个实施例的更新神经网络的参数的过程的图。
神经网络的参数可以是向神经网络中包括的节点之间的连接关系指派的权重。在下文中,将要在神经网络中处理的参数描述为权重,但是参数不一定限于权重。参数可以指在神经网络中处理的任何数据。
个体梯度值m可以是在训练或重新训练期间例如被图1的神经网络学习装置10(作为非限制性示例)计算以更新权重θ的值。在神经网络中学习的对象可以是权重θ。可能需要在学习过程中(例如,在多次迭代更新中)反复地更新权重θ,神经网络可以产生更加准确且更不会不准确的愈加良好的结果。
同时,为了有效地更新权重θ,可以使用限定从网络输出的结果值与实际结果值之间的差异的损失函数J(θ)的值和各种优化器来最小化损失函数J(θ)的值。
在实施例中,优化器可以实现梯度下降法。梯度下降法是通过在相对于权重θ的相反方向上重复将梯度移动预定量来找到使损失函数J(θ)的值最小化的θ的值的方法。梯度下降法可以表示为下面的等式3。在等式3中,表示损失函数J(θ)的梯度,并且η表示学习速率。
等式3
具体地,当计算损失函数J(θ)时,对整个学习数据的使用可以被称为批量梯度下降,这通常需要太多的计算。为了减少计算,可以使用随机梯度下降(SGD)方法来仅针对小批量(mini-batch)的集合而不是整个批量来计算损失函数J(θ)。
参照图4,当优化器使用梯度下降法时,个体梯度值m为
在一个或多个实施例中,优化器可以使用动量法。动量法向通过梯度下降的移动过程给出惯性。除了通过当前梯度的移动方向之外,动量法可以记住它在过去移动的方法,并且在它先前曾移动过的方向上附加移动一定程度。动量法可以表示为下面的等式4。在等式4中,vt表示时间步长t下的运动向量,并且γ表示与给出多少动量有关的动量项。
等式4
θ←θ-vt
参照图4,当优化器使用动量法时,个体梯度值m是
除了上述SGD梯度下降法和动量法之外,作为非限制示例,优化器可以使用Adagrad(自适应梯度)法、RMSProp法、AdaDelta(自适应增量)法、Adam(自适应矩估计)法等。
在典型的神经网络中,个体梯度值m可以具有远小于权重θ的值。如果这种神经网络将要使用低精度数***(例如,8比特或16比特)时,个体梯度值m可能不被包括在可以表示权重θ的值的范围内。因此,当根据各种更新方法(梯度下降法、动量法等)来更新权重θ时,通常将忽略个体梯度值m并且可能不对权重θ进行更新。
在下文中,为了便于描述,下面将描述优化器使用梯度下降法的实施例。
图5是示出了根据一个或多个实施例的处理神经网络中的参数的方法的示例的流程图。
神经网络可以是使用低精度数***的神经网络。参数可以是向神经网络中包括的节点之间的连接关系指派的权重。在下文中,将要在神经网络中处理的参数描述为权重,但是参数不一定限于权重。参数可以指在神经网络中处理的任何数据。
参照图5,在操作510中,神经网络装置可以计算向神经网络中包括的节点之间的连接关系指派的权重的个体梯度值。权重可以是浮点值或定点值。在示例中,神经网络装置可以与图1的神经网络学习装置10相对应,并且在非限制示例中,在作为结果的经训练的神经网络的情况下,神经网络可以与图2的神经网络2相对应。
个体梯度值可以是被计算以更新权重的值。在神经网络中要学习的目标可以是权重。可以在学习过程中反复地更新权重,以便神经网络逐渐输出更好的结果。作为更新权重的可能的方法之一,例如,可以使用梯度下降算法。梯度下降算法可以意味着通过在损失函数或误差函数的梯度方向上调整参数来最小化误差以找到损失函数或误差函数的最低点的算法。例如,当损失函数表示L,参数是θ,并且学习速率是η时,可以根据下面的等式5来调整参数。
等式5
为了更新参数而计算的可以表示用于在损失函数的梯度方向上调整参数的梯度。例如,当参数是权重时,/>可以是被计算以更新权重的个体梯度值。
同时,在典型的神经网络中,个体梯度值具有比权重小得多的值。如果这种典型的神经网络将要使用低精度数***(例如,8比特或16比特)时,个体梯度值/>可以不被包括在权重可以表示的值的范围内。因此,当根据等式5来更新权重时,可以忽略个体梯度值/>并且可以不更新权重。尽管为了使神经网络逐渐输出更好的结果可能反复地执行权重的更新,但是权重可能由于被忽视的个体梯度值/>的量值而不被更新。
根据实施例的神经网络装置可以执行操作520和530,使得个体梯度值不被忽略,而是在更新权重的过程中被反映。在操作520中,神经网络装置可以在累积缓冲器中对个体梯度值进行累积。累积缓冲器可以是用于对个体梯度值进行累积的专用硬件,并且可以包括被分配用于对个体梯度值进行累积的存储器。个体梯度值可以在累积缓冲器中进行累积并且变为累积梯度值。累积缓冲器可以存储累积梯度值。
在使用低精度数***的神经网络示例中,神经网络装置可以将个体梯度值累积到可以影响权重的量值,使得在更新权重的过程中不忽略个体梯度值。
在操作530中,当累积缓冲器的累积梯度值等于或大于阈值时,神经网络装置可以通过使用累积梯度值来更新权重。神经网络装置可以确定累积缓冲器的累积梯度值是否等于或大于阈值。阈值可以是用于确定累积梯度值是否已经累积到可以影响权重的量值的值。例如,阈值可以是与权重的最低有效比特数字相对应的值。
在权重是定点值的示例中,权重的最低有效比特数字可以是与表示权重的比特的最低有效比特相对应的数字。作为示例,当权重的最低有效比特表示数字2-4时,权重的最低有效比特数字可以是数字2-4,并且阈值可以是与最低有效比特数字2-4相对应的2-4
在权重是浮点值的示例中,权重的最低有效比特数字可以是与表示权重的指数部分的比特的最低有效比特相对应的数字。然而,当权重是浮点值时,可以考虑偏置以确定最低有效比特数字。作为示例,即使表示权重的指数部分的比特的最低有效比特表示数字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-8,与权重的比特数字相对应的1×20和1×2-2可以加到权重上,而由于权重可以表示的值的范围的限制,1×2-8不可以被加到权重上。
同时,可以被加到权重的比特数字上的部分可以包括由权重的最低有效比特数字表示的值的倍数。在前述示例中,与权重的最低有效比特数字相对应的值是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的倍数。
由于阈值可以是与权重的最低有效比特数字相对应的值,因此有效梯度值可以包括阈值的倍数。例如,当累积梯度值表示累积梯度(Accumulated gradient)并且阈值表示阈值(threshold)时,有效梯度值可以由下面的等式6表示。
等式6
在等式6中,可以是通过将累积梯度除以阈值而获得的商。有效梯度值可以意味着通过将由累积梯度值除以阈值而获得的商乘以阈值而获得的值。此外,有效梯度值可以是阈值的倍数中小于累积梯度值的最大值。例如,当累积梯度是2.2(十进制数)并且阈值是1(十进制数)时,有效梯度值可以是2,其是作为阈值1的倍数1和2中小于累积梯度值2.2的最大值。
神经网络装置可以将有效梯度值添加到权重。由于有效梯度值是被用于更新权重的值,因此神经网络装置可以通过将有效梯度值添加到权重来更新权重。
神经网络装置还可以从累积缓冲器的累积梯度值中减去有效梯度值。由于累积缓冲器的累积梯度值的有效梯度值由权重来反映,因此神经网络装置可以从累积缓冲器的累积梯度值中减去有效梯度值。例如,由于权重被更新,因此可以根据下面的等式7来更新累积梯度值。
等式7
在等式7中,因为是有效梯度值,所以累积缓冲器的累积梯度值可以具有通过从先前的累积梯度值中减去有效梯度值而获得的值。/>
神经网络装置可以在更新权重之后在累积缓冲器的累积梯度值中继续地累积个体梯度值,并且可以重复上述过程。根据实施例的处理神经网络中的参数的方法可以将远小于权重的值的个体梯度值累积到可以影响权重的量值,并且通常可以将个体梯度值应用于权重,而不是如先前实现的那样忽视或者丢弃个体梯度值,从而最小化使用低精度数***的神经网络中的舍入误差。此外,根据本公开的处理神经网络中的参数的方法可以通过在将累积梯度值更新到权重之后继续在累积缓冲器中维持累积梯度值的剩余部分来最小化精度损失。
同时,神经网络装置可以在每个预定的更新周期处确定累积梯度值是否等于或大于阈值。例如,更新周期t=4,即计算四个个体梯度值的时间,但不限于此。
图6是根据实施例的用于说明更新定点参数格式的权重60的示例的图。
参照图6,在使用定点参数的神经网络中,权重60可以是包括第一符号比特610、第一整数部分620、第一小数部分630和第一小数点640在内的定点值,并且累积梯度值65可以是包括第二符号比特615、第二小数部分635和第二小数点(未示出)在内的定点值。根据实施例,权重60可以是第一小数点640可移动的动态定点值。由于第一小数点640移动,因此可以调整第一小数部分630的比特的数量(长度)。
累积梯度值65可以不包括整数部分。例如,当第一小数点640和第二小数点相同时,由于累积梯度值65可以仅表示显著小于权重60的值,因此累积梯度值65可以不包括整数部分,但是可以包括小数部分(即,第二小数部分635)。同时,第二小数点可以与第一小数点640相同,或者可以不同。可以根据情况来调整第二小数点。
权重60可以是m比特的定点值(m是任意自然数)。累积梯度值65可以是n比特的定点值(n是任何自然数)。m和n可以是相同的值,或可以是不同的值。在使用低精度数***的神经网络中,m和n中的每一个可以具有值8或16,但不限于此。
与权重60相比,累积梯度值65可以具有相对小的值。因此,与表示权重60的每个比特相对应的值可以实质上大于与表示累积梯度值55的每个比特相对应的值。然而,与表示权重60的某一个比特相对应的值可以等于与表示累积梯度值55的某一个比特相对应的值。为了更新权重60,由于累积梯度值65的一部分可以被加到权重60上,因此权重60的一些较低比特可以与累积梯度值55的一些高比特重叠。
当权重60和累积梯度值65之间重叠的比特550是k个比特(k是任意自然数)时,神经网络可以获得与使用(m+n-2-k)比特的定点数据实质相同的效果。
可以相对于阈值560来确定权重60和累积梯度值65之间重叠的比特550。阈值560可以是用于确定累积梯度值65是否已经累积到可以影响权重60的量值的值。例如,阈值560可以是与权重60的最低有效比特数字相对应的值。重叠的比特550可以是表示累积梯度值55的比特中表示等于或大于阈值560的值的比特。重叠的比特550可以与权重60的一些较低比特重叠,并且因此可以与权重60进行求和。同时,权重60的较低比特可以表示第一小数部分630。
当对个体梯度值进行累积并且累积梯度值65增加到可以影响权重60的量值时,神经网络装置可以通过使用累积梯度值65来更新权重60。例如,神经网络装置可以对表示累积梯度值65的第二小数部分635的比特中与权重60的第一小数部分630重叠的至少一个比特650的值与权重60进行求和。由重叠的至少一个比特550表示的值可以与有效梯度值相对应。
同时,在对由表示累积梯度值65的第二小数部分635的比特中与权重60的第一小数部分630重叠的至少一个比特650所表示的值与权重60进行求和的过程中可以应用填充方法。
图7是示出了根据实施例的更新权重730和残余梯度值720的示例的图。
参照图7,神经网络装置可以通过使用个体梯度值710、残余梯度值720和权重730来更新权重730和残余梯度值720。在实施例中,神经网络装置可以通过使用低精度数***来表示个体梯度值710、残余梯度值720和权重730。例如,个体梯度值710、残余梯度值720和权重730可以是8比特或16比特浮点或定点值,但不限于此。作为非限制性示例,在示例中,神经网络装置可以与图1的神经网络学习装置10相对应。
神经网络装置可以计算向神经网络中包括的节点之间的连接关系指派的权重的个体梯度值710。个体梯度值710可以是为了更新权重730而计算的值。在神经网络中要学习的对象可以是权重730。为了使神经网络愈加良好的结果,可以在学习过程中反复更新权重730。作为非限制性示例,如上面参照图4所述,神经网络装置的优化器可以通过使用梯度下降法、动量法等来计算个体梯度值710。
神经网络装置可以将个体梯度值710累积在累积缓冲器中。在使用低精度数***的神经网络中,神经网络装置可以将个体梯度值710累积到可以影响权重730的量值,使得个体梯度值710在更新权重730的过程中不被忽略。
当累积缓冲器的累积梯度值等于或大于阈值时,神经网络装置可以将累积梯度值中可以与权重730的比特数进行求和的部分确定为有效梯度值。神经网络装置可以通过从累积梯度值中减去有效梯度值来计算残余梯度值720。
参照图7,神经网络装置可以通过对个体梯度值710和残余梯度值720进行求和来计算中间求和值740。在图7中,个体梯度值710和残余梯度值720都可以包括最高有效比特(MSB)中的符号比特。神经网络装置可以在考虑个体梯度值710的符号比特和残余梯度值720的符号比特的情况下来计算这两个值的中间求和值740。
此时,由于个体梯度值710和残余梯度值720的比特数量和比特数字可能不对应,因此神经网络装置可以调整个体梯度值710以与残余梯度值720的比特数量和比特数字相对应。在实施例中,神经网络装置可以通过量化和填充个体梯度值710来将个体梯度值710调整为与残余梯度值720的比特数量和比特数字相对应。
神经网络装置可以通过对中间求和值740和权重730进行求和来计算最终求和值750。神经网络装置可以根据最终求和值750来获得经更新的权重760和经更新的残余梯度值770。在实施例中,神经网络装置可以基于权重730的比特数字根据最终求和值750来获得经更新的权重760和经更新的残余梯度值770。例如,神经网络装置可以获得最终求和值750中与权重730的比特数字相对应的比特数字值来作为经更新的权重760。神经网络装置还可以获得最终求和值750中不与权重730的比特数字相对应的比特数字值来作为经更新的残余梯度值770。
此时,经更新的权重760的MSB可以是符号比特,其是最终求和值750的MSB。神经网络装置还可以获得最终求和值750的符号比特,并将所获得的符号比特添加到经更新的残余梯度值770,使得所获得的符号比特可以是经更新的残余梯度值770的MSB。
同时,当作为通过对经更新的残余梯度值770和新的个体梯度值进行求和而得到的经更新的残余梯度值770和新的个体梯度值的求和结果的累积梯度值等于或大于阈值时,可以通过重复上述过程来再次更新权重730和残余梯度值720。
图8是示出了根据实施例的更新权重830和残余梯度值820的示例的图。
参照图8,由于个体梯度值810的比特数量和比特数字与残余梯度值820的比特数量和比特数字可能不对应,因此神经网络装置可以调整个体梯度值810以与残余梯度值820的比特数量和比特数字相对应。在实施例中,神经网络装置可以通过量化和填充个体梯度值810来将个体梯度值810调整为与残余梯度值820的比特数量和比特数字相对应。作为非限制性示例,在示例中,神经网络装置可以与图1的神经网络学习装置10相对应。
在下文中,为方便起见,将省略图7和图8之间的冗余描述。
神经网络装置可以通过将去除了符号比特的残余梯度值820串接到权重830来计算中间串接值840。此时,中间串接值840的MSB可以与权重830的符号比特相对应。
神经网络装置可以通过对中间串接值840和个体梯度值810进行求和来计算最终求和值850。神经网络装置可以根据最终求和值850来获得经更新的权重860和经更新的残余梯度值870。在实施例中,神经网络装置可以基于权重830的比特数字根据最终求和值850来获得经更新的权重860和经更新的残余梯度值870。例如,神经网络装置可以获得最终求和值850中与权重830的比特数字相对应的比特数字值来作为经更新的权重860。神经网络装置还可以获得最终求和值850中不与权重830的比特数字相对应的比特数字值来作为经更新的残余梯度值870。
此时,经更新的权重860的MSB可以是符号比特,其是最终求和值850的MSB。然而,与更新之前的残余梯度值820类似,经更新的残余梯度值870可以不包括符号比特。也就是说,与图7不同,神经网络装置可以不将最终求和值850的符号比特添加到经更新的残余梯度值870。
同时,当作为通过对经更新的残余梯度值870和新的个体梯度值进行求和而得到的经更新的残余梯度值870和新的个体梯度值的求和结果的累积梯度值等于或大于阈值时,可以通过重复进行上述过程来再次更新权重830和残余梯度值820。
图9是示出了根据实施例的通过使用加法器900来更新权重930和残余梯度值920的示例的图。
神经网络装置可以通过使用加法器900来对个体梯度值910、残余梯度值920和权重930进行求和。加法器900是一种算术逻辑单元(ALU),并且可以具有预定数量的比特。可以根据加法器900的比特数量来确定加法器900的处理性能。也就是说,可以根据加法器900的比特数量来确定可以由加法器900进行求和的数据的比特数量。
神经网络装置可以通过使用个体梯度值910、残余梯度值920和权重930来更新权重930和残余梯度值920。个体梯度值910、残余梯度值920和权重930可以是在低精度数***中使用的定点或浮点值。
在图9中,示出了通过使用32比特加法器900来对16比特个体梯度值910、残余梯度值920和权重930进行求和的过程。
参照图9,神经网络装置可以调整个体梯度值910,使得个体梯度值910的比特数量和比特数字与残余梯度值920的比特数量和比特数字相对应。在实施例中,神经网络装置可以通过量化和填充个体梯度值910来调整个体梯度值910,使得个体梯度值910的比特数量和比特数字与残余梯度值920的比特数量和比特数字相对应。作为非限制性示例,在示例中,神经网络装置可以与图1的神经网络学习装置10相对应。
具体地,神经网络装置可以量化个体梯度值910,使得个体梯度值910中小于残余梯度值920的最低有效比特数字的值被省略。神经网络装置还可以填充经量化的个体梯度值910,使得存在高达与残余梯度值920的最高有效比特数字相对应的比特数字的值。也就是说,神经网络装置可以通过对个体梯度值910应用量化和填充来计算经调整的个体梯度值912。经调整的个体梯度值912的比特数量和比特数字可以与残余梯度值920的比特数量和比特数字相对应。
同时,当个体梯度值910的比特数量和比特数字中的至少一项与残余梯度值920的比特数量和比特数字相对应时,可以省略量化或填充个体梯度值910的过程。
神经网络装置可以基于加法器900的比特数量将经调整的个体梯度值912和残余梯度值920映射到加法器900。也就是说,神经网络装置可以将16比特经调整的个体梯度值912和残余梯度值920映射到32比特,使得可以通过使用32比特加法器900来执行计算。在实施例中,神经网络装置可以通过使用一补码方法或二补码方法来将16比特经调整的个体梯度值912和残余梯度值920映射到32比特。然而,映射方法不限于此。
例如,神经网络装置可以将16比特经调整的个体梯度值912和残余梯度值920中的每一个值的符号比特映射到加法器900的最高有效比特数,并将剩余的15个比特添加到加法器900的除了其最低有效比特之外剩余的较低的15比特数字。在这种情况下,除了加法器900的MSB之外,可以填充加法器900的剩余的较高的15比特数字和最低有效比特数字。
神经网络装置可以使用加法器900以通过对映射到加法器900的个体梯度值914和残余梯度值924进行求和来计算中间求和值940。在图9中,个体梯度值914和残余梯度值924都可以在最高有效比特(MSB)中包括符号比特,并且神经网络装置可以通过在考虑个体梯度值914的符号比特和残余梯度值924的符号比特的情况下对这两个值进行求和来计算中间求和值940。
神经网络装置可以基于加法器900的比特数量将权重930映射到加法器900。如上所述,神经网络装置可以将16比特权重930映射到32比特,使得可以通过使用32比特加法器900来执行计算。神经网络装置可以从加法器900的最高有效比特数字到最低有效比特数来映射权重935。也就是说,神经网络装置可以将16比特权重935映射到加法器900的较高的16比特数字。此外,可以填充加法器900的不存在对应的权重935的较低的16比特数字。
神经网络装置可以通过对映射到加法器900的权重935和中间求和值940进行求和来计算最终求和值950。神经网络装置可以根据最终求和值950来获得经更新的权重960和经更新的残余梯度值970。
在实施例中,神经网络装置可以基于权重930的比特数字根据最终求和值950来获得经更新的权重960和经更新的残余梯度值970。神经网络装置可以获得最终求和值950中与权重930的比特数字相对应的比特数字值来作为经更新的权重960。此外,神经网络装置可以获得最终求和值950中不与权重930的比特数字相对应的比特数字值来作为经更新的残余梯度值970。
例如,根据作为32比特加法器900的计算结果的32比特最终求和值950,神经网络装置可以获得最终求和值950的与权重930的比特数字相对应的较高的16比特数字值来作为经更新的权重960,并获得最终求和值950的较低的16比特数字值来作为经更新的残余梯度值970。
神经网络装置还可以获得作为最终求和值950的MSB的符号比特,并添加所获得的符号比特,使得所获得的符号比特是经更新的残余梯度值970的MSB。
图10是示出了根据实施例的通过使用加法器1000来更新权重1030和残余梯度值1020的示例的图。
在下文中,为了便于描述,将省略图9和图10之间的冗余描述。
在图10中,示出了通过使用32比特加法器1000来对16比特个体梯度值1010、残余梯度值1020和8比特权重1030进行求和的过程。
神经网络装置可以基于加法器1000的比特数量将权重1030映射到加法器1000。也就是说,神经网络装置可以将8比特权重1030映射到32比特,使得可以通过使用32比特加法器1000来执行计算。同时,图9的权重930是16比特,而图10的权重1030是10是8比特。在这种情况下,神经网络装置可以填充权重1030,使得存在高达加法器1000的最高有效比特数字的值。神经网络装置可以从加法器1000的最高有效比特数字到较低比特数字来映射经填充的权重1030。也就是说,神经网络装置可以将16比特经填充的权重1030映射到加法器1000的较高的16比特数字。此外,也可以填充加法器1000的不存在对应的权重1030的较低的16比特数字。作为非限制性示例,在示例中,神经网络装置可以与图1的神经网络学习装置10相对应。
神经网络装置可以通过对映射到加法器1000的权重1035和中间求和值1040进行求和来计算最终求和值1050。神经网络装置可以根据最终求和值1050来获得经更新的权重1060和经更新的残余梯度值1070。
在实施例中,神经网络装置可以基于权重1030的比特数字根据最终求和值1050来获得经更新的权重1060和经更新的残余梯度值1070。神经网络装置可以获得最终求和值1050中与权重1030的比特数字相对应的比特数字值来作为经更新的权重1060。神经网络装置还可以获得最终求和值1050的不与权重1030的比特数字相对应的比特数字值来作为经更新的残余梯度值1070。
例如,神经网络装置可以获得32比特最终求和值1050的不与权重1030的比特数字相对应的较低的16比特数字值来作为经更新的残余梯度值1070,该32比特最终求和值1050是32比特加法器1000的计算结果。同时,神经网络装置可以根据32比特最终求和值1050的较高的16比特数字值来获得除了填充符(较高的8比特数字)之外的剩余比特数字值来作为经更新的权重1060。
神经网络装置还可以获得作为最终求和值1050的MSB的符号比特,然后用最终求和值1050的符号比特来替换经更新的权重1060的MSB,并添加最终求和值1050的符号比特,使得所添加的符号比特是经更新的残余梯度值1070的MSB。
图11是示出了根据实施例的通过使用加法器1100来更新权重1130和残余梯度值1120的示例的图。
在下文中,为了方便描述,将省略图9和图11之间的冗余描述。
在图11中,示出了通过使用32比特加法器1100来对16比特个体梯度值1110、残余梯度值1120和权重1130进行求和的过程。
参照图11,神经网络装置可以调整个体梯度值1110,使得个体梯度值1110的比特数量和比特数字与残余梯度值1120的比特数量和比特数字相对应。在实施例中,神经网络装置可以通过对个体梯度值1110应用量化和填充来计算经调整的个体梯度值1112。作为非限制性示例,在示例中,神经网络装置可以与图1的神经网络学习装置10相对应。
神经网络装置可以通过将去除了符号比特的残余梯度值1120串接到权重1130来计算中间串接值1140。中间串接值1140的MSB可以与权重1030的符号比特相对应,并且被串接到16比特权重1130和除了符号比特之外的15比特残余梯度值1120,并且因此可以计算32比特中间串接值1140。
神经网络装置可以将中间串接值1140和经调整的个体梯度值1112中的每一个值映射到加法器1100。例如,神经网络装置可以将中间串接值1140映射到加法器1100的较高的31比特数字。在这种情况下,加法器1100的最低有效比特数字也可以被填充。
此外,神经网络装置可以将16比特经调整的个体梯度值1112的符号比特映射到加法器1100的最高有效比特数字,并将剩余的15比特映射到加法器1100的除最低有效比特之外的剩余的15比特数字。在这种情况下,除了加法器1100的MSB之外,可以填充加法器1100的剩余的较高的15比特数字和最低有效比特数字。
神经网络装置可以通过对中间串接值1140和经映射的个体梯度值1114进行求和来计算最终求和值1150。神经网络装置可以根据最终求和值1150来获得经更新的权重1160和经更新的残余梯度值1170。
在实施例中,神经网络装置可以基于权重1130的比特数字根据最终求和值1150来获得经更新的权重1160和经更新的残余梯度值1170。例如,神经网络装置可以获得最终求和值1150的与权重1130的比特数字相对应的比特数字值来作为经更新的权重1160。神经网络装置还可以获得最终求和值1150中不与权重1130的比特数字相对应的比特数字值来作为经更新的残余梯度值1170。
此时,经更新的权重1160的MSB可以是符号比特,其是最终求和值1150的MSB。然而,与被更新之前的残余梯度值1020类似,经更新的残余梯度值1070可以不包括符号比特。
图12是示出了根据实施例的通过使用加法器1200来更新权重1230和残余梯度值1220的示例的图。
在下文中,为了方便描述,将省略图10和图12之间的冗余描述。
在图12中,示出了通过使用32比特加法器1200来对16比特个体梯度值1210、残余梯度值1220和8比特权重1230进行求和的过程。
参照图12,神经网络装置可以调整个体梯度值1210,使得个体梯度值1210的比特数量和比特数字与残余梯度值1220的比特数量和比特数字相对应。在实施例中,神经网络装置可以通过对个体梯度值1210应用量化和填充来计算经调整的个体梯度值1212。作为非限制性示例,在示例中,神经网络装置可以与图1的神经网络学习装置10相对应。
神经网络装置可以通过将去除了符号比特的残余梯度值1220串接到权重1230来计算中间串接值1240。此外,神经网络装置可以将中间串接值1240映射到加法器1200。
在实施例中,作为权重1230的MSB的符号比特可以被映射到加法器1200的最高有效比特数字。同时,图11的权重1130是16比特,而图12的权重1230是8比特。在这种情况下,神经网络装置可以填充中间串接值1240,使得存在高达加法器1200的最高有效比特数字的值。此外,与图11类似,加法器1200的最低有效比特也可以被填充。
此外,神经网络装置可以将16比特经调整的个体梯度值1212的符号比特映射到加法器1200的最高有效比特数字,并将剩余的15个比特映射到加法器1200的除了加法器1200的最低有效比特之外的剩余的较低的15比特数字。在这种情况下,除了加法器1200的MSB之外,可以填充加法器1200的剩余的较高的15比特数字和最低有效比特数字。
神经网络装置可以通过对中间串接值1240和经映射的个体梯度值1214进行求和来计算最终求和值1250。神经网络装置可以根据最终求和值1250来获得经更新的权重1260和经更新的残余梯度值1270。
在实施例中,神经网络装置可以基于权重1230的比特数字根据最终求和值1250来获得经更新的权重1260和经更新的残余梯度值1270。例如,神经网络装置可以获得最终求和值1250中与权重1230的比特数字相对应的比特数字值来作为经更新的权重1260。此外,神经网络装置可以获得最终求和值1250中不与权重1230的比特数字相对应的比特数字值来作为经更新的残余梯度值1270。
例如,神经网络装置可以更新32比特最终求和值1250的不与权重1230的比特数字相对应的较低的16比特数字值来作为经更新的残余梯度值1270,该32比特最终求和值是32比特加法器1200的计算结果。同时,神经网络装置可以根据32比特最终求和值1250的较高的16比特数字值来获得除了填充符(较高的8比特数字)之外的剩余比特数字值来作为经更新的权重1260。
神经网络装置还可以获得作为最终求和值1250的MSB的符号比特,然后用最终求和值1250的符号比特替换经更新的权重1260的MSB。然而,与被更新之前的残余梯度值1220类似,经更新的残余梯度值1270可以不包括符号比特。
图13是示出了根据实施例的处理使用低精度数***的神经网络中的参数的方法的流程图。
参照图13,在操作1310中,神经网络装置可以计算用于更新神经网络的权重的个体梯度值。
神经网络装置可以计算向神经网络中包括的节点之间的连接关系指派的权重的个体梯度值。个体梯度值可以是为了更新权重而计算的值。如上面参照图14所述,神经网络装置的优化器可以通过使用梯度下降法、动量法等来计算个体梯度值。
在操作1320中,神经网络装置可以基于通过累积个体梯度值而获得的累积梯度值和权重的比特数字来计算残余梯度值。作为非限制性示例,在示例中,神经网络装置可以与图1的神经网络学习装置10相对应。
神经网络装置可以在累积缓冲器中累积个体梯度值。在使用低精度数***的神经网络中,神经网络装置可以将个体梯度值累计到可以影响权重的量值,使得在更新权重的过程中个体梯度值不被忽略。
当累积缓冲器的累积梯度值等于或大于阈值时,神经网络装置可以将累积梯度值的可以与权重的比特数字相加的部分确定为有效梯度值。神经网络装置可以通过从累积梯度值中减去有效梯度值来计算残余梯度值。
在操作1330中,神经网络装置可以将个体梯度值调整为与残余梯度值的比特数字相对应。
在实施例中,神经网络装置可以通过量化和填充个体梯度值来将个体梯度值调整为与残余梯度值的比特数量和比特数字相对应。
具体地,神经网络装置可以量化个体梯度值,使得个体梯度值中小于残余梯度值的最低有效比特数字的值被省略。神经网络装置还可以填充经量化的个体梯度值,使得存在高达与残余梯度值的最高有效比特数字相对应的比特数字的值。
在实施例中,在操作1330之后,可以继续进行操作1340和1350。
在操作1340中,神经网络装置可以通过使用加法器来对经调整的个体梯度值、残余梯度值和权重进行求和。
神经网络装置可以通过对经调整的个体梯度值和残余梯度值进行求和来计算中间求和值。由于经调整的个体梯度值和残余梯度值都可以在最高有效比特(MSB)中包括符号比特,因此神经网络装置可以在考虑经调整的个体梯度值的符号比特和残余梯度值的符号比特的情况下计算这两个值的中间求和值。
神经网络装置还可以通过对中间求和值和权重进行求和来计算最终求和值。
在操作1350中,神经网络装置可以基于求和的结果来更新权重和残余梯度值。
在实施例中,神经网络装置可以基于权重的比特数字根据最终求和值来获得经更新的权重和经更新的残余梯度值。例如,神经网络装置可以获得最终求和值中与权重的比特数字相对应的比特数字值来作为经更新的权重。神经网络装置还可以获得最终求和值中不与权重的比特数字相对应的比特数字值来作为经更新的残余梯度值。
此时,经更新的权重的MSB可以是符号比特,其是最终求和值的MSB。神经网络装置还可以获得最终求和值的符号比特,并且可以将所获得的符号比特添加到经更新的残余梯度值,使得所获得的符号比特是经更新的残余梯度值的MSB。
在另一实施例中,在操作1330之后,可以执行操作1345、1355和1365。
在操作1345中,神经网络装置可以通过将残余梯度值的除了符号比特之外的剩余值与权重进行串接来计算中间串接值。中间串接值的MSB可以与权重的符号比特相对应。
在操作1355中,神经网络装置可以通过使用加法器来对经调整的个体梯度值和中间串接值进行求和。
由于经调整的个体梯度值和中间串接值都可以在最高有效比特(MSB)中包括符号比特,因此神经网络装置可以在考虑经调整的个体梯度值的符号比特和中间串接值的符号比特的情况下计算这两个值的中间求和值。
在操作1365中,神经网络装置可以基于求和的结果来更新权重和残余梯度值。
在实施例中,神经网络装置可以基于权重的比特数字根据最终求和值来获得经更新的权重和经更新的残余梯度值。例如,神经网络装置可以获得最终求和值中与权重的比特数字相对应的比特数字值来作为经更新的权重。神经网络装置还可以获得最终求和值中不与权重的比特数字相对应的比特数字值来作为经更新的残余梯度值。
此时,经更新的权重的MSB可以是符号比特,其是最终求和值的MSB。然而,与更新之前的残余梯度值一样,经更新的残余梯度值可以不包括符号比特。也就是说,神经网络装置可以不将最终求和值的符号比特添加到经更新的残余梯度值。
图14是示出了根据实施例的神经网络装置1400的硬件配置的框图。
参照图14,神经网络装置1400可以包括至少一个处理器1410和存储器1420。在图14所示的神经网络装置1400中仅示出了与本实施例相关的组件。因此,在各种示例中,神经网络装置1400还可以包括除图14中所示的组件之外的组件。例如,神经网络装置1400还可以包括传感器模块、通信模块和接口等,并且可以与图1的神经网络装置、执行神经网络学习装置10和/或神经网络推断装置20的操作的神经网络装置相对应。
神经网络装置1400可以表示家用电器、移动计算设备和服务器中的至少一个或者可以被包括在家用电器、移动计算设备和服务器中的至少一个中,或者可以通过有线或无线地连接到家用电器、移动计算设备和服务器中的至少一个。神经网络装置1400还可以通过设备和服务器的组合来实现。在非限制性示例中,接收用户输入的设备和训练神经网络的服务器可以分开存在,并且因此可以通过设备和服务器之间的通信来执行推断。推断可以在单个设备中执行,但是不限于上述示例。
处理器1410可以表示一个或多个处理器。例如,至少一个处理器1410可以被实现为逻辑门阵列,并且可以实现为通用微处理器和存储可在微处理器中执行的程序的存储器的组合。例如,至少一个处理器1410可以是中央处理单元(CPU)、图形处理单元(GPU)、硬件加速器等。
处理器1410可以操作以便控制神经网络装置1400。例如,处理器1410通常可以通过执行神经网络装置1400中包括的存储器1420中存储的计算机可读指令来控制神经网络装置1400。处理器1410还可以通过执行存储器1420中存储的程序和指令来并行地执行神经网络装置1400的功能。
处理器1410可以执行神经网络的层中包括的每个节点的一些或全部控制操作和实现。例如,如本文中所讨论的,处理器1410可以通过使用激活值和权重来执行神经网络运算或矩阵运算。
处理器1410可以控制和实现用于处理参照以上图1到图13所述的使用低精度数***的神经网络中的参数的一系列过程。
存储器1420是存储在神经网络装置1400中处理的各条数据的硬件。例如,存储器1420可以存储已被神经网络装置1400处理的数据和将被神经网络装置1400处理的数据。存储器1420还可以存储由神经网络装置1400驱动的应用、驱动程序等。作为非限制性示例,存储器1420可以是随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、动态随机存取存储器(DRAM)ROM、蓝光或其他光盘存储装置、硬盘驱动器(HDD)、固态驱动器(SSD)或闪存。
存储器1420还可以包括由神经网络装置1400中包括的处理器1410共享的内置存储器或者支持处理器1410的多个内置存储器。
图15是根据一个或多个实施例的电子***1500的框图。
参照图15,电子***1500可以通过基于神经网络去实时分析输入数据来提取有效信息,基于所提取的信息来确定情况,或者控制由电子***1500表示的或其上安装有电子***1500的电子设备的元件。例如,作为非限制性电子设备示例,电子***1500可以是以下任何一项,可以被应用于以下各项或者可以被安装在以下各项中:诸如无人机、高级驾驶员辅助***(ADAS)等的机器人设备、智能TV、智能电话、医疗设备、移动设备、图像显示设备、测量设备、IoT设备等。
电子***1500可以包括处理器1510、RAM 1520、神经网络装置1530、存储器1540、传感器模块1550和通信(TX/RX)模块1560。电子***1500还可以包括输入/输出模块、安全模块、电力控制设备等。例如,电子***1500的一些硬件组件可以被安装在至少一个半导体芯片上。在示例中,神经网络装置1530可以包括图14的上述神经网络装置1400或神经网络专用硬件加速器或包括该神经网络专用硬件加速器在内的装置。在另一示例中,电子***1500与图14的神经网络装置1400相对应,并且处理器1510可以被配置为执行本文中参参照图1至图14所描述的操作的任何一个、任何组合、或全部。
处理器1510可以控制电子***1500的一些或所有操作。处理器1510可以包括一个处理器核(单核)或多个处理器核(多核)。处理器1510可以处理或执行存储器1540中存储的指令和程序和/或数据。在实施例中,处理器1510可以通过执行存储器1540中存储的指令来控制神经网络装置1530的实现。处理器1510也可以由CPU、GPU、AP等来实现。
RAM 1520可以暂时性地存储程序、数据或指令。例如,存储器1540中存储的程序和/或数据可以根据引导代码或处理器1510的控制被暂时性地存储在RAM 1520中。RAM1520可以由诸如动态RAM(DRAM)或静态RAM(SRAM)等的存储器来实现。在一个或多个示例中,ram也可以在如本文中所描述并且由***1500执行的任何训练操作期间临时存储初始或过渡参数。
神经网络装置1530可以基于所接收的输入数据来执行神经网络的运算,并且基于运算的结果例如使用本文中所描述的神经网络的任何一个、任何组合和全部来生成信息信号。这种神经网络可以包括CNN、RNN、深度信念网络、受限玻尔兹曼机等,但是本公开不限于此。神经网络装置1530是驱动上述用于分类的神经网络的硬件,并且可以与神经网络专用硬件加速器相对应。
信息信号可以包括各种类型的识别信号中的一种,例如,语音识别信号、对象识别信号、图像识别信号、生物特征信息识别信号等。例如,神经网络装置1530可以接收视频流中包括的帧数据作为输入数据,并且根据帧数据来生成针对由帧数据指示的图像中包括的对象的识别信号,并且基于该识别来进行操作或不进行操作,或者锁定或解锁对对应设备的访问。然而,本公开不限于此,并且根据表示电子***1500或在其上安装有电子***1500的电子设备的类型,神经网络装置1530可以接收各种类型的输入数据并根据输入数据来生成识别或分类信号。
存储器1540是用于存储数据(例如,操作***(OS)、各种程序和各条数据)的存储器。在实施例中,存储器1540可以存储在执行神经网络装置1530的处理的运算中生成的中间结果(例如,输出特征图),作为输出特征列表或外部特征矩阵。在实施例中,存储器1540可以存储经压缩的输出特征图。此外,如本文中所讨论的,存储器1540可以存储由神经网络装置1530使用的经量化的神经网络数据,例如参数、权重图或权重列表。
存储器1540可以是DRAM,但是本公开不限于此。存储器1540可以包括易失性存储器和非易失性存储器中的至少一种。非易失性存储器可以包括ROM、PROM、EPROM、EEPROM、闪存、PRAM、MRAM、RRAM、FRAM等。易失性存储器可以包括DRAM、SRAM、SDRAM、PRAM、MRAM、RRAM、FeRAM等。在实施例中,存储器1540可以包括HDD、SSD、CF、SD、Micro-SD、Mini-SD、xD和记忆棒中的至少一种。
传感器模块1550可以收集与由电子***1500表示或其上安装有电子***1500的电子设备的***有关的信息。传感器模块1550可以从电子设备的外部感测或接收诸如图像信号、语音信号、磁信号、生物特征信号、触摸信号等的信号,并且将所感测或所接收的信号转换成数据。为此,传感器模块1550可以包括各种类型的感测设备中的至少一种,例如麦克风、成像设备、图像传感器、光检测和测距(LIDAR)传感器、超声传感器、红外传感器、生物特征传感器、触摸传感器等。
传感器模块1550可以向神经网络装置1530提供经转换的数据作为输入数据。例如,传感器模块1550可以包括图像传感器,并可以通过拍摄电子设备的外部环境来生成视频流,并且按顺序向神经网络装置1530提供视频流的连续数据帧作为输入数据。然而,本公开不限于此,并且传感器模块1550可以向神经网络装置1530提供各种类型的数据。
通信模块1560可以包括能够与外部设备通信的各种有线或无线接口。例如,通信模块1560可以包括局域网(LAN)、诸如无线保真(Wi-Fi)之类的无线局域网(WLAN)、诸如蓝牙之类的无线个域网(WPAN)、无线通用串行总线(USB)、ZigBee、近场通信(NFC)、射频识别(RFID)、电力线通信(PLC)或能够连接到诸如第3代(3G)、第4代(4G)、长期演进(LTE)等的移动蜂窝网络的通信接口。
图1至图15中执行本申请中所描述的操作的神经网络学习装置10、神经网络推断装置20、神经网络装置1400、处理器1410、存储器1420、电子***1500、处理器1510、RAM1520、存储器1540、传感器模块1550、Tx/Rx模块1560以及优化器由硬件组件实现,该硬件组件被配置为执行本申请中描述为由该硬件组件执行的操作。在适当情况下可以被用来执行本申请中所描述的操作的硬件组件的示例包括被配置为执行本申请中所描述的操作的控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及任何其他电子组件。在其他示例中,执行本申请中描述的操作的一个或多个硬件组件由计算硬件实现,例如,由一个或多个处理器或计算机实现。处理器或计算机可以由被配置为以限定的方式响应并执行指令以实现期望的结果的一个或多个处理元件实现,例如逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或任何其他设备或设备的组合。在一个示例中,处理器或计算机包括或被连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件,例如操作***(OS)和在OS上运行的一个或多个软件应用,以执行本申请中描述的操作。硬件组件还可以响应于对指令或软件的执行来访问、操纵、处理、创建和存储数据。为简单起见,单数术语“处理器”或“计算机”可以用于对本申请中描述的示例的描述,但是在其他示例中,可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件或多种类型的处理元件、或这二者。例如,单个硬件组件或两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器或处理器和控制器来实现,并且一个或多个其他硬件组件可以由一个或多个其他处理器或另一处理器和另一控制器来实现。一个或多个处理器、或处理器和控制器可以实现单个硬件组件、或两个或更多个硬件组件。硬件组件可以具有任何一种或多种不同的处理配置,其示例包括单个处理器、独立的处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
执行图1至图15中描述的操作的方法由计算硬件来执行,例如,由一个或多个处理器或计算机执行,该计算硬件如上所述被实现为执行指令或软件以执行由所述方法执行的本申请中描述的操作。例如,单个操作或两个或更多个操作可以由单个处理器、或两个或更多个处理器、或处理器和控制器来执行。一个或多个操作可以由一个或多个处理器或由处理器和控制器来执行,并且一个或多个其他操作可以由一个或多个其他处理器或由另一处理器和另一控制器来执行。一个或多个处理器或处理器和控制器可以执行单个操作、或两个或更多个操作。
可以将用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行上述方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,用于单独地或共同地指示或配置一个或多个处理器或计算机作为用于执行由硬件组件执行的操作和如上所述的方法的机器或专用计算机来操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码,例如由编译器产生的机器代码。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的更高级代码。可以基于附图中示出的框图和流程图以及说明书中的对应描述使用任何编程语言来编写指令或软件,其公开了用于执行由硬件组件执行的操作和如上所述的方法的算法。
可以将用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构加以记录、存储或固定在一个或多个非暂时性计算机可读存储介质之中或之上。非暂时性计算机可读存储介质的示例包括被配置为以非暂时方式存储指令或软件以及任何相关联数据、数据文件和数据结构并且向一个或多个处理器或计算机提供指令或软件以及任何相关联数据、数据文件和数据结构以使得一个或多个处理器或计算机可以执行指令的只读存储器(ROM)、随机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R,BD-R LTH、BD-RE、磁带、软盘、磁光数据存储设备、光学数据存储设备、硬盘、固态盘、以及任何其他设备。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在网络耦接的计算机***上,以使得指令和软件以及任何相关联的数据、数据文件和数据结构以分布式方式由一个或多个处理器或计算机进行存储、访问和执行。
尽管本公开包括具体示例,但在理解本申请的公开内容之后将显而易见的是,可以在不脱离权利要求及其等同物的精神和范围的情况下在这些示例中进行形式和细节方面的各种改变。本文中所描述的示例应被视为仅是描述性的,且不用于限制的目的。对每个示例中的特征或方面的描述应被视为适用于其它示例中的类似特征或方面。如果以不同顺序来执行所述技术,和/或如果所描述的***、架构、设备或电路中的组件以不同方式结合,和/或被其他组件或其等同物所替换或补充,则可以实现合适的结果。因此,本公开的范围不由具体实施方式来限定,而是由权利要求及其等同物来限定,并且在权利要求及其等同物的范围内的所有变化都应被视为被包括在本公开中。

Claims (18)

1.一种处理器实现的神经网络方法,所述方法包括:
计算用于更新神经网络的权重的各个个体梯度值;
基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;
调整所述各个个体梯度值以与所述残余梯度值的比特数字相对应;
通过基于加法器的比特数量将经调整的各个个体梯度值和所述残余梯度值映射到所述加法器并通过使用所述加法器对经映射的各个个体梯度值和经映射的残余梯度值进行求和,来计算中间求和值;
通过基于所述比特数量将所述权重映射到所述加法器并通过使用所述加法器对所述中间求和值和经映射的权重进行求和,来计算最终求和值;以及
基于所述最终求和值来更新所述权重和所述残余梯度值以训练所述神经网络。
2.根据权利要求1所述的方法,其中,计算所述残余梯度值包括:
将所述累积梯度值中能够与表示所述权重的比特数字求和的值确定为有效梯度值;以及
通过从所述累积梯度值中减去所述有效梯度值来计算所述残余梯度值。
3.根据权利要求1所述的方法,其中,调整所述各个个体梯度值包括:
量化所述各个个体梯度值,其中,个体梯度值中小于所述残余梯度值的最低有效比特数字的值被省略;以及
填充经量化的各个个体梯度值,其中,存在高达与所述残余梯度值的最高有效比特数字相对应的比特数字的值。
4.根据权利要求1所述的方法,还包括:
填充所述经调整的各个个体梯度值、所述残余梯度值以及所述权重,使得值被映射到所述加法器的所有比特数字;以及
对经填充的各个个体梯度值、经填充的残余梯度值和经填充的权重进行求和。
5.根据权利要求1所述的方法,其中,所述更新包括:
将所述最终求和值中与表示所述权重的比特数字相对应的比特数字值更新到经更新的权重,以及将所述最终求和值中不与表示所述权重的比特数字相对应的比特数字值更新到所述残余梯度值。
6.根据权利要求1所述的方法,还包括:
获得符号比特,所述符号比特是所述最终求和值的最高有效比特;以及
添加所获得的符号比特,使得所获得的符号比特是经更新的权重和/或经更新的残余梯度值之一的最高有效比特。
7.一种非暂时性计算机可读记录介质,所述非暂时性计算机可读记录介质上记录有计算机可读指令,所述计算机可读指令在由一个或多个处理器执行时执行根据权利要求1所述的方法。
8.一种处理器实现的神经网络方法,所述方法包括:
计算用于更新神经网络的权重的各个个体梯度值;
基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;
调整所述各个个体梯度值以与表示所述残余梯度值的比特数字相对应;
将所述残余梯度值中除符号比特之外的剩余值串接到所述权重,以计算中间串接值;
通过使用加法器对经调整的各个个体梯度值和所述中间串接值进行求和;以及
基于所述求和的结果来更新所述权重和所述残余梯度值以训练所述神经网络,
其中,所述求和包括:基于所述加法器的比特数量将所述经调整的各个个体梯度值和所述中间串接值映射到所述加法器,以及通过使用所述加法器对经映射的各个个体梯度值和所述中间串接值进行求和。
9.根据权利要求8所述的方法,其中,计算所述残余梯度值包括:
将所述累积梯度值中能够与表示所述权重的比特数字求和的值确定为有效梯度值;以及
通过从所述累积梯度值中减去所述有效梯度值来计算所述残余梯度值。
10.根据权利要求8所述的方法,其中,调整所述各个个体梯度值包括:
量化所述各个个体梯度值,其中,所述个体梯度值中小于所述残余梯度值的最低有效比特数字的值被省略;以及
填充经量化的个体梯度值,其中,存在高达与表示所述残余梯度值的最高有效比特数字相对应的比特数字的值。
11.根据权利要求8所述的方法,其中,所述求和还包括:
填充所述经调整的各个个体梯度值和所述中间串接值,使得值被映射到所述加法器的所有比特数字;以及
通过使用所述加法器对经填充的各个个体梯度值和经填充的中间串接值进行求和。
12.根据权利要求8所述的方法,其中,所述更新包括:
将所述求和的结果中与表示所述权重的比特数字相对应的比特数字值更新到经更新的权重,以及将所述求和的结果中不与表示所述权重的比特数字相对应的比特数字值更新到所述残余梯度值。
13.根据权利要求8所述的方法,还包括:
获得符号比特,所述符号比特是所述求和的结果的最高有效比特;以及
添加所获得的符号比特,使得所获得的符号比特是经更新的权重和/或经更新的残余梯度值的最高有效比特。
14.一种非暂时性计算机可读记录介质,所述非暂时性计算机可读记录介质上记录有计算机可读指令,所述计算机可读指令在由一个或多个处理器执行时使所述一个或多个处理器执行根据权利要求8所述的方法。
15.一种神经网络装置,所述装置包括:
一个或多个处理器,被配置为:
计算用于更新神经网络的权重的各个个体梯度值;
基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;
调整所述各个个体梯度值以与所述残余梯度值的比特数字相对应;
通过基于加法器的比特数量将经调整的各个个体梯度值和所述残余梯度值映射到所述加法器并通过使用所述加法器对经映射的各个个体梯度值和经映射的残余梯度值进行求和,来计算中间求和值;
通过基于所述比特数量将所述权重映射到所述加法器并通过使用所述加法器对所述中间求和值和经映射的权重进行求和,来计算最终求和值;以及
基于所述最终求和值来更新所述权重和所述残余梯度值以训练所述神经网络。
16.根据权利要求15所述的装置,还包括存储指令的存储器,所述指令当由所述一个或多个处理器执行时,将所述一个或多个处理器配置为执行:对所述各个个体梯度值的计算、对所述残余梯度值的计算、对所述各个个体梯度值的调整、对所述中间求和值的计算、对所述最终求和值的计算、以及对所述权重和所述残余梯度值的更新。
17.一种神经网络装置,所述装置包括:
一个或多个处理器,被配置为:
计算用于更新神经网络的权重的各个个体梯度值;
基于通过累积所述各个个体梯度值而获得的累积梯度值和表示所述权重的比特数字来计算残余梯度值;
调整所述各个个体梯度值以与表示所述残余梯度值的比特数字相对应;
将所述残余梯度值中除符号比特之外的剩余值串接到所述权重,以计算中间串接值;
通过使用加法器对经调整的各个个体梯度值和所述中间串接值进行求和;以及
基于所述求和的结果来更新所述权重和所述残余梯度值,其中,所述一个或多个处理器还被配置为:基于所述加法器的比特数量将所述经调整的各个个体梯度值和所述中间串接值映射到所述加法器,以及通过使用所述加法器对经映射的各个个体梯度值和所述中间串接值进行求和。
18.根据权利要求17所述的装置,还包括存储指令的存储器,所述指令当由所述一个或多个处理器执行时,将所述一个或多个处理器配置为执行:对所述各个个体梯度值的计算、对所述残余梯度值的计算、对所述各个个体梯度值的调整、对所述剩余值的串接和对所述中间串接值的计算、所述求和、以及对所述权重和所述残余梯度值的更新。
CN201910558887.9A 2018-07-04 2019-06-25 神经网络方法和装置 Active CN110689109B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180077894A KR20200004700A (ko) 2018-07-04 2018-07-04 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
KR10-2018-0077894 2018-07-04

Publications (2)

Publication Number Publication Date
CN110689109A CN110689109A (zh) 2020-01-14
CN110689109B true CN110689109B (zh) 2024-04-12

Family

ID=65443702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910558887.9A Active CN110689109B (zh) 2018-07-04 2019-06-25 神经网络方法和装置

Country Status (5)

Country Link
US (1) US20200012936A1 (zh)
EP (1) EP3591583B1 (zh)
JP (1) JP7349835B2 (zh)
KR (1) KR20200004700A (zh)
CN (1) CN110689109B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018176000A1 (en) 2017-03-23 2018-09-27 DeepScale, Inc. Data synthesis for autonomous control systems
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11215999B2 (en) 2018-06-20 2022-01-04 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
US11361457B2 (en) 2018-07-20 2022-06-14 Tesla, Inc. Annotation cross-labeling for autonomous control systems
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
CN113039556B (zh) 2018-10-11 2022-10-21 特斯拉公司 用于使用增广数据训练机器模型的***和方法
US11196678B2 (en) 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
US11816585B2 (en) 2018-12-03 2023-11-14 Tesla, Inc. Machine learning models operating at different frequencies for autonomous vehicles
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US10769529B2 (en) * 2018-12-04 2020-09-08 Google Llc Controlled adaptive optimization
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
US10997461B2 (en) 2019-02-01 2021-05-04 Tesla, Inc. Generating ground truth for machine learning from time series elements
US11150664B2 (en) 2019-02-01 2021-10-19 Tesla, Inc. Predicting three-dimensional features for autonomous driving
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
US10956755B2 (en) 2019-02-19 2021-03-23 Tesla, Inc. Estimating object properties using visual image data
US10776721B1 (en) * 2019-07-25 2020-09-15 Sas Institute Inc. Accelerating configuration of machine-learning models
CN114930350A (zh) * 2020-01-10 2022-08-19 富士通株式会社 神经网络***、神经网络的学习方法以及神经网络的学习程序
US11468325B2 (en) * 2020-03-30 2022-10-11 Amazon Technologies, Inc. Multi-model training pipeline in distributed systems
US11651228B2 (en) * 2020-04-17 2023-05-16 Microsoft Technology Licensing, Llc Dual-momentum gradient optimization with reduced memory requirements
US20220244916A1 (en) * 2021-01-29 2022-08-04 Taiwan Semiconductor Manufacturing Company, Ltd. Compute in memory

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333239A (en) * 1988-09-12 1994-07-26 Fujitsu Limited Learning process system for use with a neural network structure data processing apparatus
JPH0784975A (ja) * 1993-09-10 1995-03-31 Hitachi Ltd 情報処理装置および学習演算処理方法
CN1470000A (zh) * 2000-09-11 2004-01-21 ά˹�ض�����������ι�˾ 地震拖缆形状的神经网预测
CN105160249A (zh) * 2015-07-02 2015-12-16 哈尔滨工程大学 一种基于改进的神经网络集成的病毒检测方法
CN106297774A (zh) * 2015-05-29 2017-01-04 中国科学院声学研究所 一种神经网络声学模型的分布式并行训练方法及***
CN106796668A (zh) * 2016-03-16 2017-05-31 香港应用科技研究院有限公司 用于人工神经网络中比特深度减少的方法和***
WO2017177446A1 (zh) * 2016-04-15 2017-10-19 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络反向训练装置和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7219118B2 (en) * 2001-11-06 2007-05-15 Broadcom Corporation SIMD addition circuit
US10607226B2 (en) * 2015-04-14 2020-03-31 Samsung Electronics Co., Ltd. System and method for fraud detection in a mobile device
US11321609B2 (en) * 2016-10-19 2022-05-03 Samsung Electronics Co., Ltd Method and apparatus for neural network quantization
CN107797962B (zh) * 2017-10-17 2021-04-16 清华大学 基于神经网络的计算阵列

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333239A (en) * 1988-09-12 1994-07-26 Fujitsu Limited Learning process system for use with a neural network structure data processing apparatus
JPH0784975A (ja) * 1993-09-10 1995-03-31 Hitachi Ltd 情報処理装置および学習演算処理方法
CN1470000A (zh) * 2000-09-11 2004-01-21 ά˹�ض�����������ι�˾ 地震拖缆形状的神经网预测
CN106297774A (zh) * 2015-05-29 2017-01-04 中国科学院声学研究所 一种神经网络声学模型的分布式并行训练方法及***
CN105160249A (zh) * 2015-07-02 2015-12-16 哈尔滨工程大学 一种基于改进的神经网络集成的病毒检测方法
CN106796668A (zh) * 2016-03-16 2017-05-31 香港应用科技研究院有限公司 用于人工神经网络中比特深度减少的方法和***
WO2017177446A1 (zh) * 2016-04-15 2017-10-19 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络反向训练装置和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AdaComp Adaptive Residual Gradient Compression for Data-Parallel Distributed Training;Chia-Yu Chen等;《Proceedings of the AAAI conference on artificial intelligence》;第32卷(第1期);1-9 *
Scalable Distributed DNN Training Using Commodity GPU Cloud Computing;Nikko Ström;《amazon science》;1-5 *

Also Published As

Publication number Publication date
KR20200004700A (ko) 2020-01-14
CN110689109A (zh) 2020-01-14
US20200012936A1 (en) 2020-01-09
JP2020009444A (ja) 2020-01-16
EP3591583A1 (en) 2020-01-08
EP3591583B1 (en) 2022-01-12
JP7349835B2 (ja) 2023-09-25

Similar Documents

Publication Publication Date Title
CN110689109B (zh) 神经网络方法和装置
CN109697510B (zh) 具有神经网络的方法和装置
CN109754066B (zh) 用于生成定点型神经网络的方法和装置
CN109685198B (zh) 用于量化神经网络的参数的方法和装置
CN109389219B (zh) 用于对神经网络的参数进行量化的方法和装置
US11403516B2 (en) Apparatus and method for processing convolution operation of neural network
US12026611B2 (en) Method and apparatus for quantizing parameters of neural network
US11250320B2 (en) Neural network method and apparatus
KR20200086581A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
KR102562320B1 (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
US11663451B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
US20240086694A1 (en) Neuromorphic method and apparatus with multi-bit neuromorphic operation
CN112668381A (zh) 用于识别图像的方法和设备
CN110443347B (zh) 神经网络方法和装置
CN112561050B (zh) 一种神经网络模型训练方法及装置
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant