算法面试BatchNormalization批标准化(2) BN的具体操作与计算

上一篇讲了BN是怎么缓解梯度消失与梯度爆炸的,这次详细看一下BN的实际操作,能够帮助我们更好的理解其作用。

BatchNormalize的具体操作

在训练和测试阶段,批量归一化的计算方式不同。

训练阶段

在每个隐藏层,Batch Normalization 将信号转换如下:
在这里插入图片描述

BN 层首先使用 (1) 和 (2) 确定整个批次的激活值的均值 𝜇 和方差 σ²。
然后它用 (3) 对***激活向量 Z^(i)*** 进行归一化。 这样,每个神经元的输出在批次中遵循标准正态分布。 (𝜀 是用于数值稳定性的常数)

批量标准化第一步。 一个 3 神经元隐藏层的示例,批次大小为 b。 每个神经元都遵循标准正态分布。 | 信用:作者 - 设计:Lou HD批量标准化第一步。 一个 3 神经元隐藏层的示例,批次大小为 b。 每个神经元都遵循标准正态分布。 | 信用:作者 - 设计:Lou HD
在这里插入图片描述

最后,它通过使用 𝛾 和 𝛽 这两个可训练参数 (4) 应用线性变换来计算层的输出 Ẑ(i)。 这样的步骤允许模型通过调整这两个参数为每个隐藏层选择最佳分布
𝛾 允许调整标准偏差;
𝛽 允许调整偏差,在右侧或左侧移动曲线。

在每次迭代中,网络计算与当前批次对应的均值 𝜇 和标准差 σ。 然后它通过**梯度下降训练 𝛾 和 𝛽,使用指数移动平均线 (EMA) 来更加重视最新的迭代。

评估阶段

与训练阶段不同,在评估阶段我们可能没有完整的批次输入模型。
为了解决这个问题,我们计算 (𝜇_pop , σ_pop),
𝜇_pop:估计平均值;
σ_pop:估计标准差。
这些值是使用在训练期间确定的所有 (𝜇_batch , σ_batch) 计算的,并在评估期间直接输入等式 (3)(而不是调用 (1) 和 (2))。

实践中

在实践中,我们将批量归一化视为***标准层***,例如感知器、卷积层、激活函数或 dropout 层。
每个流行的框架都已经实现了***批量标准化层***。 例如 :
Pytorch : torch.nn.BatchNorm1d, torch.nn.BatchNorm2d, torch.nn.BatchNorm3d
Tensorflow / Keras : tf.nn.batch_normalization, tf.keras.layers.BatchNormalization

所有 BN 实现都允许您独立设置每个参数。 然而,输入向量的大小是最重要的。 它应该设置为:
当前隐藏层中有多少个神经元(对于 MLP);
当前隐藏层中有多少个过滤器(对于卷积网络)。

添加 BN 层会导致更快更好的收敛(更好意味着更高的准确性);
添加 BN 层允许我们在不影响收敛性的情况下使用更高的学习率 (Learning Rate);
(更高的学习率有助于优化器避免局部最小值收敛。 优化器将更容易收敛到更好的解决方案。)

在实践中,人们普遍承认:
对于卷积网络 (CNN):批量归一化 (BN) 更好
对于循环网络(RNN):层归一化(LN)更好
(BN 使用当前批次来规范化每个单个值,而 LN 使用所有当前层来执行此操作。)

BatchNormalize究竟为什么起作用

上一篇文章中介绍了是因为 internal covariate shift
在这里插入图片描述

但是众说纷纭,大佬们各种研究,相互反驳,不停有新的说法出来……接下来介绍一下其他的研究与说法:

假设 2——BN 在训练期间减轻了隐藏层之间的相互依赖性

在这里插入图片描述
在这里插入图片描述
显然,如果所有梯度都很大,则 grad(a) 将非常大。 相反,如果所有梯度都很小,则 grad(a) 几乎可以忽略不计。通过查看隐藏单元的输入分布,很容易看出层之间的依赖程度:(a)权重的修改将修改(b)权重的输入分布,最终将修改( d) 和 (e)。 这种相互依赖可能会给训练稳定性带来问题:如果我们想调整特定隐藏单元的输入分布,我们需要考虑整个层序列。
添加 BN 层显着降低了训练期间各层之间的相互依赖性(从分布稳定性的角度来看)。 批量标准化就像一个阻止流动的阀门,并允许使用 𝛽 和 𝛾 对其进行调节。 然后不再需要考虑所有参数来获得关于隐藏单元内部分布的线索。
这个例子搁置了声称 BN 有效性是由于中间信号分布归一化为 (𝜇 = 0, σ = 1) 的假设。
在这里,BN 旨在简化优化器的工作,允许它一次只用两个参数调整隐藏层分布。

假设 3——BN 使优化环境更加平滑

BN ➜ 隐藏单元内输入信号的归一化 ➜ 使优化环境更平滑 ➜ 更快、更稳定的训练

总结

关于使 BN 在实践中有效的原因,最广为接受的假设是在训练期间减少了隐藏层之间的相互依赖性。 然而,优化景观平滑度的归一化转换影响似乎是 BN 有效性的重要机制。
现在许多常用的 DNN 都依赖于 BN

Reference

https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值