反向传播公式推导,BP神经网络(Back Propagation)/误差逆传播算法推导

BP神经网络算法即误差逆传播算法(error Back Propagation),先将输入层输入的数据提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结构;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整,如此循环迭代,直到达到某些条件为止。

一般而言,只需包含一个足够多神经元的隐层,就能以任意精度逼近任意复杂度的连续函数,故下面以训练单隐层前馈神经网络为例。

反向传播公式推导,BP神经网络(Back Propagation)/误差逆传播算法推导_第1张图片


上图为一个单隐层前馈神经网络拓扑结构,BP神经网络算法也使用梯度下降法,以单个样本的均方误差的负梯度方向对权重进行调节。可以看出:BP算法首先将误差反向传播给隐层神经元,调节隐层到输出层的连接权重与输出层神经元的阈值;接着根据隐含层神经元的均方误差,来调节输入层到隐含层的连接权值与隐含层神经元的阈值。BP算法基本的推导过程与感知机的推导过程原理是相同的,下面给出调整隐含层到输出层的权重调整规则的推导过程:

d 个输入神经元、l个输出神经元、q 个隐层神经元。

输出层第j 个神经元的阈值用θj表示,隐层第h个神经元的阈值用γh表示。

输入层第i个神经元与隐层第h个神经元之间的连接权为vih,隐层第h个神经元与输出层第j个神经元之间的连接权为ωhj

隐层第h个神经元接收到的输入为,输出层第j个神经元接收到的输入为

网络中有(d+l+1) q+l 个参数需确定:输入层到隐层的d x q个权值、隐层到输出层的q x l 个权值、q个隐层神经元的阔值、l个输出层神经元的阈值.


假设隐层和输出层神经元都是用Sigmoid函数:

Sigmoid函数性质:

训练例:,输出:,即:

则网络在上的均方误差为:  (1/2是为了求导方便)

故Ek是关于ωhjθj的多项式。

根据链式法则,得:反向传播公式推导,BP神经网络(Back Propagation)/误差逆传播算法推导_第2张图片

令,则,, gi就是输出层梯度项

BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整. 对Ek,给定学习率η(0<η<1)。 参数ω更新式为:

 

eh隐层梯度项

学习率η∈(0,1)控制着沿反梯度方向下降的步长,若步长太大则下降太快容易产生震荡,若步长太小则收敛速度太慢,一般地常把η设置为0.1。

BP算法的更新规则是基于每个样本的预测值与真实类标的均方误差来进行权值调节,即BP算法每次更新只针对于单个样例。需要注意的是:BP算法的最终目标是要最小化整个训练集D上的累积误差,即:

如果基于累积误差最小化的更新规则,则得到了累积误差逆传播算法,即每次读取全部的数据集一遍,进行一轮学习(one epoch),从而基于当前的累积误差进行权值调整,因此参数更新的频率相比标准BP算法低了很多,但在很多任务中,尤其是在数据量很大的时候,往往标准BP算法会获得较好的结果。

BP神经网络强大的学习能力容易造成过拟合,解决方案:早停、正则化



你可能感兴趣的:(反向传播公式推导,BP神经网络(Back Propagation)/误差逆传播算法推导)