LayerNorm介绍

简介

Layer Normalization (LayerNorm) 是一种归一化技术,常用于深度学习模型中,特别是在 Transformer 模型中。
Layer normalization 是在特征维度上进行标准化的,而不是在数据批次维度上。

目的

收敛模型数据数值差异,缓解内部协变量偏移问题,提高训练速度和模型性能。
简单来说就是让模型的数据更加平滑,减小差异,方便计算

下面看一组差异较大的数据:
[1.1, 1, 0.9, 0.5, 0.4, 0.2],
[22, 11, 1, 99, 10, 5],
[888, 666, 5, 0, 10086, 99]

经过LayerNorm处理后的:
[ 1.2484, 0.9488, 0.6492, -0.5493, -0.8489, -1.4482],
[-0.0787, -0.4036, -0.6988, 2.1949, -0.4331, -0.5807],
[-0.2929, -0.3537, -0.5347, -0.5361, 2.2264, -0.5090]

可以看到数据看起来,似乎没那么突兀了~

计算公式

计算公式为
在这里插入图片描述

主要分两步计算:
1.计算均值和方差
2.标准化和重新缩放

归一化

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量,当然百度百科的答案
什么意思呢?
归一化是一种数据处理方式,将有量纲转化为无量纲,同时将数据归一化至同一量级,解决数据间的可比性问题。
将特定的度量转化为数目,去掉单位,统一起来进行计算比较。如12小时、1公斤、3米,这三个量纲是无法直接进行比较和计算的,也没有意义。

标准化

标准化又叫z值归一化,将数值缩放到0附近,且数据的分布变为均值为0,标准差为1的标准正态分布

计算过程

过程中共需要计算的中间变量有:平均值、方差、标准差、标准化结果、线性变换

  1. 平均值 E(x)
    向量和/向量总数,矢量加法,然后除以总数,得到x
    (x1+x2+…xn) / n = E(x)
  2. 方差
    各个数据与这组数据的平均数的差的平方的平均数
    Var(x) = [(x1 - x)(x1 - x) + (x2 - x)(x2 - x) + … (xn - x)*(xn - x) ] / n
  3. 标准差
    方差开平方,加上一个很小的值𝜀防止出现除零。
    Sqrt( + 𝜀)
  4. 标准化
    (当前向量值 - 平均值) / 方差(防止除零)
    x^ = (x1 - E(x)) / Sqrt(Var(x) + 𝜀)
  5. 线性变换
    标准化结果乘以gamma,加上beta得到最终结果
    x^ * g + b

方差简化版

方差还有一个简化的计算公式,可以根据方差计算公式推导,简化版的计算公式在实际应用中可以减少循环计数
(a-b)² = a² - 2ab + b²
方差公式
( (x1-E(x))² + (x2-E(x))² +… + (xn-E(x))² ) / n
方差公式转换
=( (x1² - 2x1E(x) + E(x)²) + (x2² - 2x2E(x) + E(x)²) +…+ (xn² - 2xnE(x) + E(x)²) ) / n
=( (x1² + x1² +…+xn²) - 2*(x1 + x2 + … + xn)E(x) + nE(x)² ) / n
=( (x1² + x1² +…+xn²) - 2 * n * ((x1 + x2 + … + xn) / n) * E(x) + nE(x)² ) / n
=( (x1² + x1² +…+xn²) - 2 * n * E(x)² + n
E(x)² ) / n
=( (x1² + x1² +…+xn²) - n *E(x)² ) / n
=(x1² + x1² +…+xn²) / n - E(x)²

手动计算

对一行数据进行LayerNorm手动计算,其中方差使用简化公式(x1² + x1² +…+xn²) / n - E(x)²
【1.1, 1, 0.9, 0.5, 0.4, 0.2】
平均值:(1.1 + 1 + 0.9 + 0.5 + 0.4 + 0.2) / 6 = 4.1 / 6 = 0.683
平方和:1.1² + 1² + 0.9² + 0.5² + 0.4² + 0.2² = 3.47
方差:
3.47/6 - 0.683²=0.111
标准差,方差开平方 sqrt(0.111)= 0.333
标准化:
(1.1 - 0.683) / 0.333 = 1.252
(1.0 - 0.683) / 0.333 = 0.952
(0.9 - 0.683) / 0.333 = 0.652
(0.5 - 0.683) / 0.333 = -0.55
(0.4 - 0.683) / 0.333 = -0.85
(0.2 - 0.683) / 0.333 = -1.45

