之前介绍的梯度下降法是最简单的神经网络--感知器网络。它是利用外界输入样本的刺激,通过不断迭代,修正权重向量,以使网络输出与期望输出减少差距,直至稳定。但感知器无法处理线性不可分的情况。
1986年提出利用误差的反向传播原理设计了BP神经网络。BP网络改变了传统的网络结构,引入了新的分层和逻辑,基本解决了非线性的分类问题。
BP网络基本结构:
(1)输入层i。
输入向量:
输入层与隐含层连接权值:
输入层就是输入的数据集所构成的向量集合。第一列为偏置,第二列到最后一列是特征向量(分类标签除外)。输入层的输出是输入和权重的点积与激活函数的计算结果。
(2)隐含层h。
输入向量:
输出向量:
阈值:
隐含层与输出层连接权值:
激活函数:Logistic函数。
BP网络中隐含层一般不超过两层,它的输入是上一层的输出标量,输出是该标量与激活函数的计算结果。
(3)输出层o。
输入向量:
输出向量:
阈值:
它的输入是上一层的输出和权重的点积;输出是与激活函数计算结果,也就是最终预期的分类权值。
(4)期望输出:就是分类标签向量。
BP网络每一层都计算与预期结果的误差,并以反向传播的方式将误差传递到上一层,修正上一层的权重。下面为训练过程。
1.正向传播
输入信息通过输入层、隐含层到输出层,逐层传递计算每层神经元的实际输出值;b是阈值;w为各层的权重;激活函数:;
隐含层节点的输入为:
隐含层节点的输出为:
输出层节点的输入为:
输出层节点的输出为:
2.计算期望与实际分类的误差
计算实际输出与期望输出的差,并判断这个误差是否低于容限。如果高于容限,则进行误差反向传播。
误差向量:,全局误差函数:
3.计算反向传播
逐层计算实际输出与期望输出的误差,根据误差调节权重。dlogit函数:;
(1) 输出层误差:计算误差反向传播的输出层的梯度,就是输出层全局误差的梯度,用于更新输出层权值。
输出层的微分:
对等式右边两项分别推导:
左项:,我们把定义为;
右项:
则:微分:,梯度:
(2) 隐含层误差:微分:
对等式右边两项分别推导:
左项:,定义为;
右项:
则:微分:,梯度:
4.修正各层权值
更新隐含层:
更新输出层:
N表示当前的迭代次数,为学习率。