BatchNorm 与 LayerNorm

文章目录

  • 1. BatchNorm批量归一化
  • 2. LayerNorm层归一化
  • 3. BatchNorm 和 LayerNorm 对比
  • 4. BatchNorm 和 LayerNorm 怎么选择
  • References

今天重看Transformer,发现里面提到了BatchNorm和LayerNorm两种归一化方法,在这儿做一下总结和整理。

1. BatchNorm批量归一化

在这里插入图片描述

BatchNorm把 同一个batch中,通一通道的所有特征(红色区域) 视为一个分布(有多少个通道就有多少个分布),并将其标准化。

  • 不同图片的同一通道的相对关系是保留的,特征是可以比较的
  • 同一图片的不同通道的特征失去了可比性

【用于CV的通俗理解】

有一些可解释性方面的观点认为,feature的每个通道都对应一种特征(如低维特征的颜色,纹理,亮度等,高维特征的人眼,鸟嘴特征等)。

BatchNorm后不同图片的同一通道的特征是可比较的,或者说A图片的纹理特征和B图片的纹理特征是可比较的;而同一图片的不同特征则是失去了可比性,或者说A图片的纹理特征和亮度特征不可比较。


2. LayerNorm层归一化

在这里插入图片描述

LayerNorm把 一个样本的所有词向量(如上图红色部分) 视为一个分布(有几个句子就有几个分布),并将其标准化。

  • 同一个句子中的词向量(图中的 v 1 v_1 v1 v 2 v_2 v2,…, v L v_L vL)的相对大小是保留的,或者说LayerNorm 不改变词向量的方向,只改变它的模。
  • 不同句子的词向量则失去了对比性。

【用于NLP的通俗理解】

考虑两个句子:

  • 教练,我想打篮球!
  • 老板,我要一打啤酒。

通过比较两个句子中 “打” 的词义我们可以发现,词义并非客观存在的,而是由上下文的语义决定的

因此进行标准化时不应该破坏同一句子中不同词义向量的可比性,而BatchNorm则是不满足这一点的。且不同句子的词义特征也不应具有可比性,LayerNorm也是能够把不同句子间的可比性消除。


3. BatchNorm 和 LayerNorm 对比

1d Norm:
在这里插入图片描述
2d Norm:

在这里插入图片描述

Batch Normalization是针对特征feature的某一个具体维度,计算它在seq的所有维度(即全部token)和batch的所有维度(即全部样本)上的均值和方差,即将这个二维平面内的所有元素展平然后计算均值和方差,最后得到的是长度为feature_len的一个一维tensor,一般会进行扩维变成(1,1,feature_len),这样就可以通过广播机制自我复制来对输入x进行归一化处理了。

在这里插入图片描述

Layer Normalization是针对batch中的单一样本(即一个句子)中的单一token(t_i),计算它在feature的所有维度(即全部d)上的均值和方差,最后得到的是形为(batch_size, seq_len)的一个二维张量同样会扩维变成(batch_size, seq_len, 1),使得可以通过广播机制自我复制来对输入x进行归一化处理。

【关于LayerNorm:上图基本是基于李沐的讲解,沐神讲的是两种norm都对应一个切面,BatchNorm是纵切面,LayerNorm是横切面,但是LayerNorm的代码实现基本都是dim=-1,这样就不再是一个切面而是一条直线。】


1. 作用方式不同

BatchNorm:对 每个特征mini-batch 数据上进行归一化。

LayerNorm:对 每个样本所有特征 进行归一化。

2. 计算方式不同

BatchNorm:均值和方差是在每个批次上计算的,依赖于批次中的所有样本。BatchNorm会维护每个特征通道的均值和方差,用来归一化每个样本中的每个特征。

LayerNorm:均值和方差是在每个样本上计算的,独立于批次。LayerNorm计算每个样本的每个特征通道的均值和方差,并用来归一化该样本在每一层上的所有特征。

3. 应用场景不同

BatchNorm:更适用于CV领域。比如3维特征的图像在做BN时,相当于对不同样本的同一通道内的特征做标准化。

LayerNorm:更适用于NLP领域。因为NLP或者序列任务来说,一条样本的不同特征,其实就是时序上字符取值的变化,样本内的特征关系是非常紧密的。

4. BatchNorm 和 LayerNorm 怎么选择

在这里插入图片描述

