在学习Batch Normalization时有遇到在反向传播时更新权重的问题,为了进一步理解Batch Normalization的具体过程,在此再详细理解一下反向传播(backpropagation)。
前向传播
在理解反向传之前先大致过一遍前向传播。
一般网络前向传播过程如上图所示,第一层是偏置项和输入,中间层是隐藏层,最后是输出。其中函数g代表代价函数,ω为的权重,z代表加权和。而在这张图中的a1(3)代表最终的预测值。如果是多分类问题则会有多个输出。我们从第一层开始正向一层一层进行计算,直到最后一层的a1(3)。
这时我们就能得到预测结果和真实值的偏差δ。为了使δ越小越好,我们可以通过求偏导的方式从最后一层向前一层依次求偏导,找到网络中对δ影响较大的权重,并调整该权重的值,从而使δ变小。这个过程便称之为反向传播。
反向传播
如下图蓝色所示为反向传播过程
其中y代表真实值,δ为每一层的偏差值。δ1(3)为y与a1(3)的偏差值,每一层的偏差值也如上图中所示的计算公式所示。
例如,为了计算δ1(3)对ω11(1)的敏感度,即ω11(1)对δ1(3)的作用强度,如上图所示。我们可以通过类似于上图中的链式求导法则一层一层算出预测值对于每个权重的敏感度,从而合理的改变这些权重,使得预测值更接近真实值。