用于对神经网络的参数进行量化的方法和装置与流程

文档序号:20514570发布日期:2020-04-24 18:56阅读:250来源:国知局
用于对神经网络的参数进行量化的方法和装置与流程

相关申请的交叉引用

本申请要求于2018年10月17日在韩国知识产权局递交的韩国专利申请no.10-2018-0123927的优先权,其全部公开通过引用合并于此。

以下描述涉及用于对神经网络的参数进行量化的方法和装置。



背景技术:

神经网络是指模仿生物大脑的计算架构。随着神经网络技术最近的进展,已经对在各种电子系统中通过使用神经网络装置来分析输入数据并提取有效信息进行了大量研究。

神经网络装置对输入数据执行大量运算。需要一种有效地处理这种神经网络运算的技术。



技术实现要素:

提供本发明内容是为了以简化的形式介绍对理念的选择,以下在具体实施方式中进一步描述这些理念。本发明内容不旨在指明要求保护的主题的关键特征或必要特征,也不旨在用作帮助确定要求保护的主题的范围。

在一个一般方面中,一种对神经网络的参数进行量化的方法包括:针对每个参数,计算比特移位值,该比特移位值指示在用于对参数进行量化的定点格式的比特范围之外的程度;使用所计算的参数的比特移位值来更新定点格式;以及根据经更新的定点格式来量化在学习或推断过程中更新的参数。

计算比特移位值可以包括:针对每个参数,检测具有值“1”的最高有效比特;以及针对每个参数,将检测到的最高有效比特与所述定点格式的整数部分的最高有效比特之间的比特数的差确定为所述比特移位值。

检测最高有效比特可以包括:针对每个参数,基于定点格式的整数部分的最高有效比特来搜索特定范围内的比特,以及检测具有值“1”的最高有效比特。

更新定点格式可以包括:根据所计算的比特移位值来确定上溢的发生次数和最大比特移位值;以及基于所述上溢的发生次数和所述最大比特移位值来更新所述定点格式。

更新定点格式可以包括:在上溢的发生次数大于特定值的情况下,通过将定点格式的小数长度减小最大比特移位值来更新定点格式。

该特定值可以基于参数的数量。

经更新的参数可以是在第t+1次学习或推断过程中更新的参数,参数可以是在第t次学习或推断过程中更新的参数,定点格式可以是基于在第t-1次学习或推断过程中更新的参数来更新的定点格式,以及t可以是大于或等于2的自然数。

计算比特移位值可以包括:在根据定点格式对参数进行量化的过程中计算每个参数的比特移位值。

参数可以是神经网络中相同层上的权重或激活。

一种计算机可读记录介质可以存储用于使计算机执行该方法的程序。

在另一个一般方面中,一种用于对神经网络的参数进行量化的装置包括:存储器,存储至少一个程序;以及处理器,被配置为:通过执行所述至少一个程序,针对每个参数来计算比特移位值,所述比特移位值指示在用于对所述参数进行量化的定点格式的比特范围之外的程度,使用所计算的所述参数的比特移位值来更新所述定点格式;以及根据经更新的定点格式来量化在学习或推断过程中更新的参数。

处理器可以针对每个参数来检测具有值“1”的最高有效比特;以及针对每个参数,将检测到的最高有效比特与所述定点格式的整数部分的最高有效比特之间的比特数的差确定为所述比特移位值。

处理器可以基于定点格式的整数部分的最高有效比特来搜索特定范围内的比特,以及检测具有值“1”的最高有效比特。

处理器可以根据所计算的比特移位值来确定上溢的发生次数和最大比特移位值;以及使用所述上溢的发生次数和所述最大比特移位值来更新所述定点格式。

处理器可以在上溢的发生次数大于预定值的情况下,通过将定点格式的小数长度减小最大比特移位值来更新定点格式。

处理器可以在根据定点格式对参数进行量化的过程中计算每个参数的比特移位值。

在另一个一般方面中,一种方法包括:针对在神经网络的第t次学习或推断过程中更新的每个参数,基于用于对参数进行量化的定点格式来计算比特移位值;根据所计算的比特移位值来确定上溢的发生次数和最大比特移位值;基于上溢的发生次数和最大比特移位值来更新定点格式;以及基于经更新的定点格式对神经网络的第t+1次学习或推断过程中的参数进行量化,且t是大于或等于2的自然数。

确定上溢的发生次数可以包括:确定每个参数的比特移位值是否大于0,以及针对大于0的每个比特移位值,将上溢的发生次数增加1。

确定最大比特移位值可以包括:将所计算的在第t次学习或推断过程中更新的参数的比特移位值彼此比较,以及将在第t次学习或推断过程中更新的比特移位值中的最大值确定为最大比特移位值。

在另一个一般方面中,一种计算机可读记录介质在其上记录有一个或多个程序,该一个或多个程序包括用于执行对神经网络的参数进行量化的方法的指令。

