利用非均匀权重分布提高定点神经网络推理效率
文献发布时间:2023-06-29 06:30:04
背景技术
本发明中描述的一些实施例涉及执行神经网络的计算机化装置,更具体地,但不排他性地,涉及执行具有定点权重值的神经网络的计算机化装置。
术语神经网络通常用于描述受人类大脑和神经系统启发的计算机系统。神经网络通常涉及大量并行操作,并在层(或层级)中排列和连接的处理对象。深度神经网络(deepneural network,DNN)中的术语“深度”是指这种神经网络中的层数。术语“推理”是指应用来自经过训练的神经网络模型的参数和计算,以响应于一个或多个输入值推断一个或多个输出值。神经网络层中的典型计算涉及对层输入值(也称为激活值)与关联权重值之间的多个乘积进行求和,并将所得到的和映射到层输出值。神经网络具有用于这种计算的多个权重值。在一些神经网络中,所述多个权重值是多个定点值。值的定点表示是一种表示实数值的近似值的方法,其中,基点之后有标识的位量。在十进制表示法中,基点称为小数点。在二进制表示法中,基点可以称为“二进制点”。在二进制表示法中,数字“四分之一”可以表示为以2为底的0.01。
由标识的二进制位量(由n表示)表示的定点值可以具有2
当多个定点值具有均匀分布时,对于多个定点值中的至少一些定点值,n个位中的任何一个位可以是非零。但是,存在DNN,其中,DNN的多个权重值具有非均匀分布,在标识值和长尾周围具有小方差。非均匀分布的一些示例是正态分布、高斯分布、拉普拉斯分布和柯西分布。当小方差在0值附近,并且多个权重值中的每个权重值都由定点值表示时,存在由k表示的标识的最高有效位量,对于该位量,多个权重值中的大多数具有等于零的高部分值。
发明内容
本发明中描述的一些实施例使用神经网络的多个权重值的非均匀分布,以提高神经网络执行的计算效率。在这些实施例中,通过使用一个乘法器将激活值乘以多个权重值中的两个或两个以上权重值的两个或两个以上低部分值,并将激活值仅乘以两个或两个以上权重值的非零高部分值,来减少由神经网络执行的乘法量。
上述和其它目的通过独立权利要求的特征来实现。其它实现方式在从属权利要求、说明书和附图中是显而易见的。
根据本发明的第一方面,用于配置神经网络的装置包括处理单元,所述处理单元用于:接收所述神经网络的多个权重值的第一权重值集合和第二权重值集合,其中,所述第一集合和所述第二集合的每个权重值具有低部分值和高部分值;产生组合的低部分值的集合,每个组合的低部分值通过组合两个权重值的各自低部分值而产生,一个权重值从所述第一集合中选择,另一个权重值从所述第二集合中选择;配置所述神经网络以通过并发计算以下各项来计算至少一个输出值:第一中间值集合,通过将所述神经网络的第一乘法器集合应用于所述组合的低部分值的集合;第二中间值集合,通过将所述神经网络的第二乘法器集合应用于所述第一集合和所述第二集合中的至少一些的高部分值集合,所述高部分值集合中的每个高部分值与低部分值相关联,其中,所述低部分值和所述高部分值都来自所述第一集合和所述第二集合的公共权重值。并发地将第二乘法器集合应用于高部分值集合,并将第一乘法器集合应用于组合的低部分值的集合,与非并发计算相比通过减少计算输出值所需的周期量,有助于降低神经网络的操作成本,从而降低功耗,并且此外与为多个权重值中的每个权重值提供乘法器相比通过减少乘法器的量降低了神经网络的实现成本,而不会对输出值的精度产生不利影响。
根据本发明的第二方面,用于配置神经网络的方法包括:接收来自所述神经网络的多个权重值的第一权重值集合和第二权重值集合,其中,所述第一集合和所述第二集合的每个权重值具有低部分值和高部分值;产生组合的低部分值的集合,每个组合的低部分值通过组合两个权重值的各自低部分值而产生,一个权重值从所述第一集合中选择,另一个权重值从所述第二集合中选择;配置所述神经网络以通过并发计算以下各项来计算至少一个输出值:第一中间值集合,通过将所述神经网络的第一乘法器集合应用于所述组合的低部分值的集合;第二中间值集合,通过将所述神经网络的第二乘法器集合应用于所述第一集合和所述第二集合中的至少一些的高部分值集合,所述高部分值集合中的每个高部分值与低部分值相关联,其中,所述低部分值和所述高部分值都来自所述第一集合和所述第二集合的公共权重值。
根据本发明的第三方面,用于执行神经网络的装置包括处理单元,所述处理单元用于:通过以下方式配置所述神经网络:接收来自所述神经网络的多个权重值的第一权重值集合和第二权重值集合,其中,所述第一集合和所述第二集合的每个权重值具有低部分值和高部分值;产生组合的低部分值的集合,每个组合的低部分值通过组合两个权重值的各自低部分值而产生,一个权重值从所述第一集合中选择,另一个权重值从所述第二集合中选择;配置所述神经网络以通过并发计算以下各项来计算至少一个输出值:第一中间值集合,通过将所述神经网络的第一乘法器集合应用于所述组合的低部分值的集合;第二中间值集合,通过将所述神经网络的第二乘法器集合应用于所述第一集合和所述第二集合中的至少一些的高部分值集合,所述高部分值集合中的每个高部分值与低部分值相关联,其中,所述低部分值和所述高部分值都来自所述第一集合和所述第二集合的公共权重值;接收输入值;响应于所述输入值计算所述一个或多个输出值。
根据本发明的第四方面,用于配置神经网络的软件程序产品包括:非瞬时性计算机可读存储介质;第一程序指令,用于接收来自所述神经网络的多个权重值的第一权重值集合和第二权重值集合,其中,所述第一集合和所述第二集合的每个权重值具有低部分值和高部分值;第二程序指令,用于产生组合的低部分值的集合,每个组合的低部分值通过组合两个权重值的各自低部分值而产生,一个权重值从所述第一集合中选择,另一个权重值从所述第二集合中选择;第三程序指令,用于配置所述神经网络以通过并发计算以下各项来计算至少一个输出值:第一中间值集合,通过将所述神经网络的第一乘法器集合应用于所述组合的低部分值的集合;第二中间值集合,通过将所述神经网络的第二乘法器集合应用于所述第一集合和所述第二集合中的至少一些的高部分值集合,所述高部分值集合中的每个高部分值与低部分值相关联,其中,所述低部分值和所述高部分值都来自所述第一集合和所述第二集合的公共权重值。可选地,所述第一程序指令、所述第二程序指令和所述第三程序指令由至少一个计算机化处理器从所述非瞬时性计算机可读存储介质执行。
根据本发明的第五方面,计算机程序包括程序指令,所述程序指令由处理器执行时,使所述处理器:接收来自所述神经网络的多个权重值的第一权重值集合和第二权重值集合,其中,所述第一集合和所述第二集合的每个权重值具有低部分值和高部分值;产生组合的低部分值的集合,每个组合的低部分值通过组合两个权重值的各自低部分值而产生,一个权重值从所述第一集合中选择,另一个权重值从所述第二集合中选择;配置所述神经网络以通过并发计算以下各项来计算至少一个输出值:第一中间值集合,通过将所述神经网络的第一乘法器集合应用于所述组合的低部分值的集合;第二中间值集合,通过将所述神经网络的第二乘法器集合应用于所述第一集合和所述第二集合中的至少一些的高部分值集合,所述高部分值集合中的每个高部分值与低部分值相关联,其中,所述低部分值和所述高部分值都来自所述第一集合和所述第二集合的公共权重值。
在第一方面和第二方面的一种实现方式中,所述组合的低部分值的集合中的每个组合的低部分值与激活值集合中的一个激活值相关联。可选地,将所述第一乘法器集合应用于所述组合的低部分值的集合包括所述第一乘法器集合中的每个乘法器将所述组合的低部分值的集合中的一个组合的低部分值乘以与其相关联的相应激活值。可选地,将所述第二乘法器集合应用于所述高部分值集合包括所述第二乘法器集合中的每个乘法器将所述高部分值集合中的一个高部分值乘以与相应低部分值相关联的相应激活值,所述相应低部分值与所述高部分值相关联。可选地,计算所述至少一个输出值包括使用所述第一中间值集合和所述第二中间值集合计算所述至少一个输出值。可选地,所述高部分值集合中的每个高部分值不等于零。可选地,每个相应的激活值乘以所述高部分值集合中的高部分值不等于零。与乘法器也应用于零值的实现方式相比,仅将第二乘法器集合的乘法器应用于不等于零的高部分值,并且另外或替代地仅应用于不等于零的激活值,有助于减少第二乘法器集合中的乘法器量,因此降低了神经网络的实现成本,而不会影响神经网络推理的输出值的精度。
在第一方面和第二方面的另一种实现方式中,配置所述神经网络以计算至少一个输出值还包括:从所述第一乘法器集合和所述第二乘法器集合中的一个或多个中选择的至少一些乘法器通过如下方式计算另一个第二中间值集合:将从所述第一集合和所述第二集合中的一个或多个中选择的至少一些其它高部分值的其它高部分值的集合中的一个其它高部分值乘以所述相应激活值,其中,所述其它高部分值与其它低部分值相关联,所述其它低部分值和所述其它高部分值都源自所述第一集合和所述第二集合的另一个公共权重值,其中,所述相应激活值与相应其它低部分值相关联,所述相应其它低部分值与所述其它高部分值相关联。可选地,计算所述至少一个输出值包括进一步使用所述另一个第二中间值集合计算所述至少一个输出值。可选地,所述第二乘法器集合具有标识的乘法器量。可选地,所述标识的乘法器量为32。可选地,通过选择所述第一集合和所述第二集合中的所有的完整高部分值集合而产生的非零高部分集合包括比所述标识的乘法器量更多的高部分值,所述其它高部分值的集合包括所述高部分值的完整集合中,不是所述高部分值集合的成员的多个其它高部分值。可选地,接收所述第一集合包括:接收所述第一集合的第一低部分值序列;按顺序接收第一位序列,每个位与所述第一低部分值序列中的一个低部分值相关联,并且当与所述低部分值相关联的相应高部分值不等于零时,该第一位序列的值为1,否则其值为0;按顺序接收第一高部分值序列,每个高部分值与所述第一位序列的非零位相关联;其中,接收所述第二集合包括:接收所述第二集合的第二低部分值序列;按顺序接收第二位序列,每个位与所述第二低部分值序列中的一个其它低部分值相关联,并且当与所述其它低部分值相关联的另一个相应高部分值不等于零时,该第二位序列的值为1,否则其值为0;按顺序接收第二高部分值序列,每个高部分值与所述第二位序列的另一个非零位相关联。与一些其它方法相比,例如使用序数或为每个低部分值提供高部分值,使用位序列将高部分值序列中的每个高部分值与低部分值序列中的一个低部分值相关联减少了创建这种关联所需的内存量。
在第一方面和第二方面的另一种实现方式中,每个权重值包括权重位量;每个低部分值包括低部分位量;每个低部分值是所述权重值的最低有效部分。可选地,所述低部分位量是所述权重位量的一半。可选地,所述权重位量从由4、8、16、32和64组成的位量组中选择。
在第一方面和第二方面的另一种实现方式中,所述神经网络包括多个层,每个层具有所述神经网络的所述多个权重值中的多个层权重值。可选地,所述第一集合和所述第二集合从所述多个层中的一个层的所述多个层权重值中选择。从多个层中的一个层的多个权重值中选择第一集合和第二集合支持在选择第一集合和第二集合时考虑层的多个权重值的分布,从而减少了计算神经网络的输出值所需的周期量。
在第一方面和第二方面的另一种实现方式中,第一对集合包括所述第一集合和所述第二集合。可选地,第二对集合包括所述多个权重值的另一个第一权重值集合和所述多个权重值的另一个第二权重值集合。可选地,所述处理单元还用于:接收所述第二对集合;产生组合的低部分值的另一个集合,每个组合的低部分值通过组合两个其它权重值的各自其它低部分值而产生,一个权重值从所述另一个第一集合中选择,另一个权重值从所述另一个第二集合中选择;配置所述神经网络以通过进一步并发计算以下各项来计算所述至少一个输出值:另一个第一中间值集合,通过将所述神经网络的另一个第一乘法器集合应用于所述组合的低部分值的另一个集合;另一个第二中间值集合,通过将所述神经网络的另一个第二乘法器集合应用于所述另一个第一集合和所述另一个第二集合中的至少一些的另一个高部分值集合,所述另一个高部分值集合的每个其它高部分值与其它低部分值相关联,其中,所述其它低部分值和所述其它高部分值都源自所述另一个第一集合和所述另一个第二集合的另一个公共权重值;其中,所述第一乘法器集合不同于所述另一个第一乘法器集合,并且所述第二乘法器集合不同于所述另一个第二乘法器集合。可选地,所述第一乘法器集合不同于所述另一个第一乘法器集合,并且所述第二乘法器集合不同于所述另一个第二乘法器集合。使用不同于第一乘法器集合的另一个第一乘法器集合和不同于第二乘法器集合的另一个第二乘法器集合,通过并发计算另一个第一中间值集合和另一个第二中间值集合来计算第一中间值集合和第二中间值集合,有利于提高神经网络的吞吐量。
在第一方面和第二方面的另一种实现方式中,所述第一集合和所述第二集合是通过接收所述多个权重值中的另一个权重值集合,并将所述另一个权重值集合划分成所述第一集合和所述第二集合来产生的,使得所述第一集合的权重值的量等于所述第二集合的权重值的量。
在第一方面和第二方面的另一种实现方式中,所述多个权重值具有方差小于标识的方差阈值的非均匀分布。
在研究下文附图和详细描述之后,本发明的其它系统、方法、特征和优点对于本领域技术人员来说是或变得显而易见的。希望所有这些其它系统、方法、特征和优点包括在本说明书中,在本发明的范围内,并且受所附权利要求的保护。
除非另有定义,否则本文所用的所有技术和/或科学术语都具有与实施例所属领域内的普通技术人员公知的含义相同的含义。虽然与本文描述的方法和材料类似或等效的方法和材料可以用于实施例的实践或测试,但下文描述了示例性方法和/或材料。如有冲突,以本专利说明书(包括定义)为准。此外,这些材料、方法和示例仅是说明性的,并不一定具有限制性。
附图说明
本文只通过举例结合附图描述了一些实施例。下面通过具体参考附图的详细内容,强调了所示出的详细情况只是举例而且是为了说明性地讨论实施例。这样,根据附图说明,如何实践实施例对本领域技术人员而言是显而易见的。
在附图中:
图1是表示以二进制表示的两个数的示例性乘积的示意图;
图2是表示一些实施例提供的示例性神经网络的一部分的示意性框图;
图3是一些实施例提供的示例性装置的示意性框图;
图4是示意性表示一些实施例提供的用于配置神经网络的可选操作流程的流程图;
图5是示意性表示一些实施例提供的用于配置神经网络的另一可选操作流程的流程图;
图6是示意性表示一些实施例提供的用于执行神经网络的可选操作流程的流程图。
具体实施方式
为简洁起见,术语“值周围的非均匀分布”用于表示“值周围具有小方差的非均匀分布”,术语“在标识值周围的非均匀多个值”用于表示具有在标识值周围具有小方差的非均匀分布的多个值。因此,“0周围的非均匀多个值”用于表示“具有在0周围具有小方差的非均匀分布的多个值”。
需要说明的是,以下描述聚焦在包括神经网络的实施例,该神经网络在0周围具有非均匀多个权重值。但是,本文描述的装置和方法的范围并不限于这些实施例。在其它可能的实施例中,多个权重值是另一个值周围的非均匀多个权重值,可以向多个权重值中的每个权重值添加偏移值,以将多个权重值映射到0周围的其它非均匀多个权重值。偏移值可以是负值或非负值。
典型的深度神经网络包括数百万个参数,可能需要数百万次算术运算,导致需要的计算和数字内存资源超过许多设备的能力,例如移动设备、一些嵌入式设备和一些定制硬件设备。此外,推理所需的计算周期量既影响推理所需的时间量,从而影响神经网络的吞吐量,也影响神经网络消耗的功率量,从而影响其操作成本。
降低神经网络生产成本的一种方法是通过减少神经网络的物理计算资源的量,一些示例是减少神经网络的计算元素量和神经网络使用的内存量。例如,当神经网络实现为集成电路时,减少神经网络的物理计算资源的量减少了包括集成电路的半导体组件的面积。
一些神经网络通过减少用于存储神经网络的多个权重中的至少一些权重的位量来减少计算资源量。这种实践称为神经网络的量化。量化还可以包括减少用于存储神经网络的至少一些激活值的位量。但是,量化神经网络可能会降低神经网络输出的精度。在量化中,原始多个权重值(每个权重值由原始位量表示)可以映射到多个量化权重值(每个量化权重值由减少的位量表示),其中,减少的位量小于原始位量。由于用于表示每个量化权重值的位较少,因此量化权重值的可能值比权重值的可能值少,并且原始多个权重值中的一个以上权重值可以映射到公共量化权重值。因此,与使用原始多个权重值相比,使用多个量化权重值的神经网络的精度可能会降低。
一些神经网络使用层的计算资源在多个批次(迭代)中进行计算,而不是并发地将层的计算资源应用于级别的所有权重值。在这类方案中,在每个批次中,将层的计算资源应用于层的多个权重中的一些权重,并且使用多个批次结果计算层的输出。计算这种神经网络的输出所需的时间量根据执行的批次量会增加,从而降低吞吐量,并可能增加执行神经网络所需的功率量。
乘以零的乘积是零。当权重值具有等于零的高部分值时,使用这种权重值计算的乘积也具有至少一些等于零的高部分。现在参考图1,示出了表示以二进制表示的两个数的示例性乘积的示意图100。在本示例中,数字N1等于3并具有等于零的高部分HP1,数字N2等于3并具有等于零的高部分HP2。在本示例中,乘积P1等于9,是数字N1乘以数字N2的结果。在本示例中,乘积P1具有等于零的高部分HP3。需要说明的是,高部分不一定包括等于零的所有连续的最高有效位。例如,在图100中,数字N1和数字N2都具有分别连续到高部分HP1和高部分HP2的其它位,这些位为零,但它们被排除在相应的高部分之外。
当神经网络的多个权重值在0周围具有非均匀分布时,可能存在最高有效位量k,对于该位量,多个权重值各自具有等于零的高部分,因此使用多个权重值计算的多个乘积各自具有等于零的高部分。可选地,多个权重值为多个定点值。可选地,多个权重值是通过量化神经网络的多个浮点权重值而产生的多个定点量化值。
本文描述的一些实施例提出使用该属性减少乘以量的显式乘法量,从而减少神经网络的计算资源量。为此,在本文描述的一些实施例中,将神经网络的第一乘法器集合应用于组合的低部分值的集合,每个组合的低部分值通过组合多个权重值中的两个或两个以上权重值的低部分值而产生,同时并发地将神经网络的第二乘法器集合应用于非零高部分值集合。可选地,第二乘法器集合比第一乘法器集合具有少的乘法器。可选地,组合的低部分值的集合是通过组合两个权重值的相应低部分值来产生的,一个权重值从神经网络的多个权重值的第一权重值集合中选择,另一个权重值从多个权重值的第二权重值集合中选择。可选地,非零高部分值集合是第一集合和第二集合中的至少一些的高部分值集合的至少一部分,使得高部分值集合中的每个高部分值与低部分值相关联,其中,低部分值和高部分值源自第一集合和第二集合。可选地,通过应用第一乘法器集合和第二乘法器集合计算的一个或多个中间值用于计算神经网络的一个或多个输出值。避免将乘法器应用于等于零的高部分,可以减少神经网络的乘法器量,从而降低神经网络的生产成本和操作成本。将一个乘法器应用于组合的低部分值有助于使用较少的位来表示两个或两个以上权重值的非零部分,同时保持神经网络的完全精度。此外,将一个乘法器应用于组合的低部分值有助于减少计算两个或两个以上低部分值的两个或两个以上乘积所需的计算周期量,从而通过降低功耗降低神经网络的操作成本。
需要强调的是,上述方法不是量化神经网络的多个权重。根据本发明的一些实施例,神经网络的完全精度被保留,因为没有显著值的损失。乘以零产生零,因此避免将乘法器应用于等于零的高部分不会丢失显著值。在这类实施例中,当第二乘法器集合具有比第一乘法器集合少的乘法器时,在不影响由神经网络推理的输出值的精度的情况下,减少神经网络的计算资源量。此外,应用更少的乘法器可以减少神经网络的功耗。
可选地,将乘法器应用于高部分值包括将高部分值乘以关联的激活值。可选地,将第二乘法器集合应用于非零高部分值集合,这些非零高部分值与非零的相应关联激活值的每个激活值相关。当关联激活值为零时,避免将高部分值乘以关联激活值有助于减少神经网络使用的计算周期量,从而降低神经网络的功耗。
并发地将第一乘法器集合应用于组合的低部分值的集合,并将第二乘法器集合应用于高部分值集合中的至少一些高部分值,有助于使用较少的物理计算资源计算输出值,从而降低神经网络的生产成本和实现成本,而不降低神经网络的吞吐量。
可以是,第一权重值集合和第二权重值集合具有具有非零高部分的权重值的量,该量超过了第二乘法器集合中的乘法器量。可选地,将第一乘法器集合和第二乘法器集合中的至少一些乘法器应用于其它高部分值的集合,以计算一个或多个其它中间结果。可选地,一个或多个其它中间结果还用于计算神经网络的一个或多个输出值。将至少一些乘法器应用于其它高部分值的集合可以在不增加其物理计算资源量的情况下保持神经网络输出的精度。
可选地,将第二乘法器集合中的一个或多个乘法器应用于一个或多个组合的高部分值,每个组合的高部分值通过组合高部分值集合中的两个或两个以上高部分值而产生。将第二乘法器集合中的一个或多个乘法器应用于一个或多个组合的高部分值有助于将第二乘法器集合应用于高部分值集合中的至少一些高部分值,从而可以计算一个或多个输出值,而不将至少一些乘法器应用于其它高部分值的集合,从而减少计算时间,因此提高吞吐量并降低执行神经网络的功耗。
在详细说明至少一个实施例之前,应当理解的是,实施例在应用时并不一定限于以下描述和/或附图和/或示例中阐述的组件和/或方法的构造和设置的详细内容。本文描述的实现方式支持其它实施例,或者支持以各种方式实践或执行。
实施例可以是一种系统、方法和/或计算机程序产品。所述计算机程序产品可以包括一个或多个计算机可读存储介质,所述计算机可读存储介质具有计算机可读程序指令,所述计算机可读程序指令使得处理器执行实施例的各个方面。
所述计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。所述计算机可读存储介质可以为,但不限于,例如,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或上述设备的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下各项:便携式计算机软磁盘、硬盘、随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM或闪存)、静态随机存取存储器(static random access memory,SRAM)、便携式光盘只读存储器(compact disc read-only memory,CD-ROM)、数字多功能光盘(digital versatile disk,DVD)、记忆棒、软盘以及上述各项的任意合适组合。本文所使用的计算机可读存储介质不应解释为瞬时信号本身,例如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲),或通过电线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者通过因特网、局域网、广域网和/或无线网络等网络下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令,以便存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行实施例中操作的计算机可读程序指令可以是汇编器指令、指令集架构(instruction-set-architecture,ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码。这些编程语言包括面向对象的编程语言,例如Smalltalk、C++等,以及传统的过程化编程语言,例如“C”编程语言或类似的编程语言。所述计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上执行并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种场景中,所述远程计算机可以通过任何类型的网络连接到用户的计算机,这些网络包括局域网(localarea network,LAN)或广域网(wide area network,WAN),还可以(例如通过使用因特网服务提供商的互联网)连接到外部计算机。在一些实施例中,包括可编程逻辑电路、现场可编程门阵列(field-programmable gate array,FPGA)或可编程逻辑阵列(programmablelogic array,PLA)等的电子电路可以通过使用所述计算机可读程序指令的状态信息来执行所述计算机可读程序指令以定制所述电子电路,从而执行本发明的各个方面。
本文结合实施例提供的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述实施例的各方面。应理解,流程图和/或框图的每个方框以及流程图和/或框图中的方框的组合可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以生成机器,使得经由计算机或其它可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图中指定的功能/动作的模块。这些计算机可读程序指令还可以存储在计算机可读存储介质中,所述计算机可读存储介质可以指示计算机、可编程数据处理装置和/或其它设备以特定方式工作,使得存储有指令的计算机可读存储介质包括含有指令的制品,这些指令用于实现流程图和/或框图中指定的功能/动作的各方面。
计算机可读程序指令还可以加载到计算机、其它可编程数据处理装置或其它设备上,使得在所述计算机、其它可编程装置或其它设备上执行一系列操作步骤,从而产生计算机实现过程,使得在所述计算机、其它可编程装置或其它设备上执行的指令实现流程图和/或框图中指定的功能/动作。
图中的流程图和框图示出了各种实施例提供的系统、方法以及计算机程序产品的可能实现方式的架构、功能以及操作。就此而言,流程图或框图中的每个方框可以表示模块、区段或部分指令,其包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。在一些替代实现方式中,方框中说明的功能可能不按照图中说明的顺序。例如,事实上,连续示出的两个方框可以几乎同时执行,或者有时候可以按照相反的顺序执行,这取决于所涉及的功能。还需要说明的是,框图和/或流程图中的每个方框以及框图和/或流程图中的方框组合可以由基于专用硬件的系统实现,这些系统执行特定的功能或动作,或者执行专用硬件和计算机指令的组合。
现在参考图2,示出了一些实施例提供的示例性神经网络200的一部分的示意性框图。在这些实施例中,第一权重值集合210包括权重值210-1至210-N,第二权重值集合220包括权重值220-1至220-N。可选地,第一集合210和第二集合220包括神经网络的多个权重值中的权重值。可选地,第一集合210和第二集合220的每个权重值具有低部分和高部分。例如,权重值210-1、210-2和210-N各自可以分别具有低部分值211-1、211-2和211-N,以及分别具有高部分值212-1、212-3和212-N。类似地,在本示例中,权重值220-1、220-2和220-N各自可以分别具有低部分值221-1、221-2和221-N,以及分别具有高部分值222-1、222-3和222-N。可选地,权重值的每个低部分值都是权重值的最低有效部分。
可选地,多个权重值中的每个权重值包括权重位量,一些示例为8位和32位。权重位量的其它示例包括4、16和64。可选地,每个低部分值包括低部分位量,小于权重位量。可选地,所述低部分位量是所述权重位量的一半。
可选地,第一集合210和第二集合220用于产生组合的低部分值的集合230。例如,可以通过组合第一集合210的权重值210-1的低部分值211-1和第二集合220的权重值220-1的低部分值221-1来产生组合的低部分值230-1。类似地,可以通过组合第一集合210的权重值210-2的低部分值211-2和第二集合220的权重值220-2的低部分值221-2来产生组合的低部分值230-2。类似地,可以通过组合第一集合210的权重值210-N的低部分值211-N和第二集合220的权重值220-N的低部分值221-N来产生组合的低部分值230-N。
可选地,组合的低部分值230中的每个组合的低部分值与激活值集合240中的一个激活值相关联。例如,组合的低部分值230-1可以与激活值集合240的激活值240-1相关联。类似地,组合的低部分值230-2可以与激活值集合240的激活值240-2相关联,并且组合的低部分值230-N可以与激活值集合240的激活值240-N相关联。
可选地,将包括乘法器260-1至乘法器260-N的第一乘法器集合260应用于组合的低部分值230,以可选地将组合的低部分值230中的每个组合的低部分值乘以与其相关联的激活值集合240的激活值。例如,乘法器260-1可用于将组合的低部分值230-1乘以激活值240-1。类似地,乘法器260-2可用于将组合的低部分值230-2乘以激活值240-2,并且乘法器260-N可用于将组合的低部分值230-N乘以激活值240-N。
可选地,高部分值集合250包括第一集合和第二集合中的至少一些的多个高部分值,例如第一集合210的权重值210-1的高部分值212-1、第一集合210的权重值210-N的高部分值212-N和第二集合220的权重值220-N的高部分值222-N。可选地,高部分值集合250包括第一集合210和第二集合220的所有权重值的所有相应的高部分值。可选地,高部分值集合250中的每个高部分值都不等于零。
可选地,将包括乘法器270-1至乘法器270-M的第二乘法器集合270应用于高部分值集合250,以可选地将高部分值集合250中的每个高部分值乘以与其相关联的激活值集合240的激活值,所述激活值与低部分值相关联。在本示例中,高部分值212-1与低部分值211-1相关联,两者都源自权重值210-1。在本示例中,低部分值211-1与激活值240-1相关联,因此在本示例中,高部分值212-1与激活值240-1相关联。类似地,在本示例中,高部分值212-N和高部分值222-N都与激活值240-N相关联。
需要说明的是,一个激活值可以提供给第二乘法器集合270中的一个以上乘法器。在本示例中,激活值240-N被提供给乘法器270-2,以可选地用于乘以高部分值212-N,并被提供给乘法器270-M,以可选地用于乘以高部分值222-N。可选地,将第二乘法器270-1应用于高部分值212-1和激活值240-1。
可选地,一些高部分值,例如高部分值212-2、高部分值222-1和高部分值222-2不是高部分值集合250的成员,并且不提供给第二乘法器集合270。可选地,高部分值212-2、高部分值222-1和高部分值222-2各自等于零。可选地,高部分值212-2是非零,关联激活值240-2等于零,因此不提供给第二乘法器集合270中的一个乘法器。
可选地,第一乘法器集合260计算第一中间值集合。可选地,第二乘法器集合270计算第二中间值集合。可选地,使用第一中间值集合和第二中间值集合,可选地使用一个或多个加法器280计算一个或多个输出值。
可选地,第一中间值集合中的每个中间值具有相应的低部分和相应的高部分。例如,第一中间值集合中的一个中间值可以源于将组合的低部分值230-1(通过组合低部分值211-1和低部分值221-1产生)乘以相应的应用值240-1。可选地,将第一中间值集合的一个或多个相应的低部分值提供给一个或多个加法器280中的第一加法器,并且将第一中间值集合的一个或多个相应的高部分值提供给一个或多个加法器280中的第二加法器。例如,乘法器260-1的输出的相应低部分可以提供给加法器280中的第一加法器,并且乘法器260-1的输出的相应高部分可以提供给加法器280中的第二加法器。类似地,乘法器260-N的输出的另一个相应低部分可以提供给加法器280中的第一加法器,并且乘法器260-N的输出的另一个相应高部分可以提供给加法器280中的第二加法器。
在一些实施例中,包括部分200的神经网络使用以下示例性装置配置。
现在还参考图3,示出了一些实施例提供的示例性装置300的示意性框图。在一个实施例中,该装置是单个设备。在另一个实施例中,该装置是用于交互以实现本文所述的功能的两个或两个以上设备(例如计算机)的系统。可选地,装置300包括与存储器302连接的处理单元301。处理单元301可以是用于执行本文所述的操作的任何类型的可编程或不可编程电路。处理单元301可以包括硬件和软件。例如,处理单元301可以包括一个或多个处理器和携带程序的瞬时性或非瞬时性存储器,当程序由一个或多个处理器执行时,该程序使处理单元执行相应操作。存储器302可以是瞬时性或非瞬时性存储器。可选地,存储器302携带程序。可选地,存储器302是非易失性数字存储器,一些示例是硬盘驱动器、固态驱动器、网络存储器和存储网络。可选地,处理单元301从存储器302检索神经网络的多个权重值。可选地,处理单元301与数字通信网络接口303连接。可选地,处理单元301通过数字通信网络接口303与存储器302连接。
为了配置神经网络,在一些实施例中,装置300实现以下可选方法。
现在还参考图4,示出了示意性表示一些实施例提供的用于配置神经网络的可选操作流程400的流程图。在这些实施例中,在401中,处理单元301接收神经网络的多个权重值的第一集合210和第二集合220。可选地,神经网络由处理单元301执行。可选地,神经网络由连接到处理单元301的另一个处理单元(未示出)执行。
可选地,多个权重值具有方差小于标识的方差阈值的非均匀分布。可选地,标识方差阈值,使得多个权重值的至少一个标识的部分具有等于零的相应高部分,例如,多个权重值的至少一半可以具有等于零的相应高部分。在另一个示例中,标识方差阈值,使得多个权重值中的至少三分之一具有为零的相应高部分。现在还参考图5,示出了示意性表示一些实施例提供的用于配置神经网络的另一可选操作流程500的流程图。在这些实施例中,在401中接收第一集合210包括处理单元301在501中接收第一集合210的第一低部分值序列,例如低部分值211-1至211-N。可选地,在502中,处理单元301按顺序接收第一位序列,每个位与第一低部分值序列中的一个低部分值相关联,并且当与低部分值相关联的相应高部分值不等于零时,该第一位序列的值为1,否则其值为0。例如,当高部分值212-1和高部分值212-N不等于零时,第一位序列在位置1和N中的值为1。当高部分值212-2等于零时,第一位序列在位置2中的值为0。可选地,在503中,处理单元301按顺序接收第一高部分值序列,每个高部分值与第一位序列的非零位相关联。继续上述示例,第一高部分值序列包括高部分值212-1和此后的高部分值212-N,其中,高部分值212-2不是第一高部分值序列的成员。需要说明的是,高部分值212-N在第一高部分值序列中的高部分值212-1之后,但不一定紧随在高部分值212-1之后。可选地,高部分值集合250是第一高部分值序列和第二高部分值序列的组合。
可选地,接收第二集合220包括处理单元301在511中接收第二集合220的第二低部分值序列,例如低部分值221-1至221-N。可选地,在512中,处理单元301按顺序接收第二位序列,每个位与第二低部分值序列中的一个其它低部分值相关联,并且当与其它低部分值相关联的另一个相应高部分值不等于零时,该第二位序列的值为1,否则其值为0。可选地,在513中,处理单元301按顺序接收第二高部分值序列,每个高部分值与第二位序列的另一个非零位相关联。
现在再次参考图4。
可选地,第一集合210和第二集合220通过如下方式产生:处理单元301接收多个权重值中的另一个权重值集合,并且处理单元301将另一个权重值集合划分成第一集合210和第二集合220,使得第一集合210的权重值量(用N表示)等于第二集合220的权重值量。
可选地,在402中,处理单元301产生组合的低部分值的集合230。可选地,组合的低部分值的集合230中的每个组合的低部分值通过组合两个权重值的各自低部分值而产生,一个权重值从第一集合210中选择,另一个权重值从第二集合220中选择。可选地,组合的低部分值的集合230中的每个组合的低部分值是通过组合两个以上权重值的相应低部分值来产生的,例如,一个权重值从第一集合210中选择,另一个权重值从第二集合220中选择,还有另一个权重值从未示出的第三低部分值集合中选择。
在403中,处理单元301可选地配置神经网络以计算一个或多个输出值。可选地,神经网络包括多个层,每个层具有神经网络的多个权重值中的多个层权重值。可选地,第一集合210和第二集合220从多个层中的一个层的多个层权重值中选择。可选地,一个或多个输出值是层的一个或多个输出值。
可选地,计算一个或多个输出值是通过并发地在411中计算第一中间值集合和在412中计算第二中间值集合。可选地,在403中计算一个或多个输出值包括在420中使用第一中间值集合和第二中间值集合计算一个或多个输出值。
可选地,组合的低部分值的集合230中的每个组合的低部分值与激活值集合240中的一个激活值相关联。
可选地,处理单元301配置神经网络以在411中通过将第一乘法器集合260应用于组合的低部分值的集合230,计算第一中间值集合。可选地,将第一乘法器集合260应用于组合的低部分值的集合230包括第一乘法器集合260中的每个乘法器将组合的低部分值的集合230中的一个组合的低部分值乘以与其相关联的相应激活值。
可选地,处理单元301配置神经网络以在412中通过将第二乘法器集合270应用于高部分值集合250,计算第二中间值集合。可选地,高部分值集合250是第一集合210和第二集合220中的至少一些的高部分值集合。可选地,高部分值集合250的每个高部分值与低部分值相关联,其中,低部分值和高部分值源自第一集合和第二集合的公共权重值。可选地,将第二乘法器集合270应用于高部分值集合250包括第二乘法器集合270中的每个乘法器将高部分值集合250中的一个高部分值乘以与相应低部分值相关联的相应激活值,所述相应低部分值与所述高部分值相关联。可选地,每个相应的激活值乘以高部分值集合250中的一个高部分值不等于零。可选地,将第二乘法器集合270应用于高部分值集合250包括第二乘法器集合270中的至少一个乘法器将激活值乘以组合的高集合值,该组合的高集合值通过组合分别与激活值相关联的高部分值集合250中的两个高部分值来产生。可选地,组合的高集合值通过组合两个以上高部分值来产生。
可选地,神经网络包括不在第一乘法器集合260和第二乘法器集合270中的任何一个集合中的附加乘法器。
可选地,第二乘法器集合270具有标识的乘法器量,用M表示,例如32个乘法器。可选地,通过选择第一集合210和第二集合220中的所有的完整高部分值集合而产生的非零高部分集合包括M个以上高部分值。可选地,高部分值集合250包括M个高部分值。可选地,其它高部分值的集合包括完整高部分值集合中,不属于高部分值集合250的成员的多个其它高部分值,例如高部分值212-2、高部分值222-1和高部分值222-2中的一个或多个高部分值。
可选地,在430中,处理单元301计算另一个第二中间值集合。可选地,处理单元301使用从第一乘法器集合260和第二乘法器集合270中选择的至少一些乘法器计算另一个第二中间值集合。可选地,将至少一些乘法器中的每个乘法器应用于从第一集合210和第二集合220中的一个或多个中选择的至少一些其它高部分值的其它高部分值的集合中的一个其它高部分值,例如高部分值212-2。可选地,其它高部分值与其它低部分值(例如低部分值211-2)相关联,其中,其它低部分值和其它高部分值都源自第一集合210和第二集合220的另一个公共值,例如权重值210-2。可选地,将至少一些乘法器中的一个乘法器应用于其它高部分值的集合中的一个其它高部分值包括将其它高部分值乘以与相应的其它低部分值(例如与其它高部分值212-2相关联的低部分值211-2)相关联的相应激活值(例如240-2)。在420中,处理单元301可选地进一步使用另一个第二中间值集合计算一个或多个输出值。
可选地,多个权重值包括多个集合对,并且使用神经网络的其它乘法器集合,可选地并发地对其它对重复上述方法。可选地,第一对集合包括第一集合210和第二集合220。可选地,另一对集合包括多个权重值的另一个第一权重值集合和多个权重值的另一个第二权重值集合。
可选地,使用另一对集合和神经网络的另一个第一乘法器集合和神经网络的另一个第二乘法器集合重复401、402、403、411、412和420。可选地,第一乘法器集合与另一个第一乘法器集合不同。可选地,第二乘法器集合与另一个第二乘法器集合不同。可选地,使用另一对集合和神经网络的第一乘法器集合和神经网络的第二乘法器集合重复401、402、403、411、412和420。
可选地,方法400应用于神经网络的一个或多个层中的每一层。
在一些实施例中,计算机程序包括程序指令,当由处理单元301执行时,该程序指令使装置300实现方法400。
在一些实施例中,装置300执行神经网络。在一些这类实施例中,装置实现以下可选方法。
现在还参考图6,示出了示意性表示一些实施例提供的用于执行神经网络的可选操作流程600的流程图。在这些实施例中,在601中,处理单元301可选地通过执行方法400配置神经网络,以可选地计算一个或多个输出值。在610中,处理单元301可选地接收输入值,并且在620中,处理单元301可选地响应于输入值计算一个或多个输出值。
对各种实施例的描述只是出于说明的目的,但这些描述并不是为了穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,本领域技术人员可以清楚理解许多修改和变化。相比于市场上存在的技术,选择本文使用的术语可最好地解释本实施例的原理、实际应用或技术进步,或使本领域其它技术人员理解此处公开的实施例。
预计在本申请到期之前专利的有效期内,将开发许多相关神经网络,术语神经网络的范围旨在先验地包括所有此类新技术。
本文所使用的术语“约”是指±10%。
术语“包括”、“有”及其同义词表示“包括但不限于”。这个术语包括了术语“由……组成”以及“基本上由……组成”。
短语“基本上由……组成”表示组成物或方法可以包含附加成分和/或步骤,但前提是所述附加成分和/或步骤不会实质上改变所要求保护的组成物或方法的基本和新颖特性。
除非上下文另有明确说明,否则本文使用的单数形式“一个”和“所述”包括复数含义。例如,术语“一种复合物”或“至少一种复合物”可以包括多种复合物,包括其混合物。
本文所使用的词语“示例性的”表示“作为一个示例、实例或说明”。任何描述为“示例性的”实施例并不一定解释为相比其它实施例是优选或有利的,和/或并不排除结合其它实施例的特征。
本文使用的词语“可选地”表示“在一些实施例中提供且在其它实施例中没有提供”。任何特定的实施例可以包括多个“可选的”特征,除非这些特征相互矛盾。
在本申请中,各种实施例可以通过范围格式呈现。应当理解的是,范围格式的描述仅仅是为了方便和简洁,而不应当被解释为对实施例范围的固定限制。因此,对范围的描述应被认为是已经具体地公开所有可能的子范围以及所述范围内的单独数值。例如,对于例如从1到6的范围的描述应被视为已具体公开了从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等的子范围以及该范围内的单独数字例如1、2、3、4、5和6。不论范围有多广,这都适用。
当本文指示一个数字范围时,表示包括所指示的范围内的任何所列举的数字(分数或整数)。短语“在第一指示数字与第二指示数字之间的范围”以及“从第一指示数字到第二指示数字的范围”在本文可互换使用,表示包括第一指示数字和第二指示数字以及二者之间所有的分数和整数。
应当了解的是,为了简洁起见在单独实施例的上下文中描述的实施例的某些特征还可以通过组合提供在单个实施例中。相反地,为了简洁起见在单个实施例的上下文中描述的实施例的各个特征也可以单独地或通过任意合适的子组合或适当地提供在任何其它描述的实施例中。在各个实施例的上下文中描述的某些特征不被认为是这些实施例的基本特征,除非在没有这些元件的情况下实施例是不可操作的。
虽然实施例已经结合其具体实施例进行了描述,但很明显许多替代方案、修改和变化对本领域技术人员来说是显而易见的。因此,旨在涵盖属于所附权利要求的精神和广泛范围内的所有此类替代、修改和变化。
此处,本说明书中提及的所有出版物、专利和专利申请书都通过全文引用并入本说明书中,同样,每个单独的出版物、专利或专利申请书也具体且单独地通过引用并入本文。另外,本申请中对任何参考的引用或识别不应当解释为承认这种参考可用作实施例的现有技术。就使用节标题而言,不应该将节标题理解成必要的限定。
- 一种限制权重分布提高量化效果的卷积神经网络训练方法
- 基于深度卷积神经网络的层内非均匀的等间隔定点量化方法