归一化那些事儿——BatchNorm、 LayerNorm、 InstanceNorm、 GroupNorm、Weight Normalization

本文详细介绍了深度学习中的几种归一化技术,包括BatchNorm、LayerNorm、InstanceNorm、GroupNorm以及Switchable Normalization。归一化的主要目的是稳定神经网络的输入分布,提高训练效率和模型性能。BatchNorm在处理小批量数据时可能效果不佳,LayerNorm则适用于RNN,InstanceNorm主要用于图像风格迁移,而GroupNorm解决了BatchNorm对小批量数据的依赖问题。Switchable Normalization则是一种灵活适应不同任务的归一化方法,但训练过程较为复杂。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设数据形状是NCHW(以cv图片为准,语音或时序数据则将HW记为H‘)。

归一化的原因:
深度神经网络难训练一个重要的原因就是深度神经网络涉及很多层的叠加,每一层的参数变化都会导致下一层输入数据分布的变化,随着层数的增加,高层输入数据分布变化会非常剧烈,这就使得高层需要不断适应低层的参数更新。因此,一个直接的想法是固定fix神经元的加权输入分布,将该分布的均值和方差框定在某一个范围中。

基本操作 优点 缺点
BatchNorm batch方向做归一化,算NHW的均值 适用于CNN 对较小的batch size效果不好,不适用于RNN
LayerNorm channel方向做归一化,算CHW的均值 适用序列模型,如:RNN 不适应输入变化很大的数据,大Batch较差
InstanceNorm 一个channel内做归一化,算H*W的均值 适用图像风格迁移 不适应通道之间的相关性较强数据
GroupNorm 将channel方向分group,然后每个group内做归一化,算(C//G)HW的均值 不同Batch Size下具有较大的稳定性 在大Batch 下性能略差于BN
Switchable Normalization 将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法 集BN、IN、LN优点于一身 训练复杂
Positional Normalization 位置归一化算法来计算生成网络沿信道维数的统计量 在生成网络中表现较好 不适应视觉任务
Batch Group Normalization 解决Batch Size退化和饱和的问题

norm结果可视化:
在这里插入图片描述
立方体shape为(N, H, W, C)的像素点,N为batch size轴,C为通道轴。蓝色的像素群表示 使用这些像素值来计算平均值和方差进行归一化

BatchNorm

提出原因:

  1. 在训练神经网络过程中,通常输入batch个数据进行训练,这样每个batch具有不同的分布,使模型训练起来相对困难。

  2. Internal Covariate Shift (ICS) 问题:在训练深层网络时,激活函数会改变各层数据的分布以及量级,随着网络的加深,这种改变会越来越大,模型不稳定不容易收敛,甚至可能出现梯度消失的问题。

基本操作:

batch方向做归一化,算NHW的均值
在这里插入图片描述
在这里插入图片描述

优点:

  1. BN使得网络中每层输入数据的分布相对稳定,不仅极大提升了训练速度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kiki酱。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值