Layer Normalization解析

article/2025/8/15 23:07:45

原论文名称:Layer Normalization
原论文地址: https://arxiv.org/abs/1607.06450

之前有讲过Batch Normalization的原理,链接,今天来简单讲讲Layer Normalization。Layer Normalization是针对自然语言处理领域提出的,例如像RNN循环神经网络。为什么不使用直接BN呢,因为在RNN这类时序网络中,时序的长度并不是一个定值(网络深度不一定相同),比如每句话的长短都不一定相同,所有很难去使用BN,所以作者提出了Layer Normalization(注意,在图像处理领域中BN比LN是更有效的,但现在很多人将自然语言领域的模型用来处理图像,比如Vision Transformer,此时还是会涉及到LN)。

具体论文就不讲了,我们直接看下Pytorch官方给的关于LayerNorm的简单介绍。只看公式的话感觉和BN没什么区别,都是减均值 E ( x ) E(x) E(x),除以标准差 V a r ( x ) + ϵ \sqrt{Var(x) + \epsilon } Var(x)+ϵ 其中 ϵ \epsilon ϵ是一个非常小的量(默认 1 0 − 5 10^{-5} 105),是为了防止分母为零。同样也有两个可训练的参数 β , γ \beta, \gamma β,γ。不同的是,BN是对一个batch数据的每个channel进行Norm处理,但LN是对单个数据的指定维度进行Norm处理与batch无关(后面有示例)。而且在BN中训练时是需要累计moving_mean和moving_var两个变量的(所以BN中有4个参数 m o v i n g _ m e a n , m o v i n g _ v a r , β , γ moving\_mean, moving\_var, \beta, \gamma moving_mean,moving_var,β,γ),但LN不需要累计只有 β , γ \beta, \gamma β,γ两个参数。

在Pytorch的LayerNorm类中有个normalized_shape参数,可以指定你要Norm的维度(注意,函数说明中the last certain number of dimensions,指定的维度必须是从最后一维开始)。比如我们的数据的shape是[4, 2, 3],那么normalized_shape可以是[3](最后一维上进行Norm处理),也可以是[2, 3](Norm最后两个维度),也可以是[4, 2, 3](对整个维度进行Norm),但不能是[2]或者[4, 2],否则会报以下错误(以normalized_shape=[2]为例):

RuntimeError: 
Given normalized_shape=[2],         
expected input with shape [*, 2],    
but got input of size[4, 2, 3]

提示我们传入的normalized_shape=[2],接着系统根据我们传入的normalized_shape推理出期待的输入数据shape应该为[*, 2]即最后的一个维度大小应该是2,但我们实际传入的数据shape是[4, 2, 3]所以报错了。

layer norm
接着,我们再来看个示例。下面是我写的测试代码,分别使用官方的LN方法和自己实现的LN方法进行比较,看自己理解的是否正确。

import torch
import torch.nn as nndef layer_norm_process(feature: torch.Tensor, beta=0., gamma=1., eps=1e-5):var_mean = torch.var_mean(feature, dim=-1, unbiased=False)# 均值mean = var_mean[1]# 方差var = var_mean[0]# layer norm processfeature = (feature - mean[..., None]) / torch.sqrt(var[..., None] + eps)feature = feature * gamma + betareturn featuredef main():t = torch.rand(4, 2, 3)print(t)# 仅在最后一个维度上做norm处理norm = nn.LayerNorm(normalized_shape=t.shape[-1], eps=1e-5)# 官方layer norm处理t1 = norm(t)# 自己实现的layer norm处理t2 = layer_norm_process(t, eps=1e-5)print("t1:\n", t1)print("t2:\n", t2)if __name__ == '__main__':main()

首先使用torch.rand方法随机生成一个shape为[4, 2, 3]的变量t:

t

接着使用官方的方法创建一个LN层,这里t.shape[-1]指的是数据的最后一个维度3即只对最后一个维度进行Norm处理,如上图中用红色框框选出的每组数据:

# 仅在最后一个维度上做norm处理
norm = nn.LayerNorm(normalized_shape=t.shape[-1], eps=1e-5)

然后将数据传入实例化好的norm类得到以下结果:

 tensor([[[-1.2758,  1.1659,  0.1099],[ 0.6532, -1.4123,  0.7591]],[[ 1.1400,  0.1522, -1.2922],[ 1.0942, -1.3229,  0.2287]],[[-0.9757, -0.3983,  1.3741],[ 1.4134, -0.7379, -0.6755]],[[ 0.1563,  1.1389, -1.2951],[-1.2341,  0.0203,  1.2138]]], grad_fn=<NativeLayerNormBackward>)