1)对于BatchNorm,我们所需要计算均值和方差的是一个[batch_size × seq_len]的平面,在这个平面中,对于batch中的每一个样本,他们的seq_len都是不同的,有的长有的短,只不过最后都用0来补齐了。
这样当我们计算均值和标准差时,就会因为这些存在的许多的0使得均值和标准差不能很好地反映有效数据的真实分布,造成偏差。

2)采用LayerNorm的方式,每个样本单独考虑自己内部的分布,自己样本的seq_len是多少就计算多少个token,padding填充的不需要再考虑,因此更能反映数据的真实分布特性。

比如说对于第一个样本sample 1,他有3个有效token,分别是token 1-3,这三个token每个在底层都由一个长为feature_len的向量表示,LayerNorm就是这3个token每一个token在自己的feature_len上面(类比一下Transformer中一个token用d_model=512维度的向量表示)计算均值和方差,然后做更新。

这样做的本质意义在于,把有效元素的规范化过程限制在有效元素内部,规避掉无效元素的干扰


References

  1. Batch Norm 与 Layer Norm 比较
  2. layerNorm和batchNorm
  3. 关于BatchNorm和LayerNorm的实现细节讨论

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

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

相关文章

《机器学习》2.4假设检验 t分布 F分布

目录 t发布 注意是这个东西服从t分布 数据服从t分布通常是在以下情况下: 以下是一些具体的例子,说明在何种情况下数据会服从t分布: t检验 交叉验证t检验 样本方差​编辑 F分布(fisher Friedman检验是一种非参数统计方法&a…

java aspose word 模板根据数据导出pdf

支持以功能&#xff1a; 1、字符串占位符替换。 2、占位符循环替换。 3、图片替换。 4、基础图标&#xff0c;折现、饼图、柱状图。 本案例运行环境&#xff1a; 1、aspose word21.1版本。 2、jdk 18。 话不多说直接上代码。 <!-- 图表相关 --><dependency><gro…

Linux高性能服务器编程 | 读书笔记 |9.定时器

9. 定时器 网络程序需要处理定时事件&#xff0c;如定期检测一个客户连接的活动状态。服务器程序通常管理着众多定时事件&#xff0c;有效地组织这些定时事件&#xff0c;使其在预期的时间被触发且不影响服务器的主要逻辑&#xff0c;对于服务器的性能有至关重要的影响。为此&…

QT 国际化(翻译)

QT国际化&#xff08;Internationalization&#xff0c;简称I18N&#xff09;是指将一个软件应用程序的界面、文本、日期、数字等元素转化为不同的语言和文化习惯的过程。这使得软件能够在不同的国家和地区使用&#xff0c;并且可以根据用户的语言和地区提供本地化的使用体验。…

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 感觉这个论文可能能shapE差不多同时期工作&#xff0c;但是shapE是生成任意种类。 本文提出了一种新颖的单图像视图合成方法NerfDiff&#xff0c;该方法利用神经辐射场 …

【CNN卷积神经网络算法】卷积神经网络

卷积神经网络整体架构 总结 输入层&#xff1a;原始数据&#xff08;图像&#xff09; 例如可以输入一张RGB图像&#xff0c;其可以标示为一个三维矩阵&#xff0c;宽W高H和通道数C3对应着RGB卷积层&#xff1a;提取局部特征&#xff0c;变换输入数据为丰富的特征图 网络使用多…

HarmonyOS Next 元服务新建到上架全流程

HarmonyOS Next 元服务新建到上架全流程 接上篇 这篇文章的主要目的是介绍元服务从新建到上家的完整流程 在AGC平台上新建一个项目 链接 一个项目可以多个应用 AGC新建一个元服务应用 新建一个本地元服务项目 如果成功在AGC平台上新建过元服务&#xff0c;那么这里会自动显…

Mac/Windows端长期破解myBase8方法(无需安装火绒)

提醒 不管哪个端&#xff0c;都需要先退出myBase。 Mac 进入用户根目录/Users/c0ny100&#xff0c;即下边是Macintosh HD > 用户 > [你的用户名]这个界面然后按ShiftCommond.&#xff0c;显示隐藏文件。找到.Mybase8.ini文件 打开.Mybase8.ini文件&#xff0c;删除Fir…

【网络安全】【Kali Linux】简单ICMP主机探测

一、参考资料 《Python安全攻防——渗透测试实战指南》&#xff0c;吴涛 等编著&#xff0c;机械工业出版社&#xff0c;2021年10月 二、探测原理 ICMP&#xff08;ping命令&#xff09; 三、脚本编写 1、导入所需的库&#xff1a; 2、扫描功能函数&#xff1a; 3、主函数…

Oracle进行exp导出密码中有特殊字符报EXP-00056和ORA-12154错处理

今天&#xff0c;业务人员反馈&#xff0c;在本地进行exp导出时报错&#xff0c;报错内容如下&#xff1a; 在Oracle密码中有特殊字符时&#xff0c;需要加引号&#xff0c;但引号怎么加呢&#xff1f;总结如下&#xff1a; 1、在windows系统中 exp 用户名/“““密码”””n…

MVC流程分析

DisaptcherServlet本质是servlet&#xff0c;执行init()方法&#xff0c;自启动底层执行代码&#xff0c; 作用&#xff1a; 1、读取springmvc配置文件&#xff0c;创建Controller对象&#xff0c;放入容器中&#xff0c;map<"id",对象> 2、接收用户请求&#…

fiddler设置抓取https,还抓取不到https如何解决?

一、清楚 C:\Users\Admin\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有文件&#xff08;首次安装fiddler请忽略&#xff09; 二、清除电脑上的根证书&#xff0c;WINR快捷键&#xff0c;输入&#xff1a;certmgr.msc&#xff0c; 然后回车&#xff0c;查找所有fiddler证书…

【知识】总体标准差和样本标准差有什么区别

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 总体标准差和样本标准差之间的区别主要在于它们的计算方式&#xff0c;特别是在分母的选择上。这种差异是因为我们通常在实际应用中并不总是能够得到整…

.NET 9 已发布,您可以这样升级或更新

.NET 9 已经发布&#xff0c;您可能正在考虑更新您的 ASP.NET Core 应用程序。 我们将介绍更新应用程序所需的内容。从更新 Visual Studio 和下载 .NET SDK 到找出可能破坏应用程序的任何重大更改。 下载 .NET 9 SDK 这些是下载 .NET 9 SDK 所需的步骤。 更新 Visual Studi…

【Iot】前端串口serialport.js串口通信库快速入门(附经验总结)

前端串口serialport.js串口通信库快速入门(附经验总结) 一、serialport简介1.1 安装1.2 基本用法1.3 完整示例代码二、问题2.1 数据包被拆分(已解决)2.2 串口返回的多种数据,如何区分类别(待解决)公司项目需要开发一个windows客户端,提供串口modbusRTU数据读取、处理、显…

前端报错npm ERR cb() never called问题

环境使用node版本v14.21.3&#xff0c;npm版本6.14.18 1.问题描述 1.1使用npm install后报错 npm ERR! cb() never called!npm ERR! This is an error with npm itself. Please report this error at: npm ERR! ? ? <https://npm.community>npm ERR! A complete log…

【下】王树森《小红书推荐系统公开课》- 课程笔记(特征交叉、行为序列、重排/推荐系统多样性、物品冷启动、涨指标的方法)

写在前面 本文为王树森老师《小红书推荐系统公开课》的课程笔记 课程来源&#xff1a;ShusenWang的个人空间-ShusenWang个人主页-哔哩哔哩视频 (bilibili.com)课程资料&#xff1a;GitHub - wangshusen/RecommenderSystem 由于篇幅较长&#xff0c;分为【上】【下】两篇文章…

[C++]C++工具之对异常情况的处理(throw、catch、try)以及用命名空间避免同名冲突

一、C 异常处理&#x1f60a; 1.1 定义 C 中的异常处理用于应对程序运行中的异常情况&#xff08;如除零、数组越界等&#xff09;&#xff0c;通过 try-catch 机制捕获和处理错误&#xff0c;防止程序崩溃。 异常是程序运行时意外发生的事件&#xff0c;可以通过抛出&#xf…

Dynamics 365 CRM- 后端

Dynamics 365 CRM 后端插件语法示例 public IPluginExecutionContext context null;//上下文 public IOrganizationServiceFactory serviceFactory null;//组织服务工厂对象 public IOrganizationService service null;//Org服务对象//创建执行上下文 context (IPluginExe…

C语言——实现并求出两个数的最大公约数

问题描述&#xff1a;求出两个数的最大公约数 //求两个数的最大公约数 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<time.h>int main() {int a,b;printf("请您输入两个数 a 和 b\n");scanf…