归一化#
术语解释#
归一化(Normalization) 是深度学习和机器学习中用于提高模型训练稳定性和效率的关键技术,其核心思想是将数据样本的特征或网络层的输出映射到一个特定的尺度或分布范围内。
在机器学习领域中,常见的两种标准化方法分别是去均值(Z-Score)标准化和最小-最大值(Min-Max)标准化。
对于去均值化标准化来说,它的作用是消除量纲对模型结果的影响,使得在标准化以后每一列特征的均值都为0方差都为1。对于最小-最大值标准化来说,它的作用是通过线性变换将数据映射到一个特定的区间,通常是$[0, 1]$或者$[-1, 1]$,使得所有特征的取值范围一致。
在深度学习领域中,提到归一化我们更多的是指其中最为常见的3中归一化方法批归一化(BN)、 层归一化(LN)和组归一化(GN),以及在 LLM 中提出的均方根归一化(RMSNorm):
-
批归一化(BN):以小批量(Mini-batch)为单位,对每个特征维度进行标准化。
-
层归一化(LN):以单个样本为单位,对其当前层的所有特征维度进行标准化,常用于 RNN 和 Transformer。
-
均方根归一化(RMSNorm):LayerNorm 的简化版,移除了去均值操作,仅保留缩放,旨在降低计算开销。
-
组归一化(GN):将通道分成多个组,在组内进行归一化,解决了 BN 对小批大小(Batch Size)依赖的问题。
出现动机#
在机器学习领域中, 引入归一化更多的是为了解决特征量纲差异导致的模型收敛问题。若不同特征维度取值范围差异过大(如一个在 $[0,1]$,另一个在 $[10,100]$),那么目标函数的等高线会呈现椭圆形,导致梯度下降时在某些方向震荡,收敛缓慢。关于这部分内容的详细介绍可以参见机器学习栏目「第4.2.3节 标准化方法」内容。
在深度学习领域中,批归一化最早是为了解决内部协变量偏移(Internal Covariate Shift)这一问题,因为随着网络加深,前一层参数的微小变化会引起后一层输入分布的剧烈剧烈波动,迫使深层网络不断重新适应新分布,增加了训练难度和收敛耗时。关于这部分内容可参见深度学习栏目 「第6.3节 BatchNorm原理:批归一化为什么能加速训练」内容。
至于后续的层归一化、组归一化和均方根归一化等,都是在批归一化的基础上做了进一步优化和适配。
优点缺点#
-
优点
-
加速模型收敛:归一化使目标函数的等高线更接近圆形,梯度下降可以直接指向最优解,从而显著减少训练步数。
-
支持更大的学习率:由于网络变得更稳定,允许使用较大的学习率而不会导致目标函数发散。
-
降低对初始化的敏感度:合理的参数初始化对深层网络至关重要,归一化减轻了这种依赖,增强了训练的鲁棒性。
-
具备正则化效果:如批归一化(BN)在一定程度上能提高模型的泛化能力,缓解过拟合。
-
提升推理速度(针对 RMSNorm):通过简化计算逻辑,在不牺牲精度的情况下显著加快训练和推理过程。
-
-
缺点
-
计算开销:虽然能减少训练步数,但在“每一步”前向传播中都增加了额外的计算逻辑,可能导致单步推理速度变慢。
-
表示能力受限:单纯的标准化可能改变原有维度的表示信息(如将 Sigmoid 强行拉入线性区)。因此通常需要引入可学习的缩放参数 $\gamma$ 和平移参数 $\beta$ 来恢复网络的表示能力。
-
Batch Size 依赖性(BN 专有):BN 高度依赖批大小。当 Batch Size 过小时,均值和方差的估计会严重偏离真实分布,导致精度下降。
-
不适用于变长序列(BN 专有):在 RNN 中,每个样本长度不同。如果推理时的序列长度超过训练时的最大长度,BN 将无法工作,因此提出了 LN 归一化。
-
术语别名#
-
标准化
-
特征标准化
相关术语#
-
层归一化
-
组归一化
-
批归一化
-
均方根归一化