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

基于Transformer的预训练大语言模型,如何区分文本位置?

 

一、Transformer位置编码问题

Transformer的自注意力机制本质上是一种基于内容相似度的匹配操作,其核心计算过程与词序无关。给定输入序列中任意两个词元 token,其注意力分数仅依赖于它们的语义相关性,而与它们在序列中的绝对或相对位置无关。具体表现为:

1. 查询-键相关性计算:

通过投影矩阵将输入向量转换为查询(Query)和键(Key),计算二者的点积相似度:

Score(qi,kj)=qikj

其中  为可学习参数, 为键向量的维度。若交换  和  的位置,计算结果不变,即:

2. 注意力权重生成:

对分数矩阵进行 Softmax 归一化,得到注意力权重分布:

此时权重仅反映词元间的语义关联强度,缺乏位置信息编码


二、Transformer位置编码的重要性

在自然语言处理中,词序通常对语义理解起关键作用。以关系分类任务为例,模型需要根据文本中两个实体的顺序和上下文关系,准确判断它们之间的语义关联。若词序信息丢失或错乱,可能导致模型误判关系类型。

示例说明

  • 句子1:"公司收购了竞争对手"
  • 句子2:"竞争对手收购了公司"

虽然两句话包含相同的词汇,但词序反转导致实体关系完全相反:

  • 句子1中,“公司”是收购方(主体),“竞争对手”是被收购方(客体),关系为“收购”;
  • 句子2中,主客体对调,关系变为“被收购”。

⚠️ 若模型忽略词序,将无法区分这两种截然不同的语义。


三、Transformer如何做位置编码?

向Transformer模型中加入位置编码是必不可少的操作。位置编码可以分为绝对位置编码相对位置编码两大类。

📌 外推能力对比
绝对位置编码外推能力较差。推理时如果输入文本长度超过训练阶段的最大长度,模型表现会显著下降。
因此,主流大语言模型普遍采用相对位置编码,以增强长序列外推能力。

目前主要有两种典型的位置编码方法:

1. 可训练绝对位置编码(如 BERT)

  • 将位置信息表示为可训练的参数矩阵 ,其中:
    • :预设的最大序列长度(如512)
    • :隐藏层维度
  • 对于第  个位置的 token,其位置编码为 ,并与词嵌入相加作为输入:
  • 优点:简单直接,易于训练。
  • 缺点:无法外推 —— 当测试序列长度 >  时,无法生成有效的位置编码。

2. 正弦位置编码(如原始 Transformer)

  • 使用预定义的三角函数生成位置编码:
  • 优点:
    • 具有相对位置敏感性
    • 理论上支持任意长度外推(可计算任意 pos 的编码)
  • 缺点:不如 RoPE 灵活,表达能力有限

四、RoPE:旋转位置编码(Rotary Position Embedding)

旋转位置编码(Rotary Position Embedding, RoPE)是一种创新的相对位置编码方法,其核心思想是:

✅ 通过旋转矩阵将绝对位置信息融入注意力机制,同时保留词向量的相对位置关系。

核心思想

  • 对查询向量  和键向量  施加与位置相关的旋转变换。
  • 利用正弦/余弦函数的“和差化积”性质,将绝对位置  的旋转转化为相对位置  的相位差。

旋转操作定义

定义二维旋转矩阵:

其中:

  • :当前位置(如第  个词)
  • :位置编码总维度
  • :调节因子(控制频率衰减速度)
  • :随位置变化的旋转角度

旋转特性

当向量乘以  时,其幅值不变,仅在二维平面上旋转角度 

原因在于:

  •  是标准的正交矩阵
  • 行列式为 1: → 无缩放,纯旋转

注意力分数引入相对位置

令旋转后的查询和键为:

则注意力内积为:

利用三角恒等式,最终可推导出该内积依赖于相对位置 ,从而实现相对位置编码

💡 类比:想象一个时钟指针

  • 原始向量是时针的初始方向
  • RoPE 根据位置  把时针旋转一个角度(长度不变)
  • 两个“旋转后”的指针夹角(内积)反映它们的相对位置差

五、YaRN:弥补RoPE的缺陷

尽管 RoPE 具有良好的外推能力,但仍受限于周期性函数的震荡特性

问题描述

由于旋转角度使用正弦/余弦函数计算,具有周期性:

  • 每词旋转 30°,则位置 12(360°)与位置 0 的向量方向完全一致
  • 模型无法区分位置 0 和位置 12 → 位置混淆

YaRN 的解决方案:VTK-by-parts 分段函数调整

YaRN 提出结合“by-parts”机制,动态调整周期性参数,提升外推性能。

核心概念
  • 周期 :参数  完成一个完整循环所需的时间或步数
  • 圈数 :训练阶段完成的周期数
  • 阈值 :判断是否“充分训练”的临界值
分三阶段处理(by-parts)
情况条件处理方式
充分训练   保留原周期,无需调整
未充分训练   将周期缩放为 ,确保测试阶段至少完成一个完整周期
中间过渡   线性插值平滑过渡

✅ 优势:动态适应训练充分度,提升训练与测试阶段的一致性,尤其适用于长序列外推。


六、ALiBi:另一种相对位置编码视角

ALiBi(Attention with Linear Biases)提供了一种全新的位置编码思路:不显式编码位置,而是直接在注意力分数中加入基于相对距离的线性偏置

三大核心组件

图片

 

  1. 注意力分数矩阵(左图)
    传统 QK 点积结果,反映语义相关性。

  2. 偏置矩阵(右图)
    设计为线性衰减形式:

    例如:   与  距离为 2,则偏置为 

    📉 设计哲学:距离越远,负偏置越大,抑制长程依赖,鼓励局部关注

  3. 斜率项 

    • 与“注意力头数”相关
    • 多头时, 序列呈几何级数下降(如 
    • 实现多尺度位置感知

最终注意力计算

其中 

优势

  • ✅ 天然支持任意长度序列
  • ✅ 不依赖绝对位置,无外推限制
  • ✅ 计算高效,无需额外位置嵌入

🆚 对比 RoPE:
RoPE 外推能力较强(约可外推200 token),但仍受周期性限制;
ALiBi 更简单、更稳定,适合超长文本建模。


🔚 总结

现代大语言模型普遍采用相对位置编码(如 RoPE、ALiBi)来克服绝对位置编码的外推瓶颈。其中:

  • RoPE 通过旋转向量建模相对位置,表达能力强;
  • YaRN 改进 RoPE 的周期性缺陷,提升外推精度;
  • ALiBi 以线性偏置方式建模距离,简洁高效,适合超长序列。

这些技术共同推动了大模型在长文本理解、代码生成等任务中的突破。

转自:https://mp.weixin.qq.com/s/hF1MmdOpxPae0wVTSbFr4A

相关文章:

基于Transformer的预训练大语言模型,如何区分文本位置?

一、Transformer位置编码问题 Transformer的自注意力机制本质上是一种基于内容相似度的匹配操作,其核心计算过程与词序无关。给定输入序列中任意两个词元 token,其注意力分数仅依赖于它们的语义相关性,而与它们在序列中的绝对或相对位置无关。具体表现为: 1. 查询-键相关性…...

UE RPC介绍

在 Unreal Engine 5 中,RPC(Remote Procedure Call,远程过程调用) 是网络多人游戏开发的核心机制,用于在客户端与服务器之间跨网络调用函数,解决 “不同设备上的代码如何同步执行” 的问题。 一、核心作用 在多人游戏中,客户端(玩家设备)和服务器(权威节点)是独立运…...

part 5

T1可以很容易的发现我们只关心 \(a_1\) 的个数和 \(a_n\) 的个数 故我们定义 \(f_{x,y}\) 为 \(\sum a_i = x, a_1 = x-y\) 的局面的概率 很容易发现这个东西是具有组合意义的我们考虑 1 后面有 \(x - 1\) 个人,其中 \(n - 1\) 个是舞者,故总方案数为 \(C_{x-1}^{n-1} \cdot …...

GAS_Aura-Code Clean Up

1修改了UI在Client无法显示的bug...

最强大模型评测工具EvalScope

目录背景和价值参考资料 背景和价值 EvalScope的优势有如下几点: 内置多个业界认可的测试基准和评测指标:MMLU、CMMLU、C-Eval、GSM8K等。(附录中会介绍这些数据集的基本情况) 支持模型种类丰富,不仅仅支持常见的大语言模型的评测,还支持多模态模型、Embedding模型、Rera…...

JS监听DOM元素的变化

s...

CF1485F Copy or Prefix Sum

要想一想不可能的做法。 设 \(f_{i, j}\) 为前 \(i\) 个 \(a_i\) 和为 \(j\) 的方案数。 你发现转移形如全体位移,全体求和,然后加进答案里。 用 map 存 DP 数组,然后存一个位移即可。...

拉格朗日反演定理(LIFT)

最近没什么心情更新博客,原来的文章可能永远都不会修改 由于学校组合数学课即将学到拉反,所以预习一下 拉反的描述:给定一个形式幂级数\(F(x)\)满足方程关系\(x=\frac{F(x)}{G(F(X))}\),它是代数组合学最重要的定理之一。 \(F\)可能没有解析解,有时我们想要求出\(F\)的某项…...

第01周 预习、实验与作业:绪论与Java基本语法

Java 核心概念解析 1. 方法与参数传递特性 1.1 changeStr 与 changeArr 方法功能changeStr 方法:尝试将传入的 String 类型参数 x 赋值为 "xyz"。 但由于 String 是不可变对象,方法内对 x 的重新赋值仅修改局部变量引用,不影响外部实参。 changeArr 方法:遍历传入…...

云斗八月银组做题记录

比赛 C. 大鱼吃小鱼 区间或和区间最大值都可以用 st 表维护,然后倍增。 或者分块也可以。 D. 权值与下标 看见这个东西很容易想到拆贡献,拆因子。但是考虑到拆下标因子最大的会到 \(\displaystyle n ^ {\frac{m}{2}}\)。 我们遇见这样的东西,我们可以发现不同数的个数小于 $…...

详细介绍:24年秋招-京东-后端开发岗-第1批笔试总结

详细介绍:24年秋招-京东-后端开发岗-第1批笔试总结pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospa…...

深入解析:中国AI云市场报告:阿里云份额达35.8%,高于2至4名总和

深入解析:中国AI云市场报告:阿里云份额达35.8%,高于2至4名总和pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New&q…...

关于前端的一些疑问整理2(选择器)

功能需求不同选择器类型语法功能示例​​合并选择器​​A, B选择所有匹配 A 或 B 的元素.header, .footer​​后代选择器​​A B选择所有在 A 元素内的 B 元素.header .footer​​子元素选择器​​A > B选择 A 元素的直接子元素 B.menu > .item​​相邻兄弟选择器​​A +…...

模拟散列表(哈希表)

哈希表 哈希表是把一个比较大的值域映射到一个比较小的空间 哈希表的存储结构: 1.开放寻址法:当出现冲突时,按照顺序将数据存放到数组的下一个位置。2.拉链法:当出现冲突时,在这个位置拉一个链,链上是所有满足这一冲突的元素 哈希表的时间复杂度可以看作O( 1 ),一般只会有…...

题解:P3323 [SDOI2015] 旅行计划

Solution 因为 \(k\) 的值较小,所以这题可以直接暴力枚举。 如果 \(k = 2\),直接输出 \(g\) 数组就可以了。 void solve2() {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) putchar(g[i][j] ? Y : N);putchar(\n);} }如果 \(k = 3\),枚举中间点 \(p\)…...

GAS_Aura-Implementing Auto Running

