当前位置: 首页 > news >正文

【大模型】RMS Normalization原理及实现

1.RMS Normalization的原理

        说RMS Normalization之前,先讲Layer Normalization 和 Batch Normalization。

         BN和LN是两种常见的归一化方法。它们的目的是帮助模型训练更稳定、收敛更快。BN是在Batch维度上进行归一化,即对同一batch中每个特征维度的值进行归一化。LN则是在层的维度上进行归一化,即对每一个样本的特征进行归一化。

        RMS Normalization属于LN。

        再来说RMS Normalization和Layer Normalization。

        Layer Normalization:利用均值方差对特征进行归一化。

        RMS Normalization:利用均方根对特征进行归一化。

        LLaMA架构中采用RMS Normalization的原因是通过只计算均方根,从而减少计算量,同时在实验中也确实获得了更加稳定的训练。

        在这里插入一点NLP任务中,对于将特征进行“归一化”目的的一些个人小理解:在NLP中,使用Layer Normalization进行归一化是为了使输入特征在每一层的神经元中保持稳定的分布,避免特征值之间出现过大的波动。通过归一化,Layer Normalization 将特征重新调整为均值为 0、方差为 1 的分布,从而让模型的训练更加稳定和高效,使得数据变得更加“平滑”。这里的“平滑”是指数值的尺度更一致、更稳定,不会有特别大的数值差异,能够防止特征值在网络层中传递时变得过大或过小。这种一致性有助于缓解模型训练中的一些问题,如梯度爆炸梯度消失,并能让模型更容易优化。在使用RMS Normalization进行归一化则是直接使特征本身的数值变得更加“平滑”。

2.RMS Normalization公式

2.RMS Normalization的实现

        该函数在神经网络中需要对输入的数据进行处理,再输出相应的处理好的数据,对应的实现方式就用层来实现

        因为RMS Normalization属于LN,所以,x-->[batch_size, hidden_states]

import torchclass RMSNorm(torch.nn.Module):  # nn.Module是所有层的父类,层元素就必须继承nn.Moduledef __init__(self, dim, eps):  # 用于储存层的元素super().__init__()self.weight = torch.nn.Parameter(torch.ones(dim))  # 初始化权重参数self.eps = eps  # 防止根号下为0def _norm(self, x):  # 定义类函数里的方法("_"表示只在该类的内部调用)return x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps)# x.pow(2):求平方# x.pow(2).mean(-1, keepdim=True):所有的平方求一个均值# x.pow(2).mean(-1, keepdim=True) + self.eps:加上一个防止根号下为0的元素# torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps):开平方再求导# rsqrt(x) = 1 / sqrt(x)# x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps):最后用求得的导数乘以xdef forward(self, x):  # 数据流output = self._norm(x.float().type_as(x))  # 将x变成浮点数进行归一化,并保持x原始的数据类型return output * self.weight  # 将归一化后的输出乘以可学习的参数 weight,调整每一个维度的缩放if __name__ == '__main__':batch_size = 1dim = 4  # 特征维度x = torch.Tensor([0.1, 0.1, 0.2, 0.3])# 初始化RMSNorm对象rms_norm = RMSNorm(dim=dim, eps=0)output = rms_norm(x)print("输入数据: \n", x)print("RMSNorm输出数据: \n", output)

相关文章:

【大模型】RMS Normalization原理及实现

1.RMS Normalization的原理 说RMS Normalization之前,先讲Layer Normalization 和 Batch Normalization。 BN和LN是两种常见的归一化方法。它们的目的是帮助模型训练更稳定、收敛更快。BN是在Batch维度上进行归一化,即对同一batch中每个特征维度的值进行…...

视觉检测系统实时识别工地安全帽佩戴情况

在建筑工地上,工人佩戴安全帽是确保施工安全的基本措施。然而,工人有时因疏忽或其他原因未能及时佩戴安全帽,这可能导致严重的安全隐患。传统的人工监督往往无法实现对工地的全覆盖或全天候监控,效率低下,容易出现漏检…...

【element-tiptap】报错Duplicate use of selection JSON ID cell at Selection.jsonID

我是下载了element-tiptap 给出的示例项目,在本地安装依赖、运行报错了, 报错截图: 在项目目录下找 node_modules/tiptap-extensions/node-modules,把最后的 node-modules 目录名字修改一下,例如修改为 node-modules–…...

STM32工程环境搭建(库函数开发)

目录 1、移植固件库&标准库 2、新建工程 以STM32f401作为例子进行环境搭建 1、移植固件库&标准库 ①桌面创建工程文件夹并且提取内核文件 用户文件:用户自己编写的程序文件 .c .h文件 .c文件:具体函数功能源代码 .h文件:宏定义…...

大数据新视界 --大数据大厂之大数据如何重塑金融风险管理:精准预测与防控

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

【C# 网络编程】基本概念

