本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com
本文介绍BP神经网络的通用结构和常用结构,
通过本文,更具体地了解,BP神经网络的拓扑结构
本节先介绍BP神经网络的通用结构
BP的通用网络结构
BP神经网络的通用结构如下
![]()
它包含了输入层、隐层和输出层,
隐层和输出层的神经元都有自己的阈值和激活函数
它属于前馈型神经网络,即神经元是层层连接、逐层传递,
以上仅是一个通用的结构形式,
在使用时,我们需要设定具体的参数,让它有具体的结构
需要确定的参数有以下:
👉 隐层个数
👉 每个隐层的隐神经元个数
👉 每层神经元的激活函数
神经元的工作原理
除了输入层之外,其它层的神经元都有自己的阈值和激活函数,
每个神经元的工作原理如下
它将接收到的输入值加权后并加上阈值,
经过自身激活函数进行转换,然后输出给下一个神经元
下面介绍实践中一般使用的BP神经网络结构
BP神经网络常用结构与配置
虽然通用结构里允许有多个隐层,并且可以设置不同的激活函数,
但实际上,最常用的是设一个隐层
隐层神经元的激活函数设为tansig函数
输出层的激活函数设为purelin
如此一来,结构就如下图所示:
![]()
其中
tansig函数为S型函数:
purelin 为恒等线性映射函数:
上图为3个隐神经元,在实际中,隐神经元个数由具体问题具体设定
✍️说明
1、输出层设为purelin,也即相当于输出层没有激活函数.
2、 隐层激活函数也可以设为logsig
logsig的表达式为 ,它和tansig没有太多质的区别 ,
区别只在于,logsig的取值范围是【0,1】,而tansig是【-1,1】
为什么实践中采用三层结构
为什么实践中一般采用上述结构呢?
主要是因为这样的结构简单又有效
简单是因为它只有一个隐层,比起多隐层网络,无疑是要简洁许多
有效是因为隐层激活函数采用了S型函数,这样网络就有了拟合非线性的能力
而输出层采用purelin,又可以让它的输出不受限制
如此一来,这种结构就“麻雀虽小,却五脏俱全”,简单又有效
后来有人证明,这种结构只要隐神经元足够,就能逼近任何函数,
因此一来,基本就都使用这种结构了
End