BP神经网络
概述
- BP神经网络,主要有误差正向传播和误差反向传播两个过程
BP 神经网络是一种具有三层或三层以上的多层神经网络,每一层都由若干个神经元组成,如图它的左右各层之间各个神经元实现全连接即左层的每一个神经元与右层的每个神经元都有连接,而上下各神经元之间无连接。BP 神经网络按有导师学习方式进行训练,当一对学习模式提供给网络后,其神经元的激活值将从输入层经各隐含层向输出层传播,在输出层的各神经元输出对应于输入模式的网络响应。然后,按减少希望输出与实际输出误差的原则,从输出层经各隐含层,最后回到输入层逐层修正各连接权。由于这种修正过程是从输出到输入逐层进行的,所以称它为“误差逆传播算法”。随着这种误差逆传播训练的不断修正,网络对输入模式响应的正确率也将不断提高。
详解
1.BP神经网络的认识
BP(Back Propagation)神经网络分为两个过程
(1)工作信号正向传递子过程
(2)误差信号反向传递子过程
在BP神经网络中,单个样本有
m
m
m个输入,有
n
n
n个输出,在输入层和输出层之间通常还有若干个隐含层。实际上,1989年Robert Hecht-Nielsen证明了对于任何闭区间内的一个连续函数都可以用一个隐含层的BP网络来逼近,这就是万能逼近定理。所以一个三层的BP网络就可以完成任意的
m
m
m维到
n
n
n维的映射。即这三层分别是输入层(I),隐含层(H),输出层(O)。如下图示
2.隐含层的选取
在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层节点个数不确定,那么应该设置为多少才合适呢?实际上,隐含层节点个数的多少对神经网络的性能是有影响的,有一个经验公式可以确定隐层节点数目:
h
=
m
+
n
+
a
h = \sqrt{m + n} + a
h=m+n+a
其中
h
h
h为隐含层节点数目,
m
m
m为输入层节点数目,
n
n
n为输出层节点数目,
a
a
a为
1
−
10
1-10
1−10之间的调节常数。
3.正向传递子过程
现在设
i
i
i节点和
j
j
j节点之间的权值为
w
i
j
w_{ij}
wij,节点
j
j
j的阀值为
b
j
b_j
bj,每个节点的输出值为
x
j
x_j
xj,而每个节点的输出值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值和当前节点的阀值还有激活函数来现的。具体计算方法如下
其中为
f
f
f激活函数,一般选取S型函数或者线性函数。
正向传递的过程比较简单,按照上述公式计算即可。在BP神经网络中,输入层节点没有阀值。
4.反向传递子过程
在BP神经网络中,误差信号反向传递子过程比较复杂,它是基于Widrow-Hoff学习规则的。假设输出层的所有结果为
d
j
d_j
dj,误差函数如下
而BP神经网络的主要目的是反复修正权值和阀值,使得误差函数值达到最小。Widrow-Hoff学习规则是通过沿着相对误差平方和的最速下降方向,连续调整网络的权值和阀值,根据梯度下降法,权值矢量的修正正比于当前位置上E(w,b)的梯度,对于第
j
j
j个输出节点有
假设选择激活函数为
对激活函数求导,得到
那么接下来针对
w
i
j
w_{ij}
wij有
其中有
同样对于
b
j
b_j
bj有
这就是著名的
δ
\delta
δ学习规则,通过改变神经元之间的连接权值来减少系统实际输出和期望输出的误差,这个规则又叫做Widrow-Hoff学习规则或者纠错学习规则。
上面是对隐含层和输出层之间的权值和输出层的阀值计算调整量,而针对输入层和隐含层和隐含层的阀值调整量的计算更为复杂。假设
w
k
i
w_{ki}
wki是输入层第k个节点和隐含层第i个节点之间的权值,那么有
其中有
这样对
δ
\delta
δ学习规则理解更为深刻了吧。
有了上述公式,根据梯度下降法,那么对于隐含层和输出层之间的权值和阀值调整如下
而对于输入层和隐含层之间的权值和阀值调整同样有
以上就是BP神经网络的基本原理。
5.BP神经网络的注意点
BP神经网络一般用于分类或者逼近问题。如果用于分类,则激活函数一般选用Sigmoid函数或者硬极限函数,如果用于函数逼近,则输出层节点用线性函数,即
f
(
x
)
=
x
f(x) = x
f(x)=x。
BP神经网络在训练数据时可以采用增量学习或者批量学习。
增量学习要求输入模式要有足够的随机性,对输入模式的噪声比较敏感,即对于剧烈变化的输入模式,训练效果比较差,适合在线处理。批量学习不存在输入模式次序问题,稳定性好,但是只适合离线处理。
- 标准BP神经网络的缺陷:
1.容易形成局部极小值而得不到全局最优值。
BP神经网络中极小值比较多,所以很容易陷入局部极小值,这就要求对初始权值和阀值有要求,要使
得初始权值和阀值随机性足够好,可以多次随机来实现。
2.训练次数多使得学习效率低,收敛速度慢。
3.隐含层的选取缺乏理论的指导。
4.训练时学习新样本有遗忘旧样本的趋势。 - BP算法的改进:
1.增加动量项
引入动量项是为了加速算法收敛,即如下公式
动量因子 α \alpha α一般选取 0.1 − 0.8 0.1-0.8 0.1−0.8。
2.自适应调节学习率
3.引入陡度因子
通常BP神经网络在训练之前会对数据归一化处理,即将数据映射到更小的区间内,比如[0,1]或[-1,1]。