神经网络Transformer架构中的残差连接
字数 1590 2025-11-19 07:39:47
神经网络Transformer架构中的残差连接
神经网络Transformer架构中的残差连接,是指在网络层中引入一条捷径,将输入直接传递到输出,与经过该层变换后的输出进行相加的操作。其核心目的是缓解深层网络中的梯度消失和网络退化问题,使得训练非常深的网络成为可能。
为了让你透彻理解,我们从问题根源开始,逐步深入:
-
深层网络的根本挑战
- 在深度学习模型中,网络的“深度”(即层数)对于学习复杂特征至关重要。理论上,网络越深,其表达能力越强。
- 然而,在实践中,简单地增加层数会遇到两个主要瓶颈:
- 梯度消失/爆炸:在反向传播过程中,梯度需要从输出层逐层传递回输入层。当网络过深时,梯度可能会因为连续相乘而变得极小(消失)或极大(爆炸),导致靠近输入的层参数几乎无法得到有效更新。
- 网络退化:即使梯度问题通过归一化等技术得到缓解,实验发现,随着网络深度增加,模型的训练误差和测试误差反而都会增大。这表明更深层的网络并非简单地更难训练,而是其本身的学习能力出现了退化。
-
残差连接的解决方案
- 残差连接为解决上述问题提供了一种极其简洁而有效的思路。它不要求每一个网络层直接学习一个完整的目标映射
H(x),而是转而让该层学习目标映射与输入x之间的残差(即差值)F(x) = H(x) - x。 - 这样一来,该层的实际输出就变成了
F(x) + x。 - 结构解析:在一个残差块中,数据
x会分成两路:- 主路径:
x经过一层或多层的权重、激活函数等变换,得到F(x)。 - 捷径:
x本身不做任何处理(或在某些情况下进行线性投影,以匹配维度),直接跳过这些层。 - 汇合点:将主路径的输出
F(x)和捷径的输出x进行逐元素相加,得到最终输出y = F(x) + x。
- 主路径:
- 残差连接为解决上述问题提供了一种极其简洁而有效的思路。它不要求每一个网络层直接学习一个完整的目标映射
-
残差连接为何有效?
- 恒等映射的便捷性:如果某个深层是冗余的,即其最优功能是“什么都不做”(恒等映射
H(x) = x),那么对于普通网络,它需要精确地学习权重使其等于单位矩阵,这是困难的。而对于残差网络,它只需要将残差F(x)学习为0即可,即y = 0 + x = x。学习使一个函数趋近于0,远比学习其趋近于一个复杂的恒等映射要容易得多。 - 梯度的“高速公路”:在反向传播时,梯度不仅可以通过主路径回流,还可以通过捷径这条“高速公路”几乎无损地直接传递到更早的层。这极大地缓解了梯度消失问题,确保了即使网络极深,所有层也能获得有效的梯度信号进行更新。
- 特征复用:捷径保证了原始输入信息能够直接流向后方,使得网络可以更灵活地选择使用主路径学习到的新特征,或是保留来自前方的旧特征,促进了不同层级特征的有效融合。
- 恒等映射的便捷性:如果某个深层是冗余的,即其最优功能是“什么都不做”(恒等映射
-
在Transformer架构中的具体应用
- Transformer模型是一个非常深的网络,其编码器和解码器都由N个相同的层堆叠而成。残差连接是其核心组件之一,应用于每个子层之后。
- 典型结构:在Transformer的每一个编码器层和解码器层中,你都会看到以下模式:
子层输出 = LayerNorm( x + SubLayer(x) )- 其中
SubLayer(x)可以是多头自注意力机制 或者 前馈神经网络。 - 流程详解:
- 输入
x同时进入子层和捷径。 - 子层对
x进行处理,得到SubLayer(x)。 - 将
SubLayer(x)与原始的x相加,得到x + SubLayer(x)。 - 将相加后的结果送入层归一化,产生该子层的最终输出。
- 输入
- 重要性:正是由于残差连接的存在,Transformer才能够稳定地堆叠数十甚至上百层,从而具备强大的表征能力来处理复杂的序列到序列任务(如机器翻译、文本生成)。没有它,训练如此深度的Transformer模型将极为困难。