然后调用自己实现的LayerNorm方法(注意, β \beta β最初为0, γ \gamma γ最初为1,后面通过训练慢慢学习调整的)得到如下结果:

 tensor([[[-1.2758,  1.1659,  0.1099],[ 0.6532, -1.4123,  0.7591]],[[ 1.1400,  0.1522, -1.2922],[ 1.0942, -1.3229,  0.2287]],[[-0.9757, -0.3983,  1.3741],[ 1.4134, -0.7379, -0.6755]],[[ 0.1563,  1.1389, -1.2951],[-1.2341,  0.0203,  1.2138]]])

很明显和官方得到的结果是一模一样的,这也说明了自己的理解是正确的。


http://chatgpt.dhexx.cn/article/XDeW93w5.shtml

相关文章

Eigen中norm、normalize、normalized的区别

Eigen中norm、normalize、normalized的区别 norm() 对于Vector&#xff0c;norm返回的是向量的二范数&#xff0c;即 例如&#xff1a; Vector2d vec(3.0,4.0); cout << vec.norm() << endl; //输出5 对于Matrix&#xff0c;norm返回的是矩阵的弗罗贝尼乌斯范数…

归一化函数 normalized()

1. 归一化定义与作用 归一化就是要把需要处理的数据经过处理后&#xff08;通过某种算法&#xff09;限制在你需要的一定范围内。 首先归一化是为了后面数据处理的方便&#xff0c;其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间…

手机锁屏后微信收款语音不播报?-by:nixs

荣耀10&#xff0c;之前用荣耀7x就没这毛病&#xff01; 我确认与设置无关&#xff0c;微信语音播报是开启状态&#xff0c;通知设置都是允许的&#xff0c;我更不会二到把手机关静音&#xff01; 反正就是黑屏待机时&#xff0c;没有任何声音&#xff0c;一但点亮屏幕就有语音…

App微信小程序测试流程及要点

1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间&#xff0c;一般测试时间为两三周&#xff08;即15个工作日&#xff09;&#xff0c;根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向主管确认项目排期。 1.3测试资源…

微信小程序,分享如何封装一个全局支持暂停,拖动等各类操作的音视频等多媒体管理器

不知不觉埋头于业务已许久&#xff0c;距离上一篇分享应该很久很久以前&#xff0c;具体何时&#xff0c;已无从知晓。慢慢的开始觉得锅有点热&#xff0c;感觉呼吸有点困难&#xff0c;温水里面的青蛙趁着腿还没完全麻木的时候&#xff0c;也想着开始重拾旧梦&#xff0c;稍微…

html微信登录密码输入密码,不用输密码,只要8个数字就能登录你的微信

不知道大家有没有遇到过这样的问题&#xff0c;就是当我们换新手机之后&#xff0c;在登录微信的时候就需要密码了。 打开凤凰新闻&#xff0c;查看更多高清图片 可是有些人记性不好&#xff0c;经常忘记微信登录密码&#xff0c;这该怎么办呢&#xff1f;今天小Q来教大家一招可…

微信上隐藏着6个功能,实在是太厉害了,真令人相见恨晚

很多人都说微信不太好用,那是因为你还没有找到好用的功能,如果你只会聊天和付款那就太out了,今天才知道,微信上隐藏着6个功能实在是太厉害了。 一、无线极速传输 微信不仅方便了生活,在办公上也是一个小能手,无需数据线就能与电脑相互传输文件,找到文件传输助手,将文件…

基于微信小程序音乐播放器的设计与实现毕业设计源码271156

Springboot音乐播放小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的音乐播放器&#xff0c;系统为人们提供了方便快捷、即用即搜的音乐搜索播放服务&#xff0c;包括音乐资讯、音乐库推荐、交流论坛、注册登录、最近播放列表功能等&#xff0c;用户不仅能够方便快捷地…

微信按钮翻译中英对照表

申明&#xff1a;发文方便自己查阅&#xff0c;当然如对看到的朋友有所帮助&#xff0c;也是乐事一件。 代码中需要调用微信&#xff0c;翻译连续翻车&#xff0c;比如朋友圈&#xff0c;做个记录方便查阅&#xff1a; /** * 微信 中英文对照 * 微信 wechat * 朋友圈…

微信更新了 版本8.0.30

这次新功能包括&#xff1a; 朋友圈扩展文字输入区域&#xff1a;发朋友圈或朋友圈评论时&#xff0c;编辑文案&#xff0c;文本区域会随文字数量而增大。长按订阅号可以取消关注&#xff1a;在订阅号列表中&#xff0c;此前长按封面只有悬浮功能&#xff0c;更新后现在加入了…

android微信消息无提醒,OPPO手机微信消息不提醒怎么办?(附多种解决方法)

微信来新消息不提醒&#xff0c;不能第一时间看到微信消息&#xff0c;一般是设置不到位。现在就可以通过以下几步来进行排除解决。 小编以R9手机为例&#xff0c;这就告诉你们相关设置哈&#xff0c;一起来学习吧~~ OPPO手机微信消息不提醒怎么办&#xff1f;(附多种解决方法)…

ipad如何与手机微信连接服务器地址,如何设置微信在手机和ipad同步 - 卡饭网

微信怎么设置空白头像和昵称?iPhone手机设置微信空白头像和昵称的方法介绍 微信怎么设置空白头像和昵称?iPhone手机设置微信空白头像和昵称的方法介绍 iPhone手机应该如何设置微信空白名字和头像?微信头像往往能反映出一个人的性格,让自己的微信头像和别人不一样,彰显出自己…

苹果微信密码服务器,苹果微信怎么记住密码的登录

满意答案 tanwandewo 2020.09.14 采纳率&#xff1a;48% 等级&#xff1a;6 已帮助&#xff1a;210人 在进行手机各类密码设置的时候&#xff0c;总是会有一种这辈子不会忘的错觉&#xff0c;于是怎么复杂怎么来&#xff0c;忘记密码就崴泥了&#xff0c;悔恨啊…… 是不是看…

微信能用声音作为密码来登录了,你的应用也可以

自从苹果在iPhone上普及了指纹解锁,以个人生理特征作为密码的生物识别已经成为了越来越流行的身份鉴别手段,冲击着使用多年的传统文字密码方式。 毕竟,在脑袋里记住密码,真的不如用你独一无二的身体特征直接作为密码那么方便。 就说我们每天都在用的微信,现在也赶上这个潮…

模仿微信声音锁的实现(运用DTW算法)

自己写了模仿微信声音锁的一个android程序&#xff0c;先录两段相同的语音信号作为模板&#xff0c;解锁时通过对比输入语音和该两段语音模板的相似度&#xff0c;如果相似度高则解锁成功。 程序界面如下&#xff0c;仿照微信设置&#xff0c;当然跟原版比效果略渣。 launche…

微信声音锁会上传到服务器吗,微信声音锁:你再也不用担心忘记密码了

科客点评&#xff1a;声音登录并不是让用户重新说一遍原先设置的内容&#xff0c;而是可以根据声纹进行自动识别。 你微信密码是怎么设置的?用的QQ 密码?还是单独设立了一个?通常我们不会把微信登出&#xff0c;所以很少用到密码&#xff0c;以至于一旦需要用到微信密码的时…

微信声音锁会上传到服务器吗,微信的声音锁是什么样的操作?

原标题&#xff1a;微信的声音锁是什么样的操作&#xff1f; 说到微信的声音锁也许没有多少人注意过&#xff0c;今天简单介绍一下微信的声音锁功能。 声音锁的操作步骤&#xff1a; 在微信设置→账号与安全→声音锁&#xff0c;然后根据以下操作即可完成。 “声音锁”这个功能…

微信声音锁会上传到服务器吗,微信声音锁安全吗?微信声音锁可以换吗?

大家可能都知道了有一个微信声音锁&#xff0c;那么今天主要要跟大家分析的是微信声音锁安全吗?我想这个大家肯定想知道。那么微信声音锁可以换吗?关于这个问题小编都将在下文中为大家解答。详情请见微信声音锁安全吗?微信声音锁可以换吗? 1.微信声音锁安全吗? 微信声音锁…

微信声音锁会上传到服务器吗,微信声音锁原理是什么?微信声音锁安全吗?

微信声音锁是一种先进的技术&#xff0c;用户可以用声音给手机上锁&#xff0c;听起来还是很猛的哈。 关键词&#xff1a;声纹 所谓声纹(Voiceprint)&#xff0c;是用电声学仪器显示的携带言语信息的声波频谱。现代科学研究表明&#xff0c;声纹不仅具有特定性&#xff0c;而且…

上线三年却很“鸡肋”的微信声音锁究竟做错了什么?

栏目简介&#xff1a;激荡六十年&#xff0c;人工智能已经起航。然而在未来面前&#xff0c;我们都还是孩子。究竟是“奇点临近”&#xff1f;还是泡沫行将破灭&#xff1f;为了解惑&#xff0c;《AI名人堂》将汇聚领航者智慧&#xff0c;和你一起探索前行的方向。 记者 | 杨丽…