根据下面具体实施方式、附图和权利要求,其他特征和方面将显而易见。

附图说明

图1是用于解释根据示例的神经网络学习装置和神经网络推断装置的图。

图2是示出了根据示例的神经网络的示例的图。

图3a是示出了根据示例的浮点格式参数的图,图3b是示出了根据示例的定点格式参数的图,以及图3c是示出了根据另一示例的定点格式参数的图。

图4是根据示例的神经网络装置的硬件配置的框图。

图5示出了处理器在反复学习或推断过程中运算的示例。

图6示出了处理器使用参数的比特移位值来更新定点格式的示例。

图7示出了处理器计算参数的比特移位值的示例。

图8示出了处理器检测参数中具有“1”的最高有效比特的示例。

图9示出了处理器确定最大比特移位值和上溢的发生次数的示例。

图10是示出了根据示例的用于处理器更新定点格式的小数长度的算法的图。

图11是示出了根据另一示例的用于处理器更新定点格式的小数长度的算法的图。

图12是根据示例的电子系统的框图。

图13是用于解释根据示例的操作神经网络装置的方法的图。

贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图标记将被理解为指代相同的元素、特征和结构。附图可以不按比例绘制,并且为了清楚、例示和方便,可以夸张附图中元素的相对尺寸、比例和描绘。

具体实施方式

现在将详细参考实施例,在附图中示出了实施例的示例,其中,贯穿附图相似的附图标记指代相似的元素。在这点上,呈现的实施例可以具有不同形式,并且不应当被解释为受限于本文所阐明的描述。因此,下面仅通过参考附图来描述实施例,以解释各个方面。本文中所使用的术语“和/或”包括相关列出项目中的一个或多个项目的任何和所有组合。诸如“...中的至少一项”之类的表述在元素列表之前时修饰整个元素列表,而不是修饰列表中的单独元素。

本文中所使用的术语“包括”或“包含”等不应当被解释为必须包括说明书中描述的所有各种元素或操作,并且应当排除其中的一些,或者可以被解释为包括附加组件或操作。

此外,如本文所使用的,可以使用包括诸如“第一”或“第二”之类的序数在内的术语来描述各种元素,但是这些元素不应该受限于这些术语。这些术语仅用于将一个元素与另一元素区分开。

示例涉及用于处理神经网络的参数的方法和装置,并且关于本领域普通技术人员广泛知晓的事项将省略其详细描述。

图1是用于解释根据示例的神经网络学习装置10和神经网络推断装置20的图。

参考图1,神经网络学习装置10可以对应于具有各种处理功能的计算设备,例如如下功能:生成神经网络、训练或学习神经网络、将浮点格式神经网络量化为定点格式神经网络、将定点格式神经网络量化为另一定点格式神经网络或重新训练神经网络。例如,可以将神经网络学习装置10实现为各种类型的设备,例如个人计算机(pc)、服务器设备、移动设备等。同时,参数量化可以表示浮点格式参数到定点格式参数的转换,或者表示具有特定比特宽度的定点格式参数到具有另一比特宽度的另一定点格式参数的转换。

神经网络学习装置10可以通过反复训练(学习)给定的初始神经网络来生成经训练的神经网络11。在这种状态下,就确保神经网络的处理准确度而言,初始神经网络可以具有浮点格式参数,例如,32比特浮点精度的参数。参数可以包括向神经网络输入或从神经网络输出的各种类型的数据,例如,神经网络的输入/输出激活、权重、偏置等。随着反复训练神经网络,可以调整神经网络的浮点参数以相对于给定输入来输出更准确的输出。

神经网络学习装置10可以在反复学习(训练)初始神经网络的过程中根据定点格式来处理参数。具体地,神经网络学习装置10可以根据8比特或16比特定点格式来处理参数,以便在允许的准确度损失内学习神经网络,同时充分减少运算次数。因此,神经网络学习装置10可以在具有相对低处理能力的智能电话、平板电脑或可穿戴设备中实现,用于设备端学习。

神经网络学习装置10可以向硬件加速器(例如,神经网络推断装置20)发送经训练的神经网络11。神经网络推断装置20可被包括在移动设备、嵌入式设备等中。神经网络推断装置20是用于驱动量化神经网络21的专用硬件。由于神经网络推断装置20以相对低的功率或低性能来实现,所以可以将神经网络推断装置20实现为更适合于定点运算而不是浮点运算。神经网络推断装置20可以对应于(但不限于)张量处理单元(tpu)、神经引擎等,其是用于驱动神经网络的专用模块。

用于驱动经量化的神经网络21的神经网络推断装置20可以在独立于神经网络学习装置10的单独的设备中实现。然而,本公开不限于此,且神经网络推断装置20可以在与神经网络学习装置10相同的设备中实现。

部署经量化的神经网络21的神经网络推断装置20可被包括在例如自动驾驶车辆、机器人、智能电话、平板设备、增强现实(ar)设备、物联网(iot)设备等中,其通过使用神经网络来执行语音识别、图像识别等,但本公开不限于此。

