BN,LN,IN,GN的有趣解释

博客转载知乎上关于四种Normalization的讲解,通过一个理发馆的故事类比四种Normalization的异同。如BatchNorm是求24小时内顾客头发长度均值;LayerNorm是同一时刻顾客头发长度均值;GroupNorm是隔间内理发师互通信息求均值;InstanceNorm是求同一客人头发平均长度。

今天在知乎上看到了一个关于四种Normalization特别有趣的讲解,具体的大家可以去读一下大神的原作,

关于四种Normalization的有趣且深刻的解释

下面是转载该作者写的小故事(转载地址如上),分享给大家!

为了能够更直观地理解四种Normalization的异同,大家可以体会下面的故事以做类比:

很久很久以前,在遥远的L国内有一个神奇的理发馆,理发馆里面有很多勤劳的理发师,来这里理发的顾客也很奇特,他们所有人都会要求理发师(神经元)理出和其他人差不多长的头发(求均值)。那么和其他人差不多长究竟是多长呢?这可难不倒我们可爱又聪明的理发师,于是理发师把自己最近24个小时服务过的顾客(Mini-Batch)进入理发店时的头发长度求个平均值,这个均值就是“和其他人差不多长”的长度。来这里的每个顾客都很满意,时间久了,人们尊称这些理发师为:BatchNorm理发师。

不幸总是突然的,有一天,理发馆里发生了一件怪事,所有理发师的记忆只能维持1分钟,他们再也记不住过去24小时中发生的事情了,自然也记不住过去服务客人的头发长度。但是每个顾客仍然要求剪出和其他人差不多长的头发长度,这可怎么办?聪明的理发师们又想出了一个办法:他们相互大声报出同一时刻在理发馆里自己手上客人的头发长度,每个理发师就可以用这些人的头发长度均值作为满足自己手上客人条件的长度。尽管这是一群得了失忆综合证的理发师,但是顾客对他们的服务仍然非常满意,于是人们改称他们为:LayerNorm理发师。

不幸总是突然的,有一天,理发馆里又发生了一件怪事,理发师们不仅得了失忆症,这次都突然失聪,再也听不到其它理发师的口头通知,而固执的客人仍然坚持要理出“和其他人差不多长”的头发。对了,忘了介绍了,理发馆是有隔间的,每个隔间有K个理发师同时给顾客理发,虽然我们可爱又聪明的理发师现在失忆又失聪,但是再大的困难也难不倒也叫不醒这群装睡的人,他们醒来后群策群力又发明了一个新方法:同一个隔间的理发师通过相互打手势来通知其它理发师自己手上顾客的头发长度。于是同一个隔间的理发师又可以剪出顾客满意的头发了。人们称这些身残志坚的理发师为:GroupNorm理发师。

不幸总是突然的,有一天,理发馆里又发生了一件怪事,不过这次不是天灾是人祸,理发馆老板出于好心,给每位理发师单独开个办公室给顾客理发,但是好心办了坏事,这样一来,失忆失聪又无法相互打手势的理发师们怎么应对顽固的顾客呢?怎样才能继续理出“和其他人差不多长”的头发呢?想必一般人这个时候基本无路可走了,但是我们可爱又聪明,同时失聪又失忆的理发师仍然想出了解决办法:他们看了看客人头上的头发,发现不同地方有长有短,于是就把同一个客人所有头发的平均长度作为难题的答案(CNN的InstanceNorm)。听起来这个解决方案匪夷所思,但是出人意料的是,有些客人居然仍然非常满意。人们管这些传说中的神奇理发师为:InstanceNorm理发师

### Batch Normalization (BN), Layer Normalization (LN), Group Normalization (GN), Instance Normalization (IN): 区别及应用场景 #### 定义与核心机制 Batch Normalization (BN) 是一种通过标准化 mini-batch 中的激活值来减少内部协变量偏移的技术[^1]。它通过对每一批数据计算均值和方差来进行规范化处理。 Layer Normalization (LN) 则是在单一样本的所有特征维度上进行规范化操作,而不依赖于批次中的其他样本[^2]。这种方法更适合于序列模型或当批量大小较小时的情况。 Instance Normalization (IN) 主要用于风格迁移等领域,在图像的每个通道内独立地对像素值进行归一化处理[^3]。这有助于去除内容信息而保留样式特性。 Group Normalization (GN) 将通道划分为若干组,并在每一组内执行类似于 LN 的操作。这种方式可以有效缓解 BN 对大批次的需求问题,同时保持较好的性能。 #### 应用场景分析 - **Batch Normalization**: 广泛应用于卷积神经网络(CNNs),特别是在训练大规模数据集时效果显著。然而,其表现受制于批尺寸的选择——较大的批尺寸通常能带来更好的结果。 - **Layer Normalization**: 更适合 RNN/LSTM 等循环结构以及 Transformer 架构下的自然语言处理任务。由于不涉及跨样例统计量,因此即使在小批量甚至单一输入的情况下也能稳定工作。 - **Instance Normalization**: 常见于计算机视觉领域内的艺术风格转换项目中。因为 IN 能够消除特定实例的内容细节,仅关注全局模式匹配,所以非常适合此类应用场合。 - **Group Normalization**: 提供了一种折衷方案,既不需要像 BN 那样的大数据块支持,又不像 LNIN 这样完全忽略空间关联性。特别适用于目标检测、分割等需要精确控制局部区域特性的任务类型。 ```python import torch.nn as nn # Example of applying different normalizations in PyTorch bn = nn.BatchNorm2d(64) # For CNN layers with batch size dependency ln = nn.LayerNorm([64, 8, 8]) # Suitable for sequence models or transformers in_ = nn.InstanceNorm2d(64) # Commonly used in style transfer tasks gn = nn.GroupNorm(8, 64) # Alternative to BN without large batches requirement ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值