Backpropagation-反向传播算法
1 前言
1.1 为什么要用 Backpropagation
在神经网络中的梯度下降算法和之前求线性回归方程中用的没有太大的区别,都是不断的计算微分,然后更新参数,最终找到一个最优解。
但是在神经网络中,有着大量可能多达上百万个的参数,所以传统的求微分方法行不通,计算量太大无法快速有效的求出微分。
1.2 链式求导法则(Chain Rule)
Backprogation 中设计的最重要的数学知识就是 chain rule,通过下面的图片回顾一下。这个都不会就要回去读高中了。
2 Backpropagation
2.1 应该求什么
从上一节内容我们知道,每一个神经网络都需要定义一个 Loss Function, 用来定义实际输出与预期输出之间的误差 Cn C n ,则总的误差就是
我们的目的就是要使上式的值最小。用 Gradient descent 来做的话就是这个式子对权值 w w 求偏导,即
由此我们知道只需要求每个 对 w w 的偏导,然后全部加起来就可以了。
2.2 Forward pass
对上面这个 Neural 来说,根据 Chain Rule,
很明显,计算 是很容易的,如在上图中,