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}$根据损失函数的形式来确定,求导即可

第二种,继续从后往前倒着算(同上),所以直接从后面倒着算

 总结一下

 

posted @ 2024-02-26 19:33  ybx_tih  阅读(8)  评论(0编辑  收藏  举报