上一期介绍了Batch Normalization的前向传播,然而想法美好,然而能否计算、如何计算这些新参数才是重点。
系列目录
理解Batch Normalization系列1——原理
理解Batch Normalization系列2——训练及评估
理解Batch Normalization系列3——为什么有效及若干讨论
理解Batch Normalization系列4——实践
先放出这张图,帮助记住。
图 1. BN的结构
1 训练阶段
引入BN,增加了 μ \mu μ、 σ \sigma σ、 γ \gamma γ、 β \beta β四个参数。
这四个参数的引入,能否计算梯度?它们分别是如何初始化与更新?
1.1 反向传播
神经网络的训练,离不开反向传播,必须保证BN的标准化、缩放平移两个操作必须可导。
缩放平移就是一个线性公式,求导很简单。而对于标准化时的统计量,看起来有点无从下手。其实是凭借图1的变量关系,可以绘制计算图,如图2所示。Frederik Kratzert 在这篇博文中有详细的计算,对每一个环节都进行了详细的描述。
图 2. 求解BN反向传播的计算图 (来源: 这篇博文)
由图2可见:
- 每个环节都可导
- 只要求出各个环节的导数
- 用链式法则(串联关系就相乘,并联关系就相加)求出总梯度。
狗尾续貂,对这个反传大致做了一个流程图,如图3所示,帮助理解。