基础原理讲解
基本原理
BP神经网络初始化
作者 : 老饼 日期 : 2022-06-09 04:36:26 更新 : 2022-10-31 23:59:23
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com



我们都知道BP神经网络初始化的重要性,

但是我们写自己的BP神经网络代码时往往都没有对权值阈值初始化方法进行深入设计,这就严重影响了我们神经网络的效果。

笔者通过阅读matlab工具箱源码,发现matlab工具箱在权重阈值的初始化上采用的是《nguyen_Widrow法》。

本文结合matlab的源代码与《nguyen_Widrow法》原文整理出初始化的原理和思路。

通过本文,可以学习和理解BP神经网络初始化的原理,是之后我们复现工具箱源代码的基础。



  01. 初始化思想  

对于神经元的初始化,以单输入网络为例,我们希望网络初始化成以下的形式:



可以看到,我们的目的就是让各个隐节点均匀分布在输入数据的范围。

这样的初始化的好处有两点


(1) 每个神经元都充分被利用                                      
(2) 输入域(即x轴)处处都被神经元的非线性区间覆盖到



下面我们推导出这种初始化方法的具体数学表达。



  02. 单输入情况  

   w  的取值 




每个tansig需要覆盖的长度:2/hn

设数据的范围在[-1,1]之间(长度为2),
则每个隐节点非线性部分需要覆盖的长度为:
2/hn
(hn指隐节点个数)


tansig(wx+b) 非线性部分的长度:2/w

设tansig(x)的非线性区间为[-1,1],
tansig(x)的非线性区间长度为2,
则tansig(wx+b)的非线性区间长度就为2/w,


w的取值

 要求 tansig(wx+b) 非线性部分 覆盖住  2/hn,
则有:                      
2/W = 2/hn

可得:                      
  w =hn

如果需要让每个区间有部分重叠,可以适当放宽非线性部分的长度,
例如 w = 0.7hn



   b 的取值  




b 的作用就是使每个隐节点均匀地落在输入域。


每个tansig需要落在的中心点:输入范围线性均匀分布。   


线性生成每个隐节点的中心

例如
现在有5个隐节点,那么在输入域[-1,1]之间线性生成中心:
c1=-1,c2=-0.5,c3=0,c4=0.5,c5=1.


将tansig平移到各个中心点:b= -wc 。(c是要平移到的中心点)


将第i个隐节点移到第i个中心点。
如下表示:
tansig(w(x-c)) = tansig(wx-wc)
可得 
b = -wc



下面我们仍然按此思路,扩展到多输入。



  03. 多输入网络  




输入为多维时,要比一维更复杂一些些


例如二维

我们可以看到,它实际上每个区域都有自己的特性,我们需要每个区域都照顾到位。


  (一) 多输入网络的参数意义  


用二维举例
WX+b就是  的中心线,
|W| 控制了 的宽度,                      
W的方向控制了的方向 ,     
             则是原点到中心线的距离,即控制了垂直于W方向的平移距离。



(二) W的初始化 



1.  每个tansig需要覆盖的长度: 


我们企图 把各个tansig分布到 输入区域划分成的 个网格中去(N为输入的维度),

每维划分的网格个数 取决于我们有多少个隐神经元,
即网格个数等于隐神经元个数:

(即  )

由于每个变量范围在 [-1,1] (长为2),
则算得每个网格长为
 
即每个tansig需要覆盖的范围为  


2.  tansig 的有效范围   


设 tansig(x)的非线性区间为 [-1,1],
的有效范围,即  -1< WX+b < 1, 

用二维的情况来看,即   与 两平面间的距离

    



3.   W的取值


要求tansig的覆盖范围满足要求,则有:
 
即 
为了让区间之间有一定重叠,加以一个系数,例如0.7


4.  随机化方向的单位W:  (W为随机数)


W的方向确定了tansig的方向 ,
这里,我们随机化方向,并将它归一化。

假设有3个输入 ,则生成方法如下:

(1)随机生成 W = [w1,w2,w3]
(2)将 W 归一化: 

这样,就生成了方向随机的单位W。


5.   总的W


即(4)中生成的随机化方向的单位W,乘以(3)中确定的宽度:

这里的W是随机数 

这里的公式有些不严谨,请结合之前的讨论理解



  (三)b的初始化  


在确定了W之后,b则确定了平移距离,
由于每个输入的范围是 [-1, 1] ,则对 hn个隐节点,我们平移距离  d 均匀分布在 [-1,1]之间,

例如,hn=5,则

由   ,可得,




三. 结束语

理论暂且分析到这里。想真正了解每一个步骤,还是需要读代码,

梯度下降法求解BP-代码》里有初始化权值阈值的代码,想掌握得更具体的同学请耐心阅读代码。








 End 





联系老饼