神经网络杂文

【BP】BP神经网络原来就是曲线拟合!

作者 : 老饼 发表日期 : 2023-03-25 00:20:45 更新日期 : 2023-09-22 15:53:18
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com


在初学BP神经网络的时候,总是非常抽象和难理解

但是,学久了会发现,BP神经网络原来就是曲线拟合!

一下子才具体、深入的理解到BP神经网络是什么

本文讲解如何从曲线拟合角度理解BP神经网络,从列举相关好处




  01. BP神经网络原来就是曲线拟合  



本节讲解如何从曲线拟合角度理解BP神经网络



      BP神经网络就是曲线拟合      


我们一般看到的是如下的三层BP神经网络
    
但从这样的拓扑图来看,总感觉BP神经网络就是个黑箱
并不知道它为什么能够起到预测的效果
但是,如果注意到BP神经网络的表达式是以下形式
   
就会突然灵光一闪,天!这东西不就是一个曲线拟合吗?
每个tansig其实就是一个S形曲线,而内外层的w、b则控制了S曲线的高矮肥瘦
 
所以总的来说,BP神经网络就是用多个S曲线拼凑出目标曲线
而训练则是调整各个S曲线的形态,使最终拼凑出的目标曲线与数据的误差尽量小~
 






  02. 从曲线拟合理解BP的好处  



本节讲解从曲线拟合角度理解BP神经网络的一些好处



      从曲线拟合角度理解隐节点    


从曲线拟合理解BP,
很容易就可以知道每个隐节点其实就是一个tansig, 
隐节点越多,就意味着用越多的tansig来凑合目标曲线,
理论上只要tansig足够多,就可以凑合出任何形态的曲线
也就是说,隐节点越多,模型的拟合能力就越强,
但是,隐节点过多未必是好事
如下,我们希望拟合以下的数据点
  
我们设置了10个隐节点,就会得到如下的结果 
  
它相对较扭曲,但我们希望它更平滑些,
那么就可以减少tansig的个数,使它"不能凑出这么扭曲的曲线"
将隐节点设为2个后,就得到以下曲线
  
所以,总的来说,
如果目标曲线简单平滑,就应该设少一些隐节点,限制拟合能力
如果目标曲线起伏跌宕,就应该设多一些隐节点,增强拟合能力



      从曲线拟合角度理解神经元饱和      


由于我们主要是用tansig曲线去拼凑目标曲线,
而tansig的非线性部分在【-1.7,1.7】之间
  
因此,每个tansig的输出应该包含【-1.7,1.7】区间
如果不包含,那么该tansig的输出基本就是一条横线,
也就是说,该tansig对网络没有起到什么作用,
因为阈值b已经包含了横线部分的功能
这种情况也称为神经元过于饱和
所以,在初始化时,我们尽量不要让神经元饱和
同样,在训练后,我们也可以检查神经元是否饱和





从以上两个例子,可以get到从曲线拟合角度理解BP神经网络会非常形象

当然,好处还有很多,就不再一一列举,此处仅为抛砖引玉

在训练不理想时,不妨从曲线拟合角度去思考,往往更容易找到问题所在









 End 





联系老饼