周志华----第5章神经网络(误差逆传播算法)

周志华—-第5章神经网络(误差逆传播算法)

简介

多层网络的训练需要一种强大的学习算法,其中BP(errorBackPropagation)算法就是成功的代表,它是迄今最成功的神经网络学习算法。 简单来说,它可总结为两种模式:信息的正向传播和误差的反向传播。

正向传播:输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,则传向输出层,在逐层处理的过程中,每一层神经元的状态只会对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程

反向传播:反向传播时,把原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。


周志华----第5章神经网络(误差逆传播算法)

BP误差逆传播算法的数学推导

对训练例(xk,yk),假定神经网络的输出为y¯k=(y1¯k,y2¯k,,yl¯k),即yj¯k=f(βjθj),其中βj是第j个输出层神经元的输入值,θj是第j个输出层神经元的阙值,这里的f(x)是**函数,常用sigmoid函数。

则网络在(xk,yk)上的均方误差为:Ek=12j=1l(yj¯kyjk)2

BP误差逆传播算法的核心其实就是误差最小化的过程,它的主要策略是负梯度方向的梯度下降算法,即设定参数的初始值,通过一个学习速率η和当前梯度,来逐渐步进参数,以求拟合一个局部最优的参数。

一般的参数迭代过程如下:

V:=V+ΔVΔV=ηgrad(V)

我们以隐藏层中第h个神经元为参照对象,求解它的输入权重v和输出权重w,以及阙值Y,以输出层第J个神经元为输出参照,求解它的阙值θ.

隐藏层到输出层的权重Whj:

ΔWhj=ηdEkdWhj

由复合函数求导公式可得,即链式法则,可归纳为ha=f(g(x)), 则h(a)=f(g(x))g(x),Whj先影响到第j个输出层神经元的输入值βj,再影响到其输出值yj¯k,最后影响到误差Ek:(也就是说它们分别存在对应的函数关系)

dEkdWhj=dEkdyj¯kdyj¯kdβjdβjdWhj 

另外,由于sigmoid函数的性质:f(x)=f(x)(1f(x)),又sigmoid(net)=11+enet

:上述性质推导公式如下:

sigmoid(net)=enet(1+enet)2=1+enet1(1+enet)2=11+enet1(1+enet)2=sigmoid(net)sigmoid2(net) 

又,由于yj¯k=f(βjθj),则有(因为θj相当于常数,故可以在βj处添加,因为求导后常数的部分结果为0,不影响最终结果):

dyj¯kdβj=df(βjθj)dβjθj)=f(βjθj)(1f(βjθj))=yj¯k(1yj¯k) 

又(注:只有j=j时,函数求导才有意义,其他j等于非j的时候,求导相当于常数求导等于0):

dEkdyj¯k=d12j=1l(yj¯kyjk)2dyj¯k=d12(yj¯kyjk)2dyj¯k=yj¯kyjk 

同理(注:sum能删掉是因为Wij,当i不等于h时,相当于常数项导数为0),其中bh为隐藏层第h个神经元的输出:

dβjdWhj=di=1mWijbidWhj=bh

故:

ΔWhj=ηdEkdWhj=ηdEkdyj¯kdyj¯kdβjdβjdWhj$=bhη(yj¯kyjk)yj¯k(1yj¯k)