Normalization小结

2022/4/15 6:12:45

本文主要是介绍Normalization小结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.为什么要用Normalization

  翻译过来就是归一化的意思,指将传统机器学习中的数据归一化方法应用到深度神经网络中,对神经网络中隐藏层的输入进行归一化,从而使网络更加容易训练。

  因为,

  它有更好的尺度不变性,即给定一个神经层L,它之前神经层L-1的参数变化会导致其输入的分布发生较大的改变,当用SGD来训练网络时,每次参数更新都会导致该神经层的输入分布发生改变,从机器学习角度来看,如果一个神经层的输入发生改变那就意味着其要重新学习,它把每个神经层的输入分布都归一化为标准的正态分布,可以使得每个神经层对其输入具有更好的尺度不变性。

  以及更平滑的优化地形,归一化不仅可以使得大部分神经层的输入处于不饱和区域,从而让梯度变大,避免梯度消失,还可以使得优化地形更加平滑,从而可以用更大的学习率,提高收敛速度。

  下面依次写到,批量归一化(Batch Normalization),层归一化(Layer Normalization),和权重归一化(Weight Normalization)。

2. 批量归一化(Batch Normalization)

  BN适用于判别模型中,比如图片分类模型。因为BN注重对每个Batch进行归一化,从而保证数据分布的一致性,而判别模型的结果正是取决于数据整体分布。但是      BN对Batch size的大小比较敏感,由于每次计算均值和方差是在一个上,所以如果Batch size太小,则计算的均值、方差不足以代表整个数据分布。

 

3.层归一化(Layer Normalization)

  它指针对同一张图片的同一层所有通道进行Normalization。

  层归一化和批量归一化整体上是十分类似的,差别在于归一化的方法不同。

  在三维矩阵中 层归一化是对矩阵每一列进行归一化,而批量归一化是对每一行进行归一化。

4.权重归一化(Weight Normalization)

  权重归一化是对神经网络的连接权重进行归一化, 通过再参数化方法, 将连接权重分解为长度和方向两种参数,然后使用SGD分别优化这两个参数



 



这篇关于Normalization小结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程