本发明涉及神经网络技术领域,特别是涉及神经网络权重离散化方法和系统。
背景技术:
在过去的几年中,大数据集、不同的学习模型和gpu(generalpurposegraphicprocessingunits通用图形处理单元)使得深度神经网络在计算机视觉、语音识别、自然语言处理和人机围棋对弈等人工智能领域取得了一个又一个的成果。然而,在这些引人注目的成果的背后也付出了计算它们所需的极大的硬件资源开销、训练时间开销和功耗开销。因此,基于gpu的深度学习系统很难嵌入到便携设备中。而很多功耗效用较高的方案往往需要在性能上有较大的损失。因此,需要在性能和计算复杂度之间加以权衡。
传统的解决方案,包括剪枝和预训练神经网络,可以用于减少参数个数,从而减少在推理阶段的运算复杂度。设计紧凑的层或者稀疏连接也可以简化连接。也有一些其它的努力,包括量化参数,并将权重和激活函数的实数乘法运算通过整数移位替代,但都造成了一定程度的神经网络整体性能的下降。
另外,针对二进制深度神经网络的研究,对神经网络的性能和开销也进行了权衡,例如在进行前向和后向计算时,通过约束权重(以及激活函数)到二进制数值{-1,1},浮点数乘法和加法将被简化成一些简单的逻辑运算,例如同或逻辑以及比特计数。在很多数据集上已经实现了近似最佳的分类精度。然而,这些技术都不可避免的需要为梯度下降方法保存全精度权重,导致极大的内存开销和浮点运算,以及额外的外存访问功耗。另外,很多新型便携设备基于多值内存器件,支持存储多个状态值,使得二进制算法无法充分利用器件的能力。因此,如何高效地在多值离散权重空间进行深度神经网络训练,成为神经网络研究领域亟待解决的问题。
技术实现要素:
基于此,有必要针对如何兼顾神经网络的性能和计算复杂度的问题,提供一种神经网络权重离散化方法和系统,所述方法包括:
获取权重取值范围和离散权重状态个数,所述权重取值范围是指由当前时间步最大权重值和当前时间步最小权重值组成的离散权重取值范围,所述离散权重状态个数是指离散权重的状态的个数;
获取上一个时间步权重状态和当前时间步权重增量;
根据所述当前时间步权重增量,利用方向函数,获取状态转移方向;
根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
在其中一个实施例中,所述获取上一个时间步权重状态和当前时间步权重增量,包括:
随机初始化权重状态;
根据所述随机初始化权重状态和前向输出误差进行计算,确定上一个时间步权重状态;
根据所述上一个时间步权重状态利用梯度下降算法获取当前时间步权重增量。
在其中一个实施例中,在所述根据所述当前时间步权重增量,利用方向函数,获取状态转移方向的步骤之后,所述方法还包括:
根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的整步长;
根据所述整步长确定状态转移距离;
则所述根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态,还包括:
根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
在其中一个实施例中,在利用分解函数计算所述当前时间步的权重增量的整步长的步骤之后,所述方法还包括:
根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的余数;
根据所述余数、所述权重取值范围和所述离散权重状态个数,确定状态转移概率;
则所述根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态,还包括:
根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述状态转移概率、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
在其中一个实施例中,所述根据所述余数、所述权重取值范围和所述离散权重状态个数,确定状态转移概率,包括:
根据所述当前时间步的权重增量的余数和离散相邻状态距离值,获取跃迁概率算子,所述离散相邻状态距离值根据所述权重取值范围和所述离散权重状态个数确定;
根据所述跃迁概率算子和所述余数,获取状态转移概率函数;
根据所述状态转移概率函数和二值化采样法,获取状态转移概率。
本发明所提供的神经网络权重离散化方法,通过给定一个离散态权重空间,在获取到的上一个时间步权重状态和当前时间步权重增量的基础上,计算在虚拟连续态空间中当前时间步权重增量,获取状态转移的方向、最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向,获取当前时间步权重状态。本发明所提供的权重离散化的计算方法,能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、实现离散态空间的状态直接跃迁,确保权重值始终约束在同一个离散态空间中,而不需要存储额外的虚拟连续态全精度隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。
在其中一个实施例中,通过随机初始化权重状态,给定权重离散化的范围后,通过给定的前向输出误差以及梯度下降算法,获取上一个时间步的权重状态和当前时间步权重增量,保证离散后的权重状态的精度。
在其中一个实施例中,在获取状态转移方向的步骤之后,进一步通过分解函数计算当前时间步的权重增量的整步长,并根据所述整步长确定状态转移距离,最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、转移距离实现离散态空间的状态直接跃迁,并比仅考虑方向转移范围更大,确保权重值始终约束在同一个离散态空间中,而不需要存储额外的虚拟连续态全精度隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。
在其中一个实施例中,进一步通过解析所述当前时间步权重增量函数,计算当前时间步权重增量的余数;根据当前时间步权重增量余数,获取状态转移概率值。通过得出的状态转移方向、状态转移距离以及状态转移概率值分别决定离散权重值的跳转方向、状态转移距离和状态转移概率值,使得计算得出的离散权重,即符合离散化前的连续态权重值密切相关,又能通过离散态直接跃迁从而满足始终离散化的需求,从而在保证了神经网络的计算精度的同时,大大减小虚拟连续态隐含权重的存储,并降低了计算复杂度。
在其中一个实施例中,根据所述状态转移概率函数和所述当前时间步权重增量的余数,计算状态转移概率向量;根据所述状态转移概率向量和二值化采样法,所获取所述状态转移概率,与离散前的当前时间步权重增量余数密切相关,使得神经网络离散后的权重状态分布在概率意义上更加精确地逼近原始的连续态权重值,从而在保证了神经网络的计算精度的同时,完成了离散化的过程。
本发明还提供一种神经网络权重离散化系统,包括:
权重空间构建模块,用于获取权重取值范围和离散权重状态个数,所述权重取值范围是指由当前时间步最大权重值和当前时间步最小权重值组成的离散权重取值范围,所述离散权重状态个数是指离散权重的状态的个数;
权重值和权重增量获取模块,用于获取上一个时间步权重状态和当前时间步权重增量;
状态转移方向获取模块,用于根据所述当前时间步权重增量,利用方向函数,获取状态转移方向;
当前时间步权重状态获取模块,用于根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
在其中一个实施例中,所述权重值和权重增量获取模块,包括:
权重初始化单元,用于随机初始化权重状态;
上一个时间步权重状态确定单元,用于根据所述随机初始化权重状态和前向输出误差进行计算,确定上一个时间步权重状态;
当前时间步权重增量获取单元,用于根据所述上一个时间步权重状态利用梯度下降算法获取当前时间步权重增量。
在其中一个实施例中,还包括:
分解函数计算模块,用于根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的整步长;
状态转移距离确定模块,用于根据所述整步长确定状态转移距离;
则当前时间步权重状态获取模块,还用于:
根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
在其中一个实施例中,还包括:
所述分解函数计算模块,还用于根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的余数;
状态转移概率确定模块,用于根据所述余数、所述权重取值范围和所述离散权重状态个数,确定状态转移概率;
则当前时间步权重状态获取模块,还用于:
根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述状态转移概率、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
在其中一个实施例中,所述状态转移概率确定模块,包括:
跃迁概率算子获取单元,用于根据所述当前时间步的权重增量的余数和离散相邻状态距离值,获取跃迁概率算子,所述离散相邻状态距离值根据所述权重取值范围和所述离散权重状态个数确定;
状态转移概率函数获取单元,用于根据所述跃迁概率算子和所述余数,获取状态转移概率函数;
状态转移概率获取单元,用于根据所述状态转移概率函数和二进制采样法,获取状态转移概率。
本发明所提供的神经网络权重离散化系统,通过给定一个离散态权重空间,在获取到的上一个时间步权重状态和当前时间步权重增量的基础上,计算在虚拟连续态空间中当前时间步权重的取值范围,获取状态转移的方向、最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向,获取当前时间步权重状态。本发明所提供的权重离散化的计算方法,能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、实现离散态空间的状态直接跃迁,确保权重值始终约束在同一个离散态空间中,而不需要存储额外的虚拟连续态全精度隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。
在其中一个实施例中,通过随机初始化权重状态,给定权重离散化的范围后,通过给定的前向输出误差以及梯度下降算法,获取上一个时间步的权重状态和当前时间步权重增量,保证离散后的权重状态的精度。
在其中一个实施例中,在获取状态转移方向的步骤之后,进一步通过分解函数计算当前时间步的权重增量的整步长,并根据所述整步长确定状态转移距离,最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、转移距离实现离散态空间的状态直接跃迁,并比仅考虑方向转移范围更大,确保权重值始终约束在同一个离散态空间中,而不需要存储额外的虚拟连续态全精度隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。
在其中一个实施例中,进一步通过解析所述当前时间步权重增量函数,计算当前时间步权重增量的余数;根据当前时间步权重增量余数,获取状态转移概率值。通过得出的状态转移方向、状态转移距离以及状态转移概率值分别决定离散权重值的跳转方向、状态转移距离和状态转移概率值,使得计算得出的离散权重,即符合离散化前的连续态权重值密切相关,又能通过离散态直接跃迁从而满足始终离散化的需求,从而在保证了神经网络的计算精度的同时,大大减小虚拟连续态全精度隐含权重的存储,并降低了计算复杂度。
在其中一个实施例中,根据所述状态转移概率函数和所述当前时间步权重增量的余数,计算状态转移概率向量;根据所述状态转移概率向量和二进制采样法,所获取所述状态转移概率,与离散前的当前时间步权重增量分数值密切相关,使得神经网络离散后的权重状态分布在概率意义上更加精确地逼近原始的连续态权重值,从而在保证了神经网络的计算精度的同时,完成了离散化的过程。
附图说明
图1为一个实施例的神经网络权重离散化方法的流程示意图;
图2为另一个实施例的神经网络权重离散化方法的流程示意图;
图3为再一个实施例的神经网络权重离散化方法的流程示意图;
图4为再一个实施例的神经网络权重离散化方法的流程示意图;
图5为一个实施例的神经网络权重离散化示意图;
图6为一个实施例的神经网络权重离散化方法的简化实现图(假设κ=0);
图7为一个实施例的神经网络权重离散化系统的结构示意图;
图8为一个实施例的神经网络权重离散化系统的硬件示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
神经网络计算的主要运算部分是输入数据与权重的乘累加运算,权重的精度直接影响计算的复杂度。本发明通过概率采样的方法可以有效降低权重的精度需求,在对性能几乎没有影响的前提下显著减少权重存储器的内存用量,降低运算复杂度。此方法既可以用于离线学习的神经网络,也可以用于片上在线学习的过程,且具有较低的硬件实现复杂度,可用于多层感知机、深度卷积神经网络等网络结构。
在深度神经网络的前向和后向计算过程中,将所有的状态约束在离散空间,并通过最小化代价函数作为训练目标。本发明提供可以达到此目标的离散状态跃迁(dstdispersedstatetransition)方法,即定义一个采用迭代的方式处理优化目标函数的方法,使得权重参数始终约束在预先设定的离散空间内。
图1为一个实施例的神经网络权重离散化方法的流程示意图,如图1所示的神经网络权重离散化方法包括:
步骤s100,获取权重取值范围和离散权重状态个数,所述权重取值范围是指由当前时间步最大权重值和当前时间步最小权重值组成的离散权重取值范围,所述离散权重状态个数是指离散权重的状态的个数。
具体的,所述获取的权重取值范围[-l,l],是根据需求离散后的权重值的取值范围,所述获取的离散权重状态个数(2n+1),是根据需求离散后的权重值的个数。可以理解,所述获取权重取值范围以及离散权重状态个数,可以是指根据具体需求进行计算得到所述权重取值范围以及离散权重状态个数,也可以是采用人工输入的方式直接设定所述权重取值范围以及离散权重状态个数。如图5所示,所述离散后的权重空间即dws(dispersedweightspace)的范围是[-l,l],所述离散权重状态个数为(2n+1)个状态。
在深度神经网络中,假设在区间[-l,l]中训练权重/状态,那么离散权重空间(dwsdispersedweightspace)zn是以下权重构成的组合,定义为:
其中,n是一个给定的非负整数n∈z+,即n=0,1,2,...。对于一个给定的n,总的状态数是2n+1,且
步骤s200,获取上一个时间步权重状态和当前时间步权重增量。
具体的,在获取神经网络权重信息时,一般通过获取到的上一个时间步权重状态与当前时间步权重增量进行累加的方式,获取当前时间步的权重信息。其中,所述当前时间步权重增量,可通过基于梯度下降算法的误差反向传播学习规则计算得出。上一个时间步的初始化权重以wi0表示,当前时间步权重增量以δwik表示。
步骤s300,根据所述当前时间步权重增量,利用方向函数,获取状态转移方向。
具体的,所述方向函数,包括符号函数,dk=sign(δwik),其中sign(δwik)是一个符号函数。所述当前时间步权重增量取符号后为正或负,则状态转移方向相应的为正或负即可。
步骤s400,根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
具体的,根据所述上一个时间步权重状态、所述当前时间步权重增量,以及确定好的状态转移方向,在所述权重取值范围、所述离散权重状态个数确定好的离散后的权重状态中,获取当前时间步权重状态即可。
如权重取值范围为[-1,1],确定好的状态转移方向为正,则当前时间步权重状态取1即可。
如权重取值范围为(-5,5),离散后的状态个数为10个,确定好的状态转移方向为正,则可以根据所述当前时间步权重增量的不同,取当前时间步权重状态为1、2、3、4、5均可。
本发明所提供的神经网络权重离散化方法,通过给定一个离散态权重空间,在获取到的上一个时间步权重状态和当前时间步权重增量的基础上,,获取状态转移的方向、最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向,获取当前时间步权重状态。本发明所提供的权重离散化的计算方法,能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、实现离散态空间的状态直接跃迁,确保权重值始终约束在同一个离散态空间中,而不需要存储额外的虚拟连续态全精度隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。
在其中一个实施例中,所述获取上一个时间步权重状态和当前时间步权重增量,包括随机初始化权重状态;根据所述随机初始化权重状态和前向输出误差进行计算,确定上一个时间步权重状态;根据所述上一个时间步权重状态利用梯度算法获取当前时间步权重增量。
具体的,随机初始化权重以wi0表示,则随机初始化矩阵表示为
具体的,在此引入一个概率化的梯度投影算子用于转换一个连续的权重增量到一个离散的跃迁增量。设当前时间步权重增量向量为
在本实施例中,根据随机初始化的权重矩阵,通过计算的方式,在给定的前向输出误差范围内,计算得出当前时间步权重增量,据此调整当前时间步的权重,从而使得神经网络的更新过程不断满足实际应用需求。
图2为另一个实施例的神经网络权重离散化方法的流程示意图,如图2所示的神经网络权重离散化方法包括:
步骤s100,获取权重取值范围和离散权重状态个数,所述权重取值范围是指由当前时间步最大权重值和当前时间步最小权重值组成的离散权重取值范围,所述离散权重状态个数是指离散权重的状态的个数。
具体的,同图1中的步骤s100。
步骤s200,获取上一个时间步权重状态和当前时间步权重增量。
具体的,同图1中的步骤s200。
步骤s300,根据所述当前时间步权重增量,利用方向函数,获取状态转移方向。
具体的,同图1中的步骤s300。
步骤s400a,根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的整步长。
具体的,所述上一个时间步权重状态wik、所述当前时间步权重增量δwik和所述权重取值范围[-l,l],获取所述当前时间步权重增量函数δwik=κiδzn+νi,其中,当前时间步权重增量整数κ、当前时间步权重增量余数ν和离散相邻状态距离值δzn,且离散相邻状态距离值δzn根据所述权重取值范围[-l,l]和所述离散权重状态个数(2n+1)确定。
在深度神经网络的给定的迭代训练过程中,假设
解析δwik的整步长部分:
δwik=κiδzn+vi
κi=fix(δwik/δzn)
其中fix(.)是一个向0取整函数。
步骤s500a,根据所述整步长确定状态转移距离。
具体的,根据获取的权重取值范围[-l,l],和所获取的离散权重状态个数(2n+1)的不同,所述状态转移距离可以根据需求设定。
如根据所述整步长,确定离散后的状态转移距离,如所述整步长为2,则在取值范围内直接确定离散后的状态转移距离为2,或确定状态转移距离为2个状态。
还可以根据所述权重取值范围和离散权重状态个数的不同,设定整步长与状态转移距离之间的对应关系。如在一定范围内的整步长,与状态转移距离之间的对应为比例关系,但超过一定范围的整步长,只对应权重范围内最大的状态转移距离。根据实际需求的不同设定即可。
步骤s600a,根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
具体的,根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离,在构建好的权重取值范围、所述离散权重状态个数,获取最终的当前时间步权重状态。
如权重取值范围为(-5,5),离散后的状态个数为10个,确定好的状态转移方向为正,确定好的状态转移距离为状态为2,则当前时间步权重状态为上一个时间步权重状态加2个步长即可。
在本实施例中,在获取状态转移方向的步骤之后,进一步通过分解函数计算当前时间步的权重增量的整步长,并根据所述整步长确定状态转移距离,最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、转移距离实现离散态空间的状态直接跃迁,确保权重值始终约束在同一个离散态空间中,并能够比仅考虑方向转移距离更大,而不需要存储额外的虚拟连续态全精度隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。
图3为再一个实施例的神经网络权重离散化方法的流程示意图,如图3所示的神经网络权重离散化方法包括:
步骤s100,获取权重取值范围和离散权重状态个数,所述权重取值范围是指由当前时间步最大权重值和当前时间步最小权重值组成的离散权重取值范围,所述离散权重状态个数是指离散权重的状态的个数。
具体的,同图1中的步骤s100。
步骤s200,获取上一个时间步权重状态和当前时间步权重增量。
具体的,同图1中的步骤s200。
步骤s300,根据所述当前时间步权重增量,利用方向函数,获取状态转移方向。
具体的,同图1中的步骤s300。
步骤s400b,根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的整步长和余数。
具体的,解析δwik的整步长部分和余数部分:
δwik=κiδzn+vi
κi=fix(δwik/δzn)
νi=rem(δwik,δzn)
其中fix(.)是一个向0取整函数;函数rem(x,y)生成两个数相除的余数,并保持与x相同的符号。
步骤s500b,根据所述整步长确定状态转移距离;根据所述余数、所述权重取值范围和所述离散权重状态个数,确定状态转移概率。
具体的,所述获取状态转移距离同图2所示的实施例中的步骤s500a中的步骤。
计算状态转移概率向量
以及
步骤s600b,根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述状态转移概率、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
具体的,根据上一个时间步权重状态wik,当前时间步权重增量δwik、权重取值范围[-l,l],所述离散权重状态个数为(2n+1),获取到的状态转移方向函数dk即离散后的权重值落在图5中的左边还是右边,获取到的状态转移概率
根据所述状态转移方向函数dk、所述状态转移概率和所述离散相邻状态距离值δzn,构建概率转移向量(dk⊙pk)·δzn,其中⊙代表按向量点积运算。
根据所述上一个时间步权重状态wik、所述当前时间步权重增量整步长κ、所述离散相邻状态距离值δzn和所述概率转移向量(dk⊙pk)·δzn,获取当前时间步权重状态wik+1,
在本实施例中,进一步通过解析所述当前时间步权重增量函数,计算当前时间步权重增量余数;根据当前时间步权重增量的余数,获取状态转移概率值。通过得出的状态转移方向、状态转移距离以及状态转移概率值分别决定离散权重值的跳转方向、跳转距离和状态转移概率值,使得计算得出的离散权重,即符合离散化前的连续权重值密切相关,又能通过离散态直接跃迁从而满足始终离散化的需求,从而在保证了神经网络的计算精度的同时,大大减小虚拟连续态全精度隐含权重的存储,并降低了计算复杂度。
图4为一个实施例的神经网络权重离散化方法的流程示意图,如图4所示的神经网络权重离散化方法包括:
步骤s510b,根据所述当前时间步的权重增量的余数和离散相邻状态距离值,获取跃迁概率算子,所述离散相邻状态距离值根据所述权重取值范围和所述离散权重状态个数确定。
具体的,根据所述构建的权重取值范围[-l,l],和所述构建的离散权重状态个数(2n+1),是根据需求离散后的权重值的个数,采用δzn代表相邻状态(即相邻的两个离散后的权重值)的距离。即离散后的每个状态只可能转移到
预设跃迁概率算子τ,根据跃迁概率算子τ和所述当前时间步权重增量分数值ν,获取所述状态转移概率
步骤s520b,根据所述跃迁概率算子和所述余数,获取状态转移概率函数。
具体的,因此,当0≤τ(v)≤1时,获取所述状态转移概率值
也可以应用非线性函数f(x)=tanh(m·x),因此
其中tanh(m·x)的取值范围为从0到1,并且m是一个影响转移概率的参数。一个通用优化模型如下:
argminwe(w)
s.t.wi∈zn
其中e(w)给出了在dnn中的代价函数,由应用决定。w是权重向量,其中的一个元素
在深度神经网络中,假设在区间[-l,l]中训练权重/状态,那么离散权重空间(dwsdispersedweightspace)zn是以下权重构成的组合,定义为:
进一步定义和有i≠j,并且对于一个均匀分布的随机变量wi,也就是说wi∈u[-l,l],存在一个唯一的n使得wi∈ln。投影一个随机的变量wi∈u[-l,l]到zn,即投影wi到离散状态(或者),满足下列密度函数。和
步骤s530b,根据所述状态转移概率函数和二值化采样法,获取状态转移概率。
具体的,通过蒙特卡洛方法采样元素到二进制数值,表示为
在本实施例中,根据所述状态转移概率函数和所述当前时间步权重增量的余数,计算状态转移概率向量;根据所述状态转移概率向量和二值化采样法,所获取所述状态转移概率,与离散前的当前时间步权重增量余数值密切相关,使得神经网络离散后的权重状态分布在概率意义上更加精确地逼近原始的连续权重值,从而在保证了神经网络的计算精度的同时,完成了离散化的过程。
图6为一个实施例的神经网络权重离散化方法的简化实现图(假设κ=0),图6所示的神经网络权重离散化方法的简化实现中,
步骤s10,获取当前时间步的权重增量(由梯度下降法获得)。
具体的,为了更好的说明权重离散化的简单实现,进行了简化,假设κ=0,从而约束了离散状态转移的过程仅在相邻的状态中发生。离散化后的权重的状态转移通过状态转移方向和转移概率共同决定
步骤s20a,获取状态转移方向。
具体的,离散化后的权重的状态转移方向是权重增量的符号所决定的。特别的,正的权重增量允许转移朝着正的方向进行,负的权重增量转移相反的方向。零权重增量没有转移的作用。
步骤s20b,获取状态转移概率。
具体的,离散化后的权重的状态转移概率是正相关于权重增量的绝对值的,通过选定的步长和绝对值的计算,获取用于采样的状态转移概率。
步骤s21b,状态转移概率采样。
具体的,本实施例采用了二值化的采样算法,之后会被采样为0或者1。一个1值的采样结果代表产生了一个状态转移事件,而0值代表了没有状态转移事件发生。
步骤s30,获取权重离散化结果。
具体的,权重离散化的最终转移结果通过状态转移方向、转移概率的二值化采样结果和dws中相邻状态之间的距离δzn的向量点积运算得到。
最近几年深度神经网络消耗了不可容忍的硬件资源、训练时间和能量,本发明提出了一个统一的离散空间转换装置,通过引入离散态直接跃迁方法在整个训练过程中将权重约束到一个离散的权重空间,且具有灵活可配置的状态数。在离散状态间的转移降低了全精度权重的存储空间以及其它计算开销。给出的dst框架是硬件友好的,因为它可以被容易的配置用于各类内存设备,例如二值、三值或多值内存器件。这个工作为在各类便携设备中进行片上学习铺平了道路。
本发明提出了一个统一的离散状态转移(dst)装置。在此装置中,全精度空间中的连续权重更新转变为在离散状态直接转移。从而大大降低了权重信息的存储开销以及运算复杂度,使得神经网络可以在移动设备上低成本运行。本发明所提供的装置可在mnist、cifar10和svhn等数据集上获得较好的效果。另外,由于离散的状态数量可配置,因此可以用于多值内存设备(例如rram/pcram或者忆阻器),充分发挥这类器件的多值存储特性,由于用于神经网络的训练和推理时,权重一直都是离散的状态,因此可以显著降低或去除全精度权重外部存储器的使用。
图7为一个实施例的神经网络权重离散化系统的结构示意图,如图7所示的神经网络权重离散化系统包括:
权重离散空间构建模块100,用于获取权重取值范围和离散权重状态个数,所述权重取值范围是指由当前时间步最大权重值和当前时间步最小权重值组成的离散权重取值范围,所述离散权重状态个数是指离散权重的状态的个数。
权重值和权重增量获取模块200,用于获取上一个时间步权重状态和当前时间步权重增量;包括权重矩阵初始化单元,用于随机初始化权重状态;上一个时间步权重状态确定单元,用于根据所述随机初始化权重状态和前向输出误差进行计算,确定上一个时间步权重状态;
当前时间步权重增量获取单元,用于根据所述上一个时间步权重状态利用梯度算法获取当前时间步权重增量。
状态转移方向获取模块300,用于根据所述当前时间步权重增量,利用方向函数,获取状态转移方向。
分解函数计算模块300a,用于根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的整步长;还用于根据所述当前时间步权重增量、所述权重取值范围和所述离散权重状态个数,利用分解函数计算所述当前时间步的权重增量的余数。
状态转移距离确定模块400a,用于根据所述整步长确定状态转移距离。
状态转移概率确定模块400b,用于根据所述余数、所述权重取值范围和所述离散权重状态个数,确定状态转移概率;包括跃迁概率算子获取单元,用于根据所述当前时间步的权重增量的余数和离散相邻状态距离值,获取跃迁概率算子,所述离散相邻状态距离值根据所述权重取值范围和所述离散权重状态个数确定;状态转移概率函数获取单元,用于根据所述跃迁概率算子和所述余数,获取状态转移概率函数;状态转移概率获取单元,用于根据所述状态转移概率函数和二值化采样法,获取状态转移概率和跃迁事件采样结果。
当前时间步权重状态获取模块500,用于根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。还用于根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。还用于根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述状态转移概率、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。
本发明所提供的神经网络权重离散化系统,通过给定一个离散态权重空间,在获取到的上一个时间步权重状态和当前时间步权重增量的基础上,计算在虚拟连续态空间中当前时间步权重的取值范围,获取状态转移的方向、最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向,获取当前时间步权重状态。本发明所提供的权重离散化的计算方法,能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、实现离散态空间的状态直接跃迁,确保权重值始终约束在同一个离散态空间中,而不需要存储额外的虚拟连续态全精度隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。通过随机初始化权重状态,给定权重离散化的范围后,通过给定的前向输出误差以及梯度算法,获取上一个时间步的权重状态和当前时间步权重增量,保证离散后的权重状态的精度。在获取状态转移方向的步骤之后,进一步通过分解函数计算当前时间步的权重增量的整步长,并根据所述整步长确定状态转移距离,最后根据所述上一个时间步权重状态、所述当前时间步权重增量、所述状态转移方向、所述状态转移距离、所述权重取值范围、所述离散权重状态个数,获取当前时间步权重状态。能够在给定的权重离散范围内,根据给定的离散权重状态个数,通过计算离散权重的转移方向、转移距离实现离散态空间的状态直接跃迁,确保权重值始终约束在同一个离散态空间中,且比仅考虑方向跃迁范围更大,而不需要存储额外的虚拟连续态隐含权重,在保证神经网络的计算性能的前提下,大大减小存储空间的消耗并降低计算复杂度。进一步通过解析所述当前时间步权重增量函数,计算当前时间步权重增量余数;根据当前时间步权重增量分数值,获取状态转移概率值。通过得出的状态转移方向、状态转移距离以及状态转移概率值分别决定离散权重值的转移方向、转移距离和状态转移概率值,使得计算得出的离散权重,即符合离散化前的连续权重值密切相关,又能通过离散态直接跃迁从而满足始终离散化的需求,从而在保证了神经网络的计算精度的同时,大大减小虚拟连续态隐含权重的存储,并降低了计算复杂度。根据所述状态转移概率函数和所述当前时间步权重增量分数值,计算状态转移概率向量;根据所述状态转移概率向量和二值化采样法,所获取所述状态转移事件,与离散前的当前时间步权重增量分数值密切相关,使得神经网络离散后的权重状态分布在概率意义上更加精确地逼近原始的权重值,从而在保证了神经网络的计算精度的同时,完成了离散化的过程。
图8为一个实施例的神经网络权重离散化系统的硬件示意图,如图8所示的神经网络权重离散化系统,包括限幅处理器1,除法/余数计算器2,取绝对值器3,取符号器4,概率函数查找器5,蒙特卡洛采样器6,第一乘法器7,第一加法器8,第二乘法器9,所述系统可对输入的全精度的权重变化量进行离散化的转换。图中的各种硬件处理器,均采用与之对应的功能处理硬件实现即可。
如图8所示的硬件连接关系为,限幅处理器1的输出连接到除法/余数计算器2的输入,除法/余数计算器2的除数输出连接到第一加法器8,除法/余数计算器2的余数输出连接到取绝对值器3和取符号器4的输入,取绝对值器3的输出连接到概率函数查找器5的输入,概率函数查找器5的输出连接到蒙特卡洛采样器6的输入,蒙特卡洛采样器6的输出连接到第一乘法器7的输入,取符号器4的输出也连接到第一乘法器7的输入,第一乘法器7的输出连接到第一加法器8的输入,第一加法器8的输出连接到第二乘法器9的输入。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。