当前位置: 首页 > news >正文

深度学习中LayerNorm与RMSNorm对比

LayerNorm不同于BatchNorm,其与batch大小无关,均值和方差每个样本的特征维度 C 内计算,
适用于 变长输入(如 NLP 任务中的 Transformer)
详细的BatchNorm在之前的一篇文章进行了详细的介绍:深度学习中Batch Normalization(BN)原理、作用浅析-CSDN博客
这里主要介绍适合于Transformer架构的两个归一化操作RMSNorm 和 LayerNorm

RMSNorm 和 LayerNorm 的本质区别

RMSNorm(Root Mean Square Normalization)和 LayerNorm(Layer Normalization)都是 归一化方法,但它们的本质区别在于 是否去均值(Mean-Centering) 以及 归一化的方式

LayerNorm公式
在这里插入图片描述

  • μ:均值,计算的是特征 xd 维度上的平均值。
  • σ2:方差,用于衡量数值分布的变化范围。
  • γ,β:可学习的缩放和偏移参数。
  • LayerNorm 不仅仅缩放数据,还会让其均值归一化到 0,保证分布居中

RMSNorm公式
在这里插入图片描述

  • RMSNorm 直接用 RMS(x) 归一化,而不去均值
  • RMSNorm 只调整 L2 范数的大小,不影响数据的中心位置

代码实现

class LayerNorm(nn.Module):
    def __init__(self, dim, eps=1e-5):
        super().__init__()
        self.eps = eps
        self.weight = nn.Parameter(torch.ones(dim))
        self.bias = nn.Parameter(torch.zeros(dim))

    def forward(self, x):
        mean = x.mean(dim=-1, keepdim=True)
        std = x.var(dim=-1, keepdim=True, unbiased=False).sqrt()
        return self.weight * (x - mean) / (std + self.eps) + self.bias

class RMSNorm(nn.Module):
    def __init__(self, dim, eps=1e-5):
        super().__init__()
        self.eps = eps
        self.weight = nn.Parameter(torch.ones(dim))

    def forward(self, x):
        rms = torch.sqrt(torch.mean(x ** 2, dim=-1, keepdim=True) + self.eps)
        return self.weight * (x / rms)

RMSNorm 的优缺点

LayerNorm 的优点

  1. 更稳定的梯度更新
    • 由于均值归 0,梯度更新不会受到偏移影响。
    • 适用于 Transformer、BERT、GPT。
  2. 适用于不同任务
    • 既可以用于 NLP(Transformer),也可以用于 CNN。
    • 适用于变长输入(如 RNN、BERT)。
  3. 训练和推理一致
    • LayerNorm 不依赖 batch_size,在训练和推理时表现一致。

LayerNorm 的缺点

  1. 计算量大
    • 需要 计算均值和方差,相比 RMSNorm 额外增加一次均值计算,计算量更高。
  2. 计算开销大,不适合大模型
    • 大规模 Transformer(如 LLaMA) 中,LayerNorm 计算量太大,影响训练速度。
  3. 对 batch_size 影响较大
    • 小 batch_size 时,LayerNorm 可能表现不稳定。

RMSNorm 的优缺点

RMSNorm 的优点

  1. 计算更快
    • 仅计算 L2 归一化,比 LayerNorm 计算量少 约 30%
  2. 适用于大模型(如 LLaMA, GPT-4)
    • 大模型训练中,RMSNorm 比 LayerNorm 更高效

RMSNorm 的缺点

  1. 不去均值,可能影响训练稳定性
    • 在某些任务中,均值归 0 能稳定训练,而 RMSNorm 不能。
  2. 不适用于 CNN
    • CNN 依赖均值信息,RMSNorm 不计算均值,可能导致训练不稳定。

总结

RMSNorm通过简化归一化过程,降低计算复杂度,提供了一种有效的归一化方法。它在保持模型性能的同时,提高了计算效率,是LayerNorm的有力替代方案。

相关文章:

  • Web安全:保护您的网站免受网络威胁
  • 2024下半年真题 系统架构设计师 案例分析
  • 将景区天气数据存储到Excel文件中
  • 【微服务】Nacos 配置动态刷新(简易版)(附配置)
  • 基于express+TS+mysql+sequelize的后端开发环境搭建
  • 深入理解 Python 中的 Socket 编程
  • GitHub:添加ssh密钥
  • 【文献阅读】DeepRAG:大语言模型的检索增强推理新范式
  • 【Springboot知识】开发属于自己的中间件健康监测HealthIndicate
  • Obsidian中Text Generate接入智谱清言报错:JSON parse error
  • 计算机视觉|一文读懂NeRF:为3D场景重建带来新突破
  • 系统架构设计师—论文解析—论文写作技巧
  • PowerBI实用技巧——案例十三 (根据所选日期,动态计算每年新客户数量)
  • uniapp-x 之useAttrs只读
  • Excel单元格中插入自定义超链接
  • ffmpeg面试题整理
  • 本地部署LLaMA-Factory
  • 【JavaEE】网络原理之初识
  • 20250315-OpenAI-AgentSDK实验
  • 【VUE】day03-vue过滤器、计算属性、vue-cli、vue组件
  • 人形机器人灵犀X2掌握新技能:有了“内心戏”,还会拳脚功夫
  • 上海率先推进生物制品分段生产试点,这款国产1类创新药获批上市
  • 广西等地旱情缓解,水利部针对甘肃启动干旱防御Ⅳ级响应
  • 四川甘孜炉霍县觉日寺管委会主任呷玛降泽被查
  • 一图看懂|印巴交火后,双方基地受损多少?
  • 陈吉宁龚正黄莉新胡文容等在警示教育基地参观学习,出席深入贯彻中央八项规定精神学习教育交流会