算法证明
Last updated
Last updated
下面介绍反向传播基于的四个方程。
第层为输出层,该层得分误差向量中每一个元素定义如下:
右式第一项表示代价随着输出激活值的变化而变化的速度,第二项刻画了在处激活函数的变化速度。
证明:应用链式法则我们可以就输出激活值的偏导数的形式重新表示上面的偏导数:
这里的求和是在输出层的所有神经元上运行的,当时,于是,我们可以简化方程为:
特别的,
做微分,我们得到
代入上式,得到
将公式进行矩阵化,最后得到第一个公式。
举例来说,如下图:
也就是图中两条绿色的线所标识的权重与误差的乘积和。
用矩阵表示,可以表示成:
举例来说:
于是得到:
然后,于是,可以写成
以矩阵的形式重写方程,其中每个元素构成的向量表示成,每个元素构成的向量表示成,于是得到
其中是层权重矩阵的转置。这个公式看过去有点复杂,但是每个元素都有很好得分解释,假设我们知道的误差向量,当我们应用转置的权重矩阵,我们可以把它看做是沿着网络反向移动误差,给了我们度量在层的误差的方法。然后进行Hadamard乘积运算,这会让误差通过层的激活函数反向传递回来并给出在第层的带权输入误差向量。
根据该公式,我们可以首先根据第一个公式得到输出层的误差,然后得到第层的误差,如此一步步地方向传播完整个网络。
证明:根据链式法则,我们可以将写成:
这里我们将最后一个式子交换了两边的项,并用代入。然后
当我们已经计算得到了第层的误差向量,这时计算第层的误差向量,我们先计算,根据上面的公式可以得到
也就是误差和完全一致。
证明:根据链式法则,其中,最终可以得到
证明:根据链式法则,其中,最终可以得到
上面图中,想要计算,则。也可以理解成:
其中是输入给权重的神经元的激活值,是输出自权重的神经元的误差。
用矩阵表示,可以表示成(其中第层神经元有个,第层神经元有个)
其中是,是,最终得到的权重矩阵。