【LLM】位置编码

【LLM】位置编码

1 绝对位置嵌入

绝对位置嵌入是将每个位置独立编码为一个固定向量,并添加到对应的词嵌入中,使模型能够感知单词在序列中的绝对位置。其公式为:
f t : t ∈ { q , k , v } ( x i , i ) : = W t : t ∈ { q , k , v } ( x i + p i ) f_{t: t \in \{q, k, v\}}\left(x_i, i\right) := W_{t: t \in \{q, k, v\}}\left(x_i + p_i\right) ft:t{q,k,v}(xi,i):=Wt:t{q,k,v}(xi+pi)

其中, p i ∈ R d p_i\in\mathbb{R}^d piRd是依赖于token x i x_i xi所在位置的 d 维向量。例如,Vaswani 等人提出使用正弦函数生成 p i p_i pi
{ p i , 2 t = sin ⁡ ( p o s / 1000 0 2 t / d ) p i , 2 t + 1 = cos ⁡ ( p o s / 1000 0 2 t / d ) \begin{cases} p_{i, 2t} = \sin\left( pos / 10000^{2t / d} \right) \\ p_{i, 2t + 1} = \cos\left( pos / 10000^{2t / d} \right) \end{cases} {pi,2t=sin(pos/100002t/d)pi,2t+1=cos(pos/100002t/d)

式中, pos表示 x i x_i xi在序列中的绝对位置。 p i , 2 t p_{i, 2t} pi,2t 是d维向量 p i p_i pi 的第 2 t 2t 2t 个元素。

为什么用 1000 0 2 t d 10000^{\frac{2t}{d}} 10000d2t?

核心是让不同维度的位置编码有不同的 “频率”,模拟人类对 “绝对位置 + 相对距离” 的感知:
在这里插入图片描述
这种设计能让模型通过三角函数的相位差,隐式学习到 “相对位置”(比如词 A 和词 B 隔 5 个词,它们的位置编码在各维度的正弦 / 余弦值差异,会和 “隔 5 个词” 的模式对应 ),同时用固定公式避免了可学习位置编码的参数开销。

2 相对位置嵌入

传统绝对位置编码给每个位置分配固定编码,难以灵活体现元素间相对关系(比如长序列里 “词 A 与词 B 相隔多远” 的信息)。相对位置编码的目标,是让模型感知 “元素间相对距离” 对语义的影响—— 比如句子里 “苹果” 和 “吃”,不管它们在序列中绝对位置多靠后,“相邻” 或 “间隔 1 个词” 的相对关系,会让注意力权重、语义关联有差异.

在这里插入图片描述

2.1 Shaw等人的方法(2018)

核心思想:对键(Key)和值(Value)添加可训练的相对位置嵌入,并对超出一定范围的相对距离进行截断。

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

2.2 Dai等人的方法(2019)

核心思想:分解查询(Query)与键(Key)的内积,将绝对位置嵌入替换为正弦编码的相对位置嵌入。

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

2.3 Raffel 等人的方法(2020)

核心思想:简化内积为内容项与可训练偏置项的和。

在这里插入图片描述

2.4 He 等人的方法(2020)

核心思想:完全用相对位置嵌入替代绝对位置嵌入,强调相对位置的建模。

在这里插入图片描述

2.4 RoPE(2023)

Rotary position embedding(RoPE)是一种在 Transformer 架构中用于编码位置信息的方法,其核心是利用旋转矩阵对绝对位置进行编码,并在自注意力机制中融入相对位置依赖关系。具体做法如下:

在这里插入图片描述
在这里插入图片描述
我们可以进一步将 f { q , k } f_{\{q,k\}} f{q,k}写成乘法矩阵形式

在这里插入图片描述
具体来说,融入相对位置嵌入的方式非常直接:只需将仿射变换后的词嵌入向量按其位置索引的角度倍数进行旋转,这正是RoPE背后的核心思想。

在这里插入图片描述

为了将我们在二维情况下的结果推广到任意 x i ∈ R d x_i\in\mathbb{R}^d xiRd(其中 d 为偶数)的情形,我们将 d 维空间划分为 d/2 个子空间,并利用内积的线性性质将它们组合起来,使 f { q , k } f_{\{q,k\}} f{q,k}变为

在这里插入图片描述

将我们的 RoPE 应用于 q T k q^Tk qTk的自注意力机制中
在这里插入图片描述
其中
在这里插入图片描述

**与先前工作(即2.1-2.3节)中采用的加法性质位置嵌入方法不同,我们的方法是乘法性质的。**此外,当将 RoPE 应用于自注意力机制时,它通过旋转矩阵乘积自然地融入相对位置信息,而不是在加法位置编码的展开式中修改项。

不过以上的计算方式并非高效。
在这里插入图片描述

遵循Vaswani[2017]的做法,,可以证明RoPE具有长期衰减性,即相对距离较远的一对 tokens 之间的关联应当更弱。
在这里插入图片描述

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

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

相关文章

Java 根据分组key构建合并数据集

文章目录 前言背景总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、 提示:以下是本篇文章正文内容,下面案例可供参考 背景 Java 需要返回一组数据供前端展示,获取到的数据格式如下: …

Linux平台Oracle开机自启动设置

网上和官方文档已经有不少介绍如何设置开机启动Oracle实例的文章(Linux平台),不过以sysvinit和service这种方式居多。最近遇到了UAT环境的服务器打补丁后需要重启服务器的情况, 需要DBA去手工启动Oracle实例的情形,和同事讨论,决定…

商品中心—商品B端搜索系统的实现文档(二)

8.步骤四:基于索引实现搜索功能 (1)基于suggest索引的自动补全实现 实现自动补全的代码比较简单,其原理是:把搜索词汇和倒排索引里的所有前缀匹配的词条进行score比较,然后把分数最高的那些返回,其中会涉及到suggest索…

Codeforces Round 1027 (Div. 3)

A. Square Year 题目大意 给你一个四个字符的字符串,代表一个数字s 问是否存在a,b两个数字,使得 ( a b ) 2 s (ab)^2s (ab)2s 思路 如果s是奇数或不能被开根号一定不行 设sq为s开根号后的结果 将sq一分为2,考虑sq/2有没有余数的情况 //…

时序数据库IoTDB的架构、安装启动方法与数据模式总结

一、IoTDB的架构 IoTDB的架构主要分为三个部分: ‌时序文件(Tsfile)‌: 专为时序数据设计的文件存储格式。支持高效的压缩和查询性能。可独立使用,并可通过TsFileSync工具同步至HDFS进行大数据处理。 ‌数据库引擎‌…

ArrayList和LinkedList详解

在Java后端开发中,集合框架是我们日常编程不可或缺的工具,它为数据存储和操作提供了丰富的实现方式。作为Java集合框架中最常用的两种List实现,ArrayList和LinkedList各自具有独特的特性和适用场景。 1. 基本概念 1.1 ArrayList的定义与特性…

警惕微软Entra ID风险:访客账户存在隐蔽的权限提升策略

访客用户订阅权限漏洞解析 微软Entra ID的订阅管理存在访问控制缺陷,允许访客用户在受邀租户中创建和转移订阅,同时保留对这些订阅的完全所有权。访客用户只需具备在源租户创建订阅的权限,以及受邀成为外部租户访客的身份即可实施此操作。这…

EEG分类攻略2-Welch 周期图

在EEG信号处理的上下文中,使用Welch方法来估算信号的功率谱密度(Power Spectral Density, PSD)是一种常见的做法。你的代码片段是利用**scipy.signal.welch**函数来进行功率谱密度估算,并且涉及到一些关键的参数和步骤。让我们逐步…

开疆智能CCLinkIE转ModbusTCP网关连接脉冲计数器配置案例

本案例是三菱PLC通过CCLinkIE转ModbusTCP网关连接脉冲计数器的配置案例,具体配置如下。 配置过程: 首先设置从站通讯参数 主要设置IP地址,工作模式以及端口号(Modbus默认502) 找到通讯点表,找到需要读写的…

gRPC 使用(python 版本)

.proto 文件 .proto 文件 是 gRPC 和 Protocol Buffers 的接口定义文件,它描述了: 要传递什么数据(也就是消息体 message)。要暴露什么接口(也就是服务 service 和它们的 方法)。 也就是一份规范文件&am…

VMware安装

勾选【增强型键盘驱动程序】 #后期虚拟机用鼠标键盘比较好用 VMware创建主机Windows2 选择类型配置【自定义】 安装客户机操作系统【稍后安装操作系统】 客户机操作系统【Microsoft Windows】,版本选Windows最高版本 【固件类型】默认UEFI 【处理器配置】选1个处理…

【沉浸式解决问题】微服务子模块引入公共模块的依赖后无法bean未注入

目录 一、问题描述二、场景还原三、原因分析四、解决方案五、拓展知识参考文献 一、问题描述 在微服务项目中的公共模块进行了Mybatis Plus配置,创建了配置类并添加了Configuration注解,其他模块引入该模块后不生效 我这里是在Mybatis Plus公共模块中注…

SQL进阶:CASE表达式

目录 1、用一条SQL语句进行不同条件的统计 建表语句(MySQL8): 录入数据: *按性别统计SQL 输出结果(行列转换) 2、在UPDATE语句里进行条件分支 建表语句(MySQL8):…

哪四款AI工具让3D人物手办制作如此简单?

在当今数字化时代,AI技术的飞速发展为我们的生活带来了诸多便利和惊喜。其中,AI生成3D人物手办工具的出现,让我们能够轻松地将自己的创意和想象转化为实体手办,满足了众多手办爱好者的个性化需求。今天,我将为大家推荐…

Docker高级管理--Dockerfile镜像制作

目录 一:Docker 镜像管理 1:Docker 镜像结构 2:Dockerfile介绍 二:Dockerfile 语法基础 1:基础指令 2:环境设置指令 3:文件操作指令 4:执行命令指令 5:网络和暴露端口指令 6.容器挂载指令 三:dockerfile案例 1.构建nginx容器 一:Docker 镜像管理 Docker…

数字时代的“灵魂”之争:虚拟人形象的著作权困局与破局之道

首席数据官高鹏律师数字经济团队创作,AI辅助。 一、虚拟人的“数字生命”:一场关于“灵魂”的商业博弈 当一个虚拟偶像的“眼神”被复刻成千万个相似的数字面孔,当一段虚拟主播的“声音”被拆解为可交易的数据碎片——我们正在见证一个“数…

小型CI/CD搭建(TODO)

1 方案 因为是在国内,所以gitbub Actions,​​Azure DevOps​这些就直接拜拜了。 目前主流的大概是三种: 1 阿里云效/腾讯云CODING 2 GitLab CE GitLab Runner 3 Gitee Jenkins deepeseek比较了一下如下: 阿里云效 vs Git…

Android Studio flutter项目运行、打包时间太长

Android Studio:Android Studio Meerkat Feature Drop | 2024.3.2 Patch 1 flutter Sdk:3.29.3 系统:windows flutter sdk从2.10.5升级到3.29.3,但是Flutter 3.16开始新增了使用 Gradle声明式 plugins {} 块,gradle文…

【OpenGL学习】(六)图形添加纹理

文章目录 【OpenGL学习】(六)图形添加纹理纹理环绕纹理过滤纹理颜色与顶点颜色混合 OpenGL纹理介绍:https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 【OpenGL学习】(六)图形添加纹理 项目…

allure安装

一、安装java 需要安装java环境,不安装的话在运行前会报错下列问题(前提是安装了allure未安装java) 1.官网地址:https://www.oracle.com/ 2.点击”Download Java“ 3.选择JDK正式版本(需要jdk1.8) 4.选择W…