Batch Normalization和 Layer Normalization

ops/2024/12/15 7:08:03/

Normalization_Layer_Normalization_0">Batch Normalization和 Layer Normalization

Batch Normalization (BN) 和 Layer Normalization (LN) 是深度学习中常用的归一化技术,它们的主要目的是加速训练、提高模型的收敛速度和稳定性。以下是对这两种归一化技术的详细讲解:


Normalization_BN_6">1. Batch Normalization (BN)

定义

Batch Normalization 是一种在深度神经网络中对每个小批量(mini-batch)数据进行归一化的技术。它通过对每个特征维度(channel)进行标准化,使得每一层的输入分布更加稳定。

公式

对于一个 mini-batch 的输入 $ x = {x_1, x_2, \dots, x_m} $,BN 的计算公式如下:

μ B = 1 m ∑ i = 1 m x i (均值) \mu_B = \frac{1}{m} \sum_{i=1}^m x_i \quad \text{(均值)} μB=m1i=1mxi(均值)
σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 (方差) \sigma_B^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_B)^2 \quad \text{(方差)} σB2=m1i=1m(xiμB)2(方差)
x ^ i = x i − μ B σ B 2 + ϵ (标准化) \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} \quad \text{(标准化)} x^i=σB2+ϵ xiμB(标准化)
y i = γ x ^ i + β (缩放和平移) y_i = \gamma \hat{x}_i + \beta \quad \text{(缩放和平移)} yi=γx^i+β(缩放和平移)

其中:

  • $ \mu_B $ 和 $ \sigma_B^2 $ 是当前 mini-batch 的均值和方差。
  • $ \epsilon $ 是一个小常数,防止除零错误。
  • $ \gamma $ 和 $ \beta $ 是可学习的参数,用于缩放和平移标准化后的值。

作用

  1. 加速训练:通过标准化输入,减少梯度消失和梯度爆炸问题,加速模型收敛。
  2. 提高泛化能力:BN 引入了噪声(mini-batch 的统计信息),具有一定的正则化效果,减少过拟合。
  3. 允许使用更高的学习率:BN 使得网络对学习率的敏感性降低。

适用场景

  • 主要用于卷积神经网络(CNN)和全连接网络(FCN)。
  • 在图像分类、目标检测、语义分割等任务中广泛使用。

局限性

  1. 对 mini-batch 大小敏感:当 mini-batch 较小时,BN 的统计信息不准确,可能导致性能下降。
  2. 不适合序列数据:在 RNN 或 Transformer 等序列模型中,BN 的效果较差,因为序列数据的特征维度不一致。

Normalization_LN_47">2. Layer Normalization (LN)

定义

Layer Normalization 是一种对单个样本的所有特征维度进行归一化的技术。它通过对每个样本的所有特征进行标准化,使得每个样本的特征分布更加稳定。

公式

对于一个样本的输入 $ x = {x_1, x_2, \dots, x_n} $,LN 的计算公式如下:

μ L = 1 n ∑ i = 1 n x i (均值) \mu_L = \frac{1}{n} \sum_{i=1}^n x_i \quad \text{(均值)} μL=n1i=1nxi(均值)
σ L 2 = 1 n ∑ i = 1 n ( x i − μ L ) 2 (方差) \sigma_L^2 = \frac{1}{n} \sum_{i=1}^n (x_i - \mu_L)^2 \quad \text{(方差)} σL2=n1i=1n(xiμL)2(方差)
x ^ i = x i − μ L σ L 2 + ϵ (标准化) \hat{x}_i = \frac{x_i - \mu_L}{\sqrt{\sigma_L^2 + \epsilon}} \quad \text{(标准化)} x^i=σL2+ϵ xiμL(标准化)
y i = γ x ^ i + β (缩放和平移) y_i = \gamma \hat{x}_i + \beta \quad \text{(缩放和平移)} yi=γx^i+β(缩放和平移)

其中:

  • $ \mu_L $ 和 $ \sigma_L^2 $ 是当前样本的均值和方差。
  • $ \epsilon $ 是一个小常数,防止除零错误。
  • $ \gamma $ 和 $ \beta $ 是可学习的参数,用于缩放和平移标准化后的值。

