Backpropagation(反向传播):
背景——Cost Function与Gradient Descent
- Cost Function:
- Gradient Descent:
backpropagation是一种高效计算网络中gradient的方法
对权重wij求偏导
由于C的变化与z有关,z的变化与w有关,因此,需要分为如下两部分求解:
- z对w求偏导:
- z对w求偏导实际上就是对 z = wx+b求偏导,因此我们需要做的就是将x分为两部分,一部分就是输入层(input),另一部分就是隐藏层的输入a:
- z对w求偏导实际上就是对 z = wx+b求偏导,因此我们需要做的就是将x分为两部分,一部分就是输入层(input),另一部分就是隐藏层的输入a:
- C对z求偏导:
如下图所示,我们要把求偏导分为以下两个问题:
- 那么我们先解决第一个问题,我们所求的这个值,实际上是输出层中的一个element的值:
可以看到,在输出层中,y对z求偏导实际是就是a对z求偏导,而a对z求偏导,实际上就是activation function对z求导;而C对y求偏导实际上就是cost function对y求导。
现在我们已经求出了输出层中某个元素的值了,接下来就是扩展到整个vector上。由于它的第一项是activation function对z求导,第二项是cost function对y求导,因此可以写成如下形式:
注意:上面的element-wise multiplication指的不是矩阵乘法,而是:如,x = [[1,2],[3,4]],y = [[1,2],[3,4]],x·y = [[1,4],[9,16]] - 接下来我们来解决第二个问题,我们也是从一个元素入手:
接下来进行计算:
有了上面的公式,现在我们发现可以将这个公式看成一个新型的神经元。
输入的是乘上它们在l+1层的权重,接着将乘积通过一个常量(也就是activation function的导数)可以看做是一个放大器。
因此我们可以得到下面的l层和l+1层的关系
下面我们可以将反向传输和一般的神经网络进行对比:
- 那么我们先解决第一个问题,我们所求的这个值,实际上是输出层中的一个element的值:
- 总结: