【NLP 51、一些LLM模型结构上的变化】

目录

一、multi-head 共享

二、attention结构

1.传统的Tranformer结构

2.GPTJ —— 平行放置的Transformer结构

三、归一化层位置的选择

1.Post LN:

2.Pre-LN【目前主流】:

3.Sandwich-LN:

四、归一化函数选择

1.传统的归一化函数 LayerNorm

2.RMSNorm

五、激活函数

六、LLama2结构

七、MoE架构 混合专家模型

                                            SWITCH TRANSFORMERS

八、DeepSeek Moe

九、位置编码和长度外推性

1.为何需要位置编码

2.长度外推性

3.目前的主流位置编码

Ⅰ、正余弦位置编码

Ⅱ、可学习位置编码

Ⅲ、ROPE相对位置编码

Ⅳ、Alibi位置编码

① 相对位置矩阵生成

② 头特定斜率参数

③ 偏差矩阵计算

④ 偏差注入与注意力计算

Ⅴ、总结

十、DeepSeek MLA —— Multi - head Latent Attention(多头潜在注意力)


I will love you in your freezing night

Please just hold me tight

                                                        —— 25.3.27

大语言模型都是基于transformer结构来做

一、multi-head 共享

Values:10×64

Keys:10×64

Queries:10×64

多头注意力(MHA) —— 12个头:

缩小Key和Value,多查询注意力(MQA) —— 1个头:

缩小Key和Value,分组查询注意力(GQA) —— 4个头:

效果随头的数量减少而减弱,减少运算量,加速训练


二、attention结构

1.传统的Tranformer结构

        多层感知机(MLP)位于多头自注意力机制之后,对自注意力机制输出的特征表示进行进一步的非线性变换。自注意力机制虽然能够有效地捕捉序列中的长距离依赖关系,生成丰富的上下文感知表示,但这些表示可能仍然需要进一步处理,以更好地适应下游任务。MLP 通过将输入特征映射到一个更高维的空间,然后再投影回原始维度,能够增强特征的表达能力,使模型能够学习到更复杂的模式。

公式:

MLP(多层感知机)的作用是:对经过注意力机制和层归一化处理后的特征进行非线性变换

流程:

① 第一次层归一化:对输入 x 进行层归一化(LayerNorm),得到 LayerNorm(x),稳定数据分布。

② 注意力计算:将 LayerNorm(x) 输入到注意力模块(Attention),计算 Attention(LayerNorm(x)),捕捉序列依赖关系。

③ 第一次残差连接:将  Attention(LayerNorm(x)) 相加,即 x + Attention(LayerNorm(x)),保留原始信息并促进梯度传播。

