反向传播算法实质就是链式求导法则的应用,那为什么叫反向传播算法。
前提我们已经熟悉如何求偏导。有下面式子
第二个就是链式求导法则,\(\Delta s\)会分别影响\(\Delta x\)与\(\Delta y\)。\(\Delta x\)跟\(\Delta y\)会在会影响\(\Delta z\)。因此\(z\)对\(s\)求偏导就是上面的式子。
先对一个样本的误差求偏导,则对于任意一个\(w_i\),\(\frac{\partial C}{\partial w}= \frac{\partial z}{\partial w} \frac{\partial C}{\partial z}\) ,当前这里的\(z\)是指当前\(w_i\)直接相关的\(z\),比如如下图所示。
\(\frac{\partial z}{\partial w}\)好求,等于\(x_i\),因为即,等于与\(w_i\)直接关联的前面的\(x\)的值。如下图
下一步看如何求$ \frac{\partial C}{\partial z}$,假定我们的神经网络结构如下图
那根据链式求导法则对\(z\)求偏导得到
其中)好求,等于\(\sigma^ {‘}(z)\)即激活函数对\(z\)的导数。而
)等于下面
所以如果我们想求出!就是求
。而求
与
跟求
的步骤一模一样,即求与之关联的后面的\(z\)的偏导。如下图
所以每个都可以根据后面的
求出,如果我们从最后面开始求
那就可以求出每一步的
,在通过\(\frac{\partial C}{\partial w}= \frac{\partial z}{\partial w} \frac{\partial C}{\partial z}\) ,就可以求出每一个\(w_i\) 的偏导数。所以我们称为反向传播算法
李宏毅 机器学习
原文:https://www.cnblogs.com/lolybj/p/10716055.html