- 1 -
BP算法在矩阵分析基础上的改进
李建元,盛立东
北京邮电大学信息工程学院,北京(100876)
摘 要:本文首先分析了 BP算法传统分析方法的缺陷,提出了一种 BP算法的矩阵分析方
法,它不但有利于整体明晰的看到影响突触权值修正的因素,而且还有利于 BP算法的改进
和编码实现。在此基础上,提出了一种基于误差函数修改的 BP改进算法,实验表明它在提
高 BP算法鲁棒性的同时还提高了样本的识别正确率。
关键词:BP算法,矩阵,误差函数,鲁棒性,正确率
1. 引言
BP 算法是多层前向网络模型的一种较为简单实用的算法,但是常规 BP 算法收敛速度
慢、稳定性差、易于陷入局部极小,这大大限制了该算法的推广使用。为此,许多人提出了
该算法的改进方案,却都有自己的缺陷。本文首先分析了 BP算法传统分析方法的缺陷,提
出了 BP算法的矩阵分析方法,利用矩阵表示方法替代原来的和号表示方法使得该算法看起
来清晰明了。然后,以此为基础提出了一种基于反三角正切函数的改进算法,这种改进提高
了 BP算法的鲁棒性和识别样本时的正确率。
2. BP算法的传统分析方法
0x
1x
1nx −
1y
0y
1my −
jiω 'kjω ''lkω
'
0b
'
1b
1 1n
b −
0b
1b
2
'
1nb −
''
0b
''
1b
''
1mb −
图 1 BP网络模型
如图 1,BP网络的输入矢量: 0 1 1[ , ,..., ]nx x x − ,第一隐层的输出: 1
' ' '
0 1 1[ , ,..., ]nx x x − ,第
二隐层的输出:
2
'' '' ''
0 1 1[ , , . . . , ]nx x x − ,输出层的输出: 0 1 1[ , ,..., ]my y y − ,目标输出:
0 1 1[ , ,..., ]md d d − 。输入层到第一隐层的突触权值: jiω ,修正突触权值: jiω∆ ,修正突触权
值矩阵:W ,阈值: jb 。第一隐层到第二隐层的突触权值:
'
k j
ω ,修正突触权值: 'kjω∆ ,
修正突触权值矩阵: 'W ,阈值: '
k
b 。第二隐层到输出层的突触权值: ''l kω ,修正突触
- 2 -
权值: ''
lk
ω∆ ,修正突触权值矩阵: ''W ,阈值: ''
l
b 。基函数u和激活函数 f 分别为(以
第一隐层为例):
1
0 1 ( 1) 0 1 1
0
( , , ) [ , ,..., , ][ , ,..., , 1]
n
T
i ji j ji i j j j j n j n
i
u u x w b x b b x x xω ω ω ω− − −
=
= = − = −∑ (1)
' 1
1( ) (j=0 ,1,...,n 1)
1j u
x f u
e−
= = −+ (2)
为了便于运算,从式(1)可看到,若令 , 1jn j nb xω = = − (即 jb 相应于固定输入-1 的
突触权值)[1],那么我们下面可以统一的让 E对 jiω 求偏导,而不用单独再对 jb 求偏导。在
矩阵分析时,依然沿用这种规定。其他各层的阈值和输入也做类似的归并处理。
下面用梯度下降法求修正突触权值,第 p 个样本矢量的均方误差 ( )pE [2]和所有样本矢
量(P个)的总误差E [2]分别为:
1 1 1 1
( ) ( ) ( ) 2 ( ) ( ) ( ) 2
0 0 0 0
1 1( ) ; ( )
2 2
m P P m
p p p p p p
l l l l
l p p l
E d y E E d y
− − − −
= = = =
= − = = −∑ ∑ ∑∑ (3)
第二隐层到输出层修正突触权值的计算
( ) ''( )( )1
'' ( ) ''( ) ''
0
p ppP
l l
p p
plk l l lk
y uE E
y uω ω
−
=
∂ ∂∂ ∂=∂ ∂ ∂ ∂∑
1
( ) ( ) ''( )
0
( ) (1 )
P
p p p p p
l l l l k
p
d y y y x
−
=
= − − −∑ 1 ( ) ''( )
0
P
p p
lk k
p
xδ−
=
= −∑ (4)
式中 ( ) ( ) ( ) ( ) ( )( ) (1 )p p p p plk l l l ld y y yδ = − − ,所以 '' ''lk
lk
Eω η ω
∂∆ = − =∂
1
( ) ''( )
0
P
p p
lk k
p
xη δ−
=
∑ 。
其中,η为学习速率[2]。
第一隐层到第二隐层修正突触权值的计算
'
kj
E
ω
∂ =∂
( ) ''( ) ''( ) '( )( )1 1
( ) ''( ) ''( ) '( ) '
0 0
p p p ppP m
l l k k
p p p p
p l l l k k kj
y u x uE
y u x u ω
− −
= =
∂ ∂ ∂ ∂∂
∂ ∂ ∂ ∂ ∂∑ ∑
1 1
( ) '' ''( ) ''( ) '( )
0 0
(1 )
lk
P m
p p p p
lk k k j
p l
x x xδ ω− −
= =
= − − =∑ ∑ 1 ( ) ''( )
0
P
p p
kj j
p
xδ−
=
−∑ (5)
式中,
1
( ) ( ) '' ''( ) ''( )
0
(1 )
lk
m
p p p p
kj lk k k
l
x xδ δ ω−
=
= −∑ ,所以有 1' ( ) '( )
0
P
p p
kj kj j
p
xω η δ−
=
∆ = ∑ 。
完全类似于上面的计算,输入层到第一隐层修正突触权值为:
1
( ) ( )
0
P
p p
ji ji i
p
xω η δ−
=
∆ = ∑ ,式中, 2 1( ) ( ) ' '( ) '( )
0
(1 )
k j
n
p p p p
j i k j j j
k
x xδ δ ω
−
=
= −∑ [2]。
- 3 -
3. BP算法的矩阵分析方法
上面的结果看起来有些冗烦,而且只能局部地看到影响修正突触权值的因素。下面的矩
阵分析将有利于整体把握影响修正突触权值的因素,对于编码实现 BP算法有很大的好处,
同时还可以为改进 BP算法提供清晰的思路。
第二隐层到输出层修正突触权值的矩阵分析
根据式(4)可得,修正突触权值矩阵 ''W 为:
2 2
2 2
'' '' ''
0 0 0 ( 1 ) 0 ( )
''
'' '' ''
( 1 ) 0 ( 1 )( 1 ) ( 1 )( )
n n
m m n m n
W
ω ω ω
ω ω ω
−
− − − −
⎛ ⎞∆ ∆ ∆⎜ ⎟= ⎜ ⎟⎜ ⎟⎜ ⎟∆ ∆ ∆⎝ ⎠
K
M O M M
L
( 0 ) ( 0 ) ( 0 ) ( 0 ) ( 1) ( 1) ( 1) ( 1)
0 0 0 0 0 0 0 0
( 0 ) ( 0 ) ( 0 ) ( 0 ) ( 1) ( 1) ( 1) ( 1)
1 1 1 1 1 1 1 1
( ) (1 ) ( ) (1 )
( ) (1 ) ( ) (1 )
P P P P
P P P P
m m m m m m m m
d y y y d y y y
d y y y d y y y
− − − −
− − − −
− − − − − − − −
⎛ ⎞− − − −⎜ ⎟= ⎜ ⎟⎜ ⎟− − − −⎝ ⎠
K
M O M
L
2 2
2 2
''( 0 ) ''( 0 ) ''( 0 )
0 1
''( 1 ) ''( 1 ) ''( 1 )
0 1
n n
P P P
n n
x x x
x x x
−
− − −
−
⎛ ⎞⎜ ⎟× ⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
K
M O M M
L
(6)
可以看出, "W 是 P 个样本共同作用结果;第二隐层和输出层的输出都将影响到修正
结果(上式中第一个矩阵和第三个矩阵的最后一列是归并处理的结果)。
第一隐层到第二隐层修正突触权值的矩阵分析
将 矩 阵
(0) (0) (0) (0) (0) (0) (0) (0)
0 0 0 0 1 1 1 1
( 1) ( 1) ( 1) ( 1) ( 1) ( 1) ( 1) ( 1)
0 0 0 0 1 1 1 1
( ) (1 ) ( ) (1 )
( ) (1 ) ( ) (1 )
m m m m
P P P P P P P P
m m m m
d y y y d y y y
d y y y d y y y
− − − −
− − − − − − − −
− − − −
⎛ ⎞− − − −⎜ ⎟⎜ ⎟⎜ ⎟− − − −⎝ ⎠
K
M O M
L
和
2 2
2 2
'' '' ''
0 0 0 ( n - 1 ) 0 ( )
'' '' ''
( 1 ) 0 ( 1 ) ( 1 ) ( 1 ) ( )
ω
n
m m n m n
ω ω
ω ω ω− − − −
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
K
M O M M
L
相乘得到一个 2( 1)P n× + 的
矩阵,再将之与如下矩阵:
2 2 2 2
2 2 2 2
''( 0 ) ''( 0 ) ''( 0 ) ''( 0 ) ''( 0 ) ''( 0 )
0 0 1 1
''( 1 ) ''( 1 ) ''( 1 ) ''( 1 ) ''( 1 ) ''( 1 )
0 0 1 1
(1 ) (1 - ) (1 - )
(1 ) (1 - ) (1 - )
n n n n
P P P P P P
n n n n
x x x x x x
x x x x x x
− −
− − − − − −
− −
⎛ ⎞−⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟−⎝ ⎠
K
M O M M
L
进行对应项相乘(不是矩阵相乘),把得到的新矩阵转置,得到 2( 1)n P+ × 的矩阵,再与矩
阵
1 1
1 1
'( 0 ) '( 0 ) '( 0 )
0 1
'( 1 ) '( 1 ) '( 1 )
0 1
n n
P P P
n n
x x x
x x x
−
− − −
−
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
K
M O M M
L
相乘,得到一个 2 1( 1) ( 1)n n+ × + 的矩阵,而
- 4 -
它正是修正突触权值矩阵 'W (以上分析基于式(5))。
可以看出, 'W 是 P 个样本共同作用的结果;第一隐层和第二隐层的输出都将影响到
修正结果;输出层的输出和 ''W 也影响到了修正结果,这也正体现了误差反向传播(BP: back
propagation)的含义。对于W ,有完全类似的推导过程。
根据上面的推导,BP 算法的步骤可以描述为:
1)初始化突触权值和阈值;
2)依次输入 P 个样本,对每一个样本,计算出各层的输出和总误差 E,并把各层的输出和
目标输出存储到上面相应的矩阵中,直到所有的样本输入完毕,每个矩阵才能完全做好;
3)按照上面公式得到各层之间的修正突触权值矩阵 " ', ,W W W ,继而得到新的突触权值和
阈值(以输入层到第一隐层为例, ( 1) ( )ji ji jit tω ω ω+ = +∆ , t为训练次数)。
4)按新的突触权值和阈值计算各层的输出和总误差 E,若E ε< (ε 为事先指定的较小的
数)或到达了训练次数,则中止训练,否则转到步骤 2),继续新一轮的训练。
4. BP算法在矩阵分析基础上的改进
受益于上面的矩阵分析,本文对 BP算法做了改进。
原误差函数选用的是均方误差函数:
1
( ) ( ) ( ) 2
0
( )
( ) ( )
( )
1 ( )
2
( )
m
p p p
l l
l
p
p p
l lp
l
E d y
E d y
y
−
=
= −
∂ = − −∂
∑
(7)
改进后的误差函数:
1
( ) ( ) ( ) 2
0
( ) ( ) ( ) ( )( )
( ) ( ) ( ) 4
1 arg tan[( ) ]
2
( ) ( )
1 ( )
m
p p p
l l
l
p p p pp
l l l l
p p p
l l l l
E d y
d y d yE
y d y A
−
=
= −
− − − −∂ = =∂ + −
∑
(8)
改进后的误差变化忽略了异常样本值,更具有鲁棒性,因为少数异常样本值对整个样本
误差变化的影响是有限的[3] [4]。以第二隐层到输出层为例,改进后的误差函数使式(6)第
二个矩阵的每一项乘上了一个因子 1
lA
,进而导致式(6)中的修正突触权值都变小,因为对
于异常样本值, ( ) ( )p pl ld y− 一般是 (1, )+∞ 之间的数值, lA为较大的数值,如果使用未改进
的误差函数,极少数异常样本值造成的大误差将导致总体误差增大,使参数迭代偏离正确方
向,降低收敛速度。而改进后的误差函数对 ( )ply 求偏导后出现了分母( lA),它将降低分子
的作用,使少数异常样本值对整体样本误差变化影响很小,从而最终降低它对修正突触权值
的影响。对于其他层之间的修正突触权值也有类似的效果。
5. 验证改进后的 BP算法
为了验证改进算法的有效性和可行性,本文分别利用改进前和改进后的 BP算法实现了
一个手写数字识别系统,并对二者进行了对比分析,验证了改进后 BP算法的优点和实用性。
- 5 -
实验使用了美国国家邮政局数据库收集的手写体数字,该数据库中包括 7291个训练样本和
2007 个测试样本,每个样本都是经过简单的预处理并归一化为 16×16 像素的灰度图,其像
素值在[-1,1]之间。图 2是从训练样本集中随机抽取的部分样本。
图 2 美国国家邮政局数据库中的部分样本
改进前和改进后在训练样本时的对比:
如图 3、图 4所示:
图 3 改进前在训练样本时的结果
- 6 -
图 4 改进后在训练样本时的结果
改进前和改进后在测试样本时的对比:
如图 5、图 6所示:
图 5 改进前在测试样本时的结果
图 6 改进后在测试样本时的结果
图 3~6分别包括左中右三部分,左边部分显示了最后的识别正确率,中间部分显示了
训练或测试过程中正确率的动态变化情况,右边部分显示了正确、错误和拒识的数量。表 1
将之归纳对比如下:
- 7 -
表 1 实验结果综合对比表
训练网络(7291个样本) 测试网络(2007个样本) 类型
参数 改进前 改进后 改进前 改进后
正确量 6957 7204 1876 1951
正确率 % % % %
错误量 334 87 75 15
错误率 % % % %
拒识量 0 0 56 41
拒识率 0 0 % %
6. 结论
目前各种各样的 BP 改进算法已经大大改善了标准 BP 算法的性能,但是由于 BP 算法
本身固有的收敛速度慢和容易陷入局部极小的缺点,在实际的应用中,要经过反复的训练和
试凑才行。基于此,本文首先对 BP算法进行了矩阵分析,明晰的看到了影响修正突触权值
的因素,在此基础上提出了一种改进 BP算法,该算法降低了某些异常样本值对整体样本误
差的影响,从而使得 BP算法具有了更高的鲁棒性,同时还提高了样本的识别正确率。经实
验验证取得了较好的效果。
参考文献
[1] Simon Haykin.神经网络原理[M] .叶世伟,史忠直.北京:机械工业出版社,2004.
[2] 魏海坤.神经网络结构设计的理论与方法[M] .北京:国防工业出版社,2005:25-30.
[3] 唐恬,熊家军.改进 BP算法用于入侵检测[N] .空军雷达学院学报. 2005. 12(4).
[4] Richard O. Dude,Peter E. Hart,David G. Stork.模式分类(原书第二版)[M] .李宏东,姚天翔.北
京:机械工业出版社,2003. 9:248-257.
Improvement of BP algorithm Based on Matrix Analysis
Li Jianyuan, Sheng Lidong
Beijing University of Posts and Telecommunications, Beijing, PRC (100876)
Abstract
The defect on analyzing the BP algorithm is pointed. And a method by using matrix analysis is put
forward, which makes us clearly and globally see the ingredients that influence the modification of
weights and makes for the programming and improvement on BP algorithm. On basis of that, an
improved BP algorithm by modifying the error function is represented. The experiment shows that not
only does it boost up the robustness of BP algorithm, but also it improves the correct ratio on
recognizing the sample.
Keywords: BP algorithm, matrix, error function, robustness, correct ratio