神经网络反向传播中各层损失计算
(一个随意的笔记)
在看吴恩达的神经网络时看不懂表达式啥意思,于是自己推算了一遍。背景是这样的,一个l层神经网络,正向传播如下图示例所示:
那么当计算出a(4)后,会与真实值y有一个偏差,神经网络就是根据这个偏差来反向传播,更新各层参数,进而完成模型训练的。在更新参数时需要知道各层的损失分别是多少,这怎么计算呢?结论如下:
然而但从表达式看来意义并不那么明确,于是推演一遍计算过程(认为损失
δ
\delta
δ(i)可以直接用偏导数表示):
不难发现,第l层的损失并不是简简单单直观认为的a(l)-y,实际上与我们计算出来第l层的 δ \delta δ(l)的表达式不谋而合,这实际上是由于损失函数J( θ \theta θ)的巧妙设定造成的效果。
而计算出每一层的损失
δ
\delta
δ(i)以后,就能利用反向传播算法更新参数了。我们前面计算了关于z(i)的偏导作为
δ
\delta
δ(i),而事实上参数是
θ
\theta
θ,因此需要进一步处理。