Python计算

import torch
import torch.nn as nninput = torch.tensor([[[[1.1, 1, 0.9, 0.5, 0.4, 0.2]]]])
ly = nn.LayerNorm(normalized_shape=6)
res = ly(input)
inputR = input.reshape(1, 1, 1, -1)
mean = inputR.mean(dim=-1).reshape(list(inputR.shape)[:-1] + [1] * (input.dim()-inputR.dim()+1))
std = inputR.std(dim=-1, unbiased=False).reshape(list(inputR.shape)[:-1] + [1] * (input.dim()-inputR.dim()+1))
std = torch.where(std == 0, 1e-8, std)
manual = (input - mean) / std
print("res:", manual)#结果:
#res: tensor([[[[ 1.2484,  0.9488,  0.6492, -0.5493, -0.8489, -1.4482]]]])

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

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

相关文章

GD32F4xx---RTC初始化设置及闹钟方式实现秒中断讲解

GD32F4xx—RTC初始化设置及闹钟方式实现秒中断讲解 1、下载链接:源码工程 一、概述 GD32F4x的RTC例程网上资源较少,详细阅读用户手册后做出如下配置。RTC模块提供了一个包含日期(年/月/日)和时间(时/分/秒/亚秒)的日历功能。除亚秒用二进制码显示外,时间和日期都以BC…

『功能项目』新输入系统【06】

我们打开上一篇04禁止射线穿透行为项目, 本章要做的事情是在Unity编辑器中添加 新输入系统 实现主角在场景中鼠标右键可以使主角 转向。 本次项目需要让Unity引擎重新启动所以先保存当前项目 再次打开项目后, 修改为Both 点击Apply前注意要先保存项目&a…

JVM上篇:内存与垃圾回收篇-07-方法区

笔记来源:尚硅谷 JVM 全套教程,百万播放,全网巅峰(宋红康详解 java 虚拟机) 文章目录 7. 方法区7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解7.2.1. 方法区在哪里?7.2.2. 方法区的基本理解7.2.3. HotSp…

【Linux】命令简介------迅速掌握Linux命令

目录 Linux 命令 🍔 ls命令 🍔 cd 和 pwd命令 🍔 相对路径和绝对路径 🍔 文件/文件夹的创建以及文件内容的浏览 🍔 文件的复制,移动和删除 🍔 文件的查找 🍔 grep 和管道 &#x1f354…

@antv/g6 业务场景:流程图

1、流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。业务场景流程图如下: 2、绘制流程图的 Tips 流程图一般是用…

奇安信渗透测试岗位三面经验分享

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

Python深浅拷贝

0、前置知识 数据类型:可变类型、不可变类型 不可变类型:一旦创建就不可修改的对象,包括字符串、元组、数值类型(整型、浮点型) 该对象所指向的内存中的值不能被改变。 当改变某个变量时候,由于其所指的…

【MySQL 12】事务管理 (带思维导图)

文章目录 🌈 一、事务的基本概念⭐ 1. 事务是什么⭐ 2. 事务的特性 🌈 二、事务的版本支持🌈 三、事务的提交方式⭐ 1. 查看事务的提交方式⭐ 2. 设置事务的提交方式 🌈 四、事务的特性证明⭐ 1. 事务的常规操作⭐ 2. 证明事务的原…

进程间的通信

建立两个.c 建立子父进程&#xff0c;父进程发送消息到队列&#xff0c;子进程读取队列&#xff0c;另一个同样。 #include <myhead.h> struct msga {long mtype;char mtext[1024]; }; #define len sizeof(struct msga)-sizeof(long) int main(int argc, const char *arg…

烂大街的测试左移和右移

