反向传播BP

之前介绍的梯度下降法是最简单的神经网络--感知器网络。它是利用外界输入样本的刺激,通过不断迭代,修正权重向量,以使网络输出与期望输出减少差距,直至稳定。但感知器无法处理线性不可分的情况。

1986年提出利用误差的反向传播原理设计了BP神经网络。BP网络改变了传统的网络结构,引入了新的分层和逻辑,基本解决了非线性的分类问题。

BP网络基本结构:

(1)输入层i

        输入向量:

        输入层与隐含层连接权值:

输入层就是输入的数据集所构成的向量集合。第一列为偏置,第二列到最后一列是特征向量(分类标签除外)。输入层的输出是输入和权重的点积与激活函数的计算结果。

(2)隐含层h

        输入向量:

        输出向量:

        阈值:

        隐含层与输出层连接权值:

  激活函数:Logistic函数。

BP网络中隐含层一般不超过两层,它的输入是上一层的输出标量,输出是该标量与激活函数的计算结果。

(3)输出层o

        输入向量:

        输出向量:

        阈值:

它的输入是上一层的输出和权重的点积;输出是与激活函数计算结果,也就是最终预期的分类权值。

(4)期望输出:就是分类标签向量。

BP网络每一层都计算与预期结果的误差,并以反向传播的方式将误差传递到上一层,修正上一层的权重。下面为训练过程。

1.正向传播

输入信息通过输入层、隐含层到输出层,逐层传递计算每层神经元的实际输出值b是阈值;w为各层的权重;激活函数:

隐含层节点的输入为:

隐含层节点的输出为:

输出层节点的输入为:

输出层节点的输出为:

2.计算期望与实际分类的误差

计算实际输出与期望输出的差,并判断这个误差是否低于容限。如果高于容限,则进行误差反向传播。

误差向量:,全局误差函数:

3.计算反向传播

逐层计算实际输出与期望输出的误差,根据误差调节权重。dlogit函数:

(1) 输出层误差:计算误差反向传播的输出层的梯度,就是输出层全局误差的梯度,用于更新输出层权值。

输出层的微分:

对等式右边两项分别推导:

左项:,我们把定义为

右项:

则:微分:,梯度:

(2) 隐含层误差:微分:

对等式右边两项分别推导:

左项:,定义

右项:

则:微分:,梯度:

4.修正各层权值

更新隐含层:

更新输出层:

N表示当前的迭代次数,为学习率。


猜你喜欢

转载自blog.csdn.net/weixin_28750267/article/details/81051956