layer norm和 rms norm 对比

Layer norm

# Layer Norm 公式
mean = x.mean(dim=-1, keepdim=True)
var = x.var(dim=-1, keepdim=True)
output = (x - mean) / sqrt(var + eps) * gamma + beta

特点:

  • 减去均值(去中心化)
  • 除以标准差(标准化)
  • 包含可学习参数 gamma 和 beta
  • 计算复杂度相对较高

RMS Norm(Root Mean Square归一化):

# RMS Norm 公式
rms = sqrt(mean())
output = x / rms * gamma

特点:

  • 不减去均值(保持中心)
  • 只除以RMS值
  • 只有一个可学习参数 gamma
  • 计算更简单高效

对比

在这里插入图片描述
在这里插入图片描述

代码对比

import torch
import torch.nn as nn

class LayerNorm(nn.Module):
    def __init__(self, dim, eps=1e-6):
        super().__init__()
        self.gamma = nn.Parameter(torch.ones(dim))
        self.beta = nn.Parameter(torch.zeros(dim))
        self.eps = eps
    
    def forward(self, x):
        mean = x.mean(-1, keepdim=True)
        var = x.var(-1, keepdim=True, unbiased=False)
        return (x - mean) / torch.sqrt(var + self.eps) * self.gamma + self.beta

class RMSNorm(nn.Module):
    def __init__(self, dim, eps=1e-6):
        super().__init__()
        self.gamma = nn.Parameter(torch.ones(dim))
        self.eps = eps
    
    def forward(self, x):
        rms = torch.sqrt(torch.mean(x**2, dim=-1, keepdim=True) + self.eps)
        return x / rms * self.gamma

### RMSNorm LayerNorm 的性能与效果对比 RMSNorm(Root Mean Square Normalization) LayerNorm 是两种常用的深度学习规范化技术。以下是它们在不同方面的比较: #### 定义与计算方式 LayerNorm 对输入张量的每一行数据进行标准化处理,通过减去均值并除以标准差来实现归一化[^4]。其公式如下: ```python def layer_norm(x, gamma, beta, eps=1e-5): mean = x.mean(axis=-1, keepdims=True) std = x.std(axis=-1, keepdims=True) normalized_x = (x - mean) / (std + eps) return gamma * normalized_x + beta ``` 相比之下,RMSNorm 不会考虑均值部分,仅基于根均方误差(RMS Error)对输入进行缩放[^5]。具体公式为: ```python def rms_norm(x, weight, eps=1e-5): rms = (x.pow(2).mean(-1, keepdim=True) + eps).sqrt() normalized_x = x / rms return weight * normalized_x ``` #### 计算复杂度 由于 RMSNorm 避免了计算均值的操作,因此它的计算成本通常低于 LayerNorm[^6]。这种简化使得 RMSNorm 更适合大规模模型中的高效训练。 #### 参数数量 LayerNorm 包含两个可学习参数 γ(scale) β(shift),用于调整归一化的输出范围[^7]。而 RMSNorm 只有一个 scale 参数,减少了额外的学习负担[^8]。 #### 实验表现 研究表明,在某些自然语言处理任务中,RMSNorm 能够达到与 LayerNorm 类似的收敛速度甚至更优的效果,同时减少内存占用加速推理过程[^9]。然而,在图像分类或其他视觉领域任务里,两者的表现差异可能较小或者取决于具体的网络架构设计[^10]。 #### 总结 总体而言,如果追求更高的运行效率以及更低资源消耗的情况下可以优先尝试采用RMSNorm;而对于那些需要精细调节分布特性的场景,则仍然推荐使用功能更为全面的传统方法即LayerNorm[^11]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值