【大模型知识点】位置编码——绝对位置编码,相对位置编码,旋转位置编码RoPE

由于Transformer 中的自注意模块具有置换不变性(不关心输入序列的顺序),因此需要使用位置编码来注入位置信息以建模序列,使模型能够区分不同位置的 token,并捕捉序列的顺序关系。

在介绍一些位置编码方法前,首先说明,一个好的位置编码方法需要具备怎样的特性:

  • 唯一性: 每个位置应该有一个唯一的编码,以确保模型能够区分序列中的不同位置。如果两个位置共享相同的编码,模型将无法区分它们,从而导致混淆

  • ​​连续性: 位置编码应该是连续的,相邻位置的编码应该相似,连续性有助于模型捕捉序列中元素之间的局部依赖关系。如果位置编码在相邻位置之间突变,模型可能难以学习到平滑的序列模式

  • 可扩展性: 位置编码应该能够处理比训练时更长的序列(即具有外推性),例如,Transformer的正弦和余弦位置编码由于其周期性,能够为更长的序列生成合理的编码

  • 捕获相对位置信息: 位置编码应该能够捕获序列中元素之间的相对位置关系(例如,位置5和位置6的编码应该比位置5和位置10的编码更接近)

  • 远程衰减特性: 远程衰减特性是指随着序列中元素之间相对位置的增加,位置编码的内积逐渐减小。这种特性有助于模型区分远距离和近距离的位置关系。这种特性有助于模型专注于更相关的局部信息,同时减少对远距离噪声的敏感性

  • 高效性: 位置编码的计算和存储应该是高效的,尤其是在处理长序列时。复杂的位置编码方法可能会增加计算开销,从而影响模型的训练和推理速度

接下来介绍一些位置编码方法,主要可以分为绝对位置编码相对位置编码

1.绝对位置编码

绝对位置编码是为每个序列中的位置分配唯一的编码,无论它与其他位置的相对关系如何。每个位置的编码是固定的,并与具体的输入数据无关。常见方法有​正弦/余弦编码可学习编码

1)​正弦/余弦编码(Sinusoidal Encoding)​:

首先补充背景知识:

  • 正弦/余弦函数:
    在这里插入图片描述
  • 波长: 是指函数在一个完整周期内所覆盖的距离或时间间隔
    在这里插入图片描述
  • 频率: 是指函数在单位时间或单位距离内重复的次数
    在这里插入图片描述
  • 波长与频率:
    在这里插入图片描述

使用正弦和余弦函数生成位置编码,公式如下:

i的范围是0~d/2-1

在这里插入图片描述
这样编码位置的特点:

  • 低维度(小i)时,波长小,频率大,位置编码随位置 pos 的变化较快,对位置变化非常敏感,适用于捕捉短距离信息,即局部依赖关系

  • 高维度(大i):波长大,频率小,位置编码随位置 pos 的变化较慢(在高维度上,即使 pos 变化很大,因为波长大,即分母大,正弦和余弦的值仍然变化得很缓慢,也就是说两个位置很远(pos相差大)的 token,在高维度的编码仍然可能相似,这种特性使得模型能够利用高维度信息来识别长距离的相似性,并捕捉远距离 token 之间的联系,对于 NLP 任务中需要捕捉长距离依赖的情况(如长句子、长文档的建模)特别有帮助

  • 不同维度(i)的编码具有不同的波长,使得 Transformer 既能关注短距离依赖,又能捕捉长距离信息,兼顾短期记忆和长期记忆

  • 周期性与外推性: 外推性指的是模型能够处理比训练时更长的序列,正弦和余弦函数的周期性特性使得位置编码能够自然地扩展到训练时未见过的序列长度。具体来说,正弦和余弦函数的周期性意味着其值会随着输入位置的增加而重复出现,即使位置索引 pos 超过了训练时的最大值,位置编码仍然能够通过函数的周期性生成有意义的值,这种重复性使得模型能够通过已学习的模式来处理更长的序列,覆盖更长的序列范围

这个编码位置中的10000起什么作用?可以换成别的数字吗?

作用: 调节位置编码的频率范围

10000决定了位置编码的频率范围。较大的值(如10000)会使频率较低,编码变化更平缓,相邻位置的编码差异较小。较小的值(如1000)会使频率较高,编码变化更剧烈,相邻位置的编码差异较大。

10000这个值决定了位置编码函数的波长较大(周期大),频率较低,使得不同位置的编码在向量空间中具有足够的区分性(如果频率较大,位置编码经常出现重复值,则每个位置的编码区分度不够大),**10000这个数字的取值规律是:**小的值更适合短序列任务,但小的值在长序列任务中可能会导致位置信息的变化过于频繁和剧烈,大的值适合长序列任务。

2)​可学习编码(Learned Positional Encoding)​

将位置编码向量作为可学习的参数,允许模型根据任务需求自动调整位置表示。与如正弦-余弦编码相比(通过固定的数学公式得到),可学习的位置编码更加灵活,能够根据具体任务和数据集调整位置编码,但缺点是需要学习更多的参数,并且对于不同的任务,模型可能会过拟合于某些特定的位置信息。在训练过程中,模型通过反向传播优化这些位置编码向量,使其能够更好地捕捉任务所需的位置信息。

