> 文章列表 > BP神经网络原来就是曲线拟合

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

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

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com

在初学BP神经网络的时候,总是非常抽象和难理解
但是,学久了会发现,BP神经网络原来就是曲线拟合!
一下子才具体、深入的理解到BP神经网络是什么
本文讲解如何从曲线拟合角度理解BP神经网络,从列举相关好处

目录

一、BP神经网络原来就是曲线拟合  

1.1 BP神经网络就是曲线拟合

二、 从曲线拟合理解BP的好处

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

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


一、BP神经网络原来就是曲线拟合  

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

1.1 BP神经网络就是曲线拟合


我们一般看到的是如下的三层BP神经网络  

但从这样的拓扑图来看,总感觉BP神经网络就是个黑箱
并不知道它为什么能够起到预测的效果
但是,如果注意到BP神经网络的表达式是以下形式 

就会突然灵光一闪,天!这东西不就是一个曲线拟合吗?
每个tansig其实就是一个S形曲线,而内外层的w、b则控制了S曲线的高矮肥瘦

所以总的来说,BP神经网络就是用多个S曲线拼凑出目标曲线
而训练则是调整各个S曲线的形态,使最终拼凑出的目标曲线与数据的误差尽量小~


二、 从曲线拟合理解BP的好处

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

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


从曲线拟合理解BP,
很容易就可以知道每个隐节点其实就是一个tansig, 
隐节点越多,就意味着用越多的tansig来凑合目标曲线,
理论上只要tansig足够多,就可以凑合出任何形态的曲线
也就是说,隐节点越多,模型的拟合能力就越强,
但是,隐节点过多未必是好事
如下,我们希望拟合以下的数据点

我们设置了10个隐节点,就会得到如下的结果

 
它相对较扭曲,但我们希望它更平滑些,
那么就可以减少tansig的个数,使它"不能凑出这么扭曲的曲线"
将隐节点设为2个后,就得到以下曲线

所以,总的来说,
如果目标曲线简单平滑,就应该设少一些隐节点,限制拟合能力
如果目标曲线起伏跌宕,就应该设多一些隐节点,增强拟合能力


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


由于我们主要是用tansig曲线去拼凑目标曲线,
而tansig的非线性部分在【-1.7,1.7】之间

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


从以上两个例子,可以get到从曲线拟合角度理解BP神经网络会非常形象
当然,好处还有很多,就不再一一列举,此处仅为抛砖引玉
在训练不理想时,不妨从曲线拟合角度去思考,往往更容易找到问题所在

相关文章


BP神经网络的原理与本质:老饼讲解|【原理】BP神经网络原理与本质

BP的数据处理:老饼讲解|【介绍】关于BP神经网络建模中的数据处理

BP的简单DEMO:老饼讲解|【示例】matlab-BP神经网络简单DEMO