图2是示出了神经网络2的示例的图。

参考图2,神经网络2可以具有包括输入层、隐藏层和输出层在内的结构,可以基于所接收的输入数据(例如,i1和i2)来执行运算,并且可以基于运算的结果来生成输出数据(例如,o1和o2)。

神经网络2可以是深度神经网络(dnn)或者包括一个或多个隐藏层在内的n层神经网络。例如,如图2所示,神经网络2可以是包括输入层1、两个隐藏层(层2和层3)以及输出层4在内的dnn。dnn可以包括卷积神经网络(cnn)、循环神经网络(rnn)、深度信念网络、受限玻尔兹曼机等,但不限于此。

尽管神经网络2被示出为包括四个层,但这仅仅是示例性的,并且神经网络2可以包括更多或更少的层或更多或更少的节点。此外,神经网络2可以包括具有与图2所示的结构不同的各种结构的层。例如,神经网络2可以包括作为dnn的卷积层、池化层和全连接层。

神经网络2中包括的每个层可以包括被称为神经元、处理单元(pe)、单元或类似术语的多个人工节点。例如,如图2所示,层1可以包括两个节点,且层2可以包括三个节点。然而,这仅仅是示例性的,并且神经网络2中包括的每个层可以包括各种数量的节点。

神经网络2的各个层中包括的节点可以彼此连接以便处理数据。例如,一个节点可以从其他节点接收数据并处理该数据,并且可以向其他节点输出运算结果。

每个节点的输出值可以被称为激活。激活可以是一个节点的输出,并且是下一层中包括的节点的输入值。每个节点可以基于从前一层中包括的节点接收的激活以及权重来确定其自己的激活。权重是用于在每个节点中计算激活的参数,可以是向节点之间的连接关系分配的值。

每个节点可以由接收输入并输出激活的计算单元来处理,并且可以映射输入和输出。在σ表示激活函数、表示从第(i-1)层中包括的第k个节点到第i层中包括的第j个节点的权重、表示第i层中包括的第j个节点的偏置以及表示第i层的第j个节点的激活时,可以通过使用下面的等式1来计算激活

等式1

如图2所示,第二层2中的第一个节点的激活可以被表达为此外,根据等式1,可以具有值然而,上述等式1仅是用于描述用于处理神经网络2中的数据的激活、权重和偏置的示例,并且本公开不限于此。激活可以是通过允许通过对从前一层接收的激活的加权和应用激活函数所获得的值经过修正线性单元(relu)而获得的值。

如上所述,在神经网络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

floatingpointvalue=(-1)sign·2exponent-bias·mantissa

参考图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补码方法中的任何一种来表示负数。

图4是根据示例的神经网络装置100的硬件配置的框图。

神经网络装置100可以通过被包括在神经网络学习装置10和神经网络推断装置20中的至少一个中来操作,或者可以作为独立的第三硬件加速器来操作。

参考图4,神经网络装置100可以包括处理器110和存储器120。在图4中,仅示出了本示例的神经网络装置100的组成元件。因此,对于本领域普通技术人员来说显而易见的是:神经网络装置100还可以包括除了图4中示出的组成元件之外的通用组成元件。

处理器110执行所有功能以控制神经网络装置100。例如,处理器110通过执行神经网络装置100中的存储器120中存储的程序来控制神经网络装置100的所有功能。处理器110可以由神经网络装置100中设置的中央处理单元(cpu)、图形处理单元(gpu)、应用处理器(ap)等来实现。然而,本公开不限于此。

存储器120是用于存储神经网络装置100中处理的各条数据的硬件。例如,存储器120可以存储在神经网络装置100中处理或要在神经网络装置100中处理的数据。此外,存储器120可以存储要由神经网络装置100驱动的应用、驱动程序等。存储器120可以是(动态随机存取存储器)dram,但是本公开不限于此。存储器120可以包括易失性存储器或非易失性存储器中的至少一个。

处理器110可以通过反复学习初始神经网络来生成经训练的神经网络。处理器110可以通过反复学习神经网络来反复更新神经网络的参数。例如,可以在学习过程期间反复更新神经网络中的权重,并且由于使用权重的运算,还可以反复更新激活。每次反复更新神经网络的参数时,处理器110可以用定点格式来量化经更新的参数。此外,每当反复更新神经网络的参数时,处理器110可以反复更新定点格式。当用定点格式来量化可变参数时,由于在学习过程期间可能发生准确度损失,所以处理器110可以更新定点格式以对参数进行量化,从而减少准确度损失,同时减少运算次数。具体地,处理器110可以更新定点格式以对应于经更新的参数的定点值的分布。例如,处理器110可以更新定点格式中的小数点位置,以对应于经更新的参数中具有最大值的参数。

