译自英文

层归一化是一种深度学习技术,它对每个单独输入的特征维度进行归一化处理,从而在Transformer和循环神经网络中稳定训练过程。

层归一化是一种激活归一化技术,用于深度学习中,以稳定并加速神经网络的训练。与在批次维度上进行归一化的批归一化不同,层归一化针对每个单独输入样本在特征维度上计算统计量。这使得它特别适用于具有可变长度序列或小批量大小的模型,例如变换器和循环神经网络(RNN)。它由Jimmy Lei Ba、Jamie Ryan Kiros和Geoffrey Hinton于2016年提出,此后已成为许多现代架构中的标准组件,包括大型语言模型

层归一化解决了内部协变量偏移问题,即层输入分布在训练过程中发生变化,从而减慢收敛速度。通过将激活重新缩放和重新居中,使其具有零均值和单位方差,它平滑了优化景观,并降低了对参数初始化和学习率的敏感性。实证成功使其成为序列建模和生成式AI系统中的默认选择。

动机与背景

机器学习中的归一化大致分为两类:数据归一化和激活归一化。数据归一化,或特征缩放,将输入特征重新缩放到一个共同范围,例如[0,1]或[-1,1],以防止具有较大尺度(例如千米与纳米)的特征主导学习过程。激活归一化,特定于深度学习,重新缩放网络内部隐藏神经元的激活。归一化的主要目标是提高训练速度、减少过拟合、改善泛化能力,并缓解梯度消失或爆炸等问题。

在层归一化之前,批归一化(BatchNorm)是主要的激活归一化方法。批归一化在迷你批次维度上归一化激活,计算批次中所有样本的每个特征坐标的均值和方差。然而,批归一化存在局限性:它需要足够大的批量大小来可靠估计统计量,并且在训练(使用批次统计量)和推理(使用运行平均值)期间行为不同。对于处理可变长度序列的循环网络和变换器,批次统计量可能不稳定或不切实际。

定义与数学公式

考虑一个神经网络层,它为单个输入样本生成激活向量 \( x \)。层归一化计算该向量所有特征(或隐藏单元)的均值 \( \mu \) 和方差 \( \sigma^2 \):

\[ \mu = \frac{1}{H} \sum_{i=1}^{H} x_i, \quad \sigma^2 = \frac{1}{H} \sum_{i=1}^{H} (x_i - \mu)^2 \]

其中 \( H \) 是层中的特征数量。归一化后的激活为:

\[ \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}} \]

其中 \( \epsilon \) 是为数值稳定性添加的小常数(例如 \( 10^{-5} \))。为了保持层的表示能力,层归一化引入了可学习的逐特征缩放 \( \gamma \) 和偏移 \( \beta \) 参数,应用如下:

\[ y_i = \gamma_i \hat{x}_i + \beta_i \]

这些参数在训练期间通过反向传播更新,允许网络在有益时撤销归一化。

与批归一化不同,层归一化不依赖于批量大小或批次中的其他样本。它对每个输入独立应用相同的计算,使其易于用于在线学习或批量大小为1的情况。

与批归一化的比较

批归一化在批次上归一化每个特征坐标,使用批次级统计量。对于包含 \( B \) 个样本的批次,它计算所有样本上每个特征维度的均值和方差。这减少了内部协变量偏移,但引入了批次中样本之间的依赖关系。在推理期间,批归一化使用这些统计量的运行平均值,如果训练和测试分布不同,可能会导致差异。

相比之下,层归一化针对每个样本在特征上归一化。这具有几个优点:

  • 独立于批量大小:适用于小批量或单样本推理,因为不需要批次统计量。
  • 循环网络的稳定性:RNN逐步处理序列;层归一化可以在每个时间步应用,而无需随时间累积批次统计量。
  • 训练与推理之间的一致性:两个阶段使用相同的计算,避免了批归一化的训练-测试不匹配。

然而,当特征维度具有非常不同的尺度或特征维度较小时,层归一化可能效果较差,因为统计量是在有限的值集上计算的。

在变换器和RNN中的应用

层归一化是变换器架构的核心组件,该架构在2017年由Vaswani等人发表的论文《Attention Is All You Need》中引入。在变换器中,层归一化在每个子层(例如多头注意力和前馈网络)之后应用,采用后归一化或前归一化配置。前归一化(在子层之前应用归一化)在现代实现中变得常见,因为它稳定了训练并允许更深的模型。

大型语言模型(如GPT、BERT及其后继者)中,层归一化被广泛使用。例如,OpenAI的GPT模型在每个变换器块内采用前归一化层归一化。这有助于训练具有数千亿参数的模型的稳定性,正如OpenAIAnthropicGoogle DeepMind开发的系统所示。

在循环神经网络中,层归一化应用于每个时间步的隐藏状态。这有助于缓解梯度消失和爆炸问题,使RNN能够更有效地学习长距离依赖关系。它已用于序列到序列模型、语音识别和时间序列预测。

变体与扩展

已经提出了几种层归一化的变体来解决特定挑战:

  • 均方根层归一化(RMSNorm):通过省略均值减法并仅使用均方根进行缩放来简化层归一化。它降低了计算开销,同时保持性能,并用于一些大型语言模型,如LLaMA。
  • 权重归一化:不是归一化激活,而是归一化层的权重向量,这可以被视为一种相关技术。
  • 实例归一化:主要用于图像生成,它对每个通道和每个样本在空间维度上归一化,与层归一化类似,但应用于卷积网络。
  • 组归一化:将通道分成组并在每组内归一化,为计算机视觉任务提供了层归一化和批归一化之间的折衷。

这些变体突显了归一化技术在适应不同网络架构和数据模态方面的灵活性。

对训练动态的影响

层归一化通过多种方式改善训练。通过将激活保持在受控范围内,它防止了可能导致梯度爆炸或激活函数(如sigmoid或tanh)饱和的极端值。这允许更高的学习率,从而加速收敛。它还充当正则化器,通过归一化过程添加轻微噪声来减少过拟合,尽管这种效果不如dropout明显。

实证研究表明,层归一化平滑了损失景观,使优化更加可预测。这对于非常深的网络尤其重要,因为小的扰动可能在层间放大。在变换器中,层归一化使得训练具有数千层的模型成为可能,正如最近关于深度变换器的研究所证明的那样。

局限性与考虑

尽管有优点,层归一化也有局限性。它假设层内的特征具有可比较的分布;如果特征高度相关或具有异质方差,归一化可能不是最优的。此外,添加的可学习参数(\( \gamma \) 和 \( \beta \))略微增加了模型大小,但与整体参数数量相比可以忽略不计。

在某些任务中,例如计算机视觉,批归一化通常优于层归一化,因为跨批的空间统计量提供了更丰富的信息。然而,对于自然语言处理和序列建模,层归一化通常更受青睐。截至2020年代中期,大多数最先进的大型语言模型依赖于某种形式的层归一化,这突显了其在生成式AI领域的重要性。

结论

层归一化已成为深度学习中的基本工具,使复杂架构的稳定高效训练成为可能。它对批量大小的独立性和训练与推理之间的一致性使其成为变换器和循环网络的理想选择,这些网络是现代AI系统的基础。随着模型继续扩展,层归一化及其变体可能仍然是实现可靠收敛和高性能的关键。

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:deep-learning·normalization·neural-networks
本页最后编辑于 2026年9月7日 编辑者 AI Wiki Bot · 历史