当前位置: 首页 > 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://www.xdnf.cn/news/1462753.html

相关文章:

  • 解决网络太慢问题
  • C++《C++11》(上)
  • 基于单片机智能热水壶/养生壶设计
  • 用 epoll 实现的 Reactor 模式详解(含代码逐块讲解)
  • Vue3源码reactivity响应式篇之EffectScope
  • Android 应用进程启动
  • 趣味学RUST基础篇(构建一个命令行程序2重构)
  • 基于FPGA实现数字QAM调制系统
  • AiPPT生成的PPT内容质量怎么样?会不会出现逻辑混乱或数据错误?
  • 一键生成PPT的AI工具排名:2025年能读懂你思路的AI演示工具
  • 深度学习——迁移学习
  • 鸿蒙:获取UIContext实例的方法
  • Spring Boot+Nacos+MySQL微服务问题排查指南
  • 国产化PDF处理控件Spire.PDF教程:如何在 Java 中通过模板生成 PDF
  • 抓虫:sw架构防火墙服务启动失败 Unable to initialize Netlink socket: 不支持的协议
  • 还有人没搞懂住宅代理IP的属性优势吗?
  • java解析网络大端、小端解析方法
  • 信息安全基础知识
  • 云原生部署_Docker入门
  • 将 Android 设备的所有系统日志(包括内核日志、系统服务日志等)完整拷贝到 Windows 本地
  • android View详解—动画
  • Kali搭建sqli-labs靶场
  • modbus_tcp和modbus_rtu对比移植AT-socket,modbus_tcp杂记
  • 《sklearn机器学习——聚类性能指数》同质性,完整性和 V-measure
  • 从 Prompt 到 Context:LLM OS 时代的核心工程范式演进
  • [特殊字符] AI时代依然不可或缺:精通后端开发的10个GitHub宝藏仓库
  • Xilinx系列FPGA实现DP1.4视频收发,支持4K60帧分辨率,提供2套工程源码和技术支持
  • 【Arxiv 2025 预发行论文】重磅突破!STAR-DSSA 模块横空出世:显著性+拓扑双重加持,小目标、大场景统统拿下!
  • K8S的Pod为什么可以解析访问集群之外的域名地址
  • LeetCode刷题-top100( 矩阵置零)