处理器110可以反复更新神经网络的参数,即使在驱动经学习的神经网络以获得结果值的推断过程中也是如此。例如,在推断过程中,可以向经学习的神经网络反复输入数据,且因此可以反复更新经学习的神经网络中的激活。因此,类似于学习过程,处理器110可以在每次反复更新神经网络的参数时根据定点格式来量化经更新的参数,即使在推断过程中也是如此。此外,类似于学习过程,处理器110可以在每次反复更新神经网络的参数时反复更新定点格式,即使在推断过程中也是如此。

处理器110可以在第t次学习或推断过程中更新参数,然后可以量化经更新的参数。此时,处理器110可以根据特定的第一定点格式来量化第t次学习或推断过程中的经更新的参数。例如,第一定点格式可以是基于在第t-1次学习或推断过程中更新的参数的经更新的定点格式。处理器110可以基于在第t次学习或推断过程中更新的参数,将已有的第一定点格式更新为第二定点格式。随后,处理器110可以根据第二定点格式来量化在第t+1次学习或推断过程中更新的参数。

因此,当量化在第t次学习或推断过程中更新的参数时,处理器110可以根据特定的定点格式对参数进行量化,从而减少对在第t次学习或推断过程中更新的所有参数进行扫描的时间和用于确定定点格式的硬件开销。

图5示出了处理器110在反复学习或推断过程中操作的示例。

处理器110可以根据具有小数长度frac_lengtht-1的定点格式来量化在第t次学习或推断过程中更新的参数parametert,以生成经量化的参数q_parametert。换句话说,处理器110可以基于在第t-1次学习或推断过程中更新的参数parametert-1来预先确定具有小数长度frac_lengtht-1的定点格式,并在第t次学习或推断过程中,根据具有小数长度frac_lengtht-1的定点格式对参数parametert进行量化。

处理器110可以基于参数parametert将已有小数长度frac_lengtht-1更新为小数长度frac_lengtht。换句话说,处理器110可以预先确定用于量化在第t+1次学习或推断过程中更新的参数parametert+1的小数长度frac_lengtht。

处理器110可以在第t+1次学习或推断过程中将参数parametert更新为参数parametert+1。此外,处理器110可以根据具有小数长度frac_lengtht的定点格式对参数parametert+1进行量化,以生成经量化的参数q_parametert+1。

在图5中,根据示例,参数parametert-1、parametert和parametert+1可以是数据张量,数据张量是例如神经网络中相同层上的权重或输入/输出激活,且根据另一示例,数据张量是神经网络中的相同通道上的权重或输入/输出激活。此外,t可以是1或更大的自然数,并且当t是1时,用于量化在第一次学习或推断过程中更新的参数的定点格式可以由用户预设。

再次参考图4,处理器110可以针对每个参数来计算比特移位值,该比特移位值指示在用于对参数进行量化的定点格式的比特范围之外的程度。比特移位值可以是指示以下程度的值:表示参数值的比特范围在可以由定点格式覆盖的比特范围之外的程度。根据示例,在定点格式可以覆盖多达3比特整数部分的情况下,当需要多达6比特位数的整数部分来表示具有定点格式的参数值时,比特移位值可以是3。作为另一示例,在定点格式可以覆盖多达4比特小数部分的情况下,当需要多达6比特位数的小数部分来表示具有定点格式的参数值时,比特移位值可以是-2。比特移位值还指示在量化具有定点格式的参数时发生上溢或下溢的程度。例如,当比特移位值为3时,可以看出发生3比特上溢,且当比特移位值为-2时,可以看出发生2比特下溢。因此,处理器110可以计算参数的比特移位值以确定与参数有关的上溢或下溢的发生总数。此外,处理器110可以在存储器120中存储比特移位值、参数、上溢的发生次数和下溢的发生次数。

处理器110可以使用参数的比特移位值来更新定点格式。根据示例,当上溢的发生次数大于预定值时,处理器110可以通过将定点格式中的小数部分的长度减少比特移位值中的最大比特移位值来更新定点格式。根据另一示例,当上溢的发生次数大于预定值时,处理器110可以使用比特移位值中的最大比特移位值和最小比特移位值来更新定点格式。此外,处理器110可以将与经更新的定点格式有关的信息存储在存储器120中。

然后,处理器110可以根据经更新的定点格式来量化在学习或推断过程中更新的参数。具体地,处理器110可以根据基于在第t次学习或推断过程中更新的参数的比特移位值更新的定点格式来量化在第t+1次学习或推断过程中更新的参数。

因此,处理器110可以使用参数的上溢的发生次数和最大比特移位值来更新定点格式,从而通过具有较少运算的相对简单的运算来更新定点格式,且因此可以降低硬件开销。

图6示出了处理器110使用参数的比特移位值来更新定点格式的示例。

处理器110可以计算在第t次学习或推断过程中更新的参数parametert(1)至parametert(i)(其中,i是大于或等于2的自然数)中的每个参数的比特移位值。具体地,处理器110可以计算参数parametert(1)至parametert(i)(其中,i是大于或等于2的自然数)中的每个参数相对于具有预定小数长度frac_lengtht-1的定点格式的比特范围的比特移位值。

