1. 为什么需要 Normalization
1.1 独立同分布与白化
独立同分布的数据可以简化常规机器学习模型的训练、提升机器学习模型的预测能力,所以经常认为数据应该满足独立同分布,即independent and identically distributed,简称为 i.i.d( 独立同分布并非所有机器学习模型的必然要求(比如 Naive Bayes 模型就建立在特征彼此独立的基础之上,而Logistic Regression 和 神经网络 则在非独立的特征数据上依然可以训练出很好的模型)。
所以在把数据喂给机器学习模型之前,“白化(whitening)”是一个重要的数据预处理步骤。白化一般包含两个目的:
(1)去除特征之间的相关性 —> 独立;
(2)使得所有特征具有相同的均值和方差 —> 同分布。
白化最典型的方法就是PCA
1.2 深度学习中的 Internal Covariate Shift
深度神经网络模型的训练为什么会很困难?其中一个重要的原因是,深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训好模型,我们需要非常谨慎地去设定学习率、初始化权重、以及尽可能细致的参数更新策略,Google 将这一现象总结为 Internal Covariate Shift,简称 ICS.
1.3 ICS 会导致什么问题?
简而言之,每个神经元的输入数据不再是“独立同分布”。
其一,上层参数需要不断适应新的输入数据分布,降低学习速度。
其二,下层输入的变化可能趋向于变大或者变小,导致上层落入饱和区,使得学习过早停止。
其三,每层的更新都会影响到其它层,因此每层的参数更新策略需要尽可能的谨慎。
2. Normalization 的通用框架与基本思想
以 BN 为代表的 Normalization 方法进行了简化的白化操作。基本思想是:在将 送给神经元之前,先对其做平移和伸缩变换, 将 的分布规范化成在固定区间范围的标准分布。(由于 ICS 问题的存在, 的分布可能相差很大。要解决独立同分布的问题,“理论正确”的方法就是对每一层的数据都进行白化操作。然而标准的白化操作代价高昂,特别是我们还希望白化操作是可微的,保证白化操作可以通过反向传播来更新梯度。)
通用变换框架就如下所示:
我们来看看这个公式中的各个参数。
(1) 是平移参数(shift parameter), 是缩放参数(scale parameter)。通过这两个参数进行 shift 和 scale 变换: 得到的数据符合均值为 0、方差为 1 的标准分布。
(2) 是再平移参数(re-shift parame
ter), 是再缩放参数(re-scale parameter)。将 上一步得到的 进一步变换为:
最终得到的数据符合均值为 、方差为 的分布。
tip:
1.第一步都已经得到了标准分布,第二步为了保证模型的表达能力不因为规范化而下降。(第一步的规范化会将几乎所有数据映射到激活函数的非饱和区(线性区),仅利用到了线性变化能力,从而降低了神经网络的表达能力。而进行再变换,则可以将数据从线性区变换到非线性区,恢复模型的表达能力。)
经过这么的变回来再变过去,会不会跟没变一样?
不会。因为,再变换引入的两个新参数 g 和 b,可以表示旧参数作为输入的同一族函数,但是新参数有不同的学习动态。在旧参数中, 的均值取决于下层神经网络的复杂关联;但在新参数中, 仅由 来确定,去除了与下层计算的密切耦合。新参数很容易通过梯度下降来学习,简化了神经网络的训练。
3.分类(Normalization 几类主流算法)
对输入数据 的变换:横着来是 LN(Layer Normalization ),纵着来是 BN(Batch Normalization)。
对模型参数 的变换: WN(Weight Normalization )
对点积的变换:CN(Cosine Normalization)
4.Normalization 为什么会有效
4.1 Normalization 的权重伸缩不变性
权重伸缩不变性(weight scale invariance)指的是,当权重 按照常量 进行伸缩时,得到的规范化后的值保持不变,即:
其中 。
上述规范化方法均有这一性质,这是因为,当权重 伸缩时,对应的均值和标准差均等比例伸缩,分子分母相抵。
权重伸缩不变性可以有效地提高反向传播的效率
权重伸缩不变性还具有参数正则化的效果,可以使用更高的学习率
数据伸缩不变性(data scale invariance)指的是,当数据 按照常量 进行伸缩时,得到的规范化后的值保持不变,即:
其中 。
数据伸缩不变性仅对 BN、LN 和 CN 成立。因为这三者对输入数据进行规范化,因此当数据进行常量伸缩时,其均值和方差都会相应变化,分子分母互相抵消。而 WN 不具有这一性质。
数据伸缩不变性可以有效地减少梯度弥散,简化对学习率的选择。
注:
我仅仅根据自己情况做了大部分摘录,若有不明,请参见原文章: