一、为什么要引入normalization?
由于机器学习中输入模型的数据需满足独立同分布的假设条件,而该假设条件对于神经网络而言很难满足(叠加的网络结构使得底层的参数更新对高层的输入分布产生很大的影响),故在神经网络中引入normalization方法,实际上是通过采取不同的变换方式使得各层的输入数据近似满足独立同分布假设条件,并使得各层输出限制在一定范围内。
二、normalization主要有哪些方式?
1)batch normalization
如公式所示,利用神经网络的一个mini-batch计算某神经元 规范化时对应的均值和方差。(M为mini-batch的大小)
适用场景:由于BN与mini-batch的数据分布紧密相关,故而mini-batch的数据分布需要与总体的数据分布近似相等。因此BN适用于mini-batch样本量较大且与各mini-batch分布相近似的场景下(训练前需进行充分的shuffle)。不适用于动态网络结构和RNN。
2)layer normalization
与BN仅针对单个神经元不同,LN考虑一层的信息,计算该层输入的平均值和方差作为规范化标准,对该层的所有输入施行同一个规范化操作。(i为各输入神经元)
相较于BN,LN不受mini-batch的均值和方差的影响,可用于mini-batch较小时的场景、动态网络结构和RNN。此外,由于无需保存mini-batch的均值和方差,节省了存储空间。然而,对于相似度相差较大的特征,LN会降低模型的表示能力,此种情形下BN更好(因为BN可对单个神经元训练得到)。
3)weight normalization
BN和LN将规范化应用于输入数据x,WN则对权重进行规范化。即将权重向量分解为权重大小和方向两部分:
WN不依赖于输入数据的分布,故可应用于mini-batch较小的情景且可用于动态网络结构。此外,WN还避免了LN中对每一层使用同一个规范化公式的不足。
总的来看,LN、BN属于将特征规范化,WN是将参数规范化。三种规范化方式尽管对输入数据的尺度化(scale)来源不同,但其本质上都实现了数据的规范化操作。
三、normalization 有效的原因?
1)normalization可保持权重伸缩不变
当权重w按照某一尺度伸缩时,其规范化之后的值不变
1.1 提高了反向传播的效率。权重的伸缩变化不会影响反向梯度的 Jacobian 矩阵,因此也就对反向传播没有影响,避免了反向传播时因为权重过大或过小导致的梯度消失或梯度爆炸问题,从而加速了神经网络的训练。
1.2 具有参数正则化的效果,可使用更高的学习率
权重值越大,梯度越小,使得参数变化更稳定,网络泛化性能提升。
2)数据伸缩不变(仅对BN、LN成立)
当数据x按照某一尺度伸缩时,其规范化之后的值不变。优势:有效减小梯度弥散,简化对学习率的选择。