作用

  1. 加速训练:通过标准化输入,减少梯度消失和梯度爆炸问题,加速模型收敛。
  2. 适合序列数据:LN 不依赖 mini-batch 的统计信息,因此适合处理变长序列数据(如 NLP 任务)。
  3. 提高稳定性:在 mini-batch 较小时,LN 的表现优于 BN。

适用场景

  • 主要用于循环神经网络(RNN)、Transformer 等序列模型。
  • 在自然语言处理(NLP)任务中广泛使用。

局限性

  1. 不适合图像数据:在 CNN 中,LN 的效果通常不如 BN,因为图像数据的特征维度(channel)具有不同的语义含义。

BN 和 LN 的区别

特性Batch Normalization (BN)Layer Normalization (LN)
归一化维度对每个特征维度(channel)进行归一化对每个样本的所有特征维度进行归一化
依赖 mini-batch依赖 mini-batch 的统计信息不依赖 mini-batch 的统计信息
适用场景图像分类、目标检测等任务自然语言处理、序列模型等任务
mini-batch 敏感性对 mini-batch 大小敏感对 mini-batch 大小不敏感
计算方式计算 mini-batch 的均值和方差计算单个样本的均值和方差

总结

  • Batch Normalization (BN)

    • 适合图像数据和固定大小的 mini-batch。
    • 通过 mini-batch 的统计信息进行归一化,加速训练并提高泛化能力。
  • Layer Normalization (LN)

    • 适合序列数据和变长数据。
    • 通过单个样本的统计信息进行归一化,适合 mini-batch 较小或序列模型。

选择哪种归一化技术取决于具体的任务和数据类型。在图像任务中,BN 是首选;在序列任务中,LN 更为合适。


http://www.ppmy.cn/ops/142033.html

相关文章

国科大网络协议安全期末

完整资料仓库地址:https://gitee.com/etsuyou/UCAS-Network-Protocol-Security 部分题目: 六 论述题10*220 试讨论IPv6解决了IPv4的哪些“痛点”,以及IPv6存在的安全问题试比较IPsec与SSL的安全性 五 简答题5*315 简述MAC欺骗和ARP欺骗的…

批量合并文件夹下所有DWG文件(批量合并CAD图)——c#插件实现

批量合并文件夹下大量cad图纸,使用插件一键完成,效果如下: (使用方法:命令行输入 “netload” 加载插件,然后输入“combdwg”运行,选择文件夹即可。) 部分代码如下: pub…

Python随机抽取Excel数据并在处理后整合为一个文件

本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件,随机从其中选取一部分数据,并将全部文件中随机获取的数据合并为一个新的Excel表格文件的方法。 首先,我们来明确一下本文的具体需求。…

【Web——HTML 初阶】网页设计标题

HTML(HyperText Markup Language,超文本标记语言)是构建网页和Web应用的基础语言之一。它不是一种编程语言,而是一种标记语言,用于描述网页的结构和内容。HTML使用标签(tags)来标记不同类型的元…

“AI全网络深度学习系统:开启智能时代的新篇章

嘿,大家好!今天咱们来聊聊一个特别前沿的话题——AI全网络深度学习系统。这名字听起来是不是有点像科幻电影里的玩意儿?但其实,它已经悄悄地走进了我们的生活,而且正在改变我们的工作方式。 首先,咱们得搞清…

《拉依达的嵌入式\驱动面试宝典》—前言目录篇

《拉依达的嵌入式\驱动面试宝典》—前言&目录篇 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。 《拉依达的嵌入式\驱动面试宝典》 最开始我个人的面试学习笔记,里面整合了所有我认为可…

【使用PyQt5和YOLOv11开发电脑屏幕区域的实时分类GUI】——PyQt5在Pycharm中的安装配置

这里的安装配置以我个人在应用中的实际情况为准。参考了该博客Python——PyQt5在PyCharm的配置与应用(保姆级教程) 一、pip安装PyQt5 pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install PyQt5-tools -i https://pypi.tuna.ts…

mysqlelasticsearch备份恢复

目录 1. mysql备份 1.1. 使用 mysqldump 命令备份整个数据库: 1.2. 备份特定表: 2. 恢复 MySQL 数据库 2.1. 使用备份文件恢复数据库: 3. 备份elasticsearch索引 3.1. 注册本次备份的存储路径 3.2. 查看当前备份快照信息 3.3. 备份索…