深度神经网络反向传播算法,由输出层的误差开始到输出层的输入,如下所示
这里的箭头表示的是前者是后者的函数,不是反向传播的方向。
式中
输出层的训练误差,是
训练结果中输出层
节点的输出,
是前向传播中,输出层的带权输入。其中
是
的函数,
是
的函数。由链式求导法则
可得到输出层的输入对误差
的偏导数,以下分别计算
式两项
根据样本输出和标准输出
,采用最小二乘法得训练损失函数
所以有式第一项
由到
是做了激活操作,这里使用的激活函数是sigmoid函数
求导得
式第二项
所以式可以写为
反向传播的梯度下降算法核心便是从后向前计算出每个节点的误差项,记
以下对
节点处在输出层和隐藏层两种情况分开讨论。
一、节点是输出层节点:
神经网络反向传播由后向前传播到输出层的隐藏函数
结合式,
是上一层节点
到输出层节点
的边的权重,
是
的函数,那么有:
式中第一项
是
节点的误差项,已由
式给出。第二项计算如下
根据反向传播梯度下降算法更新,其中
是学习率:
得
式即是我们再反向传播中,要更新的,隐藏层中与输出层相连的边对应的权重公式。再强调下,
是隐藏层
到输出层
节点的权重,
是学习率,
是
节点传递给
节点的输入值。
二、节点是隐藏层节点:
反向传播中,由输出层到隐藏层的输入
这里的和
中的
是隐藏层中
节点到输出层所有节点的集合,记为
,
分别是隐藏层
节点的输出和输入,结合
式,
是
的函数,
是
的函数,
是
的函数,
由链式求导法则可得
结合上一节,式第一项
式第二项
式第三项
式第四项
节点的误差项记为
,有
是节点
的输出值,
是节点
下游节点集合,即节点
所在层的下一层网络中与
相连的节点集合,
是节点
到节点
的连接权重,
是节点
的误差项