本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
本文介绍BP神经网络的通用结构和常用结构,
通过本文,更具体地了解,BP神经网络的拓扑结构
本节先介绍BP神经网络的通用结构
BP的通用结构
BP的通用结构如下
在通用结构中,包含了输入层、隐层和输出层,
隐层和输出层的神经元都有自己的阈值和激活函数
它属于前馈型神经网络,即神经元是层层连接、逐层向前传递,
以上仅是一个BP神经网络通用的结构形式,
在使用时,我们需要设定具体的参数,让其具有具体的结构
对一个BP神经网络来说,需要确定的参数有以下:
👉 隐层个数
👉 每个隐层的隐神经元个数
👉 每层神经元的激活函数
神经元的工作原理
BP神经网络的神经元是重要的组成部分
除了输入层之外,其它层的神经元都有自己的阈值和激活函数,
每个神经元的工作原理如下
以上图为例,它将接收到的输入值x1,x2加权后并加上阈值,就是神经元的值N
然后将神经元的值N经过自身激活函数Tf进行转换,
就是神经元的输出值,也就是传输出给下一层神经元的值
下面介绍实践中一般使用的BP神经网络结构
BP神经网络常用结构与配置
虽然BP的通用结构里允许有多个隐层,并且可以设置不同的激活函数,
但实际上,最常用的是设一个隐层
隐层神经元的激活函数设为tansig函数
输出层的激活函数设为purelin
如此一来,结构就如下图所示:
其中
tansig函数为S型函数:
purelin 为恒等线性映射函数:
上图为3个隐神经元,在实际中,隐神经元个数由具体问题具体设定
✍️说明
1、输出层设为purelin,也即相当于输出层没有激活函数.
2、 隐层激活函数也可以设为logsig
logsig的表达式为 ,它和tansig没有太多质的区别 ,
区别只在于,logsig的取值范围是【0,1】,而tansig是【-1,1】
为什么BP神经网络实践中采用三层结构
为什么在实践中一般采用上述的结构呢?
主要是因为这样的结构简单又有效
简单是因为它只有一个隐层,比起多隐层网络,无疑是要简洁许多
有效是因为隐层激活函数采用了S型函数,这样网络就有了拟合非线性的能力
而输出层采用purelin,又可以让它的输出不受限制
如此一来,这种结构就“麻雀虽小,却五脏俱全”,简单又有效
后来有人证明,这种结构只要隐神经元足够,就能逼近任何函数,
如此一来,基本就都使用这种结构了
老饼语
事实上,BP神经网络有两个巨大的贡献,
首先是它的三层结构,在对一些传统小数据的拟合上简单、有效,曾经红极一时
而另一个是它的多层结构,BP神经网络所提出的多层结构开启了深度学习之门
在深度学习井喷之前,多层结构甚至可以说只是一种“毫无用处”的形式,
但在深度学习之后,三层结构所作的贡献,反而是渺小至极,
毕竟,三层结构仅是解决了一些具体的问题,而多层结构则是开启了一个时代,这是无法比拟的
但必须注意的是,尺有所短,寸有所长,杀鸡勿用牛刀
在解决小数据上不要随便套用多层神经网络,高射炮打蚊子未必好用
以上就是BP神经网络的模型结构的全部内容了~
End