当前位置: 首页 > news >正文

残差连接与归一化结合应用

残差连接(Residual Connection / Skip Connection)和归一化(Normalization)的结合,是现代深度学习模型(尤其是深度神经网络和Transformer架构)成功的关键因素之一。

核心概念回顾

  1. 残差连接 (Residual Connection):

    • 思想: 不是让网络层直接学习目标映射 H(x),而是让它们学习残差映射 F(x) = H(x) - x。然后,最终的输出是 H(x) = F(x) + x
    • 实现: 将某一层(或一组层)的输入 x 直接跳过这些层,加到这些层的输出 F(x) 上。通常通过简单的加法(y = F(x, {W_i}) + x)或连接(y = F(x, {W_i}) || x)实现,加法更常见。
    • 主要作用:
      • 缓解梯度消失/爆炸: 在反向传播时,梯度可以通过残差路径(+ x 部分)几乎无损地传递回浅层,使得深层网络能够被有效训练。
      • 恒等映射: 如果最优的 F(x) 是零映射(即什么都不做是最好的),那么学习 F(x) = 0 比学习 H(x) = x 更容易(因为后者需要精确的恒等变换)。
      • 促进信息流动: 允许原始输入信息更直接地传递到后面的层,减少信息在多层变换中的损失或扭曲。
      • 简化优化: 优化残差映射 F(x) 通常比优化原始映射 H(x) 更容易。
  2. 归一化 (Normalization):

    • 思想: 对神经网络层内部的激活值或权重进行标准化处理,使其分布(如均值、方差)保持稳定。
    • 常见类型:
      • 批归一化 (Batch Normalization, BN): 对单个特征通道在一个小批量(Batch)的所有样本上进行归一化(减均值除标准差)。广泛应用于CNN。
      • 层归一化 (Layer Normalization, LN): 对单个样本的所有特征通道(或一个子集)进行归一化。广泛应用于RNN、Transformer。
      • 实例归一化 (Instance Normalization, IN): 对单个样本的单个特征通道进行归一化。常用于风格迁移。
      • 组归一化 (Group Normalization, GN): 将通道分组,对单个样本的每个组进行归一化。是BN在小批量场景下的替代方案。
    • 主要作用:
      • 加速训练收敛: 通过稳定层输入的分布,减少内部协变量偏移(Internal Covariate Shift),使得网络可以使用更大的学习率。
      • 缓解梯度问题: 有助于缓解梯度消失/爆炸问题。
      • 轻微的正则化效果: BN在训练时使用小批量的统计量,引入了随机性,有轻微正则化效果。

残差连接与归一化的结合:协同效应

将残差连接和归一化结合使用,能产生强大的协同效应,解决深度模型训练中的关键挑战:

  1. 解决残差加法带来的分布偏移:

    • 残差连接 y = F(x) + x 将两个不同来源(原始输入 x 和变换后的输出 F(x))的数据相加。F(x)x 的分布可能差异很大(尤其是 F(x) 经过了权重矩阵和非线性激活)。
    • 直接将它们相加可能导致 y 的分布发生剧烈变化(分布偏移),这不利于后续层的处理和学习。
    • 归一化的作用:y 输入到下一层之前(或之后,取决于具体结构),应用归一化层(如 BN 或 LN)可以将 y 重新调整到期望的分布(例如,零均值、单位方差),稳定后续层的输入。这抵消了残差加法可能引入的分布不稳定性。
  2. 稳定深层训练:

    • 深度网络的核心问题是梯度在反向传播过程中会逐层衰减(消失)或急剧增大(爆炸)。
    • 残差连接的作用: 提供了一条梯度可以几乎无损回传的“高速公路”。
    • 归一化的作用: 通过稳定各层的输入分布,使得梯度计算更加稳定可靠,避免了因输入分布剧烈变化导致的梯度异常。
    • 结合效果: 残差连接确保了梯度流的通畅,而归一化确保了梯度流经的路径是平滑稳定的。两者共同作用,使得训练非常深的网络(如数百层的 ResNet 或数十层的 Transformer)成为可能。
  3. 提升模型性能和收敛速度:

    • 稳定的梯度流和输入分布使得优化器(如 SGD, Adam)能够更有效地工作。
    • 模型能够更快地收敛到更好的解,通常也能获得更高的最终精度。

结合方式:常见模式

