BP 神经网络介绍
BP 是当前应用最广泛的一种人工神经网络。结构简单,工作状态稳定,易于
硬件实现。BP 神经网络全称为:Back-Propagation 网络,是一种反向传递并修正
误差的多层映射网,它通常由输入层,中间隐含层,输出层三层神经元组成,它一
般可用LMS 法则实现误差后向传播学习方法。BP 网络采用有导师学习,通过组织
一批正确的输入输出数据时,将输入数据加到网络输入端,把网络的实际相应输
出和正确的(期望的)输出项比较得到误差,然后根据误差的情况修改各连接权,
是网络朝着能正确响应的方向不断变化下去,直到实际响应的输出与期望的输出
之差在允许的范围内。
BP 算法是典型的监督学习,当给定一个学习样本之后,输入模式由输入层传至隐含层,经隐含层逐层处理后在传到输出层,由输出层处理后产生网络输出模
式,这个过程是前向传播。如果网络输出与期望输出的误差不满足要求,则将误差
值沿连接通路反向逐层传递,并修正个连接权值和节点阀值以使网络误差达到最
小,这个过程是误差反向传播。对于给定的一组学习样本,需要不断用每个样本训
练网络直到网络误差满足要求。
假设各层分别有k N 个节点,训练集包括M 个样本,
( , )
p p
x y , p 1 , 2 , 3 , . . , M
1
1
M
p
p
e r r
M
E
(1)
2 1
2
( ? )
p p
E
p
j
y y
(2)
利用梯度最速下降法,使权值沿误差函数的负梯度方向改变.
( 1 ) ( )
p
j i j i
j i
i t
E
W W
W
(3)
由
p p p
p j p j
j i p j j i
E E n e t
O
W n e t W
(4)
其中
p
j i
E
W
表示第p 个样本误差函数对第j 个神经元至下层第i 个神经元的
偏导。
p p p
p j
p j p j p j
E E O
n e t O n e t
(5)
'
( )
p
p j
p j
n e t
O
f
n e t
(6)
对输出层节点,有
( )
p
p j p j
p j
O y
E
O
(7)
'
( ) ( )
p j p j p j p j
f n e t O y
(8)
1
( )
(1 )
x
f x
e
(9)
' '
' '
2 2
1 (1 ) (1 ) ( 1 )
( ) ( )
(1 ) (1 ) (1 ) (1 )
x x x x
x x x x
e e e e
f x
e e e e
(10)
对隐含层节点,有
p p p i
p i i j
i i
p j p j p j
W
E E n e t
O n e t O
(11)
'
( )
p j p j p j i j
i
f n e t W
(12)
如果激励函数采用如下:
1
n
i j i j i
j
n e t w x
(13)
那么有:
'
( ) ( ) (1 ( ) ) (1 )
p j p j p j p j p j
f n e t f n e t f n e t O O
(14)
因此,BP 的权值修正公式为:
( t + 1 ) = W ( )
i j i j p j p j
W t O (15)
式子中 是学习因子,增大 能提高收敛速度,但是容易引起震荡。为了使得
学习因子足够大,又不致使激烈震荡,通常在权值公式中增加一个动量项
( t + 1 ) = W ( )
i j i j p j p j i j
W t O ? w (16)
式子中 为动量因子,它能抑制网络学习中的高频震荡,起加速收敛和平滑
作用,但在网络收敛到稳定点附近会产生随机震荡,这种由 造成的动量误调噪
声是影响算法收敛精度的一个主要原因。为了消除这种动量误调噪声,可将动量
因子 取为网络误差的函数,并使其随着网络的收敛而衰减。
另一方面虽然BP 网络得到了广泛的应用但自身也存在一些缺陷和不足,
主要包括以下几个方面的问题。
首先,由于学习速率是固定的,因此网络的收敛速度慢,修要较长的训练时
间。对于一些复杂问题,BP 算法需要的训练时间可能非常长,这主要是由于学
习速率太小造成的,可采用变化的学习速率或自适应的学习速率加以改进。
其次,BP 算法可以使权值收敛到某个值,但并不保证其为误差平面的全局
最小值,这是因为采用梯度下降法可能产生一个局部最小值。对于这个问题,可
以采用附加动量法来解决。
再次,网络隐含层的层数和单元数的选择尚无理论上的指导,一般是根据经
验或者通过反复实验确定。因此,网络往往存在很大的冗余性,在一定程度上也
增加了网络学习的负担。
最后,网络的学习和记忆具有不稳定性。也就是说如果增加了学习样本,训练
好的网络就需要从头开始训练,对于以前的权值和阈值是没有记忆的。