图7示出了处理器110计算第i个参数parametert(i)的比特移位值的示例。

处理器110可以计算第t次学习或推断过程中更新的参数中的第i个参数parametert(i)的比特移位值。

处理器110可以检测第i个参数parametert(i)中具有值“1”的最高有效比特。参考图7,处理器110可以将第i个参数parametert(i)中的整数部分的第六比特检测为最高有效比特。

随后,处理器110可以将用于量化第i个参数parametert(i)的具有小数长度frac_lengtht-1的定点格式的整数部分的最高有效比特与先前检测到的第i个参数parametert(i)的最高有效比特之间的比特数的差确定为第i个参数parametert(i)的比特移位值。参考图7,由于具有小数长度frac_lengtht-1的定点格式的整数部分的第三比特是最高有效比特,所以第六比特与第三比特之间的比特数的差是3,且因此处理器110可以将第i个参数parametert(i)的比特移位值计算为3。用于检测比特数的差的比特移位检测器可被包括在处理器110中。此外,处理器110可以确定相对于第i个参数parametert(i)发生了一次3比特的上溢。

处理器110可以根据具有小数长度frac_lengtht-1的定点格式来量化第i个参数parametert(i)以生成经量化的参数q_parametert(i),从而在量化第i个参数parametert(i)的过程中计算第i个参数parametert(i)的比特移位值。换句话说,处理器110可以将计算第i个参数parametert(i)的比特移位值的过程与量化第i个参数parametert(i)的过程一起进行。

在图7中,在第t次学习或推断过程中更新的第i个参数parametert(i)被示出为48比特定点值,且经量化的参数q_parametert(i)被示出为具有比特宽度为8和小数长度为4的定点值,但不限于此。

图8示出了处理器110检测参数parametert(i)中具有“1”的最高有效比特的示例。

处理器110可以从参数parametert(i)中的最高有效比特开始沿比特降低方向顺序读取比特值,以检测参数parametert(i)中具有“1”的最高有效比特。

根据另一示例,处理器110可以读取与参数parametert(i)中的预定比特有关的预定范围内的比特,以检测参数parametert(i)中具有“1”的最高有效比特。例如,如图8所示,处理器110可以读取与具有小数长度frac_lengtht-1的定点格式的整数部分的最高有效比特有关的8比特或16比特范围内的比特,以检测参数parametert(i)中具有“1”的最高有效比特。因此,处理器110可以读取预定范围内的比特,而不读取参数parametert(i)中的所有比特,从而减少用于扫描的硬件开销。

再次参考图6,处理器110可以根据参数parametert(1)至parametert(i)的比特移位值来确定最大比特移位值和上溢的发生次数。具体地,处理器110可以将比特移位值的最大值确定为最大比特移位值,并且将与比特移位值中的正数相对应的比特移位值的数量确定为上溢的发生频率。

然后,处理器110可以基于最大比特移位值和上溢的发生次数来更新定点格式。换句话说,处理器110可以基于最大比特移位值和上溢的发生次数,将具有小数长度frac_lengtht-1的定点格式更新为具有小数长度frac_lengtht的定点格式。具体地,当上溢的发生次数大于特定值时,处理器110可以将小数长度frac_lengtht-1减小最大比特移位值,并且将小数长度从已有的小数长度frac_lengtht-1更新为新的小数长度frac_lengtht。

因此,处理器110可以根据具有小数长度frac_lengtht的定点格式来量化在第t+1次学习或推断过程中更新的参数。

图9示出了处理器110确定最大比特移位值和上溢的发生次数的示例。

类似于图9中所示出的逻辑运算,处理器110可以通过对总共n个参数进行逻辑运算来确定最大比特移位值和上溢的发生次数,该n个参数是在第t次学习或推断过程中更新的参数。处理器110可以包括用于执行图9中所示出的逻辑运算的逻辑运算器。

在操作s910中,处理器110可以确定参数中的第i个参数的比特移位值bit_shift(i)是否大于0。换句话说,处理器110可以确定第i个参数是否是对应于上溢的参数。当第i个参数的比特移位值bit_shift(i)大于0时,处理器110可以将上溢的发生次数增加1(s920)。此后,处理器110可以确定第i+1个参数的比特移位值bit_shift(i+1)是否大于0,以确定上溢的发生次数。作为结果,处理器110可以顺序地确定在第t次学习或推断过程中更新的n个参数的每个比特移位值是否大于0,并且确定在第t次学习或推断过程中上溢的发生总数。