1讲了具体的,AutoRun,怎么实现...

暑假周进度总结

最后一周,我学了些有关大数据的知识,主要就是一些特殊名词。 虽说这一暑假没学到什么跟专业技术有关的东西,但我认为这是我过的最充实的一次暑假了。...

万能欧几里得算法

发现自己在算法方面还有很多欠缺的,趁着还有时间赶紧补一下。 万能欧几里得算法解决的是出现 \(\lfloor\frac{ai+b}{c}\rfloor\) 的求和式,其中 \(i\) 是求和指标。 几何意义转化一下,发现 \(\lfloor\frac{ai+b}{c}\rfloor\) 表示的是 \(y=\frac{ax+b}{c}\) 这条直线在 \(x=…...

test

...

直播软件源码,聊聊Java的异常机制问题 - 云豹科技

直播软件源码,聊聊Java的异常机制问题java异常指在程序运行时可能出现的一些错误,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,中断了正在执行的程序的正常指令流。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java…...

调度引擎pefect

目录背景和价值参考资料 背景和价值 https://it.sohu.com/a/781308284_120082794 感觉是我能找到的目前最适合开发人员的调度系统了。该项目常用于数据流开发。比如数据清洗、dataset预处理、数据采集、ai训练等场景。 参考资料...

我的编码规范

1、空格: 对于if、while等保留字,与其后接括号之间添加空格 对于二目、三目运算符,在运算符两边添加空格 写注释时,在//后面添加空格 强制类型转换时,括号后面不添加空格 小括号()内侧不加空格,外侧加空格 2、缩进 统一缩进为四个空格,避免直接使用tab字符,但可设置为…...

谷歌浏览器正规下载地址

Google Chrome 网络浏览器:完成下载和安装这个人很懒,什么也没下留。...

RoPE使用复数乘法的原因

RoPE(Rotary Position Embedding)选择用复数乘法实现旋转,核心原因是复数运算的天然旋转特性与工程实现的高效性完美适配了位置编码的需求,具体可以从以下几个角度理解: 1. 复数乘法天然对应 “旋转” 的几何意义 复数在复平面上的乘法运算,本质就是 “旋转 + 缩放”。对…...

2025 项目管理到底用什么软件?

有时候你会发现,项目开了很多会,但真正关键的信息总没人能说清楚。聊天记录翻了上百条,想找一个需求文档,却根本不知道谁发过、什么时候改过。明明都在干活,但交付一到最后总是一团乱:谁漏了?谁改了?谁没跟上?当一个项目变得越来越“抓不住”时,问题可能不是人不努力…...

我就是我不一样的烟火

我就是我不一样的烟火 https://txc.qq.com/products/780662/blog/2632842https://txc.qq.com/products/780667/blog/2632841https://txc.qq.com/products/780670/blog/2632840https://txc.qq.com/products/780669/blog/2632839https://txc.qq.com/products/780665/blog/2632838…...

周总结报告8

一、本周进展回顾 (一)时间投入 本周总学习时长 34 小时,分配如下: 大数据技术:16 小时(大数据安全、项目实践) Java Web:10 小时(系统优化与部署、用户体验提升) Python:6 小时(推荐系统迭代、模型评估) 问题解决:2 小时(项目数据采集工具选择、系统部署问题)…...

深入解析:PostgreSQL 视图与物化视图(View / Materialized View)详解

深入解析:PostgreSQL 视图与物化视图(View / Materialized View)详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier…...

Win11纯净版D盘出现黄色感叹号的问题

有一位雨林木风官网的用户,特别着急的在群里@小编说自己的电脑安装的Win11纯净版系统,发现D盘中有个黄色感叹号,是不是硬盘出问题了。其实这可能是系统中的加密功能BitLocker驱动器加密造成的,接下来,看看ylmf系统小编如何解决这个问题的吧,一起来看看参考一下。 Win11纯…...

nuxt3中useCookie()轻松实现数据存储与安全优化

什么是 Nuxt 3 中的 Cookies 在 Nuxt 3 中,Cookies 可以在服务端和客户端操作。通过 useCookie 组合式函数,Nuxt 提供了一个统一的 API,适用于页面和组件的双端操作 如何设置 Cookies 操作 在 Nuxt 3 中,你无需额外配置或导入即可使用 Cookies。useCookie 是内置的,并且会…...

win11专业版如何设置窗口不叠加的问题

有深度官网win11专业版系统用户,说他的电脑桌面任务栏窗口是叠加状态,多界面的情况下转换也比较麻烦,那如何设置为不叠加状态呢?接下来,就看看深度技术小编分享的处理方法吧。 在 Windows 11 专业版中,可以通过以下方法设置窗口不叠加: 最大化窗口:点击窗口右上角的最大…...

Windows下查看主板序列号命令

wmic baseboard get serialnumber...

范围 for 循环

范围 for 循环(Range-based for loop) 是 C++11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin() 和 end() 方法,实现对每个元素的遍历,无需手动管理索引或迭代器。在C++中,范围for循环(也称为基于范围的for循环)是一种简洁的方法来遍历容器(如数组、…...

Java开发者无需Python!JBoltAI让AI应用开发像搭积木一样简单

Java开发者无需Python!JBoltAI让AI应用开发像搭积木一样简单在ChatGPT引发的AI浪潮中,全球2000万Java开发者正面临技术代际跃迁的挑战。传统的MVC架构与微服务体系,在自然语言交互、多模态处理等AI原生场景下显得力不从心。作为一名Java老兵,我最初也陷入了深深的焦虑:是否…...

JBoltAI:解锁企业AI应用开发新范式,驱动数智化升级核心引擎

JBoltAI:解锁企业AI应用开发新范式,驱动数智化升级核心引擎在人工智能浪潮席卷全球的今天,企业数智化转型已不再是选择题,而是生存题。据埃森哲全球调研显示,86%的企业高管计划加大在AI或生成式AI领域的投入。然而,技术门槛高、数据安全顾虑、与现有系统融合难等问题,成…...

kmp

模板题:洛谷P3375 code: 前缀函数解法 #include<bits/stdc++.h> using namespace std; const int N=2e6+10; string s,t; int n,m; int pi[N]; int main(){cin>>s>>t;n=s.size();m=t.size();s= +t+#+s;for(int i=2;i<=n+m+1;i++){int j=pi[i-1];while(j…...

黑窗

1.win+R->cmd 2.ipconfig 3.Administrator...

深入解析:机器学习算法之Boosting

深入解析:机器学习算法之Boostingpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; f…...

GW1NSR-4C硬核MCU的硬件SPI问题

在官方库的基础上使用硬件spi时发现,在发送和接收数据时,片选线无法正常拉高拉低。但在测试时发现下面这段代码在地址为0x01时片选线一直为低电平,在0x00或者其他值的时候一直为高电平。SPI_Select_Slave(0x00); //Select SPI slave于是将这段代码作为片选线的控制语句,…...

NKOJ全TJ计划——NP11793

题目内容 33DAI 进入了一个\(n\)行\(n\)列的二维数组。数组中每个位置都有一只羊,第\(i\)行第\(j\)列的羊的重量是\(a_{i,j}\)。 33DAI 一开始在\(a_{1,1}\)的位置,每次可以往右一步或者往下一步。即可以从\(a_{x,y}\)走到\(a_{x+1,y}\)或者\(a_{x,y+1}\)。但是不能走出这个数…...

Python天猫订单数据与日化商品销售数据RFM模型应用可视化分析

全文链接:https://tecdat.cn/?p=43860原文出处:拓端抖音号@拓端tecdat分析师:Jiaxin Yao在电商行业快速发展的背景下,订单数据与商品销售数据已成为企业优化运营、提升效益的核心资产。通过对这些数据的深度分析,不仅能挖掘销售趋势、地区消费差异,还能精准识别客户价值…...

JBoltAI重塑智能检索:问题重写与混合检索如何破解企业RAG应用瓶颈

JBoltAI重塑智能检索:问题重写与混合检索如何破解企业RAG应用瓶颈当前,生成式AI技术正在席卷全球各行业。然而,传统RAG系统在实际部署中面临两大核心痛点:查询意图理解偏差和检索召回率低下。这直接导致企业AI应用效果不尽如人意——要么找不到正确答案,要么生成的内容与实…...

Springcloud Alibaba从入门到入土(一)

一、什么是微服务微服务是一种架构风格,代表一种通过将应用程序拆分为一个个小型的、独立的功能模块(服务)的开发方式。 每个模块(服务)实现独立的业务功能(不限制开发语言),服务之间通过轻量化的通信机制(HTTP、REST、消息队列)进行交互 微服务架构的核心思想是解耦…...

JBoltAI函数调用技术:自然语言即可查询数据库,重构企业数据交互方式

JBoltAI函数调用技术:自然语言即可查询数据库,重构企业数据交互方式AI正在重构企业数据交互方式在当今数据驱动的商业环境中,企业数据库里沉淀着大量宝贵信息:客户行为、销售趋势、运营效率等关键洞察。然而,这些数据的获取却长期依赖技术团队编写SQL查询,形成了业务与数…...

JBoltAI文档提取技术:企业智能升级的数据解锁之道

JBoltAI文档提取技术:企业智能升级的数据解锁之道企业数字化转型的下一站:从“数据沉淀”到“价值提取”当前,全球企业正从“数字化转型”迈入“智能化升级”的关键阶段。据《中国企业智能化升级报告2025》显示,83%的中大型企业表示,数字化后的“数据孤岛”、“流程割裂”…...

题解:CF645B Mischievous Mess Makers

Solution 为了让逆序对数量尽量多,每次要交换 \(i\) 和 \(n - i + 1\),然后把每一次的结果累加起来,答案就是 \(\sum_{i=1}^{\min\left(\lfloor{\frac{n}{2}}\rfloor,k\right)}\left(2 \times \left(n - i + 1\right) + 1\right)\)。 Code 完整代码如下 #include <bits/st…...

题解:CF1076C Meme Problem

Solution 由韦达定理得,因为 \(a + b = d\) 且 \(a \times b = d\),所以 \(a\),\(b\) 就是方程 \(x^2 - d \times x + d = 0\) 的实数根,只要判断方程有无实根就可以了。 Code 完整代码如下 #include <bits/stdc++.h> using namespace std; double d; int main() {in…...

视频讲解|Python用ResNet残差神经网络在大脑出血CT图像描数据预测应用

全文链接:https://tecdat.cn/?p=43843原文出处:拓端抖音号@拓端tecdat分析师:Zikun Zhang视频讲解Python用ResNet残差神经网络在大脑出血CT图像描数据预测在临床医疗影像诊断中,大脑出血的快速准确识别直接关系到患者的救治效率——CT影像作为常用检查手段,传统人工阅片不…...

题解:CF1188A1 Add on a Tree

Solution 我们可以先计算每个节点的度。 若 \(deg_i = 1\),只有一条边,可以变成任意值。 若 \(deg_i = 2\),两条边会同时加上一个任意实数,但如果要求这两条边不相等,就无法做到。 若 \(deg_i \ge 3\),以 \(deg_i = 3\) 为例,可以先把这三条边的边权变为 \(0\),然后就可…...

CSP-S 9.9

赛时: 6:00:发题,一眼不会 BCD 6:03:一眼秒了 A,快速写了一个线段树,然后发现可以用树状数组,最后发现直接记录最大值和次大值就可以了。 6:10:写完了,发现恶心大样例: 1 999999胡:你就说满不满足子任务 2 吧。 好吧完全不拍,直接写 T3。 8:30:想到了一个伪正解:…...