本发明涉及人工智能神经网络领域,具体涉及一种基于概率分布的sigmoid函数拟合方法及其硬件实现。
背景技术:
人工神经网络是仿照生物神经网络工作的计算模型。由于其本质是一种并行结构,人工神经网络逐渐在硬件上实现以提高执行速度。
人工神经网络的基本单元是神经元。一个神经元包含两种操作:乘加运算和激活函数。而sigmoid函数是一种广泛应用于神经网络的激活函数。由于sigmoid函数包括除法和指数运算,所以很难直接在硬件上实现此函数。为了解决这个问题,许多拟合方法被提出来以有效地在硬件上实现sigmoid函数。这些拟合方法都以拟合函数和sigmoid函数的误差作为衡量标准,在此基础上减少硬件复杂度。但是网络的识别率并不随着拟合函数和sigmoid函数的误差减小而增大,因此在减小硬件复杂的基础上提高网络识别率是有意义的。
技术实现要素:
为了解决现有技术中的不足,本发明提供了一种基于概率分布的sigmoid函数拟合方法,减少sigmoid函数的硬件复杂度,提高神经网络的识别率。
为了实现上述目标,本发明采用如下技术方案:一种基于概率分布的sigmoid函数拟合方法,将sigmoid函数应用于神经网络的激活函数,包括步骤:
步骤一:根据sigmoid函数的二阶导数,将sigmoid函数划分为三个固定的区域即近似线性区、饱和区、近似常数区;
步骤二:近似常数区sigmoid函数值固定为0或者1,另外两个固定的区域划分成多个拟合函数子分段,拟合函数子分段数根据每层神经元输出值的统计概率的变化而变化,拟合函数子分段的区间大小不同,其取决于子区间内点的二阶导数绝对值的大小,二阶导数越大,包含此点的区间间隔较小,二阶导数越小时,包含此点的区间间隔较大;
步骤三:将拟合函数子分段的线性函数斜率设为2-n,其中n为正整数,改变n和线性函数偏置b,根据得到的新的函数和原函数的最大绝对误差的最小值来确定拟合函数子分段的线性函数,得到拟合的分段线性函数;
步骤四:根据拟合的分段线性函数得到基于概率分布的sigmoid函数拟合的硬件电路。
步骤一中,根据sigmoid函数f(x)的二阶导数将sigmoid函数划分为三个固定的区域即近似线性区、饱和区、近似常数区,满足|f″(x1)|>|f″(x2)|>|f″(x3)|,其中,x为sigmoid函数的的横坐标值,e为自然常数,x1∈x、x2∈x、x3∈x,x1属于近似线性区,x2属于饱和区,x3属于近似常数区。
步骤二中,每层神经元输出值的统计概率是指神经网络训练后每层神经元输出值的分布结果,每一个固定区域的子分段数满足公式ni=pi×ntotal,pi表示神经元输出值在某一固定区域的统计概率;ni表示对应于概率为pi区域的子分段数;ntotal表示总分段数。
步骤三中,将拟合函数子分段的线性函数斜率设为2-n,新的函数n和bi由以下公式同时确定:
随着n的变化,集合d根据新的函数和原函数的最大绝对误差的最小值确定对应于不同n的bi,集合t得到集合d中最大绝对误差的最小值确定最优的n和bi,其中bi为对应子分段函数的函数偏置,ai为对应子分段函数横坐标最小值,ci为对应子分段函数横坐标最大值。
根据不同固定区域的概率分布,近似线性函数被分为三个不同的分段线性函数,当神经元输出值概率在近似线性区域处于0%-30%时,分段线性函数为f0;当神经元输出值概率在近似线性区域处于30%-70%时,分段线性函数为f1;当神经元输出值概率在近似线性区域处于70%-100%时,分段线性函数为f3。
每一层神经元根据此层神经元值的概率分布,采用三个不同分段线性函数的其中一个。
近似常数区固定为0或者1,不根据此区域神经元输出值概率变化而变化;ntotal在涉及近似线性区域和饱和区域,且取值为12。
拟合函数只在硬件上进行神经网络的推理过程,训练过程在软件实现,且激活函数采用sigmoid函数。
硬件实现只有加法器和移位器,减少了sigmoid函数硬件实现的复杂度。
本发明达到的有益效果:本发明将sigmoid函数分为三个固定区域,每一层神经元根据该层神经元输出值在三个区域的概率分布大小,采用不同的分段线性函数,使得有限的硬件资源更多得用于概率较大的区域。将拟合函数用于识别手写数字数据集mnist,其在深度神经网络(dnn)的识别率高于sigmoid函数的识别率,在卷积神经网络(cnn)的识别率高于现有的拟合函数的识别率。
附图说明
图1是sigmoid函数、除三阶导数以外的sigmoid函数前四阶导数、以及三个固定分区示意图;
图2是拟合函数的硬件示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
一种基于概率分布的sigmoid函数拟合方法,包含以下步骤:
步骤一:以sigmoid函数的二阶导为基础,将sigmoid函数划分为三个固定的区域(近似线性区、饱和区、近似常数区);
如图1所示,根据sigmoid函数的二阶导数的变化程度,将sigmoid曲线进行划分为固定的三个区域:近似线性区、饱和区、近似常数区
在三个固定区域内点的二阶导数满足如下公式:
|f″(x1)|>|f″(x2)|>|f″(x3)|
x1属于近似线性区,x2属于饱和区,x3属于近似常数区。在近似线性区内的点的斜率的变化率(二阶导数)最大,在饱和区内的点的斜率的变化率明显下降,因此近似线性区和饱和区的分界点为sigmoid函数的二阶导数的拐点,即sigmoid函数的四阶导数:
当上式为0时,x等于2.2。所以近似线性区域为0≤x<2.2。
近似常数区与饱和区的分界点取决于近似常数区与‘1’的最大允许误差δ,分界点计算公式如下:
本发明取δ为0.005,则分界点xd为5。因此,近似常数区为x≥5;饱和区域为2.2≤x<5。
步骤二:近似常数区固定为0或者1,另外两个固定区域的子分段数根据每层神经元输出值的统计概率的变化而变化;
将每层神经元输出值按照从小到大的顺序排列为:
nl为第l层神经元的个数。
将固定区域以y轴重新划分为:近似线性区域为[0.1,0.9],饱和区为(0.005,0.1)∪(0.9,0.995)。三个固定区域的概率计算如下:
基于统计概率,每一个固定区域的子分段数满足如下公式:
ni=pi×ntotal
pi表示神经元输出值在某一固定区域的统计概率;ni表示对应于概率为pi区域的子分段数;ntotal表示总的分段数。
步骤三:拟合函数子分段的区间大小不同,其取决于子区间内点的二阶导数绝对值的大小。当二阶导数越大时,包含此点的区间间隔相对较小;当二阶导数越大时,包含此点的区间间隔相对较大。
步骤四:将子分段线性函数斜率设为2-n,其中n为正整数;改变n和线性函数偏置b,将得到的函数和原函数的最大绝对误差的最小值来确定子分段线性函数,得到拟合的分段线性函数。
近似线性函数子分段线性函数的斜率为2-n,满足如下公式:
n和bi由以下公式同时确定:
随着n的变化,集合d根据拟合函数和原函数的最大绝对误差的最小值确定对应于不同n的bi。集合t得到集合d中最大绝对误差的最小值确定最优的n和bi。根据不同固定区域的概率分布,近似线性函数被分为三个不同的分段线性函数。当神经元输出值概率在近似线性区域处于0%-30%时,分段线性函数为f0;当神经元输出值概率在近似线性区域处于30%-70%时,分段线性函数为f1;当神经元输出值概率在近似线性区域处于70%-100%时,分段线性函数为f2。每一层分段函数根据以下公式选择:
本发明近似常数区固定为0或者1,不根据此区域神经元输出值概率变化而变化;ntotal在涉及近似线性区域和饱和区域,且取值为12。分段函数的参数取值如表1所示:
表1分段拟合函数不同区间参数值
步骤四:提出基于概率分布的sigmoid函数拟合的硬件电路。
基于概率分布的sigmoid函数拟合的硬件电路如图2所示。第一阶段,输入函数编码器根据输入值和该层概率值产生相应的n和bi的地址;第二阶段,多路选择器根据n输出移位后的值;最后阶段,多路选择器的输出值与相应的b相加得到神经元的输出值。
将拟合函数用于识别手写数字数据集mnist,其在dnn的识别率高于sigmoid函数的识别率,表2为不同dnn结构的准确率比较:
表2不同网络结构的准确率比较
因为拟合函数的斜率为2-n,基于概率分布的sigmoid拟合函数相比一般的线性分段拟合函数来说,其降低了sigmoid函数在硬件的计算量,硬件电路只需要加法器和移位器来实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。