以下内容和图片均来自台湾大学深度学习课程。
课程地址:https://www.csie.ntu.edu.tw/~yvchen/f106-adl/syllabus.html
上节课程 lecture1-2 Neural Network Basics 讲了神经网络的结构以及正向传播的方法公式,最后也快速讲了一下使用梯度下降的方法进行优化,并且比较了GD、SGD、Mini-Batch三种方法。
本节课程深入讲解反向传播的具体方法。
首先比较了 正向传播 与 反向传播。
正向就是从输入到输出的正向传递过程,而反向使用就是梯度下降对代价函数进行输出到输入反向传递,从而找出最佳参数的过程。
这里用到了复合函数的求导法则。
正向传递是从
w
到
将上面的求导公式应用在
∂C(θ)∂wlij
中。
上面分成两个部分,首先看后面的 ∂zli∂wlij ,因为第一层中公式为 z1=wx+b ,而第二层往后 zl=wal−1+b ,所以这个很容易得到下面的结果。
第二部分 ∂C(θ)∂zli 计算方法相对较复杂。所以把这个公式再分成两部分看。
前面部分 ∂C∂yi 取决于loss function,比如我们常用的平方误差。
后面部分 ∂yi∂zLi 是对激活函数进行求导,比如对Logistic回归求导。
到这里第L层的结果已经完成,用矩阵形式表示如下、
但是上面说的只是第L层,反向传播还需要向前继续找出计算前面隐藏层的方法。
像上面一样拆分求导公式,得到下面结果,其中 ∂C∂zlk+1 通过上面的计算,可以从最后一层往前不断地带入进去,所以直接用 δ 表示 。
∂al∂zl 其实就是激活函数的求导上面也说过了,另外 ∂zl+1∂al 上面也说了是结果是 w ,所以能得到下面公式的最终结果。
再把最后的结果用矩阵形式表示出来,就得到下面的公式。
上面一系列公式看着很复杂,结合老师的视频仔细思考,一步一步都搞明白之后就发现其实不难。
综上所述,反向传播其实就是,首先计算最后一层的
至此,神经网络的基础,正相反相传播已经全部讲完了。将正向反向传播总结下来就是,下一步计算都是建立在上一步计算的结果基础上,每一步的计算结果都要代入到下次计算公式中去,所以只要搞清楚一步的原理,其余步骤只是在重复之前步骤而已。