神经网络计算方法、设备、处理器及计算机可读存储介质与流程

文档序号:16756219发布日期:2019-01-29 17:23阅读:191来源:国知局
神经网络计算方法、设备、处理器及计算机可读存储介质与流程

本发明涉及人工智能技术领域,尤其涉及一种神经网络计算方法、设备、处理器及计算机可读存储介质。



背景技术:

近年来,深度学习在人工智能领域取得了重大突破,尤其在图像、语音、自然语言处理等领域取得了突破性的进展和良好的效果。深度学习可以充分利用强大的计算力,通过多层神经网络级联的方式构建复杂的非线性模型,在海量数据上直接进行端到端的问题求解。

在利用深度神经网络(deepneuralnetwork,dnn)解决问题的时候,人们常常倾向于设计更为复杂的网络来收集更多的数据以期望获得更高的性能。目前的dnn层数较深,连接权重较多,并且连接权重通常是32位单精度浮点数或64位双精度浮点数;其中,连接权重是用来衡量神经网络中的上一层神经元和下一层神经元之间连接强弱关系的数值。在深度神经网络计算时,需要调用浮点乘法器进行大量的浮点数乘法运算,深度神经网络计算速度较慢。



技术实现要素:

本发明实施例提供一种神经网络计算方法、设备、处理器及计算机可读存储介质,能够提高神经网络计算速度。

一方面,本发明实施例提供了一种神经网络计算方法,方法包括:

处理器接收神经网络计算指令,神经网络计算指令包括神经网络计算规则和神经网络的连接权重,其中,连接权重为2的幂次方;

针对神经网络计算规则中的乘法运算,将乘法运算对应的源操作数输入移位寄存器,依据乘法运算对应的连接权重进行移位操作,移位寄存器输出目标结果操作数,作为乘法运算的结果。

另一方面,本发明实施例提供了一种处理器,包括:

取值单元,用于接收神经网络计算指令,神经网络计算指令包括神经网络计算规则和神经网络的连接权重,其中,连接权重为2的幂次方;

移位寄存器,用于针对神经网络计算规则中的乘法运算,接收乘法运算对应的源操作数;依据乘法运算对应的连接权重进行移位操作;输出目标结果操作数,作为乘法运算的结果。

再一方面,本发明实施例提供一种神经网络计算方法,方法包括:

接收神经网络计算指令,神经网络计算指令包括神经网络计算规则和神经网络的连接权重,其中,连接权重为2的幂次方;

针对神经网络计算规则中的乘法运算,依据乘法运算对应的连接权重对乘法运算对应的源操作数进行移位操作;

将移位操作的结果操作数作为乘法运算的结果。

再一方面,本发明实施例提供一种神经网络计算设备,包括:存储器和处理器;

存储器用于存储可执行程序代码;

处理器用于读取存储器中存储的可执行程序代码以执行本发明实施例提供的神经网络计算方法。

再一方面,本发明实施例提供一种计算机可读存储介质,计算机存储介质上存储有计算机程序指令;计算机程序指令被处理器执行时实现本发明实施例提供的神经网络计算方法。

根据本发明实施例的神经网络计算方法、设备、处理器及计算机可读存储介质,神经网络的连接权重为2的幂次方。通过移位运算对神经网络进行计算,能够提高神经网络计算速度。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例提供的神经网络计算方法的第一种流程示意图;

图2示出了本发明实施例提供的处理器的结构示意图;

图3示出了本发明实施例提供的神经网络计算方法的第二种流程示意图;

图4示出了能够实现根据本发明实施例的神经网络的训练方法的计算设备的示例性硬件架构的结构图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

由于现有的dnn层数较深,连接权重较多,并且连接权重通常是32位单精度浮点数或64位双精度浮点数,使得dnn模型占用存储空间较多,并且在深度神经网络计算时,需要调用浮点乘法器进行大量的浮点数乘法运算,深度神经网络计算速度较慢。基于此,本发明实施例提供了一种神经网络计算方法、设备、处理器及计算机可读存储介质。

