大模型--位置编码的进化

举报
剑指南天 发表于 2026/05/01 14:31:58 2026/05/01
【摘要】 “猫吃鱼”和“鱼吃猫”?

1.概述

Transformer 模型并行处理所有位置的信息,这带来了显著的计算效率提升,却也引发了一个问题:Transformer 无法捕捉词语之间的顺序关系。换句话说,在没有额外机制的情况下,Transformer 无法区分“猫吃鱼”和“鱼吃猫”这类语序不同但词汇相同的句子。因此,需要向输入中显式加入位置编码(Position Encoding),以补充序列的位置信息。随着模型规模扩大与更长的上下文,位置编码的设计也在不断演进,保证更稳定的训练特性。

2.正余弦位置编码

正余弦位置编码(Sinusoidal Positional Encoding)是原始Transformer 中采用的位置编码方式,它通过一组预定义的正弦与余弦函数为每个序列位置生成唯一向量:

数学原理:

其中,仅有最后一项(框住的)明确体现了位置编码之间的相互作用,也是唯一直接与相对位置相关的部分。但由于矩阵A是可学习的参数,会在训练中不断变化,导致正余弦编码体现出来的相对位置信息不稳定,也影响了训练的稳定性和模型的泛化表现。问题发生的原因主要是位置编码向量经过和词向量相加,然后线性映射导致的。

3. 可学习的位置编码

可学习位置编码(Learned Positional Embedding)曾广泛应用于早期的Transformer预训练模型(Bert,GPT-1/2等)中。在这种方法中,模型为序列中的每个位置分配一个独立的可训练向量,这些向量在训练过程中与模型的其他参数一同更新,使模型能够从实际任务数据中自动学习位置表示。

Embedding的两个必选参数num_embeddings,embedding_dim。num_embeddings是模型输入上下文长度的上限,embedding_dim和词的embedding_dim一致。

优点:

(1)灵活性高

位置向量完全由数据驱动学习,不受固定数学函数约束,因此能够更贴合训练语料的分布特点。

(2)训练方式简单

其形式与词向量一致,便于直接集成到 Transformer 中。

不足:

(1)锁死输入长下文长度的上限。

(2)参数量随输入上下文长度的上限线性增长

4. 旋转位置编码(Rotary Position Embedding,RoPE)

正余弦位置编码问题的原因是位置编码向量经过和词向量相加,然后线性映射导致的。所以国内研究者苏剑林提出将RoPE 直接作用于 q 和 k 向量本身,使注意力计算能够更好地体现 token 之间的相对位置关系。

RoPE 的设计目标是让注意力得分能够直接体现 token 之间的相对位置差。这一目标可以简化表示为:

即注意力评分仅依赖于第m个位置的 query 向量qm和第n个位置的 key 向量kn,以及两者之间的相对位置关系 m-n。

为实现这一目标,RoPE 将 q 和 k 向量按维度两两分组,把每一对相邻维度视为一个二维子向量,并对每个二维子向量施加与位置及维度相关的旋转。

位置为m的token,其q和k向量的第i对二维子向量会旋转m.θi的角度,θi的定义如下:

其中d表示q和k向量的维度

数学证明:

旋转矩阵的数学原理:

(1) 二维向量绕原点的旋转可被视作由特定二维矩阵线性变换得到

设有二维向量X=(a,b),其模为r,与x轴的夹角为α 。根据几何关系可写为a=rcosα,b=rsinα。

现在将该向X绕原点逆时针旋转θ得到新向量X`.设定X`=(a',b')。所以a'=rcos(α+θ),b'=rsin(α+θ) 。

根据三角恒等式

得到a'=rcos(α+θ)=r(cosαcosθ-sinαsinθ)=αcosθ-bsinθ,b'=rsin(α+θ)=r(sinαcosθ+cosαsinθ)=αsinθ+bcosθ。

将其写成矩阵形式为:

二维向量绕原点旋转θ的操作可以由以下矩阵线性实现:

R(θ)即为标准的二维旋转矩阵。

(2)旋转矩阵的叠加性(连续多次旋转可等价于一次旋转)

设有二维向量X,将X在空间先旋转θ1,再旋转θ2,完全等价于将X直接旋转(θ12)。

X先旋转θ1,则R(θ1)X,再旋转θ2,则得到R(θ2)R(θ1)X;

X旋转(θ12),则得到R(θ1+θ2)X

所以R(θ1)R(θ2)=R(θ1+θ2)

(3)旋转矩阵的转置

二维旋转矩阵为,转置后为,R(θ)T==R(-θ).

所以R(θ)T=R(-θ)。

RoPE实现其设计目标的数学原理:

以位置m对位置n的注意力评分为例,位置m的q向量中的第i对二维子向量qm,i需要旋转mθi度,其旋转由二维旋转矩阵R(mθi)实现:

旋转后的子向量为q`m,i=R(mθi)qm,i

位置n的k向量中的第i对二维子向量kn,i需要旋转nθi度,其旋转由二维旋转矩阵R(nθi)实现:

旋转后的子向量为k`n,i=R(nθi)kn,i

位置m对位置n的注意力评分中,第i对二维子向量的贡献为:

q`m,i(k`n,i)T=(kn,i)TR(nθi)T . (R(mθi)qm,i=(kn,i)TR(nθi)T . R(mθi)qm,i=(kn,i)T . (R(nθi)TR(mθi)) . qm,i=(kn,i)T . (R(-nθi)R(mθi)) . qm,i=(kn,i)T . R(θi(m-n)) . qm,i

所以score(m,n)=q`mk`nT=q`m,0(k`n,0)T+q`m,1(k`n,1)T + ...=(kn,0)T . R(θ0(m-n)) . qm,0 + (kn,1)T . R(θ1(m-n)) . qm,1 + ...

即证明score(m,n)=func(qm,kn,m-n)成立!

优点:

(1)旋转后注意力得分天然依赖 m-n,直接表达相对位置关系。

(2)数学结构固定,不随训练破坏几何性质。

(3)具有正余弦位置编码的特点,不受输入上下文长度的限制。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。