normalization 阅读笔记

https://zhuanlan.zhihu.com/p/33173246

阅读笔记

1. normalization

whiting - PCA

2. Internal Covariate Shift,简称 ICS.

“源空间(source domain)和目标空间(target domain)的数据分布(distribution)不一致 “,covariate shift 就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同。

输入的数据在神经网络的高层变化会非常的剧烈,所以高层就要不断的去调整学习率等参数。ICS会导致:上层不断的适应输入数据分布的变化,导致学习速度下降;下层的数据变化可能趋于变大或变小,导致上层落入饱和区,学习过早停止;每层的更新都会影响到其它层,所以每层的更新都要谨慎。

解决独立同分布的问题,就是进行白化,但是标准的白化太耗费资源,所以采用BN。

3. BN

基本思想是:在将 old{x} 送给神经元之前,先对其做平移和伸缩变换, 将 old{x} 的分布规范化成在固定区间范围的标准分布。通用变换框架就如下所示:h=fleft(old{g}cdotfrac{old{x}-old{mu}}{old{sigma}}+old{b}
ight)

(1) old{mu}平移参数(shift parameter), old{sigma}缩放参数(scale parameter)。通过这两个参数进行 shift 和 scale 变换: old{hat{x}}=frac{old{x}-old{mu}}{old{sigma}} 得到的数据符合均值为 0、方差为 1 的标准分布。

(2) old{b}再平移参数(re-shift parameter), old{g}再缩放参数(re-scale parameter)。将 上一步得到的 old{hat{x}} 进一步变换为: old{y}=old{g}cdot old{hat{x}} + old{b}

最终得到的数据符合均值为 old{b} 、方差为 old{g}^2 的分布。

PS.把数据编导0-1标准分布又变回来的原因:如果只是把底层的数据分布变到0-1标准分布,那么就相当于底层的学习做了无用功,无论他怎么学,最后都只变到一个很小的范围里,看不太出来学习的效果;第二个就是神经元节点的输出要经过sigmoid函数,之所以利用这个函数的原因就是利用它具有饱和区的特性,筛掉一些过大过小的成分,而如果只是0-1标准分布的话,就一直在函数的线性部分,没有办法充分发挥函数的作用。而且变到标准型再变回到正常的分布并不是无用功,新的参数是学习得来的,去除了与下层计算的密切耦合。新参数很容易通过梯度下降来学习,简化了神经网络的训练。

4. 四种方法优缺点

h=fleft(old{g}cdotfrac{old{x}-old{mu}}{old{sigma}}+old{b}
ight)

分别竖着处理x,横着处理x,处理g(权重),· 改成余弦相似度

  • batch normalization
    • 分布差距较小的 mini-batch 可以看做是为规范化操作和模型训练引入了噪声,可以增加模型的鲁棒性;但如果每个 mini-batch的原始分布差别很大,那么不同 mini-batch 的数据将会进行不一样的数据变换,这就增加了模型训练的难度。
    • BN 比较适用的场景是:每个 mini-batch 比较大,数据分布比较接近。在进行训练之前,要做好充分的 shuffle. 否则效果会差很多
    • 不适用于 动态的网络结构 和 RNN 网络,因为 BN 需要在运行过程中统计每个 mini-batch 的一阶统计量和二阶统计量
  • layer normalization
    • 针对单个训练样本进行,不依赖于其他数据,因此可以避免 BN 中受 mini-batch 数据分布影响的问题,可以用于 小mini-batch场景、动态网络场景和 RNN,特别是自然语言处理领域。此外,LN 不需要保存 mini-batch 的均值和方差,节省了额外的存储空间
    • BN 的转换是针对单个神经元可训练的——不同神经元的输入经过再平移和再缩放后分布在不同的区间,而 LN 对于一整层的神经元训练得到同一个转换——所有的输入都在同一个区间范围内。如果不同输入特征不属于相似的类别(比如颜色和大小),那么 LN 的处理可能会降低模型的表达能力
  • weight normalization
    • WN 的规范化不直接使用输入数据的统计量,因此避免了 BN 过于依赖 mini-batch 的不足,以及 LN 每层唯一转换器的限制,同时也可以用于动态网络结构。
  • Cosine Normalization
    • CN 通过用余弦计算代替内积计算实现了规范化。原始的内积计算,其几何意义是 输入向量在权重向量上的投影,既包含 二者的夹角信息,也包含 两个向量的scale信息。去掉scale信息,可能导致表达能力的下降.

5. 为什么用?

  • 权重伸缩不变性:1-4

    有效地提高反向传播的效率,避免了反向传播时因为权重过大或过小导致的梯度消失或梯度爆炸问题,从而加速了神经网络的训练;具有参数正则化的效果,可以使用更高的学习率。

  • 数据伸缩不变性:1-3

    有效地减少梯度弥散,简化对学习率的选择

原文地址:https://www.cnblogs.com/forPrometheus-jun/p/10515535.html