周志华—-第5章神经网络(误差逆传播算法)
简介
多层网络的训练需要一种强大的学习算法,其中BP(errorBackPropagation)算法就是成功的代表,它是迄今最成功的神经网络学习算法。 简单来说,它可总结为两种模式:信息的正向传播和误差的反向传播。
正向传播:输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,则传向输出层,在逐层处理的过程中,每一层神经元的状态只会对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程
反向传播:反向传播时,把原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。
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=12∑lj=1(yj¯¯¯¯k−yjk)2
BP误差逆传播算法的核心其实就是误差最小化的过程,它的主要策略是负梯度方向的梯度下降算法,即设定参数的初始值,通过一个学习速率η和当前梯度,来逐渐步进参数,以求拟合一个局部最优的参数。
一般的参数迭代过程如下:
V:ΔV=V+ΔV=η∗grad(V)
我们以隐藏层中第h个神经元为参照对象,求解它的输入权重v和输出权重w,以及阙值Y,以输出层第J个神经元为输出参照,求解它的阙值
θ.
隐藏层到输出层的权重Whj:
ΔWhj=−η∗dEkdWhj
由复合函数求导公式可得,即链式法则,可归纳为h(a)=f(g(x)), 则h′(a)=f′(g(x))g′(x),Whj先影响到第j个输出层神经元的输入值βj,再影响到其输出值yj¯¯¯¯k,最后影响到误差Ek:(也就是说它们分别存在对应的函数关系)
dEkdWhj=dEkdyj¯¯¯¯k∗dyj¯¯¯¯kdβj∗dβjdWhj
另外,由于sigmoid函数的性质:f′(x)=f(x)(1−f(x)),又sigmoid(net)=11+e−net
注:上述性质推导公式如下:
sigmoid′(net)=e−net(1+e−net)2=1+e−net−1(1+e−net)2=11+e−net−1(1+e−net)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)(1−f(βj−θj))=yj¯¯¯¯k(1−yj¯¯¯¯k)
又(注:只有j=j时,函数求导才有意义,其他j等于非j的时候,求导相当于常数求导等于0):
dEkdyj¯¯¯¯k=d12∑lj=1(yj¯¯¯¯k−yjk)2dyj¯¯¯¯k=d12(yj¯¯¯¯k−yjk)2dyj¯¯¯¯k=yj¯¯¯¯k−yjk
同理(注:sum能删掉是因为Wij,当i不等于h时,相当于常数项导数为0),其中bh为隐藏层第h个神经元的输出:
dβjdWhj=d∑mi=1WijbidWhj=bh
故:
ΔWhj=−η∗dEkdWhj=−η∗dEkdyj¯¯¯¯k∗dyj¯¯¯¯kdβj∗dβjdWhj$=−bhη∗(yj¯¯¯¯k−yjk)∗yj¯¯¯¯k(1−yj¯¯¯¯k)