BP算法

  • 格式:doc
  • 大小:485.00 KB
  • 文档页数:11

BP算法

1 BP算法

BP算法可以描述如下(分两步):

(1)工作信号的正向传播:输入信号从输入层经隐层,传向输出层,在输出端产生输出信号,这是工作信号的正向传播。在信号的正向传播过程中权值和阈值是固定不变的,每一层神经元的状态只能影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入误差信号的反向传播。

(2)误差信号的反向传播:网络的期望输出与实际输出即为误差信号,误差信号由输出端开始逐层向前传播,这是误差信号的反向传播。在误差信号的反向传播过程中,网络的权值和阈值由误差反馈进行调节,通过不断修改权值和阈值使网络的输出更接近期望输出。

下面以含有两个隐层的BP网络为例,推导BP算法。

设输入层为M个输入信号,任一输入信号用m表示。第1隐层为I,表示有I个神经元,任一神经元用i表示。第2隐层为J,表示BP算法

2 有J个神经元,任一神经元用j表示。输出层为P,表示有P个神经元,任一神经元用p表示。

约定:神经元的输入用u表示,输出用v表示,u和v的上标表示层,下标表示某个神经元。如Iiu表示第I层(第1隐层)的第i个神经元的输入。Ii表示第I层(第1隐层)第i个神经元的阈值。IMimw表示第M层(前一层)的第m个输出(?神经元)到第I层的第i个神经元的权值。所有神经元的激励函数均用logsig函数。

设训练样本集为12{,,...,}NXXXX,对应任一训练样本:

12[,,...,],(1,2,...,)TkkkkMXXXXkN的实际输出为:12[,,...,]TkkkkPYyyy,期望输出为12[,,...,]TkkkkPdddd。设n为迭代次数,权值、阈值和实际输出是n的函数。

网络输入训练样本Xk,由工作信号的正向传播过程可得:

1122...IIMIMIMIiikikiMkMiuwxwxwx ()IIiivfu

1MIMIimkmimwx

1()MIMIimkmimfwx

1122...JJIIJIIJIIJjjjjIIjuwvwvwv ()JJjjvfu

1IJIIJjiijiwv

1()IJIIJjiijifwv

1122...PPJJPJJPJJPppppJJpuwvwvwv ()PPkpppyvfu

1JPJJPpjjpjwv

1()JPJJPpjjpjfwv

输出层第p个神经元的误差信号为()()()kpkpkpendnyn,定BP算法

3 义神经元p的误差为21()2kpen,则输出层所有神经元的误差为222212111()(()()...())()22PkkkPkppEnenenenen。不同的网络误差函数E(n)取法不一样

误差信号从后向前传递,在反向传播的过程中,逐层修改联接权值和阈值。下面计算误差信号的反向传播过程:

定义网络误差函数E(n)对各网络层的输入的导数的负数为局部梯度。则第P、J、I层局部梯度分别为:

()()()PpPpEnnun ()()()JjJjEnnun ()()()IiIiEnnun

由上述结果知,P、J、I层总的局部梯度为:

12()()()()PPPPPnnnn 12()()()()JJJJJnnnn 12()()()()IIIIInnnn

(1) 隐层J与输出层P之间的权值修正量

()()()()()()PpPJPPJpjppjunEnEnwnunwn()()PJpjnvn

由WH学习规则:()()()()()PJPJpjpjPJpjEnwnnvnwn

PJPJPJpjpjpjwnwnwn

(2) 隐层I和隐层J之间的权值修正量。

()()()()()()JjJIJJIjijjiunEnEnwnunwn()()JIjinvn BP算法

4 由WH学习规则:()()()()()JIJIjijiJIjiEnwnnvnwn

JIJIJIjijijiwnwnwn

(3) 隐层I和输入层M之间的权值修正量。

()()()()()()IiIMIIMimiimunEnEnwnunwn()()Iikmnxn

由WH学习规则:()()()()()IMIimikmIMimEnwnnxnwn

IMIMIMimimimwnwnwn

(4) 输出层P的阈值修正量

()()()()()()PpPPPpppunEnEnnunn()(1)Ppn()Ppn

由WH学习规则:()()()()PPppPpEnnnn

PPPpppnnn

(5) 隐层J的阈值修正量

()()()()()()JjJJJjjjunEnEnnunn()(1)Jjn()Jjn

由WH学习规则:()()()()JJjjJjEnnnn

JJJjjjnnn

(6) 隐层I的阈值修正量

()()()()()()IiIIIiiiunEnEnnunn()(1)Iin()Iin BP算法

5 由WH学习规则:()()()()IIiiIiEnnnn

IIIiiinnn

下面推导()Ppn、()Jjn、()Iin之间的关系。

()()()PpPpEnnun()()()..()()()kpkpPkpkppenynEnenynun

'().(1).(())()PpkpEnfunen'()(())()PpkpEnfunen

()()()JjJjEnnun1()()()()PPpPJppjunEnunun1()()()()()()PJPpjPJJppjjunvnEnunvnun

'1()(())PPPJJppjjpnwfun'1(())()()PJPPJjppjpfunnwn

()()()IiIiEnnun1()()()()JJjJIjjiunEnunun1()()()()()()JIJjiJIIjjiiunvnEnunvnun

'1()()(())JJJIIjjiijnwnfun'1(())()()JIJJIijjijfunnwn

将以上结果作一整理:

(1) '()()(())()PPppkpEnnfunen p=1,2,…,P

(2) '1()(())()()PJJPPJjjppjpnfunnwn j=1,2,…,J

(3) '1()(())()()JIIJJIiijjijnfunnwn i=1,2,…,I

(4) ()()()PJPJpjpjwnnvn p=1,2,…,P ;j=1,2,…,J

(5) ()()()JIJIjijiwnnvn j=1,2,…,J ;i=1,2,…,I BP算法

6 (6) ()()()IMIimikmwnnxn i=1,2,…,I ;m=1,2,…,M

(7) ()()PPppnn p=1,2,…,P

(8) ()()JJjjnn j=1,2,…,J

(9) ()()IIiinn i=1,2,…,I

将上述9个式子整理成矩阵形式:

(1)'()()(())()PPppkpEnnfunen p=1,2,…,P

12()()()()PPPPPnnnn'11'22'()(())()()(())()()(())()PkPkPPkPEnfunenEnfunenEnfunen'().*(())()PkEnfunen

(2)'1()(())()()PJJPPJjjppjpnfunnwn j=1,2,…,J

12()()()()JJJJJnnnn'111'221'1(())()()(())()()(())()()PJPPJpppPJPPJpppPJPPJJppJpfunnwnfunnwnfunnwn BP算法

7 112'11()()()()(())*()()PPPJpppPPPJppJpPPPJppJpnwnnwnfunnwn

1112211'11222221122()()()()...()()()()()()...()()(())*()()()()...()()PPJPPJPPJPPPPJPPJPPJJPPPPJPPJPPJJJPPJnwnnwnnwnnwnnwnnwnfunnwnnwnnwn 112111'12222212()()()()()()()()(())**()()()()PJPJPJPPPJPJPJPJPPJPJPJPJJPJPwnwnwnnwnwnwnnfunwnwnwnn

'(())*(())*()TJPTPJfunnWn 为了和matlab中权值矩阵保持一致

(3)'1()(())()()JIIJJIiijjijnfunnwn i=1,2,…,I

'1111'2221'1(())()()()(())()()()()()(())()()JIJJIjjjIJIJJIIjjIjIIJIJJIIjjIjfunnwnnfunnwnnnnfunnwn