AI知识分享AI知识分享
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
  • 大模型基础

    • 语言模型基础

      • 概述
      • 基于统计方法的语言模型
      • 基于神经网络的语言模型
      • 语言模型的采样方法
      • 语言模型的评测
    • 大语言模型架构

      • 概述
      • 主流模型架构
      • Encoder-only
      • Encoder-Decoder
      • Decoder-only
      • 非Transformer 架构
    • Prompt工程

      • 工程简介
      • 上下文学习
      • 思维链
      • 技巧
    • 参数高效微调

      • 概述
      • 参数附加方法
      • 参数选择方法
      • 低秩适配方法
      • 实践与应用
    • 模型编辑

      • 简介
      • 方法
      • 附加参数法
      • 定位编辑法
    • RAG

      • 基础
      • 架构
      • 知识检索
      • 生成增强
  • 动手学深度学习

    • 深度学习基础

      • 引言
      • 数据操作
      • 数据预处理
      • 数学知识(线代、矩阵计算、求导)
      • 线性回归
      • 基础优化方法
      • Softmax回归
      • 感知机
      • 模型选择
      • 过拟合和欠拟合
      • 环境和分布偏移
      • 权重衰减
      • Dropout
      • 数值稳定性
    • 卷积神经网络

      • 模型基本操作
      • 从全连接层到卷积
      • 填充和步长
      • 多个输入和输出通道
      • 池化层
      • LeNet
      • AlexNet
      • VGG
      • NiN网络
      • GoogleNet
      • 批量归一化
      • ResNet
    • 计算机视觉

      • 图像增广
      • 微调
      • 目标检测
      • 锚框
      • 区域卷积神经网络
      • 单发多框检测
      • 一次看完
      • 语义分割
      • 转置卷积
      • 全连接卷积神经网络
      • 样式迁移
    • 循环神经网络

      • 序列模型
      • 语言模型
      • 循环神经网络
      • 序列到序列学习
      • 搜索策略
    • 注意力机制

      • 优化算法

批量归一化

参考文章

  • 通俗理解 Batch Normalization
  • 通俗易懂理解——批归一化(Batch Normalization)

知识积累

欠拟合(Underfitting)过拟合(Overfitting)
训练误差高很低
测试误差高很高
原因模型太简单 / 学得不够模型太复杂 / 学得太“死”
解决方向增强模型能力 / 增加特征降低复杂度 / 增加数据 / 正则化
类比学生没学会基础知识学生死记硬背,不会举一反三

提出背景

正则化有助于防止模型过度拟合,学习过程变得更加高效。有几个正则化工具:

  • Early Stopping
    • 在训练过程中监控验证集性能,当验证误差不再下降(甚至开始上升)时,提前终止训练。
  • dropout
    • 在训练过程中,随机将一部分神经元的输出置零(如 50%概率),迫使网络不依赖于特定神经元,增强鲁棒性。
  • 权重初始化技术 (Weight Initialization Techniques)
    • 在训练开始前,以合适的方式(如 Xavier、He 初始化)设置网络权重的初始值,使信号在前向/反向传播中保持稳定(避免梯度消失或爆炸)。
  • 批量归一化 (Batch Normalization)。
    • 对每个 mini-batch 的激活值进行标准化(减均值、除标准差),再通过可学习的缩放和平移参数恢复表达能力。

概念

归一化是一种数据预处理工具,用于将数值数据调整为通用比例而不扭曲其形状。通常,当我们将数据输入机器或深度学习算法时,倾向于将值更改为平衡的比例。规范化是为了确保模型可以适当地概括数据。

现在回到 Batch Normalization,这是一个通过在深度神经网络中添加额外层来使神经网络更快、更稳定的过程。新层对来自上一层的层的输入执行标准化和规范化操作。

通过一个例子来理解批量归一化过程,我们有一个深度神经网络,如下图所示。

image-20260311201420435

当输入通过第一层时,输入 X 和权重矩阵 W 进行点积计算,再经过 sigmoid 函数。以此类推。第一层计算方式应用到每一层,最后一层记录为 L,如图所示。输入 X 随时间归一化,输出将不再处于同一比例。

当数据经过多层神经网络并经过 L 个激活函数时,会导致数据发生内部协变量偏移(Internal Covariate Shift)。在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化,这一过程被称作 Internal Covariate Shift。

工作原理

先将输入归一化,然后执行重新缩放和偏移。

输入归一化

归一化是将数据转换为均值为零和标准差为 1 的过程。

  1. 计算隐藏激活的均值

    • m 是 h 层神经元的数量。下一步就是计算隐藏激活的标准差。

      u=1m∑hiu = \frac{1}{m} \sum h_i u=m1​∑hi​

  2. 计算隐藏激活的标准差

    • 每个输入中减去平均值,除以标准差和平滑项 (ε) 的总和。

    • 平滑项 (ε) 一个非常小的常数,防止分母零值来确保运算中的数值稳定。

    • σ=(1m∑(hi−u)2)(1/2)\sigma = \left( \frac{1}{m} \sum (h_i - u)^2 \right)^{(1/2)} σ=(m1​∑(hi​−u)2)(1/2)

  3. 归一化后的隐藏激活值:

    hi(norm)=hi−uσ+ϵh_{i(norm)} = \frac{h_i - u}{\sigma + \epsilon} hi(norm)​=σ+ϵhi​−u​

其中,m m m 是 h h h 层神经元的数量,ϵ \epsilon ϵ 是一个非常小的常数,用于防止分母为零。

重新缩放与偏移

在最后的操作中,将对输入进行重新缩放和偏移。重新缩放参数 γ (gamma) 和偏移参数 β (beta)。

hi=γ×hi(norm)+βh_i = \gamma \times h_{i(\text{norm})} + \beta hi​=γ×hi(norm)​+β

这样,每个神经元的输出都遵循整个批次的标准正态分布。为此,每个输入中减去平均值,除以标准差和平滑项 (ε) 的总和。平滑项 (ε) 一个非常小的常数,防止分母零值来确保运算中的数值稳定。

具体步骤

BN步骤主要分为4步:

  1. 求每一个训练批次数据的均值;
  2. 求每一个训练批次数据的方差;
  3. 使用求得的均值和方差对该批次的训练数据做归一化,获得0-1分布;
  4. 尺度变换和偏移
    • 重新缩放参数 γ (gamma) 和偏移参数 β (beta)。

使用

标准做法:放在“线性变换之后、激活函数之前”

Linear (或 Conv) → BatchNorm → Activation (如 ReLU)

最近更新: 2026/3/11 20:33
Contributors: klc407073648
Prev
GoogleNet
Next
ResNet