令表示第层的第个神经元到第层的第个神经元的连接权值,表示第层第个神经元的输入,表示第层第个神经元的输出,表示层第个神经元的偏置,C表示代价函数,
则有:
其中,表示激活函数。训练多层网络的目的就是使代价函数C最小化.
定义代价函数为:
可以看出,这个函数依赖于实际的目标值,可以看成权值和偏置的函数,通过不断的修改权值和偏置值来改变神经网络的输出值.
接下来更新权值和偏置:
首先定义误差,令表示第层第个神经元上的误差(?),定义为
由链式求导法则可得输出层的误差方程为:
因为当前层神经元的输出是上一层神经元输出的线性组合,由链式法则可通过下层神经元的误差来表示当前层的误差:
# 建立了 前一层误差 和 后一层误差的关系
又因为: 建立了 和的联系
对求偏导,可得:
故有: 前一层误差 和 后一层误差的关系推导
权重和偏置更新公式:
由梯度下降法可得到更新规则为:
BP反向传播的过程;