Normalization 笔记 | Jason Hao's Blog
0%

Normalization 笔记

当数据 X 源域与目标域的数据分布不一致时,会导致对于任意 \(x\in X\), \(P_s(Y|X=x)=P_t(Y|X=x)\),但是 \(P_s(X)\neq P_t(X)\)。这样导致每个神经元的输入数据不是“独立同分布”,带来的问题:

(1)上层参数需要不断适应新的输入数据分布,降低学习速度; (2)下层输入的变化可能趋向于变大或者变小,导致上层落入饱和区,使得学习过早停止; (3)每层的更新都会影响到其它层,因此每层的参数更新策略需要尽可能的谨慎。

为此提出了各种 Normalization 方案:

Nomalization 通用公式 \(h=f(g\cdot \frac{x=\mu}{\sigma}+b)\)

Batch Norm (BN)

假设一个 batch 的大小为 \(M\)。那么用于做 normalization 的参数

\(\mu_i = \frac{1}{M} \sum x_i\),

\(\sigma_i=\sqrt{\frac{1}{M} \sum (x_i-\mu_i)^2 + \epsilon}\)

其中 \(i\) 代表第 \(i\) 个神经元,每个神经元采用各自的规范化变换。但是这个方法不适合动态的网络结构和 RNN 网络,因为 batch size 会太小,计算出来的均值方差效果不好。

Layer Norm (LN)

Layer Norm 考虑一层中所有维度的输入,计算该层的均值和方差。

\(\mu = \sum_{i}x_i\)

\(\sigma = \sqrt{\sum_i (x_i-\mu)^2 + \epsilon}\)

其中 \(i\) 枚举了所有的输入神经元。这几个参数都是标量,所有的输入共享一个规范化变换。所有输入都在同一个区间范围。如果不同输入特征不属于相似类别(颜色 vs 大小),这时 LN 可能会降低模型的表达能力。

Weight Norm (WN) 参数规范化

该方法将权重向量 \(\mathbf{w}\) 分解成两个部分 \(\mathbf{w}=g\cdot \hat\mathbf{v} = g\cdot \frac{\mathbf{v}}{||\mathbf{v}||}\) , \(\hat \mathbf{v}\) 决定了 \(\mathbf{w}\) 的方向;\(g\) 决定了 \(\mathbf{w}\) 的长度。

\(f_{\mathbf{w}}(WN(x))=\mathbf{w}\cdot WN(x)=g\cdot\frac{\mathbf{v}}{||\mathbf{v}||}\cdot x = \mathbf{v}\cdot g\cdot \frac{x}{||\mathbf{v}||}=f_{\mathbf{v}}(g\cdot\frac{x}{||\mathbf{v}||})\)

相当于 \(\sigma=||\mathbf{v}||, \mu=0, b=0\)

Cosine Norm (CN)

CN 跟 WN 非常相似:

\(f_{\mathbf{w}}(x)=cos\theta=\frac{\mathbf{w}\cdot x}{||\mathbf{w}||\cdot||x||}\)

该方法认为对数据进行规范化的原因,是数据经过神经网络的计算之后可能会变得很大,导致数据分布的方差爆炸,而这一问题源于计算方式——点积,权重向量 \(x\) 和 特征数据向量 \(\mathbf{w}\) 的点积。向量点积是无界(unbounded),由此提出了 cosine normalizaiton。

References