在操作s930中,处理器110可以将第i个参数的比特移位值bit_shift(i)与已有的最大比特移位值max_bit_shiftt进行比较。当比特移位值bit_shift(i)大于已有最大比特移位值max_bit_shiftt时,处理器110可以将比特移位值bit_shift(i)更新为最大比特移位值max_bit_shiftt(s940)。然后,处理器110可以通过将第i+1个参数的比特移位值bit_shift(i+1)与经更新的最大比特移位值max_bit_shiftt进行比较来确定是否更新最大比特移位值max_bit_shiftt。作为结果,处理器110可以将在第t次学习或推断过程中更新的n个参数的比特移位值彼此比较,从而将比特移位值中的最大值确定为最大比特移位值max_bit_shiftt。

处理器110可以确定n个参数的比特移位值中与下溢相对应的最小比特移位值。具体地,处理器110可以将n个参数的比特移位值彼此比较,以确定最小比特移位值,最小比特移位值是具有小于或等于0的值的比特移位值中的最小值。

图10是示出了根据示例的用于处理器110更新定点格式的小数长度frac_lengtht-1的算法的图。

在操作s1010中,处理器110可以获得最大比特移位值max_bit_shiftt、上溢的发生总数#ofoverflowt、用于量化在第t次学习或推断过程中更新的参数的定点格式的小数长度frac_lengtht-1、在第t次学习或推断过程中更新的参数的总数n以及异常值数据率th。处理器110可以通过图9所示出的逻辑运算来确定最大比特移位值max_bit_shiftt、上溢的发生总数#ofoverflowt。此外,用户可以将异常值数据率th设置为0和1之间的任何数。

在操作s1020中,当上溢的发生总数#ofoverflowt大于nxth时,处理器110可以通过等式1030来更新小数长度frac_lengtht-1。在等式1030中,a表示特定权重。例如,当a是1时,处理器110可以执行从小数长度frac_lengtht-1中减去最大比特移位值max_bit_shiftt的运算,以更新小数长度frac_lengtht-1。换句话说,处理器110可以执行从小数长度frac_lengtht-1中减去最大比特移位值max_bit_shiftt的运算,以将小数长度从已有的小数长度frac_lengtht-1更新为新的小数长度frac_lengtht。因此,处理器110可以确定用于量化在第t+1次学习或推断过程中更新的参数的定点格式的小数长度frac_lengtht。

当上溢总数#ofoverflowt不大于nxth时,处理器110可以不更新并维持小数长度frac_lengtht-1。换句话说,处理器110可以将用于量化在第t次学习或推断过程中更新的参数的小数长度frac_lengtht-1确定为用于量化在第t+1次学习或推断过程中更新的参数的小数长度frac_lengtht。作为结果,处理器110可以将异常值数据率th设置为0和1之间的值,且因此当确定上溢的总数#ofoverflowt与参数的总数n相比相对小时,可以不重新更新小数长度frac_lengtht-1。

图11是示出了根据另一示例的用于处理器110更新定点格式的小数长度frac_lengtht-1的算法的图。

图11的操作s1110和s1120可以对应于图10的操作s1010和s1020,且因此将省略对其的冗余描述。

在操作s1110中,除了在图10的操作s1010中获得的信思之外,处理器110还可以另外获得最小比特移位值min_bit_shiftt。换句话说,处理器110可以获得与在第t次学习或推断过程中更新的参数的比特移位值中的下溢相对应的最小比特移位值min_bit_shiftt。

在操作s1120中,当上溢总数#ofoverflowt大于nxth时,处理器110可以通过等式1130来更新小数长度frac_lengtht-1。在等式1130中,a和b是表示特定权重的值,且符号[x]是表示不超过x的最大整数的高斯函数符号。例如,用户可以向a设置比向b设置大的权重以确定小数长度frac_lengtht。

图12是根据示例的电子系统1200的框图。

参考图12,电子系统1200可以通过基于神经网络去实时分析输入数据来提取有效信息,基于所提取的信息来确定状况,或控制其上安装有电子系统1200的电子设备的元件。例如,电子系统1200可以应用于机器人设备(例如无人机、高级驾驶辅助系统(adas)等)、智能tv、智能电话、医疗设备、移动设备、图像显示设备、测量设备、iot设备等,并且也可以安装在各种类型的电子设备中的至少一种电子设备上。

电子系统1200可以包括处理器1210、ram1220、神经网络设备1230、存储器1240、传感器模块1250和通信(tx/rx)模块1260。电子系统1200还可以包括输入/输出模块、安全模块、电力控制设备等。电子系统1200的一些硬件组件可被安装在至少一个半导体芯片上。神经网络设备1230可以包括上述神经网络装置100或神经网络专用硬件加速器或包括其在内的装置。

处理器1210控制电子系统1200的所有操作。处理器1210可以包括一个处理器核(单核)或多个处理器核(多核)。处理器1210可以处理或执行存储器1240中存储的程序和/或数据。处理器1210可以通过执行存储器1240中存储的程序来控制神经网络设备1230的功能。处理器1210可以由cpu、gpu、ap等实现。

ram1220可以临时存储程序、数据或指令。例如,存储器1240中存储的程序和/或数据可以根据引导代码或处理器1210的控制被临时存储在ram1220中。ram1220可以由诸如动态ram(dram)或静态ram(sram)等的存储器来实现。

神经网络设备1230可以基于所接收的输入数据来执行神经网络的运算,并基于运算的结果来生成信息信号。神经网络可以包括cnn、rnn、深度信念网络、受限玻尔兹曼(boltzman)机等,但本公开不限于此。神经网络设备1230是驱动上述神经网络以用于分类的硬件,并且可以对应于神经网络专用硬件加速器。

信息信号可以包括各种类型的识别信号之一,例如语音识别信号、对象识别信号、图像识别信号、生物特征信息识别信号等。例如,神经网络设备1230可以接收视频流中包括的帧数据作为输入数据,并且根据帧数据来生成针对由帧数据指示的图像中包括的对象的识别信号。然而,本公开不限于此,且根据其上安装有电子系统1200的电子设备的类型或功能,神经网络设备1230可以接收各种类型的输入数据,并根据输入数据来生成识别信号。

存储器1240是用于存储数据(例如,操作系统(os)、各种程序和各种数据)的存储装置。在实施例中,存储器1240可以存储在神经网络设备1230的运算执行过程中生成的中间结果,例如输出特征图,作为输出特征列表或外部特征矩阵。在实施例中,存储器1240可以存储经压缩的输出特征图。此外,存储器1240可以存储神经网络设备1230使用的经量化的神经网络数据,例如参数、权重图或权重列表。

存储器1240可以是dram,但本公开不限于此。存储器1240可以包括易失性存储器和非易失性存储器中的至少一个。非易失性存储器可以包括rom、prom、eprom、eeprom、闪存、pram、mram、rram、fram等。易失性存储器可以包括dram、sram、sdram、pram、mram、rram、feram等。在实施例中,存储器1240可以包括hdd、ssd、cf、sd、微型sd、迷你sd、xd和记忆棒中的至少一个。

传感器模块1250可以收集与其上安装有电子系统1200的电子设备的外围有关的信息。传感器模块1250可以感测或接收来自电子设备的外部的信号,例如图像信号、语音信号、磁信号、生物特征信号、触摸信号等,并且将感测到或接收到的信号转换为数据。为此,传感器模块1250可以包括各种类型的感测设备中的至少一种,例如麦克风、成像设备、图像传感器、光检测和测距(lidar)传感器、超声传感器、红外传感器、生物传感器、触摸传感器等。

传感器模块1250可以向神经网络设备1230提供经转换的数据作为输入数据。例如,传感器模块1250可以包括图像传感器,并且可以通过拍摄电子设备的外部环境来生成视频流,并按输入数据的顺序向神经网络设备1230提供视频流的连续数据帧。然而,本公开不限于此,并且传感器模块1250可以向神经网络设备1230提供各种类型的数据。

通信模块1260可以包括能够与外部设备通信的各种有线或无线接口。例如,通信模块1260可以包括局域网(lan)、诸如无线保真(wi-fi)之类的无线局域网(wlan)、诸如蓝牙之类的无线个域网(wpan)、无线通用串行总线(usb)、zigbee、近场通信(nfc)、射频识别(rfid)、电力线通信(plc)或能够连接到移动蜂窝网络(例如第3代(3g)、第4代(4g)、长期演进(lte)等)的通信接口。

图13是用于解释根据实施例的操作神经网络装置100的方法的图。

图13所示的方法可以由图4的神经网络装置100或图12的电子系统1200的各元件执行,且省略了冗余的解释。

在操作s1310中,神经网络装置100可以针对每个参数来计算比特移位值,该比特移位值指示在用于对参数进行量化的定点格式的比特范围之外的程度。具体地,神经网络装置100可以基于在第t-1次学习或推断过程中更新的参数来计算在第t次学习或推断过程中更新的每个参数相对于预定定点格式的比特范围的比特移位值。神经网络装置100可以计算参数的比特移位值以确定参数的上溢或下溢的发生总数。

针对每个参数,神经网络装置100可以检测具有值“1”的最高有效比特,以及针对每个参数计算在检测到的最高有效比特与定点格式的整数部分的最高有效比特之间的比特数的差,作为比特移位值。此外,针对每个参数,神经网络装置100可以基于定点格式的整数部分的最高有效比特来搜索预定范围中的比特,以及检测具有值“1”的最高有效比特。

在操作s1320中,神经网络装置100可以使用参数的比特移位值来更新定点格式。神经网络装置100可以将用于量化第t次学习或推断过程中的参数的已有定点格式更新为新的定点格式。例如,当上溢的发生次数大于预定值时,神经网络装置100可以通过将定点格式的小数长度减小比特移位值的最大比特移位值来更新定点格式。

在操作s1330中,神经网络装置100可以根据经更新的定点格式来量化在学习或推断过程中更新的参数。具体地,神经网络装置100可以根据通过在第t次学习或推断过程中更新的参数的比特移位值所更新的定点格式来量化在第t+1次学习或推断过程中更新的参数。

