惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
WordPress大学
WordPress大学
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
MyScale Blog
MyScale Blog
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
P
Proofpoint News Feed
D
DataBreaches.Net

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
从零学习大模型(5)——位置编码:让 AI 读懂 “语序” 的关键技术
金融产品小兵 · 2025-07-29 · via 人人都是产品经理

在 Transformer 架构中,有一个容易被忽略却至关重要的模块 —— 位置编码(Positional Encoding,PE)。如果说注意力机制让模型能 “理解关联”,前馈神经网络让模型能 “提纯特征”,那么位置编码的作用就是让模型能 “感知顺序”。

人类语言中,语序直接决定语义:“我打了你” 和 “你打了我” 仅因语序不同,含义完全相反。而 Transformer 的注意力机制是 “并行计算”(同时处理所有词),天然缺乏对语序的感知 —— 若没有位置编码,模型会把 “我打了你” 和 “你打了我” 视为相同的输入。位置编码的核心功能,就是给每个词 “打上位置标签”,让模型知道 “谁在前,谁在后”。

理想的位置编码需要满足三个条件。位置唯一性,即不同位置的编码向量必须不同;距离相关性,位置越近的词,编码向量越相似(如位置 2 和 3 的相似度高于 2 和 10);长度适应性,能适配任意长度的句子(训练时用 100 词,推理时能处理 200 词)。接下来介绍的所有位置编码方案,都是围绕这三个条件设计的。

绝对位置编码:给每个位置一个 “唯一身份证”

绝对位置编码的核心思路是:为每个位置分配一个固定的编码向量(如位置 0 对应向量 A,位置 1 对应向量 B),无论句子内容如何,位置 n 的编码始终不变。这种 “一一对应” 的设计能保证 “位置唯一性”,是早期 Transformer 的主流选择。

1. 正余弦位置编码(Sinusoidal PE):原始 Transformer 的选择

Transformer 原始论文提出的正余弦编码,是最经典的绝对位置编码方案。它通过正弦和余弦函数生成位置向量,公式如下:

其中,pos 是词的位置(0,1,2,…),i 是向量维度(0 到 d_model-1),d_model 是嵌入维度(如 512)。

正余弦编码的设计有其巧妙之处。在位置唯一性上,不同 pos 的正弦 / 余弦值不同(如 pos=0 时 sin (0)=0,pos=1 时 sin (1/10000^…)≠0);距离相关性方面,位置越近的词,编码向量越相似(如位置 2 和 3 的相似度高于 2 和 10);长度适应性上,正弦 / 余弦是周期函数,可无限生成任意 pos 的编码(即使句子长度超过训练时的最大长度)。例如对于 512 维的嵌入向量,位置 0 的编码向量前几个维度为 [sin (0), cos (0), sin (0), cos (0), …] = [0, 1, 0, 1, …],位置 1 的编码向量前几个维度为 [sin (1/10000^0), cos (1/10000^0), sin (1/10000^(2/512)), cos (1/10000^(2/512)), …],这些向量的差异清晰反映了位置差异。

不过,绝对位置编码存在共性问题,即外推能力弱 —— 当句子长度超过训练时的最大长度(如训练用 512 词,推理用 1024 词),新增位置(512-1023)的编码向量在训练中从未出现过,模型无法准确理解其位置关系。

2. 可学习位置编码(Learned PE):BERT 等模型的选择

可学习位置编码的思路更直接:随机初始化一组位置向量(如位置 0 到 511 各对应一个向量),通过训练让模型自动学习最优的位置表示。

例如训练时最大句子长度为 512,则初始化一个 512×d_model 的矩阵(每行对应一个位置的编码),这个矩阵会像嵌入层一样参与模型的参数更新 —— 模型在学习 “猫追狗” 的语义时,也会同步学习 “猫在位置 0,狗在位置 2” 的位置关联。

可学习位置编码的优势在于灵活性更高,无需人工设计函数,模型可根据任务自动调整位置编码(如在诗歌生成任务中,对押韵位置更敏感),而且在训练长度范围内,可学习编码通常比正余弦编码的效果略优。但它的外推能力极差,训练时未见过的位置(如 512 以上)没有对应的编码向量,无法直接处理长于训练长度的句子,同时泛化性弱,针对特定长度训练的编码,迁移到其他长度时性能下降明显。因此,可学习位置编码更适合 “固定长度任务”(如句子分类,输入长度固定为 512),但不适合需要处理变长文本的场景(如文档生成)。

相对位置编码:关注 “相对距离” 而非 “绝对位置”

