老饼讲解-神经网络 机器学习 神经网络 深度学习
BP算法-自实现
1.BP算法重现-开篇导读与回顾
2.BP的初始化与梯度公式
3. BP的训练算法与流程
4.BP代码自实现

【原理】BP神经网络的初始化

作者 : 老饼 发表日期 : 2022-06-09 04:36:26 更新日期 : 2023-02-27 12:46:04
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



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

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

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

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

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




     01. nguyen_Widrow法初始化BP的思想     



     nguyen_Widrow法的目标    


我们已经知道,BP神经网络就是通过叠加多个tansig,拼凑出最终的目标函数
对于神经元的初始化,
以单输入网络为例,
 nguyen_Widrow希望网络初始化成以下的形式
 
 
 可以看到,它的目的就是让各个隐节点均匀分布在输入数据的范围
也就是让每个隐神经元各自负责一小块




     nguyen_Widrow法的好处      


为什么nguyen_Widrow法希望将各个隐节点均匀分布?
因为这样的初始化的好处有两点
 👉 01. 每个神经元都充分被利用                                      
 👉 02. 输入域(即x轴)处处都被神经元的非线性区间覆盖到



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



  02. 单输入情况  



     w的取值公式推导   


w的取值公式推导如下
1.先推导出每个tansig需要覆盖的长度

  
设数据的范围在[-1,1]之间(长度为2),现有个隐节点
则每个隐节点非线性部分需要覆盖的长度为:
 
 
 2.再算出tansig(wx+b) 非线性部分的长度
 

 
的非线性区间为[-1,1](长度为2)
非线性区间的长度就为:
 

 
3.w的取值
 

 
 现要求的非线性部分覆盖住2/hn,
 则有: 
 
   
 可得: 
 
✍️补充
如果需要让每个区间有部分重叠
可以适当放宽非线性部分的长度
例如 




     b的取值公式推导    


b 的作用就是使每个隐节点均匀地落在输入域
下面我们根据这一需求,推导出b的取值公式

 
tansig中心所要落在的位置
 
每个tansig的中心需要落在的位置不同,
但所有tansig的中心应在输入范围内线性均匀分布  
因此可以根据输入范围直接线性生成每个隐节点的中心C
例如
现在有5个隐节点,那么在输入域[-1,1]之间线性生成中心
 


将tansig平移到各个中心点
 
 要将第i个隐节点移到第i个中心点
  只需如下操作
 
 

根据上式易得 



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



  03. 多输入网络  



    多维与一维的区别    


输入为多维时,要比一维更复杂一些
 
下面以二维为例,说明多维与二维的不同之处

区域划分的差异
 
下面是一个二维函数
 

 
可以看到,
每个区域都有自己的特性,
我们需要每个区域都照顾到位
对于区域的划分,就需要以网格的形式,
 如下
 
   网络的参数意义的差异  
 仍用二维举例
WX+b就是  的中心线   
|W| 控制了 的宽度                          
W的方向控制了的方向                   
             则是原点到中心线的距离,即控制了垂直于W方向的平移距离





     W的取值公式推导   


对于多输入情况,
W的取值公式推导如下

1.先推导出每个tansig需要覆盖的长度
 
假设将区域每个维度都等量划分为份,如下
 

则区域共有 个小网格(N为输入的维度)
现在我们需要每个隐神经元负责一个小网格,
所以网格个数等于隐神经元个数:
 
即  

由于每个输入的范围在 [-1,1] (即每维长为2),
可以算得每个网格长为
 
 

即每个tansig需要覆盖的范围为
  
2.再算出tansig(wx+b) 非线性部分的长度
 
设 tansig(x)的非线性区间为 [-1,1],
的有效范围为:
 
 
  
用二维的情况来理解
 的有效范围就是
平面 与平面之间的距离

不难求出,有效长度为
 
      
 
的有效长度为:
 
 3.W的长度
 
现要求的有效长度覆盖网格的长度  
则有:
 

 

如果需要让每个区间有部分重叠
可以适当放宽非线性部分的长度
例如 
4.W的取值公式
 
以上我们仅仅是确定了W的长度|W|
对于W的具体取值,还需依赖于W的方向
而W的方向并不是那么的重要
所以只需先生成一个方向随机的单位W(这里记为)
然后再把这个W的长度放宽到上述|W|即可

生成方向随机的单位W方法如下:
假设有3个输入

(1)随机生成               
(2)将 W 归一化: 

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

将 乘以(3)中确定的宽度,即有:

 其中,是随机数 
  这里的公式有些不严谨,请结合之前的讨论理解



     b的取值公式     


在一维时,我们将第i个神经元移到由[-1,1]线性生成的的第i个元素
同样地,在多维的时候,我们则是移到 
由于
 

易得

   
  
代入其中

可得

 








 End 





联系老饼