根据实施例,神经网络装置可以根据经更新的参数的改变来更新用于量化在学习或推断过程中更新的参数的定点格式,从而减少计算量并降低准确度损失。此外,当量化在第t次学习或推断过程中更新的参数时,神经网络装置可以根据预定的定点格式来量化参数,从而减少对在第t次学习或推断过程中更新的所有参数进行扫描的时间和用于确定定点格式的硬件开销。此外,由于神经网络装置使用上溢的发生次数和参数的最大比特移位值来更新定点格式,该神经网络装置可以通过相对简单和小规模计算来更新定点格式,从而减少硬件开销。

本文中所描述的装置可以包括:处理器、用于存储要由处理器执行的程序数据的存储器(诸如磁盘驱动器之类的永久存储器)、用于处理与外部设备的通信的通信端口以及用户接口设备(包括显示器、按键等)。当涉及软件模块时,这些软件模块可以作为可由处理器执行的程序指令或计算机可读代码存储在非暂时性计算机可读介质上,例如只读存储器(rom)、随机存取存储器(ram)、cd-rom、磁带、软盘和光学数据存储设备。计算机可读记录介质也可以分布在联网的计算机系统上,使得按照分布式方式存储和执行计算机可读代码。该介质可以由计算机读取,可被存储在存储器中,并可由处理器执行。

可以在功能块组件和各种处理步骤的意义下描述实施例。可以由被配置为执行指定功能的任意数量的硬件和/或软件组件来实现这种功能块。在实施例中,本公开可以采用可以在一个或多个微处理器或其他控制设备的控制下执行各种功能的各种集成电路组件,例如存储器元件、处理元件、逻辑元件、查找表等。类似地,在使用软件编程或软件元件来实现本公开的元件的情况下,可以利用任何编程或脚本语言(例如,c、c++、java、汇编语言等)以及各种算法来实现本公开,其中,利用数据结构、对象、进程、例程或其他编程元件的任何组合来实现该各种算法。功能方面可被实现为在一个或多个处理器上执行的算法。此外,本公开可以根据用于电子配置、信号处理和/或控制、数据处理等的相关领域来采用任意数量的技术。词语“机制”和“元件”被广义地使用且不限于机械或物理实施例,而可以包括与处理器等结合的软件例程。

本文中所示出和描述的特定实现方式是本公开的说明性示例,并不旨在以任何方式另外限制本公开的范围。为了简洁,可以不详细描述根据相关领域的系统的电子、控制系统、软件开发和其他功能方面(和系统的各个操作组件的组件)。此外,所呈现的各种附图中示出的连接线或连接器旨在表示各种元件之间的示例性功能关系和/或物理或逻辑耦合。应该注意的是:在实际设备中可以存在许多备选的或附加的功能关系、物理连接或逻辑连接。

在描述本公开的上下文中(尤其是在所附权利要求的上下文中)对术语“一”和“一个”和“所述”及类似指示物的使用应当被解释为涵盖单数和复数这二者。此外,除非本文中另外指示,否则本文中对值的范围的叙述仅旨在用作分别参考落入该范围内的各个单独值的便捷方法,并且各个单独值被并入本说明书中犹如其被单独在本文中叙述一样。最后,可以按照任何合适的顺序来执行本文中描述的所有方法的步骤,除非本文中另外指出或者上下文另外明确地相反指示。本文中提供的对任何和所有示例或示例性语言(例如,“诸如(例如)”)的使用仅旨在更好地阐述本公开且不对本公开的范围施加限制,除非另外要求。在不脱离本公开的精神和范围的情况下,多种修改和改编对本领域普通技术人员将是显而易见的。

应当理解的是:应仅以描述性意义而不是限制性目的来考虑本文中描述的实施例。对每个实施例中的特征或方面的描述一般应当被看作可用于其他实施例中的其他类似特征或方面。

虽然已经参考附图描述了一个或多个实施例,但本领域普通技术人员应理解:在不脱离所附权利要求所限定的精神和范围的情况下,可以进行形式和细节上的各种改变。

虽然本公开包括具体示例,但对于本领域普通技术人员显而易见的是:在不脱离权利要求及其等同物的精神和范围的情况下,可以在这些示例中进行形式和细节上的各种改变。本文中所描述的示例应被认为仅是描述性的,而不是出于限制的目的。对每个示例中的特征或方面的描述应被认为适用于其它示例中的类似特征或方面。如果所描述的技术以不同的顺序执行和/或如果所描述的系统、架构、设备或电路中的组件以不同的方式组合和/或被其它组件或其等同物替换或补充,则可以实现合适的结果。因此,本公开的范围不是由具体实施方式来限定,而是由权利要求及其等同物来限定,并且在权利要求及其等同物的范围内的所有变化应被解释为被包括在本公开中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1