理解Batch Normalization

理解Batch Normalization

  • 什么是Batch Normalization
  • 为什么需要Batch Normalization
  • 注意事项

什么是Batch Normalization

Batch Normalization用公式可以表示为
x ∈ B , B N ( x ) = γ ⊙ x − μ ^ B σ ^ B + β x\in B, BN(x) = \gamma\odot\frac{x-\hat{\mu}_B}{\hat{\sigma}_B}+\beta xB,BN(x)=γσ^Bxμ^B+β
μ ^ B 、 σ ^ B \hat{\mu}_B、\hat{\sigma}_B μ^Bσ^B分别表示一个batch中样本的均值和标准差。也就是说Batch Normalization首先将一个batch中的样本变成标准正态分布,然后再进行拉伸和偏移。和和模型中其他参数一样是需要学习的。

为什么需要Batch Normalization

  1. BN可以统一不同层之间的单位
    以预测房价的问题为例,不同的层之间的输出结果可能单位不同,如果一个层的可变值是另一个层可变值的100倍,那么可能需要对学习率进行补偿和调整。
  2. BN可以一定程度缓解深层网络中梯度弥散的问题
    梯度弥散是指靠近输出的层梯度大更新较快,但远离输出的层梯度较小更新较慢
  3. BN可以避免过拟合
    从本质上来讲,BN就是优化方差大小和均值位置,使新的分布更切合数据的真实分布,保证模型的非线性表达能力。

注意事项

● 当batch size为1时,我们将无法学到任何东西。 这是因为在减去均值之后,每个隐藏单元将为 0。 所以,只有使用足够大的小批量,批量归一化这种方法才是有效且稳定的。 请注意,在应用批量归一化时,批量大小的选择可能比没有批量归一化时更重要(一般为50-100)。
● 当用测试集进行预测时,我们可能需要使用我们的模型对逐个样本进行预测。 一种常用的方法是通过移动平均估算整个训练数据集的样本均值和方差,并在预测时使用它们得到确定的输出。

你可能感兴趣的:(深度学习)