归一化总结:BN和LN的差别

参考链接:https://blog.csdn.net/qq_37541097/article/details/117653177
https://blog.csdn.net/Strive_For_Future/article/details/115220627

为什么要归一化:

在机器学习和深度学习中,有一个共识:独立同分布的数据可以简化模型的训练以及提升模型的预测能力——这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。也就是说我们在使用机器学习和深度学习的时候,会把数据尽可能的做一个独立同分布的处理,用来加快模型的训练速度和提升模型的性能。

差别:

BN的均值和标准差是在小批量上按维度计算的会考虑到batch上的每一个数据,对一个batch数据的每个channel进行Norm处理,因此在小batch上的效果较差,然而,LN是主要用于NLP领域的,每个词向量的含义不同,若按照整个batch的数据进行归一化会产生较大误差,因此LN是对单个数据的指定维度进行Norm处理与batch无关。

总结:

BN:取不同样本的同一个通道的特征做归一化,逐特征维度归一化;

LN:取的是同一个样本的不同通道做归一化,即整个样本归一化,逐个样本归一化。
在这里插入图片描述

### 归一化技术概述 为了提升深度学习模型的表现,归一化技术被广泛应用来处理内部协变量偏移问题并加速训练过程。具体来说,在不同类型的神经网络架构中,批量归一化(Batch Normalization, BN归一化(Layer Normalization, LN)扮演着重要角色。 ### 批量归一化 (BN) #### 定义与机制 批量归一化是在每个mini-batch上计算均值方差来进行特征标准化的技术。通过这种方式可以减少梯度消失/爆炸现象的发生,并允许使用更高的学习率加快收敛速度[^1]。 #### 优点 - 减轻了对初始化参数敏感程度的影响; - 提高泛化能力; - 加速训练效率; #### 缺点 - 对于较小batch size效果不佳; - 需要额外存储运行时统计信息用于推理阶段; - 可能引入噪声影响最终性能; ```python import torch.nn as nn bn_layer = nn.BatchNorm2d(num_features=64) output = bn_layer(input_tensor) ``` ### 层归一化 (LN) #### 定义与机制 不同于BN基于整个批次的数据进行规范化,LN则是针对单一样本内的所有激活值执行零中心化及单位标准差变换。这意味着即使在一个样本内也能够实现有效的正则化作用。 #### 优点 - 不依赖具体的batch大小; - 更适合RNN/LSTM等序列建模任务; - 训练更加稳定可靠; #### 缺点 - 当输入维度变化较大时可能表现不稳定; - 应用范围相对有限制; ```python ln_layer = nn.LayerNorm(normalized_shape=[sequence_length, hidden_size]) output = ln_layer(input_tensor) ``` ### 场景适应性分析 对于大多数卷积神经网络(CNNs),由于其天然具备较大的batch尺寸以及空间不变性的特点,因此BN往往成为首选方案。然而当涉及到自然语言处理(NLP)领域或者时间序列预测等问题时,则更倾向于采用LN因为这类任务通常涉及变长输入且难以获得足够大的minibatches[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值