δi=er·f1’,eit ∑ kiw∠ki (69) 同理可得 i=no ij (6.10) 在 MATLAB工具箱中,上述公式的计算均已编成函数的形式,通过简单的书写调用即 可方便地获得结果。具体有 1)对于(6.1)式所表示的隐含层输出,若采用对数S型激活函数,则用函数 logsig.m 若采用双曲正切S型激活函数,则用函数 tansig n 2)对于(6.2)式所表示的输出层输出,若采用线性激活函数有 purelin. m与之对应; 3)对于(6.3)式所表示的误差函数,可用函数 summar. m求之 4)有 learnbp. m函数专门求(6.4)、(6.T、(6.8)和6.10)式所表示的输出层以及隐含 层中权值与偏差的变化量; 5)由(65)和(69)式所表示的误差的变化有函数 deltalin. m、 deltatan. m、 deltalog. m来解决 它们分别用于线性层、双曲正切层和对数层 6.2.3误差反向传播的流程图与图形解释 误差反向传播过程实际上是通过计算输出层的误差ek,然后将其与输出层激活函数的 阶导数n2相乘来求得δ。由于隐含层中没有直接给出目标矢量,所以利用输出层的δk反 e=∑δxw2 向传递来求出隐含层权值的变化量△w2。然后计算k=1 ,并同样通过将e 与该层激活函数的一阶导数f’相乘,而求得δ,以此求出前层权值的变化量△wli。如果 前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差ek一层一层的反推算到第 层为止。图6.4给出了形象的解释 6
6 (6.9) 同理可得: (6.10) 在 MATLAB 工具箱中,上述公式的计算均已编成函数的形式,通过简单的书写调用即 可方便地获得结果。具体有: 1)对于(6.1)式所表示的隐含层输出,若采用对数 S 型激活函数,则用函数 logsig.m; 若采用双曲正切 S 型激活函数,则用函数 tansig.m; 2)对于(6.2)式所表示的输出层输出,若采用线性激活函数有 purelin.m 与之对应; 3)对于(6.3)式所表示的误差函数,可用函数 sumsqr.m 求之; 4)有 learnbp.m 函数专门求(6.4)、(6.7)、(6.8)和(6.10)式所表示的输出层以及隐含 层中权值与偏差的变化量; 5)由(6.5)和(6.9)式所表示的误差的变化有函数 deltalin.m、deltatan.m、deltalog.m 来解决。 它们分别用于线性层、双曲正切层和对数层。 6.2.3 误差反向传播的流程图与图形解释 误差反向传播过程实际上是通过计算输出层的误差 ek,然后将其与输出层激活函数的一 阶导数 f2’相乘来求得δki。由于隐含层中没有直接给出目标矢量,所以利用输出层的δki 反 向传递来求出隐含层权值的变化量Δw2ki。然后计算 ,并同样通过将 ei 与该层激活函数的一阶导数 f1’相乘,而求得δij,以此求出前层权值的变化量Δw1ij。如果 前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差 ek 一层一层的反推算到第 一层为止。图 6.4 给出了形象的解释
k=1,2,…,s2;i=1,2,…,sl j=l,2,…,F 图6.4误差反向传播法的图形解释 BP算法要用到各层激活函数的一阶导数,所以要求其激活函数处处可微。对于对数S f(m)= 型激活函数 1+e 其导数为: f(n)= 0-eh(-1) (1 n2(+e (1+e +e (1 -)=f(n)[1-f(n) +e 1+e 对于线性函数的导数有 f′(m)=n′=l 所以对于具有一个S型函数的隐含层,输出层为线性函数的网络,有: 几2′=1,n′=a(1-a) 63BP网络的训练过程 为了训练一个BP网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求 得误差平方和。当所训练矢量的误差平方和小于误差目标,训练则停止,否则在输出层计算 误差变化,且采用反向传播学习规则来调整权值,并重复此过程。当网络完成训练后,对网 络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果 在动手编写网络的程序设计之前,必须首先根据具体的问题给出的输入矢量P与目标 矢量T,并选定所要设计的神经网络的结构,其中包括以下内容:
7 图 6.4 误差反向传播法的图形解释 BP 算法要用到各层激活函数的一阶导数,所以要求其激活函数处处可微。对于对数 S 型激活函数 ,其导数为: 对于线性函数的导数有: 所以对于具有一个 S 型函数的隐含层,输出层为线性函数的网络,有: 6.3 BP 网络的训练过程 为了训练一个 BP 网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求 得误差平方和。当所训练矢量的误差平方和小于误差目标,训练则停止,否则在输出层计算 误差变化,且采用反向传播学习规则来调整权值,并重复此过程。当网络完成训练后,对网 络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果。 在动手编写网络的程序设计之前,必须首先根据具体的问题给出的输入矢量 P 与目标 矢量 T,并选定所要设计的神经网络的结构,其中包括以下内容: