神经网络训练的方法、装置、计算机系统和可移动设备与流程

文档序号:15362175发布日期:2018-09-05 00:56阅读:164来源:国知局
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。本发明涉及信息
技术领域
,并且更具体地,涉及一种神经网络训练的方法、装置、计算机系统和可移动设备。
背景技术
:传统的神经网络中权重值以及神经元的输出都是实数,一个神经网络前向传播时甚至需要上g(10^9)次的乘加运算。这就使得虽然大规模的神经网络在如目标检测、人脸识别、图像分割、目标跟踪、语义分割、语音识别等智能功能上能够有很好的表现,也很难将神经网络用在资源受限又要求低功耗的平台(比如无人机、自动驾驶、机器人、智能可穿戴设备、智能家电、智能手机等)上。然而,高级计算平台,又因为体积庞大、功耗巨大、重量巨大等原因无法大规模用在产品当中。与之相对地,上述资源受限平台对上述各种智能功能的需求越来越大。因此,如何降低神经网络的资源需求,成为一个亟待解决的技术问题。技术实现要素:本发明实施例提供了一种神经网络训练的方法、装置、计算机系统和可移动设备,能够降低神经网络的资源需求。第一方面,提供了一种神经网络训练的方法,包括:获取神经网络的处理单元的第一权重值集合,其中,该处理单元为该神经网络的卷积核或神经元;对该第一权重值集合中的每个权重值进行三值化处理,得到第二权重值集合;根据该第二权重值集合和该处理单元的输入值集合,生成该处理单元的输出值,其中,该神经网络的后一层的处理单元的输入值集合取自前一层的处理单元的输出值;根据误差代价函数,训练该神经网络的每个该处理单元的该第一权重值集合中的权重值,其中,该误差代价函数包括误差项和结构性稀疏项,该误差项关联该神经网络最后一层的输出与期望输出之间的误差,该结构性稀疏项使得该神经网络的部分该处理单元的该第一权重值集合中的所有权重值为零。第二方面,提供了一种神经网络训练的装置,包括:获取模块,用于获取神经网络的处理单元的第一权重值集合,其中,该处理单元为该神经网络的卷积核或神经元;三值化处理模块,用于对该第一权重值集合中的每个权重值进行三值化处理,得到第二权重值集合;运算模块,用于根据该第二权重值集合和该处理单元的输入值集合,生成该处理单元的输出值,其中,该神经网络的后一层的处理单元的输入值集合取自前一层的处理单元的输出值;训练模块,用于根据误差代价函数训练该神经网络的每个该处理单元的该第一权重值集合中的权重值,其中,该误差代价函数包括误差项和结构性稀疏项,该误差项关联该神经网络最后一层的输出与期望输出之间的误差,该结构性稀疏项使得该神经网络的部分该处理单元的该第一权重值集合中的所有权重值为零。。第三方面,提供了一种计算机系统,包括:存储器,用于存储计算机可执行指令;处理器,用于访问所述存储器,并执行所述计算机可执行指令,以进行上述第一方面的方法中的操作。第四方面,提供了一种移动设备,包括:上述第二方面的神经网络训练的装置;或者,上述第三方面的的计算机系统。第五方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述第一或第二方面的方法。本发明实施例的技术方案,通过将神经网络的权重值三值化和激活值二值化,以及在误差代价函数中引入结构性稀疏项,可以在神经网络的性能减少地非常小的前提下,大幅度降低神经网络的存储量和计算量,从而能够降低神经网络的资源需求。附图说明图1是神经网络的示意图。图2是应用本发明实施例的技术方案的架构图。图3是本发明实施例的可移动设备的示意性架构图。图4是本发明实施例的神经网络训练的方法的示意性流程图。图5是本发明实施例的三值化函数的图像。图6是本发明实施例的二值化函数的图像。图7是本发明实施例的激活函数的图像。图8是本发明实施例的神经网络训练的装置的示意性框图。图9是本发明实施例的计算机系统的示意性框图。具体实施方式下面将结合附图,对本发明实施例中的技术方案进行描述。应理解,本文中的具体的例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。还应理解,本发明实施例中的公式只是一种示例,而非限制本发明实施例的范围,各公式可以进行变形,这些变形也应属于本发明保护的范围。还应理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。还应理解,本说明书中描述的各种实施方式,既可以单独实施,也可以组合实施,本发明实施例对此并不限定。本发明实施例的技术方案可以应用于各种神经网络中。图1示出了神经网络的示意图。如图1所示,神经网络可以包括输入层,一个或多个隐含层,输出层。神经网络中的隐含层可以全为全连接层,也可以包括卷积层和全连接层,后者称为卷积神经网络。在本发明实施例中,神经网络的处理单元可以为卷积核或神经元。也就是说,对于卷积层,处理单元为卷积核;对于全连接层,处理单元为神经元。为了使得神经网络能够运用在资源受限的平台上,本发明实施例提供了一种技术方案,通过将神经网络的权重值三值化和响应值(激活值)二值化,大幅度降低神经网络的存储量和计算量,另外,通过在误差代价函数中引入结构性稀疏项,可以使得一些处理单元的权重值为零,从而进一步降低存储量和计算量。应理解,本发明实施例的技术方案既可以应用于资源受限的平台,也可以应用于其他计算平台,本发明实施例对此并不限定。图2是应用本发明实施例的技术方案的架构图。图2中系统200可以为各种应用神经网络的平台。如图2所示,系统200可以接收输入数据202,对输入数据202进行处理,得到输出数据208。在一些实施例中,系统200中的部件可以由一个或多个处理器实现,该处理器可以是计算设备中的处理器,也可以是可移动设备(例如无人机)中的处理器。该处理器可以为任意种类的处理器,本发明实施例对此不做限定。在一些实施例中,该处理器可以为由处理电路组成的芯片。在一些实施例中,系统200中还可以包括一个或多个存储器。该存储器可用于存储指令和数据,例如,实现本发明实施例的技术方案的计算机可执行指令,以及数据等。该存储器可以为任意种类的存储器,本发明实施例对此也不做限定。在一些设计中,上述资源受限的平台可以为可移动设备或者智能设备。该可移动设备也可以称为移动设备。该可移动设备可以是无人机、无人驾驶船、自动驾驶车辆或机器人等;该智能设备可以为智能可穿戴设备、智能家电、智能手机等,但本发明实施例对此并不限定。图3是本发明实施例的可移动设备300的示意性架构图。如图3所示,可移动设备300可以包括动力系统310、控制系统320、传感系统330和处理系统340。动力系统310用于为该可移动设备300提供动力。以无人机为例,无人机的动力系统可以包括电子调速器(简称为电调)、螺旋桨以及与螺旋桨相对应的电机。电机连接在电子调速器与螺旋桨之间,电机和螺旋桨设置在对应的机臂上;电子调速器用于接收控制系统产生的驱动信号,并根据驱动信号提供驱动电流给电机,以控制电机的转速。电机用于驱动螺旋桨旋转,从而为无人机的飞行提供动力。传感系统330可以用于测量可移动设备300的姿态信息,即可移动设备300在空间的位置信息和状态信息,例如,三维位置、三维角度、三维速度、三维加速度和三维角速度等。传感系统330例如可以包括陀螺仪、电子罗盘、惯性测量单元(inertialmeasurementunit,imu)、视觉传感器、全球定位系统(globalpositioningsystem,gps)、气压计、空速计等传感器中的至少一种。传感系统330还可用于采集图像,即传感系统330包括用于采集图像的传感器,例如相机等。控制系统320用于控制可移动设备300的移动。控制系统320可以按照预先设置的程序指令对可移动设备300进行控制。例如,控制系统320可以根据传感系统330测量的可移动设备300的姿态信息控制可移动设备300的移动。控制系统320也可以根据来自遥控器的控制信号对可移动设备300进行控制。例如,对于无人机,控制系统320可以为飞行控制系统(飞控),或者为飞控中的控制电路。处理系统340可以处理传感系统330采集的图像。例如,处理系统340可以为图像信号处理(imagesignalprocessing,isp)类芯片。处理系统340可以为图2中的系统200,或者,处理系统340可以包括图2中的系统200。应理解,上述对于可移动设备300的各组成部件的划分和命名仅仅是示例性的,并不应理解为对本发明实施例的限制。还应理解,可移动设备300还可以包括图3中未示出的其他部件,本发明实施例对此并不限定。图4示出了本发明一个实施例的神经网络训练的方法400的示意性流程图。该方法400可以由图2所示的系统200执行;或者由图3所示的可移动设备300执行。具体地,在由可移动设备300执行时,可以由图3中的处理系统340执行。410,获取神经网络的处理单元的第一权重值集合,其中,该处理单元为该神经网络的卷积核或神经元。第一权重值集合中的权重值为待训练的权重值。也就是说,训练神经网络的过程为训练神经网络的每个处理单元的第一权重值集合中的权重值的过程。神经网络的处理单元可以为卷积核或神经元。对于卷积层,处理单元为卷积核;对于全连接层,处理单元为神经元。420,对该第一权重值集合中的每个权重值进行三值化处理,得到第二权重值集合。在本发明实施例中,为了减少计算量和存储量,对权重值进行三值化处理。即,将权重值按照其所处的取值范围处理为三个值中的一个。例如,该三个值可以为{-1,0,+1}。可选地,若第一权重值在预设范围内,则将该第一权重值三值化处理为零,其中,该第一权重值表示该第一权重值集合中的权重值;若该第一权重值在该预设范围之上,则将该第一权重值三值化处理为1;若该第一权重值在该预设范围之下,则将该第一权重值三值化处理为-1。例如,可以将该第一权重值输入以下函数(1)得到三值化后的权重值。其中,w表示该第一权重值,θ为预设值。该预设值θ可以为较小的正实数,例如,可以为0.3。上述tθ(w)函数图像可以如图5所示。第一权重值集合中的权重值三值化处理后的权重值,形成第二权重值集合。权重值三值化处理后,位数比较少,因此能够减少数据的存储量,而且还能降低后续运算的计算量。430,根据该第二权重值集合和该处理单元的输入值集合,生成该处理单元的输出值,其中,该神经网络的后一层的处理单元的输入值集合取自前一层的处理单元的输出值。在本发明实施例中,根据该第二权重值集合(即三值化处理后的权重值的集合)和输入值集合,生成输出值。处理单元的输入值集合取自前一层的处理单元的输出值。例如,对于全连接层的神经元,其输入值集合为前一层的所有处理单元的输出值的集合;对于卷积层的卷积核,其输入值集合为该卷积核对应的前一层的输出值的集合。可选地,处理单元的输出值为二值化处理后的值。在一个实施例中,可以根据该第二权重值集合和该处理单元的输入值集合,得到响应值;对该响应值进行二值化处理,得到该处理单元输出值。具体而言,对于每个处理单元,可以对该第二权重值集合对应的向量和该处理单元的输入值集合对应的向量做内积,得到该响应值;再对该响应值进行二值化处理,得到该处理单元输出值。可选地,在对该响应值进行二值化处理之前,还可以先对该响应值进行批规范化(batchnormalization)处理,以防止响应值变化范围不可控而影响训练时的收敛。可选地,该二值化处理可以为将该响应值处理为1和0中的一个值。具体地,若该响应值大于预定值,则将该处理单元输出值处理为1;若该响应值不大于该预定值,则将该处理单元输出值处理为0。例如,可以按照以下函数(2)对响应值进行二值化处理,得到处理单元输出值。其中,r表示响应值,b(r)表示处理单元输出值。上述b(r)函数图像可以如图6所示。在采用二值化处理时,上述二值化函数可作为激活函数,其输出为激活值。应理解,也可以同时采用激活函数和二值化函数,也就是说,可以先将响应值输入激活函数得到激活值,再将激活值输入二值化函数,得到处理单元输出值,该方式也作为本发明的一个实施例。440,根据误差代价函数,训练该神经网络的每个该处理单元的该第一权重值集合中的权重值,其中,该误差代价函数包括误差项和结构性稀疏项,该误差项关联该神经网络最后一层的输出与期望输出之间的误差,该结构性稀疏项使得该神经网络的部分处理单元的该第一权重值集合中的所有权重值为零。训练神经网络的过程为训练神经网络的每个处理单元的第一权重值集合中的权重值的过程。在本发明实施例中,可选地,可以调整该神经网络的每个处理单元的该第一权重值集合中的权重值,以使上述误差代价函数的代价达到预定代价或最小化,其中,在训练过程中,每个处理单元的输出值可以按照前述方式得到。在本发明实施例中,误差代价函数除了包括误差项外,还包括结构性稀疏项。该误差项关联该神经网络最后一层的输出与期望输出之间的误差,即训练过程中神经网络的输出与样本对应的真实值之间的误差。该结构性稀疏项可以使得该神经网络的部分处理单元的该第一权重值集合中的所有权重值为零。例如,该误差代价函数可以为以下函数(3),其中,w表示第一权重值集合对应的向量,c表示误差代价函数,e表示误差项,f表示frobenius范数,l表示神经网络的层数,kl表示神经网络的第l层的卷积核数或神经元数,λ表示正则化系数。函数(3)中最右边一项为结构性稀疏项。在该项中,将每个卷积核或神经元的范数都加起来作为代价的一部分。对于一个卷积核或神经元,其所有权重值都是零才没有这个代价。这样,在训练过程中,神经网络就会出现结构性稀疏的特性,即某些处理单元的所有权重值为零。因此,这些处理单元就可以去掉,从而进一步降低存储量和计算量。可选地,在训练过程中,可以先确定该误差代价函数对第二权重值的导数;再根据该导数调整第一权重值,其中,该第一权重值表示该第一权重值集合中的权重值,该第二权重值表示该第一权重值在当前调整前的三值化处理后的值。例如,可以根据以下公式(4)调整该第一权重值,其中,w表示第一权重值,wt表示第二权重值,c表示误差代价函数,η表示学习速率。由于像二值化函数这种阶跃函数的导数除一点不可导外都为零,这样无法求导,因此,可以根据无二值化处理的激活函数确定上述导数。也就是说,在训练过程中,仅在前向传播时用二值化函数,而在反向传播求导时还按照二值化之前的网络结构进行求导。可选地,当反向传播经过b(r)函数时,可以近似用图7中实线所示函数进行求导。可选地,当反向传播经过tθ(w)函数时,可以按照y=x函数进行求导,也就是说,在链式求导过程中忽略tθ(w)函数。这样,可以在近似意义上使训练出的神经网络也能表现出不错的性能,节约了大量的存储量和计算量,而这种近似带来的损失也能够通过稍微扩大网络规模来弥补。这种被二值化的网络在前向传播时的处理就全部变成了位操作,可以在专用硬件上大规模集成,提高效率,减小功耗。本发明实施例的技术方案,通过将神经网络的权重值三值化和激活值二值化,以及在误差代价函数中引入结构性稀疏项,可以在神经网络的性能减少地非常小的前提下,大幅度降低神经网络的存储量和计算量,从而能够降低神经网络的资源需求。可选地,在权重值三值化和激活值二值化的情况下,神经网络中的运算可以通过位操作实现。对于权重值w∈{-1,0,+1},激活值a∈{0,1},首先用两位二进制数表示w,用一位二进制数表示a。w为-1时表示为11,w为0时表示为00,w为+1表示为01。a为1时表示为1,a为零时表示为0。以下是w与a相乘的真值表。表1w=11w=01w=00a=0000000a=1110100神经网络中的运算大部分是向量的数量积,也叫点积、内积,即两个向量对应位置相乘然后再各个位置相加。对于要做数量积的两个向量a和w,a存激活值(一位的),w存权重值(两位的),即一个寄存器a(n比特)能存放n个a(激活值),两个寄存器w1和w0(都是n比特)能够存储n个w(权重值),w1存权重值高位,w0存权重值低位。计算激活值和权重值的数量积就可以用下列方法,其中,c表示a向量和w向量对应位置相乘得到的结果向量,&表示“按位与”。(低位寄存器)c0=a&w0,(高位寄存器)c1=a&w1。然后把c向量中每个数求和,也可以用位操作来实现。sum=bitcount(c0xorc1)-bitcount(c0&c1)。其中,xor表示“按位异或”,bitcount表示数一个寄存器中有多少个1,绝大多数计算平台都支持bitcount操作。sum所得为c向量所有元素的和。这样,在7个计算周期内就完成了n次乘加操作。如果硬件同时并行操作的位数越多,这种方法就越有优势。上文详细描述了本发明实施例的神经网络训练的方法,下面将描述本发明实施例的神经网络训练的装置、计算机系统和可移动设备。应理解,本发明实施例的神经网络训练的装置、计算机系统和可移动设备可以执行前述本发明实施例的各种方法,即以下各种产品的具体工作过程,可以参考前述方法实施例中的对应过程。图8示出了本发明实施例的神经网络训练的装置800的示意性框图。如图8所示,该装置800可以包括:获取模块810,用于获取神经网络的处理单元的第一权重值集合,其中,该处理单元为该神经网络的卷积核或神经元;三值化处理模块820,用于对该第一权重值集合中的每个权重值进行三值化处理,得到第二权重值集合;运算模块830,用于根据该第二权重值集合和该处理单元的输入值集合,生成该处理单元的输出值,其中,该神经网络的后一层的处理单元的输入值集合取自前一层的处理单元的输出值;训练模块840,用于根据误差代价函数训练该神经网络的每个该处理单元的该第一权重值集合中的权重值,其中,该误差代价函数包括误差项和结构性稀疏项,该误差项关联该神经网络最后一层的输出与期望输出之间的误差,该结构性稀疏项使得该神经网络的部分该处理单元的该第一权重值集合中的所有权重值为零。可选地,该三值化处理模块820用于:若第一权重值在预设范围内,则将该第一权重值三值化处理为零,其中,该第一权重值表示该第一权重值集合中的权重值;若该第一权重值在该预设范围之上,则将该第一权重值三值化处理为1;若该第一权重值在该预设范围之下,则将该第一权重值三值化处理为-1。可选地,该运算模块830用于:根据该第二权重值集合和该处理单元的输入值集合,得到响应值;对该响应值进行二值化处理,得到该处理单元输出值。可选地,该运算模块830用于:对该第二权重值集合对应的向量和该处理单元的输入值集合对应的向量做内积,得到该响应值。可选地,该运算模块830用于在对该响应值进行二值化处理之前,对该响应值进行批规范化处理。可选地,该运算模块830用于:若该响应值大于预定值,则将该处理单元输出值处理为1;若该响应值不大于该预定值,则将该处理单元输出值处理为0。可选地,该训练模块840用于:调整该神经网络的每个该处理单元的该第一权重值集合中的权重值,以使该误差代价函数的代价达到预定代价或最小化。可选地,该训练模块840用于:确定该误差代价函数对第二权重值的导数;根据该导数调整第一权重值,其中,该第一权重值表示该第一权重值集合中的权重值,该第二权重值表示该第一权重值在当前调整前的三值化处理后的值。可选地,该训练模块840用于:根据无二值化处理的激活函数确定该导数。应理解,上述本发明实施例的神经网络训练的装置可以是芯片,其具体可以由电路实现,但本发明实施例对具体的实现形式不做限定。本发明实施例还提供了一种处理器,该处理器可以包括上述本发明各种实施例的神经网络训练的装置。图9示出了本发明实施例的计算机系统900的示意性框图。如图9所示,该计算机系统900可以包括处理器910和存储器920。应理解,该计算机系统900还可以包括其他计算机系统中通常所包括的部件,例如,输入输出设备、通信接口等,本发明实施例对此并不限定。存储器920用于存储计算机可执行指令。存储器920可以是各种种类的存储器,例如可以包括高速随机存取存储器(randomaccessmemory,ram),还可以包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器,本发明实施例对此并不限定。处理器90用于访问该存储器920,并执行该计算机可执行指令,以进行上述本发明各种实施例的神经网络训练的方法中的操作。处理器910可以包括微处理器,现场可编程门阵列(field-programmablegatearray,fpga),中央处理器(centralprocessingunit,cpu),图形处理器(graphicsprocessingunit,gpu)等,本发明实施例对此并不限定。本发明实施例还提供了一种可移动设备,该移动设备可以包括上述本发明各种实施例的神经网络训练的装置、处理器或者计算机系统。本发明实施例的神经网络训练的装置、计算机系统和可移动设备可对应于本发明实施例的神经网络训练的方法的执行主体,并且神经网络训练的装置、计算机系统和可移动设备中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。本发明实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述本发明实施例的神经网络训练的方法。应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1