【Transformer拆解】-4. 残差连接(Residual Connection)与层归一化(LayerNorm)

4. 残差连接(Residual Connection)与层归一化(LayerNorm)

  • 步骤

    • 残差连接:

    • 层归一化:对每个样本的特征维度归一化(非批量归一化)。

意义

  • 残差连接:缓解深层网络梯度消失,保留原始信息(参考 ResNet)。

  • 层归一化:稳定训练过程,减少对批量大小的依赖。

残差连接是深度学习中的一种跳跃连接(Skip Connection)技术,其数学表达为:

输出=F(x)+x

其中:

  • x:输入向量

  • F(x):神经网络层的变换(如线性变换+激活函数)

2. 核心作用

(1)解决梯度消失问题

  • 传统深层网络:反向传播时梯度需逐层连乘,导致底层梯度指数衰减

残差网络:梯度可通过恒等路径直达底层

(2)保留原始信息

  • 即使深层网络F(x)学习失效,模型仍能退化为恒等映射y=x,避免性能退化

  • 实验证明:ResNet-1000层比普通网络训练误差更低

3. Transformer中的残差连接

在Transformer中,每个子层(自注意力/FFN)后都添加残差连接:

双重保障

  1. 信息无损传输:原始输入直接传递到高层

  2. 梯度高速公路:反向传播时梯度可绕过复杂变换

5. 代码实现

python 复制代码
# PyTorch示例
class ResidualBlock(nn.Module):
    def __init__(self, d_model=512):
        super().__init__()
        self.linear = nn.Linear(d_model, d_model)
        self.dropout = nn.Dropout(0.1)
        
    def forward(self, x):
        return x + self.dropout(self.linear(x))  # 残差连接

# Transformer子层实现
x = x + attention_layer(x)  # 自注意力残差
x = x + ffn_layer(x)        # FFN残差

6. 为什么必须使用?

问题 残差连接的解决方案
深层网络梯度消失 提供直连路径,梯度可无损回传
信息传递损耗 保留原始输入,避免特征扭曲
训练不稳定 即使部分层学习失败,模型仍能正常工作
相关推荐
IT_陈寒26 分钟前
JavaScript的默认参数挖坑实录,我掉进去了
前端·人工智能·后端
米小虾34 分钟前
多Agent系统编排详解:从架构设计到代码实现
人工智能·agent
米小虾34 分钟前
多Agent系统的编排:架构、协议与企业级应用
人工智能·agent
To_OC10 小时前
搞懂 Token 和 Embedding 后,我终于明白大模型是怎么 "读" 文字的
人工智能·llm·agent
冬奇Lab12 小时前
每日一个开源项目(第139篇):Voicebox - 本地运行的开源 ElevenLabs 替代品
人工智能·开源·资讯
冬奇Lab12 小时前
Skill 系列(03):Skill 设计范式——5 个模式让输出从混沌到可预测
人工智能·开源·agent
IT_陈寒14 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
大模型真好玩16 小时前
什么是Loop Engineering?最通俗易懂的Loop Engineering核心概念
人工智能·agent·deepseek
叁两16 小时前
前端转型AI Agent该如何学习?(前置篇)
前端·人工智能·node.js