本发明实施例提供的处理器可以是基于x86架构的处理器,也可以是基于高级精简指令集处理器(arm)架构的处理器,还可以是基于无内部互锁流水级的微处理器(mips)架构的处理器,当然还可以是基于专用架构的处理器,比如:基于张量处理单元(tensorprocessingunit,tpu)架构的处理器。

目前,处理器在进行神经网络计算时,需要进行大量的乘法运算。针对一次乘法运算,处理器需要调用乘法器,将乘法运算的两个操作数输入进乘法器中,乘法器输出结果。尤其当调用的乘法器为浮点乘法器时,浮点乘法器需要对两个操作数的阶码进行求和、对两个操作数的尾数进行乘法运算,然后对结果进行规格化和舍入处理才能得到最终结果。

而处理器在进行移位运算时,仅需要将操作数输入进行移位寄存器,然后对移位寄存器施加移位脉冲信号,即可通过移位寄存器获得结果。

由上可以看出,移位运算相较于乘法运算,能较快的得到计算结果。因此,本发明实施例提供一种神经网络计算方法,将神经网络中的乘法运算替换为移位运算,通过移位运算来进行神经网络计算,以提高神经网络计算速度。

示例性的,假设现有一个神经网络,其连接权重为2的幂次方。

那么对于该神经网络,处理器在进行神经网络计算时,可以先获取到该神经网络计算规则,其中,该神经网络计算规则规定了操作数之间是乘法运算还是加法运算。对于神经网络计算规则中的乘法运算,将乘法运算对应的源操作数输入移位寄存器,依据乘法运算对应的连接权重进行移位操作,移位寄存器输出目标结果操作数,作为乘法运算的结果。

在本发明的一个实施例中,乘法运算对应的连接权重为2的n次方,n为大于零的整数。可以将乘法运算对应的源操作数输入移位寄存器,向左移位n次;还可以将乘法运算对应的源操作数输入左移位寄存器,移位n次。

在本发明的另一个实施例中,乘法运算对应的连接权重为2的负n次方,n为大于零的整数。可以将乘法运算对应的源操作数输入移位寄存器,向右移位n次;还可以将乘法运算对应的源操作数输入右移位寄存器,移位n次。

为了使源操作数能够准确移位,本发明实施例的源操作数的位数不大于移位寄存器可寄存的数值的位数。比如:移位寄存器可寄存的数值的位数为8,即该移位寄存器为8位移位寄存器,源操作数的位数不大于8。

基于上述的过程,本发明实施例提供的神经网络计算方法可以归纳为图1所示的步骤。图1示出了本发明实施例提供的神经网络计算方法的第一种流程示意图。其可以包括:

s101:处理器接收神经网络计算指令。

其中,神经网络计算指令包括神经网络计算规则和神经网络的连接权重,连接权重为2的幂次方。

s102:针对神经网络计算规则中的乘法运算,将乘法运算对应的源操作数输入移位寄存器,依据乘法运算对应的连接权重进行移位操作,移位寄存器输出目标结果操作数,作为乘法运算的结果。

根据本发明实施例提供的神经网络计算方法,将神经网络中的乘法运算替换为移位运算,通过移位运算来进行神经网络计算,能够提高神经网络计算速度。

需要说明的是,本发明实施例中的处理器可以是通用型处理器,也可以是定制型处理器。其中,定制型处理器是指专用于神经网络计算且带有移位寄存器而不带有乘法运算器的处理器,即处理器是不包括乘法运算单元的处理器。

假设神经网络的连接权重分别为-4、-2、-1、0、1、2、4。则上述连接权重均可用4位有符号定点整数表示。相较于32位单精度浮点数形式的连接权重占用的存储空间,实现了8倍存储空间的压缩。相较于64位双精度浮点数形式的连接权重占用的存储空间,实现了16倍存储空间的压缩。由于本发明实施例提供的神经网络的连接权重占用存储空间较小,使得整个神经网络的模型也较小。在一个较佳方案中,根据本发明实施例的神经网络模型大小在1mb(megabyte)之内。该神经网络可以被下载到移动终端设备中,移动终端设备对神经网络进行计算。移动终端设备无需将数据上传到云端服务器中,在本地即可对数据进行实时处理,减少了数据处理延迟以及云端服务器的计算压力。