绝对位置编码的 “外推困境” 源于对 “绝对位置” 的依赖 —— 位置 512 的编码对模型而言是全新的。相对位置编码则另辟蹊径:不编码绝对位置,只编码 “词与词之间的相对距离”(如 A 在 B 前面 3 个位置)。

这种设计的优势在于:相对距离是 “有限且可复用” 的(如相对距离 -2、-1、0、1、2 覆盖了大部分关联),即使句子长度超过训练范围,相对距离的编码仍能复用训练时学到的规律。

1. 自注意力中的相对位置建模:Transformer-XL 的改进

Transformer-XL 首次将相对位置信息引入注意力计算。在传统注意力中,分数计算为 Attention (Q, K) = Softmax ((QK^T) / √d_k),而 Transformer-XL 修改为 Attention (Q, K, R) = Softmax ((Q (K^T + R^T)) / √d_k),其中 R 是 “相对位置编码矩阵”(存储相对距离为 -1、-2、…、+2 的编码)。这意味着注意力分数不仅取决于词的内容(Q 和 K),还取决于它们的相对距离(R)。

例如计算 “狗” 对 “猫” 的注意力时,若 “猫” 在 “狗” 前面 2 个位置,就会加入 “相对距离 +2” 的编码 —— 这种关联在短句子和长句子中是一致的,因此模型能自然外推到更长文本。

2. ROPE(Rotary Position Embedding):LLaMA、GPT-4 等大模型的主流选择

ROPE(旋转位置编码)是目前最成功的相对位置编码方案之一,它通过 “向量旋转” 实现相对位置建模,兼顾了计算效率和外推能力。

ROPE 的关键 insight 是:两个词的相对位置可以通过 “其中一个词的向量旋转一定角度” 来表示。具体来说,对位置为 m 的词向量 q_m,用旋转矩阵 R_m 进行旋转;对位置为 n 的词向量 k_n,用旋转矩阵 R_n 进行旋转;旋转后的内积 q_m^T R_m^T R_n k_n = q_m^T R_{n-m} k_n(仅与相对距离 n-m 有关)。

这意味着:注意力分数只取决于词的内容和相对距离,与绝对位置无关。例如 “猫” 在位置 2,“狗” 在位置 5(相对距离 +3),和 “猫” 在位置 102,“狗” 在位置 105(相对距离 +3)的注意力分数计算方式完全相同。

ROPE 的优势在于完美外推,相对距离的编码是固定的(如相对距离 3 的旋转角度固定),无论句子多长,模型都能复用训练时学到的相对位置规律;计算高效,旋转操作可在复数域高效实现(无需额外存储大矩阵),几乎不增加计算开销;而且兼容性强,可无缝集成到现有 Transformer 架构,无需修改注意力机制的核心逻辑。正是这些优势,让 ROPE 成为大模型处理长文本的 “标配”——LLaMA 2 支持 4096 长度,GPT-4 支持 128000 长度,都离不开 ROPE 的贡献。

3. ALiBi(Attention with Linear Biases):简化的相对位置建模

ALiBi 是一种更轻量的相对位置编码方案,它不修改词向量,而是直接给注意力分数添加一个 “基于相对距离的偏置”。

具体来说,当两个词的相对距离为 k 时,ALiBi 在注意力分数上减去一个与 k 成正比的偏置(如距离 k 的偏置为 -m×|k|,m 是可学习参数)。这种设计的逻辑是:相对距离越远,注意力分数的惩罚越大(符合人类阅读时 “近邻词关联更强” 的规律)。

ALiBi 的优势在于极致简洁,无需修改嵌入向量或注意力计算,只需添加一个偏置项,实现成本极低,同时外推性好,相对距离的偏置规则(如距离越远惩罚越大)可直接应用于长句子,而且适合小模型,计算开销比 ROPE 更小,在资源受限的场景(如移动端)表现优异。不过它的精度略低,偏置的线性假设(距离与惩罚成正比)不如 ROPE 的旋转编码精准,在超长文本(如 10 万词)中性能略逊于 ROPE。

长度外推策略:让模型处理 “超长文本” 的技巧

即使采用相对位置编码,模型处理远超训练长度的文本(如训练用 4096 词,推理用 16384 词)时,仍可能出现性能下降。这是因为长文本会带来新的挑战:注意力计算的噪声累积、长距离依赖的稀释。研究者们为此设计了多种 “长度外推策略”。

1. 位置插值(Position Interpolation):缩放现有位置编码

位置插值是最常用的外推方法,核心思路是:将超长文本的位置 “压缩” 到训练时的位置范围内。例如训练长度为 4096,推理时要处理 16384,则将位置 4096 映射为 1024,位置 8192 映射为 2048(相当于按 1/4 比例缩放)。

