BP算法:
利用的是sigmoid函数来搭建的一个三层神经网络。假设其拓扑结构如图1-1所示。

该网络的运行流程为:当输入一个样例后,获得该样例的特征向量,再根据权向量得到感知机的输入值,然后使用sigmoid函数计算出每个感知机的输出,再将输出作为下一层感知机的输入,以此类推,知道输出层。
反向传播算法就是用来对每个感知机的权向量逐步进行优化。为了得到最优化权向量,这边我们使用L2作为损失函数来不断调整权向量。下面就是每一个训练样例的损失函数(式1-1):
(式1-1)
在多层神经网络中,误差曲面可能有多个局部极小值,所以我们用梯度下降找到的是局部极小值,而不是全局最小值。
具有一层隐藏层的反向传播:
1.将网络中的所有权值随机初始化。
2.对每一个训练样例,执行如下操作:
A.根据实例的输入,从前往后依次计算,得到输出层的每个单元的输出。然后从输出层开始反向计算每一层的每个单元的误差。
B.对于输出层的每个单元的k,计算它的误差:
(式1-2)
C.对于网络中每个隐藏层单元h,计算他的误差项:
(式1-3)
D.更新每个权值:
(式1-4)
被称为权值更新法则 (式1-5)
符号说明:
:节点i到节点j的输入,
:表示节点i到节点j对应的权值
outputs:表示整个输出层结点集合
BP算法推导过程:
算法的推导主要是利用梯度下降算法求解最小化损失函数的过程,现在损失函数为:
对于网络中每个权值,计算其导数:
1.若j是网络层的输出单元
对的求导:
其中:
所以有:
为了使表达简洁,我们使用:
权值的改变朝着损失函数的负梯度方向,于是有权值改变量:
2.若j是网络层的隐藏单元
由于隐藏单元中w的值通过下一层来间接影响输入,故使用剥离的方式来进行求导:
因为:
所以:
同样,我们使用:
所以权值变化量:
参考博客:https://www.cnblogs.com/liuwu265/p/4696388.html