与上述的方法实施例相对应,本发明实施例还提供一种处理器,如图2所示。图2示出了本发明实施例提供的处理器的结构示意图。可以包括:取值单元201和移位寄存器202。

取值单元201,用于接收神经网络计算指令,神经网络计算指令包括神经网络计算规则和神经网络的连接权重,其中,连接权重为2的幂次方。其中,取值单元也称为指令读取器(instructionfetcher),它是每个处理器都有的一个部件。

移位寄存器202,用于针对神经网络计算规则中的乘法运算,接收乘法运算对应的源操作数;依据乘法运算对应的连接权重进行移位操作;输出目标结果操作数,作为乘法运算的结果。

当乘法运算对应的连接权重为2的n次方,n为大于零的整数时,移位寄存器202,将源操作数向左移位n次。

当乘法运算对应的连接权重为2的负n次方,n为大于零的整数时,移位寄存器202,将源操作数向右移位n次。

本发明实施例提供的处理器可以是基于x86架构的处理器,也可以是基于arm架构的处理器,还可以是mips架构的处理器,当然还可以是基于专用架构的处理器,比如:基于tpu架构的处理器。

为了使源操作数能够准确移位,本发明实施例的源操作数的位数不大于移位寄存器可寄存的数值的位数。比如:移位寄存器可寄存的数值的位数为8,即该移位寄存器为8位移位寄存器,源操作数的位数不大于8。

本发明实施例提供的处理器可以是通用型处理器,也可以是定制型处理器。其中,定制型处理器是指专用于神经网络计算且带有移位寄存器而不带有乘法运算器的处理器,即处理器是不包括乘法运算单元的处理器。

本发明实施例还提供一种计算机可读存储介质,该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本发明实施例提供的神经网络计算方法。

本发明实施例还提供一种神经网络计算方法,如图3所示。图3示出了本发明实施例提供的神经网络计算方法的第二种流程示意图,可以包括:

s301:接收神经网络计算指令。

其中,神经网络计算指令包括神经网络计算规则和神经网络的连接权重,连接权重为2的幂次方。

s302:针对神经网络计算规则中的乘法运算,依据乘法运算对应的连接权重对乘法运算对应的源操作数进行移位操作。

s303:将移位操作的结果操作数作为乘法运算的结果。

在本发明的一个实施例中,乘法运算对应的连接权重为2的n次方,n为大于零的整数。可以将源操作数向左移位n次。

在本发明的另一个实施例中,乘法运算对应的连接权重为2的负n次方,n为大于零的整数。可以将源操作数向右移位n次。

图4示出了能够实现根据本发明实施例的神经网络计算方法的计算设备的示例性硬件架构的结构图。如图4所示,计算设备400包括输入设备401、输入接口402、中央处理器403、存储器404、输出接口405、以及输出设备406。其中,输入接口402、中央处理器403、存储器404、以及输出接口405通过总线410相互连接,输入设备401和输出设备406分别通过输入接口402和输出接口405与总线410连接,进而与计算设备400的其他组件连接。

具体地,输入设备401接收来自外部的输入信息,并通过输入接口402将输入信息传送到中央处理器403;中央处理器403基于存储器404中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器404中,然后通过输出接口405将输出信息传送到输出设备406;输出设备406将输出信息输出到计算设备400的外部供用户使用。

也就是说,图4所示的计算设备也可以被实现为神经网络计算设备,该神经网络计算设备可以包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现图3描述的神经网络计算方法。这里,处理器可以与神经网络通信,从而基于来自神经网络的相关信息执行计算机可执行指令,从而实现图3描述的神经网络计算方法。

本发明实施例还提供一种计算机可读存储介质,该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本发明实施例提供的神经网络计算方法。

由于本发明实施例提供的连接权重为2的幂次方,即本发明实施例所提供的神经网络为离散神经网络。目前针对离散神经网络主要是利用启发式算法(heuristicalgorithm)进行训练,但是利用heuristicalgorithm对神经网络进行训练,速度较慢。基于此,本发明实施例提供一种神经网络训练方法将离散神经网络的训练问题抽象成一个非凸离散约束优化问题,基于非凸离散约束优化问题对神经网络的连接权重进行求解。其中,约束优化是寻求具有约束条件的线性或非线性规划问题解的数值算法。

