Transformer模型中的残差连接(Residual Connection)原理与作用详解
这是一个在Transformer模型中至关重要,却常常被初学者低估的机制。让我们一步步来剖析它。
1. 问题描述:深层网络的退化与梯度传播难题
在深入Transformer之前,我们需要理解一个更基础的问题。理论上,更深的神经网络应该能学到更复杂、更抽象的特征,从而获得更好的性能。但实践发现,当网络层数增加到一定程度后,模型的性能不升反降——这就是 “网络退化” 问题。
这并非简单的过拟合,因为即使在训练集上,深层网络的训练误差也高于较浅的网络。其核心原因之一是 “梯度消失/爆炸”:在反向传播过程中,梯度需要逐层相乘。如果每层传递的梯度略小于1,多层累乘后,浅层网络的梯度会趋近于零(梯度消失);反之,若略大于1,则会指数级增长(梯度爆炸)。这使得深层网络难以训练。
残差连接 就是为了解决这一问题而被提出的革命性思想。
2. 残差连接的核心思想:恒等快捷路径
残差连接的精髓可以用一个公式概括:
输出 = 非线性变换(输入) + 输入
更正式地,对于一个由若干层构成的“块”(Block),其计算如下:
y = F(x, {W_i}) + x
其中:
x:块的输入。y:块的输出。F(x, {W_i}):我们希望该块学习的残差映射(Residual Mapping),它包含了层的权重W_i和非线性激活函数(如ReLU)。+ x:这就是快捷连接(Shortcut Connection)或恒等映射(Identity Mapping),它将输入x直接“绕道”加到输出上。
关键洞察:与其让这个多层非线性变换块F直接去学习一个复杂的目标映射H(x),不如让它去学习目标映射与输入之间的残差 H(x) - x。即 H(x) = F(x) + x。
3. 在Transformer模型中的具体应用
Transformer模型由编码器(Encoder)和解码器(Decoder)堆叠而成,每个编码器/解码器层都包含两个核心的子模块,并且每个子模块都严格使用了残差连接,然后再进行层归一化(LayerNorm)。这是Transformer的原始设计,顺序为:子模块输出 -> 残差连接 -> 层归一化。
a) 编码器层中的残差连接
一个编码器层主要包含两个子模块:
-
多头自注意力层(Multi-Head Self-Attention):
AttentionOutput = MultiHeadAttention(x)
y = LayerNorm(x + AttentionOutput)
这里,x是注意力层的输入,直接加到注意力输出上。 -
前馈神经网络层(Feed-Forward Network):
FFNOutput = FeedForward(y)(注意:这里的输入y是上一个子模块的输出)
z = LayerNorm(y + FFNOutput)
这里,上一个子模块的输出y直接加到FFN的输出上。
b) 解码器层中的残差连接
解码器层包含三个子模块(两个自注意力,一个编码器-解码器注意力),每个都遵循相同的“子模块 + 残差连接 + 层归一化”模式。
直观图示: 输入 x → [ 子模块计算 F(x) ] → 与原始输入 x 相加 → x + F(x) → 层归一化 → 输出。
4. 残差连接的核心作用与优势(循序渐进解释)
第一步:缓解梯度消失,使超深网络可训练
这是最根本的作用。在反向传播时,假设损失函数为 L,我们来计算梯度如何传到输入x。
根据链式法则:∂L/∂x = ∂L/∂y * (∂y/∂x)
其中 y = F(x) + x。
那么 ∂y/∂x = ∂F(x)/∂x + ∂x/∂x = ∂F(x)/∂x + 1。
因此,∂L/∂x = ∂L/∂y * (∂F(x)/∂x + 1)。
关键点:无论∂F(x)/∂x这个梯度有多小(甚至趋于0),因为有一个 “+1” 项的存在,梯度∂L/∂x至少能保持和∂L/∂y同量级,而不会衰减到零。这确保了梯度可以有效地反向传播到最浅层,使得成百上千层的网络训练成为可能。Transformer通常只有十几或几十层,但残差连接为其稳定训练提供了坚实基础。
第二步:提供模型结构上的“解耦”与信息高速公路
- 解耦:残差连接让每个子模块(如注意力层、FFN层)不必再费力地学习完整的输出,而只需学习一个“增量”或“修正”(即残差
F(x))。这降低了学习的难度。 - 信息高速公路:快捷连接
x构成了一条无损(或低损)的信息传递通道。即使某个子模块的F(x)学习效果不佳或暂时失效,输入x的信息依然能直接流向下一层,保证了网络最起码的基线性能,增强了模型的鲁棒性。
第三步:促进特征重用与组合
原始输入x的低层特征(如局部信息、词元信息)可以通过残差连接逐层传递,并与深层网络学到的高层特征(如全局语义、句法关系)直接相加融合。这种特征叠加而非完全替换的方式,使得网络能同时利用不同抽象层次的特征,丰富了最终的表示。
第四步:与层归一化的协同效应
在Transformer中,残差连接位于层归一化之前。这种设计(LayerNorm(x + Sublayer(x)))被称为“后归一化”(Post-LN)。它的好处是:
- 稳定训练初期:训练开始时,子模块的参数是随机的,其输出
F(x)可能很“混乱”或不稳定。将其与相对稳定的输入x相加,再进行归一化,可以让激活值在训练初期就保持在一个相对合理的范围内,加速收敛。 - 平滑优化地形:有研究认为,这种结构能产生更平滑的损失函数优化曲面,使优化过程更稳定。
5. 一个简单的比喻
想象你在学习画一幅复杂的画(目标函数H(x))。
- 没有残差连接(普通网络):你每次都必须在一张全新的白纸上从头开始画,每一笔的误差都会累积。
- 有残差连接:你先得到一张草稿(输入
x)。你的任务(F(x))不是重画,而是在这张草稿上进行修改和润色,比如加深阴影、添加细节。即使你某次修改得不好(F(x)效果差),底稿还在,画作不会完全毁掉。同时,老师(梯度)可以直接告诉你“草稿的这个地方需要怎么改”,因为你和草稿之间有直接的联系(+1项)。
总结
残差连接是Transformer乃至现代深度学习的基石技术之一。它通过引入一个简单的恒等快捷路径(+ x),巧妙地解决了深层网络的梯度传播难题,使超深模型的训练变得稳定可行。在Transformer中,它为每个子模块(注意力、FFN)提供了信息直通车,降低了学习难度,促进了不同层次特征的融合,并与层归一化协同工作,共同保障了模型训练的效率和最终性能。理解它,是理解Transformer如何能堆叠多层并有效工作的关键。