type
status
date
slug
summary
tags
category
icon
password
comment
Layer Normalization (LN) 和 Batch Normalization (BN) 都是深度学习中常用的归一化技术,但它们在实现和应用上有一些重要的区别。
归一化维度:
- BN: 对每个特征在batch维度上进行归一化。如下所示,batch size为4,通道为3,图片大小为240x240.BN对每个通道的数据进行归一化,总共进行了3次。
- LN: 对每个样本在特征维度上进行归一化。如下所示,LN对每个样本进行了归一化,总共进行了4次。
计算方式:
- BN: 计算每个特征在整个batch中的均值和方差。
- LN: 计算每个样本的所有特征的均值和方差。
适用场景:
- BN: 更适合固定大小的batch和CNN。
- LN: 更适合RNN和Transformer等序列模型,以及batch size较小的情况。
Batch size依赖性:
- BN: 性能强烈依赖于batch size,小batch size可能导致性能下降。
- LN: 不依赖batch size,对batch size的变化不敏感。
特征独立性:
- BN: 假设特征之间是独立的。
- LN: 不假设特征之间的独立性。
训练和推理一致性:
- BN: 训练和推理阶段的行为可能不同,需要额外的操作来处理。
- LN: 训练和推理阶段的行为一致。
参数共享:
- BN: 在同一层的不同通道间共享参数。
- LN: 在同一层的所有神经元间共享参数。
计算复杂度:
- BN: 在batch维度上计算,计算复杂度较高。
- LN: 在特征维度上计算,计算复杂度相对较低。
适应性:
- BN: 在处理输入分布变化时可能更有效。
- LN: 对输入分布的变化不太敏感。
模型泛化能力:
- BN: 可能会引入一些噪声,有助于提高模型的泛化能力。
- LN: 不引入额外噪声,但可能在某些情况下泛化能力略逊于BN。
总结:
选择使用LN还是BN主要取决于具体的应用场景和模型结构。在序列模型和Transformer中,LN通常是更好的选择;而在CNN中,BN仍然是常用的选择。