针对神经网络的训练,可以依据神经网络的连接权重,构建针对神经网络带有约束条件的问题模型;基于问题模型以及约束最优化问题的求解算法,求解神经网络各层间的连接权重。

由于不同的约束最优化问题的求解算法的使用场景不同,即有的求解算法仅适用于求解不等式约束问题,有的求解算法仅适用于求解等式约束问题,有的求解算法即适用于求解不等于约束问题又适用于求解等式约束问题。基于此,本发明实施例在基于约束最优化问题的求解算法,求解神经网络各层间的连接权重之前,可以根据约束条件确定使用何种求解算法。

在本发明的一个特定实施例中,可以利用交替方向乘子法(alternatingdirectionmethodofmultipliers,admm)求解神经网络各层间的连接权重。具体过程可以包括以下步骤,

步骤1:依据神经网络的连接权重,构建针对神经网络带有约束条件的问题模型。

步骤2:基于指示函数和一致性约束,对问题模型进行等价变换。

步骤3:利用admm,对等价变换后的问题模型进行分解。

步骤4:针对分解后得到的每一个子问题,求解神经网络的连接权重。

示例性的,假设本发明实施例的神经网络表示为:f(w),其中,w={w1,w2,...,wd},wi是神经网络的第i个连接权重。

神经网络f(w)的目标训练模型为:

在本发明的一个实施例中,假设神经网络为三元神经网络,其连接权重被约束为-1、0和1。那么三元神经网络训练可以归结为如下约束优化问题:

s.t.w∈c={-1,0,+1}d

其中,s.t.w∈c={-1,0,+1}d表示连接权重w的取值被约束在连接权重空间c中,其中,连接权重空间c包含-1、0和+1,也即连接权重w只能取值为-1、0或者+1。

本发明实施例的指示函数表示如下:

指示函数ic(x)是定义在集合x上的函数,表示其中有哪些元素属于子集c。

本发明实施例在此引入新的变量g,设置一致性约束条件w=g,结合以上的指示函数ic(x),本发明实施例的上述约束优化问题等价于:

minw,gf(w)+ic(g)(2)

s.t.w=g(3)

其对应的增广拉格朗日乘子表示为:

其中,λ为拉格朗日乘数,ρ为正则项系数。

对于公式(2)和公式(3),指示函数作用在g上,原始的连接权重w此时不具有离散约束。通过指示函数ic(x)和一致性约束条件w=g,将连接权重和离散约束解耦合。

基于admm,上述约束优化问题被分解为如下三个子问题迭代求解:

wk+1:=argminwlρ(w,gk,λk)(5)

gk+1:=argminglρ(wk+1,g,λk)(6)

λk+1:=λk+ρ(wk+1-gk+1)(7)

其中,公式(5)、公式(6)和公式(7)中的k为迭代轮数。

在一个实施例的计算中,对公式(5)、公式(6)和公式(7)进行迭代求解。在一次迭代循环中,执行如下过程:

先针对公式(5)对连接权重w进行无约束求解,基于第k轮迭代中的g和λ(即,gk,λk),无约束求解第k+1轮中的w(即wk+1);

随后,针对公式(6)对带约束条件的g进行求解,基于第k轮迭代中的λ(即λk)以及公式(5)求解得到的w(即wk+1),带约束求解第k+1轮中的g(即gk+1);

随后,针对公式(7)对λ进行更新,基于第k轮迭代中的λ(即λk)、公式(5)求解得到的w(即wk+1)以及公式(6)求解得到的g(即gk+1),求解并更新第k+1轮中的λ(即λk+1)。

最终求解得到的g即为连接权重。

在本发明的一个实施例中,求解得到的连接权重是2的幂次方,由此可以便于以上描述中提及的处理器移位操作,提高处理器操作速度。在本发明的另一个实施例中,求解得到的连接权重可以是任意实数。

需要说明的是,上述公式求解很容易,因此能够提高神经网络训练速度。

需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。

以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。

还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。

以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

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