理解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)。
● 当用测试集进行预测时,我们可能需要使用我们的模型对逐个样本进行预测。 一种常用的方法是通过移动平均估算整个训练数据集的样本均值和方差,并在预测时使用它们得到确定的输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值