④ 第二次层归一化:对残差连接结果进行层归一化,得到 LayerNorm(x + Attention(LayerNorm(x)),再次稳定数据分布。

⑤ MLP 变换:将 LayerNorm(x + Attention(LayerNorm(x))) 输入到多层感知机(MLP),通过非线性变换提取高级特征,得到 MLP(LayerNorm(x + Attention(LayerNorm(x))))

⑥ 第二次残差连接:将原始输入 与 MLP 的输出相加,得到最终结果 y = x + MLP(LayerNorm(x + Attention(LayerNorm(x)))),融合原始信息与处理后的特征。

MLP的核心作用:

① 增加非线性:MLP 通过激活函数(如 ReLU)引入非线性,使模型能学习更复杂的映射关系。

② 特征变换与融合:对注意力处理后的特征进行二次加工,整合不同维度的信息,提升特征的表征能力

③ 配合残差连接:最终输出 y 再次通过残差连接(x + MLP(⋅)),确保原始信息不丢失,同时促进梯度传播,防止训练中的梯度消失问题。


2.GPTJ —— 平行放置的Transformer结构

GPTJ结构,平行放置attention layerfeed forward layer

moss, palm用的这种结构,目前不算太主流

公式:

流程:

① 层归一化:对输入 x 进行层归一化(LayerNorm),得到 LayerNorm(x),稳定特征分布。

② 并行处理

        将 LayerNorm(x) 输入到 MLP 模块,计算 MLP(LayerNorm(x)),通过非线性变换提取特征。

        将 LayerNorm(x) 输入到 Attention 模块,计算 Attention(LayerNorm(x)),捕捉序列依赖关系。

③ 残差融合:将原始输入 x、MLP 的输出、Attention 的输出相加,即 y = x + MLP(LayerNorm(x)) + Attention(LayerNorm(x)),实现信息融合与残差连接,保留原始信息并促进梯度传播。


三、归一化层位置的选择

1.Post LN:

流程:先进行子层计算,再对子层输出进行层归一化,最后残差连接。

特点:子层输出可能因未归一化而波动较大,深层训练时稳定性较差,但早期 Transformer 架构常用此方式。使用post-LN的深层transformer容易出现训练不稳定的问题。

2.Pre-LN【目前主流】:

流程:在进入子层(如注意力层或 MLP 层)之前先进行层归一化

特点:使每个子层的输入分布稳定,缓解梯度消失问题,便于深层模型训练;相比于Post-LN,使用Pre-LN的深层transformer训练更稳定,可以缓解训练不稳定问题;相比于Post-LN,Pre-LN的模型效果略差

3.Sandwich-LN:

流程:在子层的输入和输出端都应用层归一化,形成 “三明治” 结构。

在pre-LN的基础上,额外插入了一个layer norm

Cogview用来避免值爆炸的问题

特点:结合 Pre - LN 和 Post - LN 的优势,进一步稳定特征分布,同时增强模型对特征的表达能力

缺点:训练不稳定,可能会导致训练崩溃。


四、归一化函数选择

1.传统的归一化函数 LayerNorm

2.RMSNorm

目前主流做法是:将Norm层提前到attention之前


五、激活函数

FeedFoward层所使用激活函数的演进

初始Transformer:relu()

Bert:gelu()

目前最主流的激活函数:Swish()


六、LLama2结构

分词器:使用字节对编码(BPE)算法,词汇表大小为 32,000 tokens,支持多语言文本的高效编码。   

        ① 初始化词汇表:把文本中所有单词分解成最小字符单位,这些字符构成初步词汇表 。比如单词 “look” 会被分解为 “l”“o”“o”“k”。

        ② 统计字符对频率:遍历文本,计算每对相邻字符出现的频次。例如在单词 “look” 中,字符对为(“l”,“o”)、(“o”,“o”)、(“o”,“k” ) ,在整个文本范围内统计它们出现的次数。

        ③ 合并最频繁字符对:找出出现频率最高的字符对,将其合并成一个新符号。比如统计后发现 “lo” 出现频率最高,就把 “l” 和 “o” 合并为 “lo” 。

        ④ 更新文本和词汇表:在文本中把所有该字符对的实例替换为新合并的符号,同时更新词汇表。如 “look” 变为 “lo”“ok” ,词汇表中新增 “lo”。

        ⑤ 重复迭代:不断重复步骤 2 - 4 ,直到达到预设的词汇表大小,或者字符对不再频繁出现。

位置编码:采用旋转位置编码(RoPE),通过旋转矩阵实现相对位置关系建模,支持上下文窗口扩展至 4096 tokens。

预归一化:在每个 Transformer 层的输入前应用RMSNorm(均方根归一化),而非传统的 LayerNorm,提高训练稳定性和收敛速度。

多头注意力(MHA)

        分组查询注意力(GQA):在 70B 版本中,将查询头分为 G 组,每组共享键(K)和值(V)投影例如:70B 模型采用 32 组,每组 2 个查询头,总头数 64 个。这种设计减少了内存占用,尤其在长序列推理时优势显著1315。

        多查询注意力(MQA):7B 和 13B 模型采用 MQA,所有查询头共享同一组 K 和 V,进一步降低参数规模315。

前馈网络(FFN):使用SwiGLU 激活函数,公式为SwiGLU(x) = x * σ(β * x) * W,其中 σ 为 Sigmoid 函数,β 为可学习参数。相比 ReLU,SwiGLU 在保持非线性能力的同时提升了模型表达能力。

语言建模头:通过线性层将最终隐藏状态映射到词汇表空间,输出下一个 token 的概率分布。


七、MoE架构 混合专家模型

        MOE 的核心思想是将复杂任务分解为多个 “专家” 子模型,每个专家专注于处理特定类型的输入,通过门控机制动态决定输入数据由哪些专家处理

输入层:将原始数据编码为特征向量。

门控网络(Gating Network):计算每个输入分配给不同专家的概率。

        实现方式

                ① 软门控:使用 Softmax 或 Sigmoid 函数计算概率,允许多个专家共同处理输入(如 Google Switch Transformer)。

                ② 硬门控:仅选择一个专家处理输入(如 BERT-MOE)。

        负载均衡:通过正则化(如 L2 损失)避免某些专家过载。

专家网络(Expert Network):多个独立的子模型,每个专家负责处理特定类型的输入。

        结构:每个专家是一个独立的神经网络(如 MLP、Transformer 块),可共享或独立训练。

        多样性:不同专家可学习不同的特征模式,例如一个专家擅长处理文本分类,另一个擅长翻译。

        并行计算:输入仅激活部分专家,减少冗余计算。

输出层:整合专家的输出结果,生成最终预测。

                                            SWITCH TRANSFORMERS

MoE架构,会带来分类预测和整体模型的参数数量不同


八、DeepSeek Moe

        除了随机挑选专家外,还有一位专家总是在工作(一位专家主要做工作,其余随机挑选的专家进行改进)

如图所示,增加了“共享专家”,总是会使用这个“专家”进行计算,其余的按照传统Moe方式由模型自己随机进行挑选


九、位置编码和长度外推性

1.为何需要位置编码

由于transformer中使用的都是线性层,编码过程中没有明显的位置信息

字词位置的交换,仅相当于矩阵中行位置的交换

带来并行计算的优势,但是也弱化了语序信息

因此需要引入位置编码来弥补

如果不引入位置编码,当语序位置不同时,最终归一化后也并不能体现出差异;

引入位置编码,当语序改变时,每个位置位置编码的权重值不同,整体相乘后,值也会发生变化;


2.长度外推性

预测时序列长度比训练时候长,模型依然有好的表现,称为有较好的长度外推性

比如: 训练样本最大长度为512;预测过程中输入的样本长度为1024

长度外推性是一种理想的性质,并非是必要的


3.目前的主流位置编码

相对位置编码是目前LLM的主流

RoPE是相对位置编码的主流

Ⅰ、正余弦位置编码

优点:① 理论上可以进行一定程度的外推,但是效果不是很好 ② 是一个固定的位置编码

位置编码向量 + token向量 得到编码后的embedding

我们称之为Positional Encoding


Ⅱ、可学习位置编码

一般称为position embedding,以Bert为代表

如同token embedding一样,随机初始化之后,靠梯度更新学习调整

缺点:无法外推,需要预设最大长度


Ⅲ、ROPE相对位置编码

        ROPE(Rotary Position Embedding,旋转位置编码)是一种结合绝对位置编码与相对位置编码优势的技术,通过旋转矩阵将位置信息融入自注意力机制,使模型能显式学习相对位置关系。

ROPE 对查询(Q)和键(K)向量的每个偶数 - 奇数维度对进行旋转:

相对位置编码在计算Self-attention时做这个注意力矩阵

公式:

相对位置编码需要找到符合如下条件的f、q函数:

x_m:输入的Embedding

m:相对位置

f_q:对x_m和相对位置m做的一种变换

x_n:输入的Embedding

n:相对位置

f_k:对x_n和相对位置n做的一种变换

g:对于q和k做上述变换后再做内积得到的一种相对位置编码

施加在Transformer每一个q、k相乘计算之后使用,没有长度限制,只与传入的m、n值有关,计算其差值

最后找到的函数:

 —— Re代表[值]的实数部分


Ⅳ、Alibi位置编码

        ALiBi(Attention with Linear Biases)是一种非学习型相对位置编码方法,通过在注意力分数中注入线性偏差来隐式编码序列的相对位置关系。其核心思想是利用注意力机制的数学特性,在不引入额外参数的情况下提升模型对长序列的处理能力。

        ALiBi 的核心是在注意力分数计算阶段直接添加位置偏差,而非通过位置嵌入或旋转操作。

① 相对位置矩阵生成

② 头特定斜率参数

③ 偏差矩阵计算

④ 偏差注入与注意力计算

公式:

值越大,两位置差距越大,值越小,两位置差距越小

多个头时,乘以不同的系数值


Ⅴ、总结

对于文本类NLP任务,位置信息是很重要的

可学习的位置编码缺点在于没有长度外推性

相对位置编码不需要学习,有一定的长度外推性,但是相对位置编码具有天然的远程衰减性

目前的主流是RoPEAlibi两种相对位置编码


十、DeepSeek MLA —— Multi - head Latent Attention(多头潜在注意力)

主要着重于self-attention的重点

通过一个大的线性层计算Q、K

将Q、K拆分为Q1,Q2和K1和K2,

Q1,K1过RoPE相对位置编码,Q2和K2不过RoPE相对位置编码

然后将Q1和Q2相加,K1和K2相加

Q、K拆分的比例通过实验确定

效果:

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

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

相关文章

VS+Qt配置QtXlsx库实现execl文件导入导出(全教程)

一、配置QtXlsx 1.1 下载解压QtXlsxWriter(在github下载即可) 网址:https://github.com/dbzhang800/QtXlsxWriter 1.2 使用qt运行 点击qtxlsx.pro运行QtXlsxWriter 选择DesktopQt51211MSVC201564bit编译器(选择自己本地电脑qt…

Golang的文件处理优化策略

Golang的文件处理优化策略 一、Golang的文件处理优化策略概述 是一门效率高、易于编程的编程语言,它的文件处理能力也非常强大。 在实际开发中,需要注意一些优化策略,以提高文件处理的效率和性能。 本文将介绍Golang中的文件处理优化策略&…

自学-C语言-基础-数组、函数、指针、结构体和共同体、文件

这里写自定义目录标题 代码环境:?问题思考:一、数组二、函数三、指针四、结构体和共同体五、文件问题答案: 代码环境: Dev C ?问题思考: 把上门的字母与下面相同的字母相连,线不能…

VMware+Ubuntu+VScode+ROS一站式教学+常见问题解决

目录 一.VMware的安装 二.Ubuntu下载 1.前言 2.Ubuntu版本选择 三.VMware中Ubuntu的安装 四.Ubuntu系统基本设置 1.中文更改 2.中文输入法更改 3. 辅助工具 vmware tools 五.VScode的安装ros基本插件 1.安装 2.ros辅助插件下载 六.ROS安装 1.安装ros 2.配置ROS…

PostgreSQL pg_repack 重新组织表并释放表空间

pg_repack pg_repack是 PostgreSQL 的一个扩展,它允许您从表和索引中删除膨胀,并可选择恢复聚集索引的物理顺序。与CLUSTER和VACUUM FULL不同,它可以在线工作,在处理过程中无需对已处理的表保持独占锁定。pg_repack 启动效率高&a…

5G_WiFi_CE_射频输出功率、发射功率控制(TPC)和功率密度测试

目录 一、规范要求 1、法规目录: (1)RF Output Power (2)Transmit Power Control (TPC) (3)Power Density 2、限值: 二、EIRP测试方法 (1)测试条件 (2&#xff…

扫描线离散化线段树解决矩形面积并-洛谷P5490

https://www.luogu.com.cn/problem/P5490 题目描述 求 n n n 个四边平行于坐标轴的矩形的面积并。 输入格式 第一行一个正整数 n n n。 接下来 n n n 行每行四个非负整数 x 1 , y 1 , x 2 , y 2 x_1, y_1, x_2, y_2 x1​,y1​,x2​,y2​,表示一个矩形的四个…

Java项目之基于ssm的简易版营业厅宽带系统(源码+文档)

项目简介 简易版营业厅宽带系统实现了以下功能: 此营业厅宽带系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了营业厅宽带系统基础数据的管理&…

从入门到入土,SQLServer 2022慢查询问题总结

列为,由于公司原因,作者接触了一个SQLServer 2022作为数据存储到项目,可能是上一任的哥们儿离开的时候带有情绪,所以现在项目的主要问题就是,所有功能都实现了,但是就是慢,列表页3s打底,客户很生气,经过几周摸爬滚打,作以下总结,作为自己的成长记录。 一、索引问题…

PDF处理控件Aspose.PDF教程:在Python、Java 和 C# 中旋转 PDF 文档

您是否希望快速轻松地在线旋转PDF文档?无论您需要修复文档的方向还是只想重新排列页面,本指南都能满足您的需求。有简单的方法可以解决此问题 - 无论您喜欢在线工具还是编程解决方案。 在本指南中,我们将向您展示如何免费在线旋转 PDF&#…

编译原理:first集和follow

一、First 集(首符号集) 定义: 对于符号(非终结符或终结符)或符号串,First 集是该符号串能够推导出的所有可能开头的终结符的集合。若符号串可以推导出空串(ε),则 ε 也…

python实现简单fast-cgi服务,对接到nginx

python代码 import socket import struct import threading# FastCGI 头格式(8 字节) FCGI_HEADER_FORMAT "!BBHHBx" FCGI_VERSION 1 FCGI_TYPE_BEGIN_REQUEST 1 FCGI_TYPE_PARAMS 4 FCGI_TYPE_STDIN 5 FCGI_TYPE_STDOUT 6 FCGI_TYPE_E…

vue开始时间小于等于结束时间,且开始时间小于等于系统时间,时间格式:年月日时分

// 日期配置 export const DATA_CONFIGS [{itemKey: "startDate",startDateKey: "startDate",endDateKey: "endDate",isStart: true,},{itemKey: "endDate",startDateKey: "startDate",endDateKey: "endDate",is…

PyCharm 下载与安装教程:从零开始搭建你的 Python 开发环境

PyCharm 是一款专为 Python 开发设计的集成开发环境(IDE),它提供了强大的代码编辑、调试、版本控制等功能,是 Python 开发者的必备工具之一。如果你是初学者,或者正在寻找一款高效的开发工具,这篇文章将帮助…

Qt线程等待条件QWaitCondition

Qt 线程等待条件 概念 Qt提供了QWaitCondition类实现“等待条件”式的线程控制方法,它让线程阻塞在等待条件的地方,直到条件满足后才继续执行下去。也就是说,QWaitCondition可以使一个线程在满足一定条件时通知其他多个线程,使它…

RAG 和 RAGFlow 学习笔记

一、RAG(检索增强生成) 1. RAG 的定义与核心思想 RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合 信息检索(Retrieval) 和 文本生成(Generation) 的技术…

Windows连接服务器Ubuntu_MobaXterm

通过 SSH 远程连接(命令行方式) 🔧 所需工具: Windows:MobaXterm(强烈推荐)或 PuTTY Ubuntu:已开启 SSH 服务 Ubuntu 开启 SSH 服务(仅需一次) 在 Ubuntu …

Rust 中的高效视频处理:利用硬件加速应对高分辨率视频

引言 在视频处理领域,随着4K、8K甚至更高分辨率内容的普及,传统的CPU计算方式逐渐显得力不从心。无论是视频剪辑、直播流处理还是格式转换,高负载场景下CPU占用过高的问题常常让开发者头疼。硬件加速技术通过利用GPU等专用硬件分担编解码任务…

大模型提示工程中,提示、补全、指令、上下文和样本这几个概念的区别是什么?

提示 (Prompt) 定义:输入给大模型的完整文本刺激,是与模型交互的主要方式。 特点: 是最广义的概念,包含其他几个元素整体输入的总和,包括指令、上下文和样本等内容决定模型如何理解和处理请求 示例: 分…

AI的未来演进

企业数字IP实战:创始人分身如何实现品宣获客双赢? ——从量子化建模到联邦学习的全链路技术拆解 一、行业痛点:品牌信任与获客效率的双重困局 2025年数据显示,73%的企业因传统营销模式效率低下错失市场机遇(家居品牌…