Batch Normalization

文章目录

  • 一,Norimalize(归一化)的想法:
  • 二,为什么要做归一化?
  • 三,问题来了,如果标准正态分布约束过于严格了怎么办?
  • 四,注意:Test-Time
  • 五,Batch Normalization 放置的位置
  • 六,Batch Normalization的优点
  • 七,Layer Normalization
  • 八,Instance Normalization
  • 九,不同的Normalization的对比

一,Norimalize(归一化)的想法:

-  使得layer的输出为标准正态分布(均值为0,标准差为1)

二,为什么要做归一化?

  • 帮助减少内部 internal covariate shift.

  • Internal Covariate Shift(内部协变量偏移)它指的是在训练深度神经网络时,由于每一层的输入分布在训练过程中不断变化,导致网络的学习变得困难的问题。具体来说,当一个层的输入分布发生变化时,该层需要不断地适应新的输入分布,这会使得网络的训练过程变得不稳定,同时也会影响收敛速度和性能。

  • 把数据拉回标准正态分布,因为神经网络的Block大部分都是矩阵运算,一个向量经过矩阵运算后值会越来越大,为了网络的稳定性,我们需要及时把值拉回正态分布。
    Batch Normalization_第1张图片
    每一个维度来做均值,方差,得到标准正态分布。

三,问题来了,如果标准正态分布约束过于严格了怎么办?

  • 这时候我们的,可学习的scale(缩放因子),shift(平移因子)就闪亮登场了。
  • 这两个可学习的参数将修复我们的恒等式
    Batch Normalization_第2张图片

四,注意:Test-Time

  • 我们的均值和方差是在Minibatch的基础上做的。在test阶段,我们只单纯测试一张图片的话是得不到均值和方差的。此时,均值和方差用的就是训练过程中的平均值(average of values seen during training)

  • 当testing的时候batchnorm就变成了一个线性运算(linear operator),可以跟前一层的全连接层或者卷积层融合起来计算。

五,Batch Normalization 放置的位置

  • 通常在全连接层或者卷积层 之后,激活函数之前

六,Batch Normalization的优点

  • 使得更深的网络更简单的训练起来 Makes deep networks much easier to train!
  • 用了batch normalization之后 可以设更大的学习率,让其更快的收敛
  • 网络 对初始化更具有鲁棒性 了(因为做了归一嘛)
  • 在训练的时候有起到 正则化 的效果
  • 在test-time 零开销 :因为可以跟conv做融合嘛,一起计算。

七,Layer Normalization

先来看一下Layer Normalization 与 Batch Normalization的区别
Batch Normalization_第3张图片

八,Instance Normalization

Batch Normalization_第4张图片

九,不同的Normalization的对比

Batch Normalization_第5张图片

你可能感兴趣的:(深度学习基础知识,batch,normalization,人工智能)