最常见的结合方式是在残差块(Residual Block)内部或周围放置归一化层。具体位置有多种设计,各有优缺点:

  1. Pre-Normalization (Pre-Norm):

    • 结构: Norm -> Layer (Conv/Linear/Attention) -> Activation -> + Shortcut
    • 流程: 输入 x 先经过归一化层(如 LN),然后进入主要的计算层(卷积、全连接、注意力等),再经过激活函数(如 ReLU, GELU),最后与原始输入 x(或经过投影的 x)相加。
    • 优点: 梯度流更稳定,尤其对非常深的模型(如 Transformer)效果更好。训练通常更稳定。
    • 缺点: 原始输入 x 没有经过归一化就直接参与加法,理论上加法后的分布可能不如 Post-Norm 稳定(但在实践中,Pre-Norm 的稳定性优势通常更显著)。
    • 典型应用: Transformer 架构(如 GPT, BERT 的后续变种,T5)普遍采用 Pre-LN 结构。
  2. Post-Normalization (Post-Norm):

    • 结构: Layer (Conv/Linear/Attention) -> Norm -> Activation -> + ShortcutLayer -> Activation -> Norm -> + Shortcut
    • 流程: 输入 x 先经过主要的计算层和激活函数,然后进行归一化,最后再与原始输入 x(或经过投影的 x)相加。
    • 优点: 加法操作 F(x) + x 的输出 y 会立即被归一化,理论上能更直接地稳定输出分布。
    • 缺点: 对于非常深的模型,梯度流经过多个 Post-Norm 层时可能会累积不稳定因素,导致训练困难(如梯度消失或爆炸)。
    • 典型应用: 原始 ResNet 使用 Conv -> BN -> ReLU 结构(BN 在卷积后、激活前),加法后不再归一化(可视为一种 Post-Norm 变体)。原始 Transformer 论文使用的是 Post-LN(Add & Norm 在计算层之后)。
  3. 其他变体:

    • 有些结构会在残差块内部使用多个归一化层。
    • 有些结构(如原始的 ResNet)只在卷积层后使用 BN,残差加法后不再归一化(因为 BN 已经稳定了卷积层的输出,且 CNN 的深度相对 Transformer 较浅)。

实际应用例子

  1. ResNet (图像识别 - CNN 代表):

    • 结构: 核心是残差块。一个基本块包含:
      • 卷积层 1 -> 批归一化 (BN) -> ReLU
      • 卷积层 2 -> 批归一化 (BN)
      • 残差连接:将块的输入 x 加到第二个 BN 的输出上 (F(x) + x)
      • ReLU (在加法之后)
    • 结合方式: 这是 Post-Normalization 的一种形式(BN 在卷积后,加法前)。BN 稳定了卷积层的输出 F(x),使得 F(x) + x 的分布相对可控,然后最后的 ReLU 再进行非线性变换。BN 在这里至关重要,它使得 ResNet 能够训练超过 100 层,并在 ImageNet 等任务上取得突破性成果。
  2. Transformer Encoder/Decoder Layer (NLP/CV - Transformer 代表):

    • 结构 (以 Pre-LN 为例,如 BERT, GPT):
      • 子层 1 (如 Multi-Head Self-Attention):
        • 输入 x
        • 层归一化 (LN) -> 多头注意力计算 -> Dropout
        • 残差连接:x + Dropout(Attention(LN(x)))
      • 子层 2 (如 Feed-Forward Network):
        • 输入 y (子层 1 的输出)
        • 层归一化 (LN) -> 全连接层 1 -> 激活 (如 GELU) -> Dropout -> 全连接层 2 -> Dropout
        • 残差连接:y + Dropout(FFN(LN(y)))
    • 结合方式: 这是典型的 Pre-Normalization (Pre-LN)。在每个子层(注意力或前馈网络)的核心计算之前进行层归一化 (LN)。LN 稳定了子层的输入,然后子层进行计算,最后通过残差连接与子层输入相加。这种 Pre-LN 结构被证明在训练非常深的 Transformer 模型(如大型语言模型)时比原始的 Post-LN 更稳定。
  3. Vision Transformer (ViT - CV):

    • 结构: ViT 将 Transformer 架构应用于图像。其编码器层结构与上述 Transformer Encoder Layer 几乎完全相同。
    • 结合方式: 同样采用类似 Pre-LN 或 Post-LN 的结构(现代实现多倾向 Pre-LN),在每个多头注意力层和前馈网络层前后使用层归一化 (LN) 和残差连接。这使得 ViT 能够有效处理图像块序列,并在大规模图像识别任务上取得优异性能。
  4. BERT / GPT (NLP):

    • 结构: BERT(编码器)和 GPT(解码器)的核心构建块就是 Transformer 层。
    • 结合方式: 与上述 Transformer 例子一致。BERT/GPT 及其后续变种(RoBERTa, GPT-2, GPT-3 等)的成功,很大程度上依赖于残差连接和层归一化 (LN) 的结合,使得训练包含数亿甚至数千亿参数的数十层深度模型成为可能。