2.相对位置编码

相对位置编码不是编码绝对位置,而是编码两个位置之间的相对关系,这种方法不必完整建模每个输入的位置信息,而是在算 Attention 的时候考虑当前位置与被 Attention 的位置的相对距离,与绝对位置编码相比,相对位置编码可以推广到比训练序列更长的序列(外推性)

1) Rotary Position Embedding(RoPE)

RoPE以绝对位置编码形式实现的相对位置编码,它通过将一个向量旋转某个角度,为其赋予位置信息。具体操作是对attention中的q, k进行旋转变换,使其自带相对位置信息,然后用更新的q,k向量计算attention,得到的内积就会引入相对位置信息了

RoPE已成为主流选择,代表模型有: LLaMA、PaLM

首先我们说明了RoPE是通过旋转使得向量带有位置信息的,那么我们介绍以下数学上的旋转

在这里插入图片描述
在这里插入图片描述
此图参考自:图解RoPE旋转位置编码及其特性

根据以上的介绍,我们知道通过旋转可使得向量带有位置信息,那么RoPE怎么将这个思想带入Transformer架构中的呢?对Attention中的q, k进行旋转变换,使其自带相对位置信息,然后用更新的q,k向量attention,得到的内积就会引入相对位置信息了

在这里插入图片描述
在这里插入图片描述

证明 R m T R n = R m − n {R_m}^TR_n=R_{m-n} RmTRn=Rmn:
在这里插入图片描述
在这里插入图片描述

你可能会疑问, R m − n R_{m-n} Rmn展开之后应该是 θ m − n \theta_{m-n} θmn,上面的式子是 θ m − θ n \theta_m-\theta_n θmθn,这是一样的吗?有一个结论: R θ 1 R θ 2 = R θ 1 + θ 2 R_{\theta_1}R_{\theta_2}=R_{\theta_1+\theta_2} Rθ1Rθ2=Rθ1+θ2,下面证明:

在这里插入图片描述
在这里插入图片描述
好的,介绍到这里我们就知道了,RoPE向Q,K引入旋转矩阵 R m R_m Rm R n R_n Rn,使他们带有位置信息,而他们的内积可以用 R m − n R_{m-n} Rmn表示 R m R_m Rm R n R_n Rn的乘积, R m − n R_{m-n} Rmn包含了Q,K的相对位置信息,使得模型能够更好地捕捉序列中元素之间的相对位置关系。现在总结一下:

在这里插入图片描述

这里的 θ \theta θ借鉴了transformer中正余弦位置编码的思想:

  • 低维度(小i)时,波长小,频率大,适合捕捉短距离依赖

  • 高维度(大i)时,波长大,频率小,适合捕捉长距离依赖

在这里插入图片描述
现在总结RoPE的优点:

  • ​显式建模相对位置信息:通过旋转矩阵显式地建模相对位置关系

  • ​外推性:能够处理比训练时更长的序列,具有良好的外推性在这里插入图片描述

  • 多尺度位置编码:通过不同维度的旋转角度捕捉不同距离的依赖关系( θ \theta θ

  • 计算高效:旋转矩阵的计算简单高效,不会引入额外的计算负担。

2) Attention with Linear Biases(ALiBi)

ALiBi提出用于提升Transformer的外推性,不向单词embedding中添加位置embedding,而是根据query、key之间的距离给 attention score 加上一个预设好的偏置矩阵(仅需要修改softmax之前的mask矩阵,将偏置矩阵加上去即可,几乎不增加额外开销)。代表模型:BLOOM。

在这里插入图片描述

总结:本文介绍了大模型中常见的绝对位置编码和相对位置编码方法,其中RoPE的代码待补充

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 配置静态 IP

一、简介 在 Linux CentOS 系统中默认动态分配 IP 地址,每次启动虚拟机服务都是不一样的 IP,因此要配置静态 IP 地址避免每次都发生变化,下面将介绍配置静态 IP 的详细步骤。 首先先理解一下动态 IP 和静态 IP 的概念: 动态 IP…

DeepSeek 3FS:端到端无缓存的存储新范式

在 2025 年 2 月 28 日,DeepSeek 正式开源了其高性能分布式文件系统 3FS【1】,作为其开源周的压轴项目,3FS 一经发布便引发了技术圈的热烈讨论。它不仅继承了分布式存储的经典设计,还通过极简却高效的架构,展现了存储技…

微服务与消息队列RabbitMQ

简介 同步模式 异步模式 内容 解决方案RabbitMQ 同步调用的优缺点 同步调用的优势是什么? 时效性强,等待到结果后才返回。 同步调用的问题是什么? 拓展性差性能下降级联失败问题

vue+element-plus简洁完美实现古诗文网

目录 一、项目介绍 二、项目截图 1.项目结构图 2.首页(推荐) 3.诗文 4.名句 5.作者 6.古籍 7.我的 三、源码实现 1.路由配置 2.顶部 四、总结 一、项目介绍 项目在线预览:点击访问 本项目为vue项目,参考古诗文网官方…

