Backpropagation
backpropagation(反向传播)在计算gradient的vector时可以有效率地把vector计算出来
我们先考虑一个neuron
考虑链式法则,现计算$\frac{\partial z}{\partial w}$,计算较为简单,规律发现就是input
以上步骤就叫forward pass,接下来介绍backward pass,即计算$\frac{\partial C}{\partial z}$,这较为困难
其中$\frac{\partial a}{\partial z}$就是sigmoid函数的导数,已知
而$\frac{\partial C}{\partial a}$可以通过链式法得到,其中的$\frac{\partial z^{\prime}}{\partial a}$和$\frac{\partial z^{\prime \prime}}{\partial a}$易求
化简得到下式
现在我们假设一个neuron(用三角形表示),又因为sigmoid确定的话,它的导数在forward pass时候就确定是一个常数,如下
剩下的两个未知数怎么算呢,分两种情况
第一种,这两个红色的neuron就是最后一层的output,考虑链式法则,$\frac{\partial y_1}{\partial z^{\prime}}$和$\frac{\partial y_2}{\partial z^{\prime \prime}}$根据函数求导就可以求得,而$\frac{\partial C}{\partial y_1}$和\frac{\partial C}{\partial y_2}$根据损失函数的形式来确定,求导即可
第二种,继续从后往前倒着算(同上),所以直接从后面倒着算
总结一下