详说各种 Normalization
Batch Normalization 是 Sergey 等人于2015年在 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 中提出的一种归一化方法。
在开始讨论之前, 我们需要先探讨一个问题, 对于深度神经网络而言, 什么样的输入是一个好的输入,或者说什么样的输入可以又快又好的训练模型? 通常我们希望输入的数据能够满足独立同分布,并且我们希望数据能分布在激活函数梯度较大的范围之内。可是在深度神经网络中,底层的参数更新会对高层的输入分布产生很大的影响,也就是说即使一开始我们的数据满足了要求,可是随着网络的传递,数据也会发生变化,不能满足要求。作者称这个现象叫 internal covariate shift。为了解决这个问题,作者提出了 Batch Normalization。
1. 什么是 Batch Normalization?
直接借用原文中的一副图来说明 Batch Normalization 的过程。
其中 x i x_i xi 为输入数据, μ β \mu_\beta μβ 为对一个 batch 的输入数据取平均值, σ β 2 \sigma^2_\beta σ