Vue项目通过内嵌iframe访问另一个vue页面,获取token适配后端鉴权(以内嵌若依项目举例)

1. 改造子Vue项目进行适配(ruoyi举例) (1) 在路由文件添加需要被外链的vue页面配置 // 若依项目的话是 router/index.js文件 {path: /contrast,component: () > import(/views/contrast/index),hidden: true },(2) 开放白名单 // 若依项目的话是 permission.js 文件 cons…

RuleOS:区块链开发的“破局者”,开启Web3新纪元

RuleOS:区块链开发的“破冰船”,驶向Web3的星辰大海 在区块链技术的浩瀚宇宙中,一群勇敢的探索者正驾驶着一艘名为RuleOS的“破冰船”,冲破传统开发的冰层,驶向Web3的星辰大海。这艘船,正以一种前所未有的姿…

指针的工作原理,函数的传值和传址

在C之中,指针是一个变量用于存储另外一个变量的内存地址。指针可以指向各种数据类型例如基础数据类型和自定义数据类型等。 在计算机之中的内存被划分为一个一个的存储单元,每个存储单元拥有唯一的内存地址,指针就是指向这些内存单元的地址。…

RISC-V汇编学习(三)—— RV指令集

有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识,本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点,是以RV32I为作为ISA的核心模块,其他都是要基于此为基础,可以这样认为:RISC-V ISA 基本整数指…

基于控制障碍函数(Control Barrier Function)的二次规划(QP)控制

文章目录 研究背景主要贡献障碍函数(Barrier Function)(一)倒数障碍函数(Reciprocal Barrier Function, RBF)(二)归零障碍函数(Zeroing Barrier Function, ZBF&#xff0…

软件工程:软件需求之需求分析方法

目录 前言 需求分析方法 工具和方法 具体分析方法 对运行环境的影响 ​编辑 前言 本文重点介绍开展软件需求分析的方法。 需求分析方法 工具和方法 软件需求可以维护在ALM系统中,譬如:doors,codeBeamer等,JIRA适合互联网行…

蓝桥杯—走迷宫(BFS算法)

题目描述 给定一个NM 的网格迷宫 G。G 的每个格子要么是道路,要么是障碍物(道路用 11表示,障碍物用 0 表示)。 已知迷宫的入口位置为 (x1​,y1​),出口位置为 (x2​,y2​)。问从入口走到出口,最少要走多少…

Ubuntu无风扇工控机:解决精密仪器散热难题的利器

在现代工业自动化领域,精密仪器的控制对设备的稳定性、可靠性和静音性提出了极高的要求。而无风扇Ubuntu工控机,凭借其独特的无风扇设计和强大的计算能力,正逐渐成为精密仪器控制场景中的“无声守护者”。本文将深入探讨无风扇工控机在精密仪…

TCP协议与包头格式

patience is key in life!!! 文章目录 一、什么是TCP?二、TCP的特点三、TCP为什么可靠?四、TCP的包头格式五、TCP的三次握手与四次挥手1.三次握手2.四次挥手 一、什么是TCP? TCP(Transmission …

LeetCode Hot100刷题——反转链表(迭代+递归)

206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3&#…

【Linux】http 协议

目录 一、http协议 (一)http 协议的概念 (二)URL的组成 (三)urlencode 和 urldecode 二、http 的协议格式 (一)http 请求方法 (二)http 响应状态码 &a…

ACE协议学习1

在多核系统或复杂SoC(System on Chip)中,不同处理器核心或IP(Intellectual Property)模块之间需要保持数据的一致性。常用的是ACE协议or CHI。 先对ACE协议进行学习 ACE协议(Advanced Microcontroller Bu…

ES-分词器安装与使用详解

安装分词器 windows环境,分词器有2种安装方式,1.直接命令安装;2.压缩包安装 IK分词器 查看ik分词器文档,找到安装方式介绍 文档链接: 方式1 elasticsearch-plugin install https://get.infini.cloud/elasticsearch/an…

FY-3D MWRI亮温绘制

1、FY-3D MWRI介绍 风云三号气象卫星(FY-3)是我国自行研制的第二代极轨气象卫星,其有效载荷覆 盖了紫外、可见光、红外、微波等频段,其目标是实现全球全天候、多光谱、三维定量 探测,为中期数值天气预报提供卫星观测数…

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 or Set--lower_bound()的解法!!!

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 题目 并查集解析代码【并查集解】 Set 解法解析lower_bound代码 题目 并查集解析 首先先让所有的f(i)i,即每个人最开始的祖先都是自己,然后就每一次都让轮到那个数的父亲1&#xff08…

docker启动jenkins,jenkins中调用docker

在jenkins中执行docker 思路 jenkins中安装docker客户端,使用第三方的docker(需要付费)。jenkins中安装docker客户端,另一个容器中安装docker服务, docker-in-docker,需要特权模式,或者第三方的工具。jenkins中什么都…