chain rule
由chain rule,就可以吧损失函数对w的微分,拆成两个部分来分别计算。
第一部分是z对w的微分。这个计算是比较简单的。
第二个部分是损失函数对z的微分,无法求解。我们继续用chain rule拆分,拆成a对z的微分乘损失函数对a的微分。
a是z带入sigmoid函数的结果,所以它的微分也就是sigmoid函数的导数。
再把损失函数对a的微分继续拆,假设下一层有两个节点z’和z’’。则z’和z’‘对a的微分是容易求的。剩下要求的就是损失函数对z’z’'的微分。
到这为止,损失函数对z的微分可以写成下图的形式。
如果z’和z’'并不是输出层,那么它们微分的求解过程和z是一样。
我们可以重复迭代,直到输出层。
迭代到输出层时,对z’的微分就可以拆成y1对z’的微分乘上损失函数对y1的微分。
而损失函数就是已知的y的函数(比如分类问题中它是交叉熵函数),它对y的微分可以求解。
输出层的微分解出来了,前一层的微分也就有了,进而可以求出所有的微分,就像递归的时候遇到了终止条件。
既然我们直到了求解的过程,干脆就从输出层开始解,就像把神经网络反向了一样。这也就是所谓反向传播的含义。