以下内容和图片均来自台湾大学深度学习课程。
课程地址:https://www.csie.ntu.edu.tw/~yvchen/f106-adl/syllabus.html

上节课程 lecture1-2 Neural Network Basics 讲了神经网络的结构以及正向传播的方法公式,最后也快速讲了一下使用梯度下降的方法进行优化,并且比较了GD、SGD、Mini-Batch三种方法。

本节课程深入讲解反向传播的具体方法。

首先比较了 正向传播反向传播
正向就是从输入到输出的正向传递过程,而反向使用就是梯度下降对代价函数进行输出到输入反向传递,从而找出最佳参数的过程。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

这里用到了复合函数的求导法则。
正向传递是从 wz 是的过程,而反向求导则是 zw 的过程。注意这里的字母含义是一般求导公式,不是神经网络中的字母含义。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

将上面的求导公式应用在 C(θ)wlij 中。
台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

上面分成两个部分,首先看后面的 zliwlij ,因为第一层中公式为 z1=wx+b ,而第二层往后 zl=wal1+b ,所以这个很容易得到下面的结果。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

第二部分 C(θ)zli 计算方法相对较复杂。所以把这个公式再分成两部分看。

前面部分 Cyi 取决于loss function,比如我们常用的平方误差。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

后面部分 yizLi 是对**函数进行求导,比如对Logistic回归求导。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

到这里第L层的结果已经完成,用矩阵形式表示如下、

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

但是上面说的只是第L层,反向传播还需要向前继续找出计算前面隐藏层的方法。

像上面一样拆分求导公式,得到下面结果,其中 Czlk+1 通过上面的计算,可以从最后一层往前不断地带入进去,所以直接用 δ 表示 。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

alzl 其实就是**函数的求导上面也说过了,另外 zl+1al 上面也说了是结果是 w,所以能得到下面公式的最终结果。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

再把最后的结果用矩阵形式表示出来,就得到下面的公式。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

上面一系列公式看着很复杂,结合老师的视频仔细思考,一步一步都搞明白之后就发现其实不难。

综上所述,反向传播其实就是,首先计算最后一层的 C ,代入公式得到最后一层的 δ ,然后不断地将此结果代入到前一层的公式里面,求得前一层 δ

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

至此,神经网络的基础,正相反相传播已经全部讲完了。将正向反向传播总结下来就是,下一步计算都是建立在上一步计算的结果基础上,每一步的计算结果都要代入到下次计算公式中去,所以只要搞清楚一步的原理,其余步骤只是在重复之前步骤而已。

台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation

相关文章: