[论文笔记]Root Mean Square Layer Normalization

news2025/1/18 6:16:41

引言

今天带来论文Root Mean Square Layer Normalization的笔记,论文题目是均方根层归一化。

本篇工作提出了RMSNorm,认为可以省略重新居中步骤。

简介

层归一化对Transformer等模型非常重要,它可以帮助稳定训练并提升模型收敛性,因为它能够处理输入和权重矩阵的重新居中(re-centering)和重新缩放(re-scaling)。然而,LayerNorm引入的计算开销使这些改进变得昂贵,并且严重减慢了底层网络的速度。

image-20240417151859763

对于少量归一化层的小型和浅层神经模型来说,这个问题是微不足道的。但当底层网络变得更大更深时,这个问题就变得严重了。

因此,从更快、更稳定的训练(以训练步骤的数量为衡量)中获得的效率提升被每个训练步骤增加的计算成本所抵消,这降低了净效率,如图1所示。

在本篇工作中,作者提出了均方根层归一化(MSNorm),它仅使用均方根统计数据对一层中神经元的总输入进行正则化。与LayerNorm相比,RMSNorm减少了计算量,提高了效率。尽管公式更简单,但RMS归一化器有助于稳定层激活的幅度,确保对权重和数据集的重新缩放具有不变性。

背景知识

本节简要回顾了基于标准前馈神经网络的LayerNorm。给定一个输入向量 x ∈ R m \pmb x \in \R^m xxxRm,一个前馈网络通过线性变换将其投影到一个输出向量 y ∈ R n \pmb y ∈ \R^n yyyRn​,然后通过非线性激活进行如下处理:
a i = ∑ j = 1 m w i j x j , y i = f ( a i + b i ) (1) a_i = \sum_{j=1}^m w_{ij}x_j, \quad y_i = f(a_i +b_i) \tag 1 ai=j=1mwijxj,yi=f(ai+bi)(1)
其中 w i w_i wi是第 i 个输出神经元的权重向量, b i b_i bi是通常初始化为0的偏置标量, f ( ⋅ ) f(\cdot) f()是逐元素的非线性函数。$\pmb a ∈ \R^n $​表示神经元的加权和输入,也是归一化的目标。

这个普通的网络可能会遭受内部协变量偏移问题,即随着前面的层被更新,某一层的输入分布也会发生变化。这可能会对参数的梯度稳定性产生负面影响,延迟模型的收敛。为了减少这种偏移,LayerNorm 对输入进行归一化,使其均值和方差保持不变,具体如下:
a ˉ i = a i − μ σ g i , y i = f ( a ˉ i + b i ) (2) \bar a_i = \frac{a_i -\mu}{ \sigma} g_i,\quad y_i = f(\bar a_i +b_i) \tag {2} aˉi=σaiμgi,yi=f(aˉi+bi)(2)

其中 a ˉ i \bar a_i aˉi是向量 a ˉ ∈ R n \bar {\pmb a} \in \R^n aaaˉRn的第 i 个值,它作为 a i a_i ai在层激活中的归一化替代值。 g ∈ R n \pmb g ∈ \R^n gggRn 是用于重新缩放标准化的加权和输入的增益参数,初始值设为1。 µ µ µ σ 2 σ^2 σ2分别是从原始加权和输入 a \pmb a aaa估计得出的均值和方差统计量:
μ = 1 n ∑ i = 1 n a i , σ = 1 n ∑ i = 1 n ( a i − μ ) 2 (3) \mu = \frac{1}{n} \sum_{i=1}^n a_i,\quad \sigma = \sqrt{\frac{1}{n} \sum_{i=1}^n (a_i -\mu)^2} \tag 3 μ=n1i=1nai,σ=n1i=1n(aiμ)2 (3)

RMSNorm

LayerNorm成功的一个著名解释是其重新居中和重新缩放不变性属性。前者使得模型对于输入和权重上的偏移噪声不敏感,而后者在输入和权重都被随机缩放时保持输出表示不变。在本文中,作者假设重新缩放不变性是LayerNorm成功的原因,而不是重新居中不变性。

作者提出了RMSNorm,它仅关注重新缩放不变性,并根据均方根统计量简单地对加权和输入进行正则化:
a ˉ i = a i RMS ( a ) g i (4) \bar a_i = \frac{a_i }{ \text{RMS}(\pmb a)} g_i \tag 4 aˉi=RMS(aaa)aigi(4)
其中 RMS ( a ) \text{RMS}(\pmb a) RMS(aaa)为:
RMS ( a ) = 1 n ∑ i = 1 n a i 2 (4.1) \text{RMS}(\pmb a) =\sqrt{\frac{1}{n} \sum_{i=1}^n a_i^2} \tag {4.1} RMS(aaa)=n1i=1nai2 (4.1)
对比公式(4)和(2)发现,确实只是去掉了均值 μ \mu μ。RMSNorm通过完全删除公式(3)中的均值统计量简化了LayerNorm。当加权和输入的均值为零时,RMSNorm与LayerNorm完全相等。虽然RMSNorm不像LayerNorm那样重新居中加权和输入,但通过实验证明,这个属性并不是LayerNorm成功的根本原因,而且RMSNorm同样或更加有效。

RMS测量输入的平方均值,在RMSNorm中,它将加权和输入强制缩放到一个 n \sqrt n n 倍的单位球中。通过这样做,输出分布不受输入和权重分布的缩放影响,有利于层激活的稳定性。虽然欧几里得范数与RMS仅差一个 n \sqrt n n 的因子,已经成功应用于一些领域,但经验证明,它在层归一化中并不奏效。

作者假设根据输入向量的大小来缩放单位球是重要的,因为它使得归一化在不同大小的向量之间更加鲁棒。

不变性分析

image-20240417154533058

不变性衡量模型在归一化后输出是否高度按照其输入和权重矩阵变化。不同的归一化方法显示出不同的不变性属性,这对模型的稳健性贡献很大。

我们考虑RMSNorm的以下一般形式:
y = f ( W x RMS ( a ) ⊙ g + b ) (5) y = f\left( \frac{W\pmb x}{\text{RMS}(\pmb a)} \odot \pmb g + \pmb b \right) \tag 5 y=f(RMS(aaa)Wxxxggg+bbb)(5)
其中 ⊙ ⊙ 表示逐元素相乘。主要结果总结在表1中。由于RMS的以下线性性质,RMSNorm对于权重矩阵和输入的重新缩放都是不变的:
RMS ( α x ) = α RMS ( x ) (6) \text{RMS}(\alpha \pmb x)= \alpha \text{RMS}(\pmb x) \tag 6 RMS(αxxx)=αRMS(xxx)(6)

其中 α \alpha α是缩放值。假设权重矩阵通过一个因子 δ \delta δ缩放,比如, W ′ = δ W W^\prime = \delta W W=δW,那么这个改变不会影响最终层输出:
y ′ = f ( W ′ x RMS ( a ′ ) ⊙ g + b ) = f ( δ W x δ RMS ( a ) ⊙ g + b ) = y (7) \pmb y^\prime =f\left( \frac{W^\prime\pmb x}{\text{RMS}(\pmb a^\prime)} \odot \pmb g + \pmb b \right) =f\left( \frac{\delta W\pmb x}{\delta \text{RMS}(\pmb a)} \odot \pmb g + \pmb b \right)=\pmb y \tag 7 yyy=f(RMS(aaa)Wxxxggg+bbb)=f(δRMS(aaa)δWxxxggg+bbb)=yyy(7)
相比之下,如果仅对个别权重向量进行缩放,这个性质就不再成立,因为不同的缩放因子会破坏RMS的线性性质。同样地,如果我们强制对输入进行一个因子为 δ δ δ的缩放,比如 x ′ = δ x \pmb x^\prime = δ\pmb x xxx=δxxx,通过与公式(7)类似的分析,RMSNorm的输出将保持不变。我们还可以轻松地将这个等式推广到基于批次的输入以及整个数据集。因此,RMSNorm对于其输入的缩放是不变的。

与LayerNorm的主要区别在于,RMSNorm没有重新居中,因此在变量偏移方面没有类似的线性性质。它不对所有重新居中操作都具有不变性。

梯度分析

上述分析仅考虑了输入缩放和权重矩阵对层输出的影响。然而,在一般情况下,通过标准的随机梯度下降方法来训练经过RMSNorm增强的神经网络,模型梯度的稳健性对于参数更新和模型收敛非常关键。

Santurkar等人认为归一化方法的成功并不是因为增加了对层输入的稳定性,而是由于优化过程的平滑性增加。

我们研究RMSNorm中模型梯度的性质。给定一个损失函数KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲ ̲L,我们通过公式(4)进行反向传播,得到参数 g \pmb g ggg b \pmb b bbb的梯度如下:
∂ L ∂ b = ∂ L ∂ v , ∂ L ∂ g = ∂ L ∂ v ⊙ W x RMS ( a ) (8) \frac{\partial \mathcal L}{\partial \pmb b} = \frac{\partial \mathcal L}{\partial \pmb v}, \quad \frac{\partial \mathcal L}{\partial \pmb g} = \frac{\partial \mathcal L}{\partial \pmb v} \odot \frac{W \pmb x}{\text{RMS}(\pmb a)} \tag 8 bbbL=vvvL,gggL=vvvLRMS(aaa)Wxxx(8)
其中, v \pmb v vvv代表公式(4)中 f ( ⋅ ) f(\cdot) f()内部的整个表达式, ∂ L / ∂ v ∂\mathcal L/∂\pmb v L/vvv是从KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲ ̲L v \pmb v vvv的反向传播梯度。无论对于输入 x \pmb x xxx的缩放还是对于权重矩阵 W W W(对于 ∂ L / ∂ g ∂ \mathcal L/∂\pmb g L/ggg来说,是因为公式(6)中的线性性质),梯度KaTeX parse error: Undefined control sequence: \cal at position 2: ∂\̲c̲a̲l̲ ̲L/∂\pmb bKaTeX parse error: Undefined control sequence: \cal at position 2: ∂\̲c̲a̲l̲ ̲L/∂\pmb g都是不变的。此外, g \pmb g ggg的梯度与归一化的输入之和成正比,而不是原始输入。这增强了 g \pmb g ggg的幅度稳定性。

与这些向量参数不同,权重矩阵W的梯度由于RMS中的二次计算而更加复杂。具体来说,
∂ L ∂ W = ∑ i = 1 n [ x ⊤ ⊗ ( diag ( g ⊙ ∂ L ∂ v ) × R ) ] (9) \frac{\partial \mathcal L}{\partial W} = \sum_{i=1}^n \left[\pmb x^\top \otimes \left( \text{diag}\left( \pmb g \odot \frac{\partial \mathcal L}{\partial \pmb v}\right) \times R\right) \right] \tag 9 WL=i=1n[xxx(diag(gggvvvL)×R)](9)
其中
R = 1 RMS ( a ) = ( I − ( W x ) ( W x ) ⊤ n RMS ( a ) 2 ) (9.1) R = \frac{1}{\text{RMS}(\pmb a)} = \left( \pmb I - \frac{(W \pmb x)(W \pmb x)^\top}{n \text{RMS}(\pmb a)^2} \right) \tag{9.1} R=RMS(aaa)1=(IIInRMS(aaa)2(Wxxx)(Wxxx))(9.1)

diag ( ⋅ ) \text{diag}(\cdot) diag()表示输入的对角矩阵, ⊗ \otimes 表示克罗内克内积,而 I \pmb I III​表示单位矩阵。

为了清晰起见,使用 × \times ×表示矩阵乘法。矩阵项 R R R W W W的梯度与输入 x \pmb x xxx和权重矩阵 W W W联系起来。通过彻底分析,我们可以证明该项与输入和权重矩阵的缩放呈负相关。在将输入 x ( x ′ = δ x ) \pmb x(\pmb x^\prime = δ\pmb x) xxxxxx=δxxx)或权重矩阵 W ′ = δ W W^\prime = \delta W W=δW分配一个因子 δ δ δ的尺度后,我们有以下关系:
R ′ = 1 δ RMS ( a ) ( I − ( δ W x ) ( δ W x ) ⊤ n δ 2 RMS ( a ) 2 ) = 1 δ R (10) R^\prime =\frac{1}{\delta \text{RMS}(\pmb a)} \left( \pmb I - \frac{(\delta W \pmb x)(\delta W \pmb x)^\top}{n \delta ^2\text{RMS}(\pmb a)^2} \right) = \frac{1}{\delta } R \tag{10} R=δRMS(aaa)1(IIInδ2RMS(aaa)2(δWxxx)(δWxxx))=δ1R(10)
如果我们将缩放后的 R ′ R^\prime R项放回到公式(9)中,可以轻松证明梯度 ∂ L / ∂ W ∂\mathcal L/∂W L/W对于输入缩放是不变的,但与权重矩阵的缩放呈负相关。

减少梯度 ∂ L / ∂ W ∂\mathcal L/∂W L/W​对于输入缩放的敏感性可以确保其平滑性,并提高学习的稳定性。另一方面,负相关作为一个隐式的学习率适应器,动态地控制梯度的范数,避免了范数较大的权重矩阵,提高了模型的收敛性。

结论

本文介绍了RMSNorm,保留了LayerNorm的重新缩放不变性属性,但舍弃了重新居中不变性属性。与LayerNorm相比,采用RMSNorm的模型的计算开销较小,可以作为LayerNorm的替代方案,轻松应用于不同的模型架构。

总结

⭐ 作者在层归一化的基础上移除掉均值相关项,得到了RMSNorm。然后通过实现证明其效果还不错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1603163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp-小程序保存图片到相册

小程序保存图片到相册 一. 将图片保存到手机相册涉及的api 有以下几个 1. uni.getSetting (获取用户的当前设置) 2. uni.authorize(提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调…

GPT国内能用吗

2022年11月,Open AI发布ChatGPT,ChatGPT展现了大型语模型在自然语言处理方面的惊人进步,其生成文本的流畅度和连贯性令人印象深刻,为AI应用打开了新的可能性。 ChatGPT的出现推动了AI技术在各个领域的应用,例如&#x…

『Django』创建app(应用程序)

theme: smartblue 本文简介 点赞 关注 收藏 学会了 在《『Django』环境搭建》中介绍了如何搭建 Django 环境,并且创建了一个 Django 项目。 在刚接触 Django 时有2个非常基础的功能是需要了解的,一个是“app”(应用程序),另一个是 url(路由…

kafka---topic详解

一、分区与高可用 在Kafka中,事件(events 事件即消息)是以topic的形式进行组织的;同时topic是分区(partitioned)的,这意味着一个topic分布在Kafka broker上的多个“存储桶”(buckets)上。这种数据的分布式放置对于可伸缩性非常重要,因为它允许客户端应用程序同时从多个…

「 网络安全常用术语解读 」漏洞利用交换VEX详解

漏洞利用交换(Vulnerability Exploitability eXchange,简称VEX)是一个信息安全领域的标准,旨在提供关于软件漏洞及其潜在利用的实时信息。根据美国政府发布的用例(PDF),由美国政府开发的漏洞利用交换(VEX)使供应商和用…

postman 调试 传base64字符串 原来选xml

上个图 工具类 package org.springblade.common.utils;import com.alibaba.fastjson.JSONObject; import org.springblade.modules.tc.mas.Submit;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStrea…

tcp三次握手和四次断开以及tcpdump的基本使用

前言 最近工作中会发现有超时的问题,还有就是在面试的时候很多都要求深入理解TCP/IP协议。突然感觉TCP/IP协议是一个既熟悉,又陌生的技术。又想到上大学的时候,老师说过 网络的圣经:“TCP/IP详解” 卷一 卷二 卷三,三…

Spring之CGLIB和JDK动态代理底层实现

目录 CGLIB 使用示例-支持创建代理对象,执行代理逻辑 使用示例-多个方法,走不同的代理逻辑 JDK动态代理 使用示例-支持创建代理对象,执行代理逻辑 Spring会自动在JDK动态代理和CGLIB之间转换: 1、如果目标对象实现了接口,默…

基于51单片机智能鱼缸仿真LCD1602显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机智能鱼缸仿真LCD显示 1. 主要功能:2. 讲解视频:3. 仿真4. 程序代码5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接: 基于51单片机智能鱼缸仿真LCD显示( proteus仿真程序设计报告讲解视频) 仿真图prot…

【Web】NewStarCTF 2022 题解(全)

目录 Week1 HTTP Head?Header! 我真的会谢 NotPHP Word-For-You Week2 Word-For-You(2 Gen) IncludeOne UnserializeOne ezAPI Week3 BabySSTI_One multiSQL IncludeTwo Maybe You Have To think More Week4 So Baby RCE BabySSTI_Two UnserializeT…

IDEA 安装、基本使用、创建项目

文章目录 下载基本使用修改颜色主题Keymap插件 创建项目创建模块新建 Java 类运行新建 Package打包 Jar运行 jar 包 查看文档 下载 官方下载地址:https://www.jetbrains.com/zh-cn/idea/download/?sectionmac 这里我下载 macOS 社区版,IDEA 2024.1 (C…

mPEG-Glutaramide Acid结合了聚乙二醇(PEG)和戊二酸(GAA)的性质

【试剂详情】 英文名称 mPEG-GAA,Methoxy PEG GAA, mPEG-Glutaramide Acid 中文名称 聚乙二醇单甲醚酰胺戊二酸, 甲氧基-聚乙二醇-戊二酰胺酸 外观性状 由分子量决定 分子量 400,600,2k,3.4k,5k&…

代码随想录算法训练营第五十七天 | 647. 回文子串、516. 最长回文子序列

代码随想录算法训练营第五十七天 | 647. 回文子串、516. 最长回文子序列 647. 回文子串题目解法 516. 最长回文子序列题目解法 动态规划总结链接感悟 647. 回文子串 题目 解法 题解链接 动态规划 class Solution { public:int countSubstrings(string s) {// dp[i][j]:表示…

[Java EE] 多线程(二): 线程的创建与常用方法(下)

2.3 启动一个线程–>start() 之前我们已经看到了如何通过重写run()方法来创建一个线程对象,但是线程对象被创建出来并不意味着线程就开始运行了. 覆写run方法是给线程提供了所要做的事情的指令清单创建线程对象就是把干活的人叫了过来.而调用start方法,就是喊一声"行…

Java处理CSV类库:OpenCSV

一:CSV简介 Comma-Separated Values(CSV), 因分隔符没有严格指定规范标准,可以使用逗号,也可以使用其他字符(如制表符\t、分号;等),所以CSV也称为 逗号分隔值或者字符分隔值。csv文件是使用纯文本来存储表…

【数据库】为什么要添加一个与业务无关的主键?

关注获取更多: 你是否想过,为什么mysql要设置一个自增的主键,或者使用uuid生成一个和业务无关的主键id,在数据库设计中,主键是用来唯一标识每一行数据的关键。通常情况下,我们会选择与业务相关的字段作为…

CMEF | 澳鹏Appen精彩亮相第89届中国国际医疗器械博览会

4月14日,为期四天的第89届中国国际医疗器械博览会(CMEF)盛大收官。如今,人们的健康需求在人口老龄化等一系列因素的影响下持续增长,这意味着卫生系统也面对着更多具有复杂健康需求的患者。信息化、数字化、智能化已经成…

Zynq学习笔记--数字视频帧以及同步信号

目录 1. 介绍 2. 重要概念 3. 仿真测试 4. 总结 1. 介绍 Zynq芯片,作为一款集成了高性能FPGA和ARM处理器的系统级芯片(SoC),为视频处理提供了强大的硬件支持。该芯片内置的丰富视频方面的IP模块,使得从事视频处理项目的开发者能够高效、…

PHP 使用 PHPMailer 发送电子邮件

1. PHPMailer 介绍 phpMailer 是一个非常强大的 php 发送邮件扩展包,可以设定发送邮件地址、回复地址、邮件主题、html邮件内容和上传附件等,使用起来非常方便。它目前有着有近 4 千万的下载量,是 PHP 开发者实现邮件发送功能的首选扩展包 它…

阅读小程序|基于微信阅读网站小程序的系统设计与实现(源码+数据库+文档)

目录 基于微信阅读网站小程序 一、前言 二、系统设计 三、系统功能设计 小程序端: 后台 管理员进入指定功能操作区之后可以管理图书订单。其页面见下图。管理员审核订单,查看订单是否支付,为购买图书的用户推送对应的章节。 管理员进…