神经网络Transformer架构中的残差连接与梯度流优化
第一步:残差连接的基本概念与动机
在深度神经网络中,随着网络层数增加,训练会变得困难,常出现梯度消失或爆炸问题,导致深层网络难以优化。残差连接(Residual Connection)的核心思想是引入“跳跃连接”(Skip Connection),允许输入信号绕过一层或多层非线性变换直接传到后面。在Transformer架构中,这通常表现为将模块(如自注意力层或前馈网络层)的输入直接加到其输出上,再进行层归一化。其数学形式为:输出 = 层归一化(输入 + 子层(输入))。这种设计缓解了梯度在反向传播中的衰减,使得训练极深层模型(如拥有数十或数百层的Transformer)成为可能。
第二步:Transformer中残差连接的具体实现与位置
在标准Transformer(如原始论文中的编码器/解码器层)中,每个子层(自注意力和前馈网络)周围都应用了残差连接。具体流程是:对于输入x,先通过子层函数F(x)(例如自注意力计算),然后将原始输入x与F(x)相加,得到x + F(x),接着进行层归一化。这种“加后再归一化”的模式(即Post-LN)是早期常见设计。残差连接确保了即使子层变换F(x)很小或发生改变,网络至少能保留原始输入信息,降低了学习恒等映射的难度,从而稳定训练。
第三步:残差连接对梯度流的关键影响
在反向传播过程中,梯度需要从输出层流回输入层。残差连接引入了更短的路径,创建了“梯度高速公路”。具体来说,对于输出y = x + F(x),损失函数L对输入x的梯度包含两项:∂L/∂x = ∂L/∂y * (1 + ∂F(x)/∂x)。其中“1”来自跳跃连接的直通路径,它确保即使∂F(x)/∂x很小(接近0),梯度∂L/∂x也能至少有效传递∂L/∂y,极大缓解了梯度消失。这允许梯度直接、无损地流向浅层,使得深层参数也能获得足够的更新信号。
第四步:残差连接与归一化层的协同设计演变
残差连接与归一化层(如层归一化)的排列顺序对训练稳定性有重大影响。原始Transformer使用“后归一化”(Post-LN),即将残差相加的结果进行归一化。但实践发现,在非常深的Transformer中,Post-LN可能导致梯度幅度不稳定,需精细调校学习率。因此,出现了“前归一化”(Pre-LN)变体:先对输入进行层归一化,再传入子层,然后进行残差相加(即输出 = x + 子层(层归一化(x)))。Pre-LN通常使训练更稳定、收敛更快,但可能轻微牺牲性能;Post-LN在精心调优下可能达到更优性能但训练更脆弱。这种协同设计是优化梯度流的关键实践。
第五步:高级变体与梯度流优化技术
为进一步优化梯度流,研究者提出了残差连接的改进变体。例如:
- 门控残差连接:引入可学习的门控机制,如输出 = x + α * F(x),其中α是可学习标量或向量,动态调节残差分支的贡献,帮助平衡信息流动。
- 残差连接初始化:对残差分支的权重进行特定初始化(如将某些层初始化为接近零),使网络初始状态接近恒等映射,训练初期更稳定。
- 多分支残差:在单个模块中引入多个并行变换路径(如并行注意力或前馈网络),其输出加权求和后再与输入相加,增加模型容量同时保持梯度流动。
这些优化确保在超深层Transformer中,梯度能均匀分布到各层,避免某些层更新不足或过度,提升训练效率和最终性能。