基本概念 OSI模型 背景: 为了统一和兼容不同计算机厂商的网络体系结构概念,国际标准化组织(ISO)在1979年提出了OSI参考模型(Open System Interconnection,) 结构 物理层(Physica…...

系统架构设计师-下午案例题(2018年下半年)

1.某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设水平。该软件公司组织项目组完成了需求调研,现已进入到系统架构设计阶段。考虑到系统需求对架构设计决策的影响,项目组先列出了可能影响系统架…...

StarRocks报错:Getting analyzing error. Detail message: Unknown database ‘你的库名‘.

在starrocks上进行业务sql压力测试的时候,当并发提高到一定阈值就会报下面这个错误 背景描述:starrocks上有一张明细主表,维度表均是通过创建外部mysql catalog的方式使用的。 java.sql.SQLSyntaxErrorException: Getting analyzing error.…...

【原创教程】电气电工23:电气柜的品牌及常用型号

电气电工要清楚常用的电气柜品牌及型号,对于电器柜的选择,现在我们一般常用的品牌有3个。分别是好夫满、上海上海桐赛电气和南京巴哈曼电气,还有一种就是网上订制。 一、好夫满系列电气箱 好夫满有很多种类的机箱,EB精巧控制箱系列、KL接线箱系列、BKL不锈钢接线箱系列、…...

AI引起用人格局变动,个人如何应对这一趋势

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 人工智能的发展带来的就业结构变革&#xf…...

小程序项目实践(一)--项目的初始化以及前期的准备工作

目录 1.起步 1.1 uni-app 简介 1.2 开发工具 1.2.1 下载 HBuilderX 1.2.2 安装 HBuilderX 1.2.3 安装 scss/sass 编译 1.2.4 快捷键方案切换 1.2.5 修改编辑器的基本设置 1.3 新建 uni-app 项目 1.4 目录结构 1.5 把项目运行到微信开发者工具 1.6 使用 Git 管理项目 …...

宝藏CSS样式网站,开发一些酷炫的特效

一、Uiverse 地址:Uiverse | The Largest Library of Open-Source UI elementshttps://uiverse.io/ 项目包含了我们常用到的一些组件,例如:按钮Button、多选框Checkbox、胶囊按钮Switch、加载特效Loading、输入框Input、表单Form、提示框To…...

vscode报错No module named ‘Crypto‘

背景 在Windows系统下,使用vscode的Run Code命令执行程序时,会报错 from Crypto.Cipher import AES ModuleNotFoundError: No module named Crypto有可能是因为当前操作系统存在两个版本的Python,而安装的Crypto仅对应于其中的一个Python版本…...

机器学习中的多模态学习:用C/C++实现高效模型

引言 多模态学习(Multimodal Learning)是一种机器学习技术,它旨在整合多种数据类型(例如图像、文本、音频、传感器数据等)来提升模型的预测精度和泛化能力。其应用领域包括情感分析、多模态推荐系统、智能驾驶、语音识…...

Java 运行机制及运行过程

Java的运行机制是基于Java虚拟机(Java Virtual Machine,JVM)的。Java程序在运行时,首先需要将源代码通过Java编译器编译为字节码文件(.class文件),然后由JVM解释执行或通过即时编译器&#xff0…...

IC开发——数字电路设计简介

1. 前言 我们说的数字电路,一般是指逻辑数字电路,即通过逻辑门组合成的电路,也即我们常说的逻辑IC。IC除了逻辑IC之外,还有模拟IC,存储IC等。 IC设计,需要学习数字电路,需要学习Verilog/VHDL等…...

openmmlab实现图像超分辨率重构

文章目录 前言一、图像超分辨率重构简介二、mmmagic实现图像超分 前言 超分辨率重构技术,作为计算机视觉领域的一项重要研究课题,近年来受到了广泛关注。随着科技的飞速发展,人们对图像质量的要求越来越高,尤其是在智能手机、监控…...

四、远程登录到Linux服务器

说明 linux 服务器是开发小组共享,正式上线的项目是运行在公网,因此需要远程登录到 Linux 进行项目管理或者开发 Xshell 1、特点 Xshell 是目前最好的远程登录到 Linux 操作的软件,流畅的速度并且完美解决了中文乱码的问题, 是目…...

Qt开发全指南:从基础到高级

1. Qt快速入门 • 什么是Qt框架? • 如何安装和配置Qt? • 使用Qt Creator:快速上手 • 项目结构与构建系统:qmake 和 CMake 2. 核心模块解析 • 信号与槽机制详解 • QtCore、QtGui 和 QtWidgets 模块介绍 • 并行编程&a…...

【算法】——双指针算法合集(力扣)

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 第一题:移动零 第二题:复写零 第三题:快乐数 第四题&#xff1a…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

【AI学习】三、AI算法中的向量

在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

快刀集(1): 一刀斩断视频片头广告

一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...

大数据驱动企业决策智能化的路径与实践

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...