算法笔记(一)归一化之BN LN IN

本文详细介绍了深度学习中常用的几种归一化技术,包括BatchNormalization (BN)、LayerNormalization (LN)、InstanceNormalization (IN)、GroupNormalization (GN)、SwitchableNormalization (SN)和WeightNormalization (WN)。BN通过缓解Internal Covariate Shift加速训练,而LN、IN、GN和WN各有适用场景,如LN适合RNN,IN适用于风格迁移,GN解决小batch问题,SN自动选择合适归一化,WN则在权值维度上进行归一化。各种归一化技术有其优缺点,选择需根据具体任务和网络结构来定。

前言

  • 数据规一化的作用:
    • 调整数据分布,增加网络泛化度.
    • 若每批数据分布不同,神经网络需要不断调整模型权重去适应不同的数据分布,因此可以增加训练速度.即缓解Internal Covariate Shift问题,将数据分布拉到激活函数的非饱和区,具有权重/数据伸缩不变性的特点.
    • 起到缓解梯度消失/爆炸,加速训练,正则化的效果.
  • 内部协方差转移internal convarite shift:
    • 简设模型函数 y=f(θ,x)y=f(\theta,x)y=f(θ,x),训练时,每层网络的输入数据分布会不断变化,导致参数θ\thetaθ变化和y变化.
  • 处理维度(B,C,H,W)数据时,
    • BN:在batch上,对(C,H,W)做归一化.
    • LN:在Channel上,对(B,H,W)做归一化.
    • GN:在Channel上对C分组,即对(G,H,W)做归一化,其中G*K=C,将K个GN结果合并为最终归一化结果.
    • IN:在图像像素上,对(H,W)做归一化.
    • SN:是将BN LN IN结合,赋予不同权重,让网络自己去学习归一化层应该使用什么方法.
    • WN:对模型权重进行归一化.
      在这里插入图片描述
      在这里插入图片描述

1.Batch Normalization(BN)

过程

  1. 预处理:
    x(k)=x(k)−E[x(k)]Var[x(k)]x^{(k)}=\frac{x^{(k)}-E[x^{(k)}]}{Var[x^{(k)}]}x(k)=Var[x(k)]x(k)E[x(k)]
  2. 变换重构:
    x(k)=γ(k)x(k)+β(k)x^{(k)}=\gamma^{(k)}x^{(k)}+\beta^{(k)}x(k)=γ(k)x(
### Batch Normalization (BN) 和 Layer Normalization (LN) 的原理与比较 #### Batch Normalization (BN) Batch Normalization 是种用于加速深度神经网络训练的技术,通过在每层输入进行标准化处理来稳定学习过程。其核心思想是减少内部协变量偏移(Internal Covariate Shift),即随着网络参数的更新,中间层的分布会发生变化[^3]。具体来说,BN个 mini-batch 内的所有样本在同通道上的激活值进行归一化,使其均值接近 0,方差接近 1。这种归一化方式依赖于 batch size,并且需要计算整个 mini-batch 的均值和方差。 BN 的主要步骤包括: 1. 计算 mini-batch 内所有样本在同通道上的均值和方差。 2. 使用这些统计量对每个样本的激活值进行归一化。 3. 引入可学习参数 γ 和 β 来恢复网络表达能力,允许模型调整归一化后的输出[^5]。 #### Layer Normalization (LN) Layer Normalization 是另归一化方法,特别适用于序列建模任务(如 RNN、Transformer)。与 BN 不同,LN 对每个样本自身的所有特征维度进行归一化,而不是跨样本计算均值和方差[^4]。因此,LN 不依赖于 batch size,适合小批量或单样本场景。 LN 的主要步骤为: 1. 对每个样本的所有特征维度计算均值和方差。 2. 使用这些统计量对该样本的激活值进行归一化。 3. 同样引入可学习参数 γ 和 β 来调整归一化后的输出[^4]。 #### BNLN 的区别 | 特性 | Batch Normalization (BN) | Layer Normalization (LN) | |---------------------|-------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| | 归一化范围 | 跨样本(mini-batch 内的所有样本) | 单样本(每个样本自身的所有特征维度) | | 是否依赖 batch size | 是,batch size 过小时效果可能不佳 | 否,适用于任意 batch size | | 适用场景 | 图像任务,尤其是卷积神经网络 | 序列任务,如 RNN、Transformer | | 统计量计算 | 基于 mini-batch 的均值和方差 | 基于单个样本的均值和方差 | #### 其他归一化方法 除了 BNLN,还有其他归一化技术,例如 Instance Normalization (IN) 和 Group Normalization (GN)。 - **Instance Normalization (IN)**:对每个样本的每个通道独立进行归一化,类似于 LN,但仅作用于单个通道。IN 在生成对抗网络(GAN)中表现良好[^4]。 - **Group Normalization (GN)**:将通道分组并对每组进行归一化,结合了 BNLN 的优点,不依赖 batch size 且适用于不同任务[^3]。 ```python import torch import torch.nn as nn # Batch Normalization 示例 bn = nn.BatchNorm2d(64) x = torch.randn(16, 64, 32, 32) # 输入形状 [batch_size, channels, height, width] y_bn = bn(x) # Layer Normalization 示例 ln = nn.LayerNorm([64, 32, 32]) y_ln = ln(x) # Group Normalization 示例 gn = nn.GroupNorm(num_groups=8, num_channels=64) y_gn = gn(x) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nooobme

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值