01 测试左移与右移的定义 通俗的讲&#xff1a;左移是往开发阶段移&#xff0c;右移是往发布之后移。 正常测试&#xff1a;提测后的测试工作——到——发布验证完成阶段。 测试左移&#xff1a;提测之前的测试。 如&#xff1a;代码单元测试&#xff0c;代码质量检测&#x…

python-读取word中的内容

doc Document(rD:\xxxx\xxxx\xxx.docx) #读取word中所有内容 for p in doc.paragraphs print(p,p.text) #读取指定段落中的所有run(文字块) for run in doc.paragraphs[1].runs: print(run,run.text) #读取word中所有表格内容 for 表格 in doc.tables: print(表格) for 行 in …

产品经理有没有必要考pmp证书?

可以给一个总结&#xff1a;想提升自己的可以考&#xff0c;单纯奔着考证去的&#xff0c;没必要考&#xff01; 如果产品经理的相关证件&#xff0c;比如 npdp 之类的&#xff0c;都已经拿到手了&#xff0c;并且觉得自己现阶段工作比较满意&#xff0c;想提升自己更上一层楼…

《安全回收电脑,从销毁硬盘数据开始》文件硬盘数据销毁

在这个信息高速发展的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;当我们决定更换电脑或者对旧电脑进行回收时&#xff0c;你是否考虑过硬盘中存储的数据安全问题呢&#xff1f; 电脑硬盘中可能存储着大量的个人信息、工作文件、照片、视频等…

解决vue中this.$set()不更新页面问题

问题汇总&#xff1a;解决vue中this.$set()不更新页面问题 this.$set()方法有一种情况&#xff0c;就是当你要设置的key已经存在于这个对象或数组中的时候&#xff0c;它只会更改data并不会为该key添加响应检测&#xff0c;所以解决这个问题的办法就是在设置值之前先把这个属性…

k8s项目的发布(金丝雀发布)

目录 三种发布方式 1.蓝绿发布 2.金丝雀发布&#xff08;灰度发布&#xff09; 实验&#xff1a;k8s实现金丝雀发布 3.滚动发布&#xff08;默认形式&#xff09; 因为应用升级以及新旧业务切换&#xff0c;所以在这个过程当中如何保证对外的服务正常是一个非常重要的问题…

InternVL 多模态模型部署微调实践

写在前面&#xff08;什么是InternVL&#xff09; InternVL 是一种用于多模态任务的深度学习模型&#xff0c;旨在处理和理解多种类型的数据输入&#xff0c;如图像和文本。它结合了视觉和语言模型&#xff0c;能够执行复杂的跨模态任务&#xff0c;比如图文匹配、图像描述生成…

macos 10.15 catalina xcode 下载和安装

在macos 10.15 catalina系统中, 由于系统已经不再支持,所以我们无法通过应用商店来安装xcode, 需要手动下载指定版本的 xcode 版本才能安装, catalina 支持的最新xcode版本为 Xcode v12.4 (12D4e) , 其他的新版本是无法安装在Catalina系统中的. Xcode_12.4.xip下载地址 注意,下…

前端开发学习Docker记录02容器操作

docker images先查看有哪些镜像 运行nginx docker run nginx使用docker ps 可以看到有哪些镜像在运行 docker stats查看运行状态 命令总结

linux 云主机下载压缩包安装配置 maven 实录(华为云 EulerOS)

本想通过 yum install maven 直接安装的, 方便省事, 但报错说没找到, 于是只能手动安装了, 把整个过程记录了一下, 包括下载, 解压, 配置及验证的全过程, 并对用到的命令及参数作了详细说明, 需要的同学可以参考. maven 官网找到下载链接 首先要去到 maven 的官网, https://m…

国产网卡品牌崛起,做好网络信息安全的“守门人”

在信息技术日新月异的时代背景下&#xff0c;信息安全不仅关乎个人隐私保护&#xff0c;更是国家安全与经济发展的基石。LR-LINK联瑞凭借其前瞻性的视野和深厚的研发实力&#xff0c;成功自主研发出全国产化的FPGA&#xff08;现场可编程门阵列&#xff09;网闸隔离卡方案&…