总结

残差连接解决了深度模型训练中的梯度流问题,使得训练极深网络成为可能。归一化(BN, LN 等)解决了网络内部激活值分布不稳定的问题,加速收敛并提升稳定性。两者的结合是协同的:

  • 归一化补偿了残差连接中直接加法操作可能引起的输入分布偏移,为后续层提供了稳定的输入。
  • 残差连接为归一化层提供了更通畅、更稳定的梯度回传路径。
  • 这种组合极大地增强了深度模型的训练稳定性、收敛速度和最终性能,是现代深度学习架构(从 ResNet 到 Transformer 及其各种衍生模型)不可或缺的核心设计范式。选择 Pre-Norm 还是 Post-Norm 取决于具体架构和深度,Pre-Norm 在极深模型中通常表现出更好的稳定性。

文章转载自:

http://HmtrqtPJ.nzLsm.cn
http://EjO8IVF3.nzLsm.cn
http://iynug29v.nzLsm.cn
http://GWBNFAWR.nzLsm.cn
http://Ll4z3kWi.nzLsm.cn
http://JhUejR2N.nzLsm.cn
http://Gq9lKPT4.nzLsm.cn
http://NWC25oUR.nzLsm.cn
http://xT6OBHLb.nzLsm.cn
http://DItLThCp.nzLsm.cn
http://TAXQLp6Q.nzLsm.cn
http://z3skAyOp.nzLsm.cn
http://lqEnglNH.nzLsm.cn
http://2T9vtK5N.nzLsm.cn
http://REDW2CxW.nzLsm.cn
http://xOl1lK1z.nzLsm.cn
http://ZrhUHedE.nzLsm.cn
http://CXBXOvxf.nzLsm.cn
http://4rzgS5go.nzLsm.cn
http://PQ4X4fWq.nzLsm.cn
http://QWchPxz6.nzLsm.cn
http://Ab2n0yeb.nzLsm.cn
http://k0uRBRX0.nzLsm.cn
http://TzAHIpWs.nzLsm.cn
http://9YKcbuyk.nzLsm.cn
http://qcdGuvZi.nzLsm.cn
http://pR2LbPN7.nzLsm.cn
http://JBucLHUt.nzLsm.cn
http://zSEim2Ah.nzLsm.cn
http://HLt7psvP.nzLsm.cn
http://www.dtcms.com/a/368893.html

相关文章:

  • 【知识点讲解】模型扩展法则(Scaling Law)与计算最优模型全面解析:从入门到前沿
  • MySQL锁篇-锁类型
  • LINUX_Ubunto学习《2》_shell指令学习、gitee
  • FastGPT源码解析 Agent知识库管理维护使用详解
  • MATLAB 2023a深度学习工具箱全面解析:从CNN、RNN、GAN到YOLO与U-Net,涵盖模型解释、迁移学习、时间序列预测与图像生成的完整实战指南
  • 均匀圆形阵抗干扰MATLAB仿真实录与特点解读
  • 《深入理解双向链表:增删改查及销毁操作》
  • 属性关键字
  • 【Linux基础】Linux系统管理:MBR分区实践详细操作指南
  • 国产化FPGA开发板:2050-基于JFMK50T4(XC7A50T)的核心板
  • 时隔4年麒麟重新登场!华为这8.8英寸新「手机」给我看麻了
  • 敏感词过滤这么玩?自定义注解 + DFA 算法,优雅又高效!
  • RPC内核细节(转载)
  • 如何将 Android 设备的系统底层日志(如内核日志、系统服务日志等)拷贝到 Windows 本地
  • Vue美化文字链接(超链接)
  • 中囯移动电视盒子(魔百和)B860AV2.1-A2和CM311-5-zg刷机手记
  • TCP/IP函数——sendmsg
  • Linux网络自定义协议与序列化
  • 人工智能机器学习——聚类
  • docker-compose跨节点部署Elasticsearch 9.X集群
  • Qt控件:Item Views/Widgets
  • 轻量高效:Miniserve文件共享神器
  • Netty从0到1系列之JDK零拷贝技术
  • 从无图到轻图,大模型时代,图商的新角逐
  • 【物种分布模型】R语言物种气候生态位动态量化与分布特征模拟——气候生态位动态检验、质心转移可视化、适生区预测等
  • 盟接之桥说制造:在安全、确定与及时之间,构建品质、交期与反应速度的动态平衡
  • 【Android】SQLite使用——增删查改
  • DJANGO后端服务启动报错及解决
  • Hive使用Tez引擎出现OOM的解决方法
  • 前端三件套+springboot后端连通尝试