7、Backpropagation(反向传播算法)

上一篇博文介绍了深度学习的历史和思想,本篇博客将介绍在神经网络计算中常用的反向传播算法。

目录

复习

Gradient Descent

链式求导法则

Backpropagation

反向传播算法介绍

前向传播算法和反响传播算法


复习

Gradient Descent

在学习反向传播算法之前重新回归一下梯度下降算法,在神经网络求解最优化Loss function所使用的方法就是梯度下降算法,反向传播算法能够在神经网络计算中更高效地计算。

链式求导法则

在神经网络中,因为有着多个隐藏层,所以在计算偏导数的过程中要使用到链式求导法则。

Backpropagation

反向传播算法介绍

Backpropagation的目的是极小化Loss function L(\theta),即是每一笔data的loss functionC(\theta)之和,因此计算L(\theta)的偏微分等价于计算每一笔C(\theta)的偏微分,再将之加总。现在对一个观测拿出红色三角区域部分进行分析。

根据链式求导法则,\frac{\partial C}{\partial w} =\frac{\partial C}{\partial z} \frac{\partial z}{\partial w},其中z=x_1w_1+x_2w_2+b,因此\frac{\partial z}{\partial w}可以很轻松计求解。

接下来我们开始计算\frac{\partial C}{\partial z}部分,如下图所示,\frac{\partial C}{\partial z} = \frac{\partial a}{\partial z} \frac{\partial C}{\partial a} = \sigma ^{'}(z)(\frac{\partial z^{'}}{\partial a}\frac{\partial C}{\partial z^{'}}+\frac{\partial z^{''}}{\partial a}\frac{\partial C}{\partial z^{''}})=\sigma ^{'}(z)[w_3 \frac{\partial C}{\partial z^{'}}+w_4 \frac{\partial C}{\partial z^{''}}]

现在开始计算\frac{\partial C}{\partial z^{'}}\frac{\partial C}{\partial z^{''}}——

  • 如果z^{'},z^{''}是最后一个神经元的input

\frac{\partial C}{\partial z^{'}}=\frac{\partial y_1}{\partial z^{'}} \frac{\partial C}{\partial y_1},\frac{\partial C}{\partial z^{''}}=\frac{\partial y_2}{\partial z^{''}} \frac{\partial C}{\partial y_2}

  • 如果z^{'},z^{''}不是最后一个神经元的input

从后面逆向算,先算\frac{\partial C}{\partial z_5},\frac{\partial C}{\partial z_6},此时\frac{\partial C}{\partial z_3} =\sigma^{'} (z_3)[w_5^{'}\frac{\partial C}{\partial z_5}+w_5^{''}\frac{\partial C}{\partial z_6}],依此类推可以一直算到第一层。

前向传播算法和反响传播算法

 

课程视频点击我

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_17438303/article/details/82023359