这种方法对 ROPE 特别有效:旋转角度与位置成正比,缩放位置等价于缩放旋转角度 —— 模型可通过插值学习长距离的相对位置规律。LLaMA 2 通过位置插值,能将上下文长度从 4096 扩展到 16384,性能仅下降 5% 左右。

2. YARN(Yet Another Rotation-based Position Embedding):动态调整旋转周期

YARN 针对 ROPE 在超长距离(如 10 万词)的性能下降问题,提出 “动态旋转周期”:短距离(如 0-1000 词)使用小周期旋转(角度变化快),保证精细的位置区分;长距离(如 1000-10 万词)使用大周期旋转(角度变化慢),避免旋转过度导致的信息丢失。

这种 “远近有别” 的设计,让 ROPE 在兼顾短距离精度的同时,能更好地处理长距离关联。实验显示,YARN 可将 LLaMA 的有效上下文长度扩展到 10 万词以上,且长距离推理性能提升 30%。

3. 滑动窗口注意力:牺牲全局关联换取效率

当文本长度超过模型设计上限(如 100 万词)时,即使有外推策略,全局注意力的计算量也会爆炸(O (n²) 复杂度)。滑动窗口注意力通过 “限制注意力范围” 降低计算量:每个词只关注前后 k 个词(如窗口大小为 2048);对超长篇文档,按窗口滑动处理(如先处理 1-2048 词,再处理 1025-3072 词)。

滑动窗口注意力的优势是计算量从 O (n²) 降至 O (n×k),可处理百万级长度文本,但它无法捕捉窗口外的长距离关联(如文档开头和结尾的呼应),适合对全局关联要求低的任务(如文本摘要)。

各大模型的长上下文处理方案:从设计到实践

不同模型根据任务需求和计算资源,选择了不同的位置编码和外推策略,形成了各具特色的长上下文能力。GPT-4 采用 ROPE 作为基础位置编码,结合动态窗口和 YARN 改进的长度外推策略,支持 128000 的最大长度,兼顾超长长度和全局关联。LLaMA 2 同样以 ROPE 为基础,使用位置插值的外推策略,基础版支持 4096 长度,扩展版能支持 100000 以上,开源友好且外推成本低。BERT 采用可学习编码,通过截断和 Padding 处理长度,支持 512 的最大长度,适合固定长度理解任务。Transformer-XL 运用相对位置编码,借助片段缓存(Memory)的外推方式,支持 8192 长度,擅长长文档连贯生成。Mixtral 基于 ROPE,结合滑动窗口和分组注意力,支持 32768 长度,效率极高,适合实时对话。

这些方案的共同趋势是:以 ROPE 为基础,结合动态外推策略,在效率与长距离关联间找平衡 —— 对需要全局理解的任务(如法律文档分析),牺牲部分效率保留全局注意力;对实时性要求高的任务(如聊天机器人),用滑动窗口换取速度。

未来方向:从 “能处理长文本” 到 “能理解长逻辑”

当前位置编码的研究已从 “如何处理更长文本” 转向 “如何更好地理解长距离逻辑”。例如逻辑感知位置编码,在编码中融入文本的结构信息(如段落边界、标点符号),让模型区分 “句子内关联” 和 “段落间关联”;动态注意力窗口,根据文本内容自动调整窗口大小(如在逻辑密集段用小窗口聚焦,在叙述段用大窗口捕捉全局);多尺度位置编码,同时编码词级、句级、段落级的位置信息,适配不同粒度的关联学习。

这些方向的探索,将让大模型不仅能 “读完” 一本百万字的书,更能 “读懂” 书中的逻辑脉络 —— 这才是长上下文处理的终极目标。

结语:位置编码的 “简单与深刻”

位置编码的设计看似只是 “给词加位置标签”,却蕴含着深度学习的核心智慧:好的结构设计比单纯增加参数更重要。从正余弦编码的人工设计,到 ROPE 的数学优雅,再到 ALiBi 的极简思路,每一次进步都不是因为更复杂的计算,而是对 “位置信息本质” 的更深刻理解 —— 模型需要的不是 “绝对位置的数值”,而是 “相对关系的规律”。

当我们看到 AI 能生成万字小说、分析整本书的主题时,不要忽略背后位置编码的贡献 —— 正是这些 “看不见的向量”,让模型能像人类一样 “按顺序理解语言”,最终跨越 “词” 的局限,触及 “语义” 的本质。

未来,随着长上下文需求的不断提升,位置编码仍将是大模型创新的关键支点 —— 毕竟,理解语言的第一步,是先知道 “谁在前,谁在后”。

本文由 @红岸小兵 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务