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