趋近智
Transformer 模型通过层层堆叠来构建,使其能够学习输入序列越来越复杂的表示。然而,训练非常深的神经网络 (neural network)会带来一些难题,主要是梯度消失或梯度爆炸的风险,这会阻碍模型的学习。此外,层内激活值的分布可能在训练过程中发生变化,可能导致收敛速度变慢。Transformer 架构在每个子层(包括自注意力 (self-attention)网络和前馈网络)中都引入了两种简单但非常有效的方法来解决这些问题:残差连接(即“加法”部分)和层归一化 (normalization)(即“归一化”部分)。
想象信息流经一个深度网络。当它在每一层通过连续的变换,会逐渐被改变,可能丢失原始输入的细节。类似地,在反向传播 (backpropagation)过程中,梯度需要向后流经所有这些层。在非常深的神经网络 (neural network)中,这些梯度可能变得非常小(消失)或非常大(爆炸),使得早期层的权重 (weight)难以有效更新。
残差连接最初在 ResNet 模型中引入,它为信息和梯度提供了一条直接路径,使其能够绕过一个变换块。在 Transformer 中,子层的输入会直接加到该子层的输出上。
如果 是一个子层(如多头注意力 (multi-head attention)或前馈网络)的输入,而 是该子层计算的函数,则残差连接的输出是:
这种加法操作创建了一个“快捷方式”或“跳过连接”。
在残差连接将原始输入 加到子层的输出 之后,结果会经过一个层归一化步骤。归一化技术通过标准化后续层的输入,有助于稳定训练过程。
虽然批归一化 (Batch Normalization) 在计算机视觉中很常见,但层归一化在 Transformer 和其他序列处理任务中通常更受欢迎。与批归一化在批次维度上进行归一化不同,层归一化针对批次中的每个序列元素(标记 (token)),独立地在特征维度上对输入进行归一化。这意味着它的计算不依赖于批次中的其他样本,这使其适用于变长序列和批次大小可能较小的场景。
对于序列中单个位置对应的输出向量 (vector) (维度为 ),层归一化首先计算 个特征上的均值 () 和方差 ():
然后,它使用该均值和方差对向量 进行归一化,并应用一个学习到的缩放因子 (gamma) 和一个学习到的平移因子 (beta)。这些可学习参数 (parameter)允许网络对归一化后的输出进行缩放和平移,如果原始归一化()限制过多,它们可能恢复表示能力。最终输出为:
这里, (epsilon) 是一个加到方差上的小常数,用于数值稳定性,防止除以零。 和 都是维度为 的可学习参数向量,通常分别初始化为全一和全零。
在 Transformer 中,编码器和解码器中的每个子层(多头注意力 (multi-head attention)网络和逐位置前馈网络)都接着这个组合的“加法与归一化”操作。
“加法与归一化”块的流程图。输入 经过子层。子层的输出通过残差连接加到原始输入 上。最后,这个和经过层归一化处理,生成该块的输出。
这种 模式在 Transformer 的编码器和解码器堆栈中始终重复出现。这些看似简单的加法和归一化操作是重要的组成部分,使现代 Transformer 模型特有的深层架构得以训练,对其在复杂序列建模任务上的成功有重要贡献。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•