想象你是一家电影院的经理。Transformer 模型就像一间放映厅,每个 token(词)是买票入场的观众,自注意力机制让观众互相张望、交流信息。可一旦不告诉大家座位在哪儿,全场只会乱成一团。位置编码,就是影院里的“导座系统”。 最早的方案是印死座位号——绝对位置编码,票上写“3排5座”就是“3排5座”;后来换成了地面上的波浪纹——Sinusoidal,用波纹相位指示方位;接着每位观众发一只罗盘——RoPE,转动手腕就能算清彼此的相对方向;再后来干脆只留一束聚光灯——ALiBi,近大远小,越远越模糊;最后有人连灯都关了——NoPE,让大家按入场顺序排队,靠秩序本身传递位置。 这条演进路线的核心诉求始终只有一个:当影院不断扩建(序列无限变长)时,导座系统不能失效。本文带你依次体验这五套方案,理解它们的优劣与选型逻辑——这也是大模型长上下文时代最值得跟进的架构演化之一。

岗位关联

掌握位置编码演进史,是理解大模型长度外推、架构选型(Llama/Qwen 为何用 RoPE)的必修课,也是 LLM 面试和工程实践的高频考点。

目录
  1. 可视化演示
  2. 绝对位置编码
  3. Sinusoidal正弦
  4. RoPE旋转编码
  5. ALiBi线性偏置
  6. NoPE无位置
  7. 演进驱动因素
  8. 方案对比选型
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示Sinusoidal正弦编码波形、RoPE旋转向量相对位置建模及ALiBi线性偏置长度外推原理。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Sinusoidal编码 正弦余弦不同频率编码位置信息 偶数维sin奇数维cos交替排列 高频维度捕捉局部低频捕捉全局

绝对位置编码

假设你开了一家小影院,座位一共 512 个。最省心的导座方式是什么?把座位号印在票上——“3排5座”就是“3排5座”,观众照着找。早期 Transformer 实践(如 BERT、GPT-2)的思路就是这样:给每个位置分配一个固定编号,绝不更改。

在模型里,“座位号”是一个可学习的向量。流程分两步:先用位置编号去查一张位置表,取出第 pos 行的向量;再把它与词向量相加,一起送入 Transformer 处理。模型在训练中反复看到“位置 0 的向量总是配上位置 0 的词”,于是学会了把编号当作理解语序的线索。

这种方案的毛病在于:编号是“背”出来的。训练时只见过 0 到 L-1 号座位,推理时序列一旦超过 L,位置表直接越界;即便强行插值,模型也从未见过长距离下的注意力分布,困惑度迅速恶化。

座位号帮不了 513 号以后的观众——不是他们不存在,而是票上根本没印过这个号。这就是绝对位置编码的天花板:它教给模型的是“编号表”,而不是“距离规则”。

xpos=Embed(wpos)+Wpe[pos]\displaystyle x_{pos} = \text{Embed}(w_{pos}) + W_{pe}[pos]
把词向量和位置向量相加,就是把“词义”和“座位号”缝在一起交给 Transformer。
  1. 词嵌入映射把第 pos 个位置的词 w 送入嵌入层,得到表示词义的稠密向量。
    Embed(wpos)∈Rd\displaystyle \text{Embed}(w_{pos}) \in \mathbb{R}^{d}
  2. 位置索引查表用位置编号 pos 在可学习的位置矩阵 W_pe 中取第 pos 行,得到位置向量。
    Wpe[pos]∈Rd\displaystyle W_{pe}[pos] \in \mathbb{R}^{d}
  3. 逐元素相加词向量与位置向量按位相加,合成带位置信息的输入向量。
    xpos=Embed(wpos)+Wpe[pos]\displaystyle x_{pos} = \text{Embed}(w_{pos}) + W_{pe}[pos]

Sinusoidal正弦

影院扩建到 2048 座,经理决定不印座位号了,改在地上画波浪纹:每个位置有一组独特的波纹相位,离原点越远,波纹形状越不同。这就是 Sinusoidal 的直觉——用周期性波形标记位置。

原始 Transformer 论文提出了这套公式:不学习任何参数,直接按位置和维度计算正余弦值。低频维度波长很长,像大波浪;高频维度波长很短,像细涟漪。不同频率的波纹叠加,得到每个位置独一无二的“波纹签名”。

它有两个令人惊艳的数学性质。第一,公式对任意位置都成立,理论上能算到无限远;第二,对任一固定偏移 k,PE(pos+k) 都可以由 PE(pos) 的线性变换得到,模型因此能间接表达相对位置。可惜实战中外推依然不理想:公式“算得出”不等于模型“用得好”,训练时注意力权重只在短距离上充分磨合过。

波纹可以画到还没盖好的场馆墙上,但观众从未在那么远的地方排练过认路,依然会迷路。Sinusoidal 解决了“位置向量从哪来”,却没有解决“模型怎么理解远距离”。

PE(pos,2i)=sin⁡(pos100002i/d),PE(pos,2i+1)=cos⁡(pos100002i/d)\displaystyle PE_{(pos,2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right), \quad PE_{(pos,2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right)
正余弦像不同频率的波纹,相位由位置决定;任何位置都能“照公式”算出波纹高度,但模型未必学会了读远处的波纹。
  1. 位置序号 pos词在序列中的绝对下标,从 0 开始计数。
    pos∈{0,1,2,…,L−1}\displaystyle pos \in \{0, 1, 2, \ldots, L-1\}
  2. 维度下标 i位置向量的总维度 d 被分成 d/2 组,每组对应一种频率。
    i∈{0,1,…,d/2−1}\displaystyle i \in \{0, 1, \ldots, d/2 - 1\}
  3. 波长缩放分母随 i 增大呈指数增长,使低维用短波、高维用长波。
    λi=100002i/d\displaystyle \lambda_i = 10000^{2i/d}
  4. 正余弦配对偶维填正弦、奇维填余弦,同一种频率用两个函数配对编码。
    PE(pos,2i)=sin⁡(pos/λi),PE(pos,2i+1)=cos⁡(pos/λi)\displaystyle PE_{(pos,2i)} = \sin(pos / \lambda_i), \quad PE_{(pos,2i+1)} = \cos(pos / \lambda_i)

RoPE旋转编码

经理换了一种思路:不给观众发座位号,而是发一只罗盘。想知道和某人的相对方位?不用查任何表,转一下罗盘,看指针夹角就行。RoPE 正是把“位置”变成了“旋转角度”。

在 Transformer 内部,每个词会生成一对向量:查询 q(“我想找什么”)和键 k(“我携带什么”)。RoPE 不把位置向量加进来,而是在特征空间中按位置旋转:位置 m 的词把 q 旋转 m 个角度,位置 n 的词把 k 旋转 n 个角度,两向量再做点积。

点积时旋转角会相减,只剩下 (n-m) 的相对角——结果天然只依赖两个词的相对距离。旋转不改变向量长度,语义不被扭曲;高频维度转得快、编码近距细节,低频维度转得慢、承载远距结构,形成自然的“远端衰减”:远处词的分数平稳下降但不突变。正因为这种几何性质,RoPE 成为 Llama、Qwen、PaLM 等主流大模型的位置编码标配。

罗盘不背任何号码,只认“相对方位”一条规则,所以影院扩到再大,观众都能现场算出彼此距离。RoPE 把位置编码从“记忆负担”变成了“几何规则”,这正是它能外推的根源。

qmTkn=(Rmq)T(Rnk)=qTRn−mk\displaystyle q_m^T k_n = (R_m q)^T (R_n k) = q^T R_{n-m} k
把 q、k 看成表盘指针,按位置转角度;两针的夹角,就是两个词的相对位置。
  1. 二维旋转矩阵对每对特征维度施加旋转,旋转角为位置 m 与基准角度的乘积。
    Rm=(cos⁡(mθ)−sin⁡(mθ)sin⁡(mθ)cos⁡(mθ))\displaystyle R_m = \begin{pmatrix} \cos(m\theta) & -\sin(m\theta) \\ \sin(m\theta) & \cos(m\theta) \end{pmatrix}
  2. 分别旋转后点积查询向量旋转 m、键向量旋转 n,再做内积得到注意力分数。
    (Rmq)T(Rnk)\displaystyle (R_m q)^T (R_n k)
  3. 角度差合并旋转矩阵复合后只剩相对角 (n-m)θ,点积只依赖相对位置而非绝对位置。
    qTRn−mk\displaystyle q^T R_{n-m} k

ALiBi线性偏置

还有更彻底的方案:什么都不发,只在天花板上装一束聚光灯。观众只凭一条直觉行事——离我越近的人,我看得越清楚;离我越远,越模糊。ALiBi 就是这条“近大远小”直觉的数学化。

ALiBi(Attention with Linear Biases)完全放弃位置嵌入,直接修改注意力分数:在标准的缩放点积分数上,按两个位置的间隔 |i-j| 减去一个线性惩罚 m·|i-j|。距离越远,扣分越多,经过 softmax 归一化后权重自然衰减。

这个方案零新增参数,训练更快更稳;惩罚只依赖距离而不依赖具体编号,天然与序列长度解耦,外推行为平滑单调——更远的位置只是“更暗”,而不是“没定义”。因此 MPT、Mistral 早期版本等模型都验证或采用了类似思路。代价是线性惩罚比较粗糙:区分“远和近”很强,但区分“3 和 5”这种细粒度间隔的能力弱于 RoPE。

聚光灯方案的妙处在于:规则与影院大小无关。哪怕座席从 2k 加到 128k,观众永远只需记住“近大远小”四个字——这就是 ALiBi 外推稳、零成本的秘密。

score(i,j)=qi⋅kjdk−m⋅∣i−j∣\displaystyle \text{score}(i,j) = \frac{q_i \cdot k_j}{\sqrt{d_k}} - m \cdot |i - j|
在原始的“眼缘分数”上按距离扣分:距离每远一格,就扣掉 m 分。
  1. 缩放点积衡量词 i 与词 j 的语义匹配度,除以根号 d_k 以稳定分数方差。
    qi⋅kjdk\displaystyle \frac{q_i \cdot k_j}{\sqrt{d_k}}
  2. 相对距离两个位置在序列中的间隔,恒为非负整数。
    ∣i−j∣\displaystyle |i - j|
  3. 斜率系数 m每个注意力头使用不同的斜率,按几何序列递减。
    mh=2−8(h+1)/H\displaystyle m_h = 2^{-8(h+1)/H}
  4. 线性距离惩罚从原始分数中减去距离乘以斜率,距离越远分数越低。
    score(i,j)=qi⋅kjdk−m⋅∣i−j∣\displaystyle \text{score}(i,j) = \frac{q_i \cdot k_j}{\sqrt{d_k}} - m \cdot |i-j|

NoPE无位置

最激进的经理决定:票也不发,罗盘也不发,聚光灯也关掉,让观众按入场顺序自动排队坐好。没有座位信息,大家还能好好交流吗?NoPE 实验告诉你:多数情况下,能。

NoPE(No Positional Encoding)指完全不注入位置编码。研究者把 OPT、BLOOM 等模型的位置编码直接去掉后重新训练,发现很多分类、生成任务上效果几乎不掉,甚至某些指标反超。位置信息并没有消失,只是换了来源。

来源主要有三个。第一是因果掩码:因果语言模型里每个位置只能看到前面的 token,可见集合不同,softmax 的归一化分母就携带了“前面有几个词”的信号。第二是锚点 token:句首、分隔符固定在最前面,模型可以把它当零点,推算其他位置的相对距离。第三是 token 自身:长文档里某些词天然更常出现在靠前位置。不过这套隐式信号很脆弱:对随机初始化异常敏感,长上下文外推也明显不如 RoPE 与 ALiBi 稳定。

排队的人凭“前面有几个人”也能找到大致方位,但这份秩序没有票和罗盘牢靠——一旦有人插队(换初始化),位置感就乱了。NoPE 的价值在于提醒我们:位置信息可以不显式画出来,模型自己有办法“偷听”到顺序。

Attention(Q,K,V)=softmax(QKTdk)V\displaystyle \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
注意力照常计算,只是没有了位置项;因果掩码偷偷在归一化里留下了“前面有几个词”的线索。
  1. 查询键值三矩阵由输入线性变换得到 Q、K、V,分别负责询问、匹配与取值。
    Q=XWQ,K=XWK,V=XWV\displaystyle Q = XW_Q, \quad K = XW_K, \quad V = XW_V
  2. 注意力分数Q 与 K 转置相乘再缩放,衡量两两相似度。
    QKTdk\displaystyle \frac{QK^T}{\sqrt{d_k}}
  3. 因果掩码把上三角位置置为负无穷,使每个位置只能看到自己及之前的位置。
    mask(i,j)=−∞(j>i)\displaystyle \text{mask}(i,j) = -\infty \quad (j > i)
  4. 归一化加权对分数做 softmax 得到权重,再对 V 加权求和完成信息聚合。
    softmax(⋅)V\displaystyle \text{softmax}(\cdot) V

演进驱动因素

为什么影院从座位号一路折腾到排队?因为观众数从 512 涨到了几万,扩建从未停止。Transformer 的压力一模一样:训练阶段算力有限,序列长度只能压到 4k、8k;部署阶段用户动辄输入 32k、128k 的文档或对话。

这条演进背后有三个驱动器。第一是长度外推:位置编码的目标从“表示位置”升级为“教模型理解距离规则”,因为只有规则能迁移到未见过的长度。第二是训练效率:可学习位置表要存 d×L 个参数,ALiBi、NoPE 直接归零,省显存也省算力。第三是结构简化:少一个位置模块,就少一组“最大长度、维度配比”超参数,架构更干净。

外推为什么这么难?看训练数据就明白了:长度为 L 的序列里,相距 d 的位置对恰好只有 L-d 对。距离越小样本越多,距离越大样本越稀缺——长距离的“注意力经验”模型几乎没练过。外推的本质,就是让模型在没练过的距离上,仍能依靠可泛化的规则做出合理响应。

扩建是唯一不变的主题,而应对扩建的智慧在于:与其背下越来越长的编号表,不如教会观众一种与距离共存的能力。这条演进,本质上是“记忆”向“规则”的迁移。

N(d)=L−d,d∈{1,2,…,L−1}\displaystyle N(d) = L - d, \quad d \in \{1, 2, \ldots, L-1\}
序列越长,长距离的“练习样本”越少——这就是外推难的数学根源。
  1. 序列长度 L训练样本允许的最大长度,例如 2048。
    L\displaystyle L
  2. 距离 d 的定义两个 token 位置之差的绝对值。
    d=∣j−i∣\displaystyle d = |j - i|
  3. 对数统计长度为 L 时,相距 d 的 token 对恰好有 L-d 对,长距离样本天然稀少。
    N(d)=L−d\displaystyle N(d) = L - d

方案对比选型

影院最终发现:没有万能导座方案。社区影院 200 个座,发座位号最省事;演唱会现场 3 万人,聚光灯和罗盘更能兜底。选型也要看场景。

综合外推能力、参数开销、实现复杂度和任务适配度,五种方案可以直观对比:

| 方案 | 额外参数 | 相对位置感知 | 外推表现 | 代表模型 |

| --- | --- | --- | --- | --- |

| 可学习绝对位置 | 有(d×L) | 弱 | 差 | BERT、GPT-2 |

| Sinusoidal | 无 | 中 | 中 | 原始 Transformer |

| RoPE | 无 | 强 | 好 | Llama、Qwen |

| ALiBi | 无 | 强 | 好 | MPT、Mistral |

| NoPE | 无 | 隐式 | 中 | OPT 实验 |

如何量化“外推好不好”?可以计算注意力质心——模型实际把注意力“花”在多远的距离上。外推稳定的编码,有效视距会随序列长度平滑增长;外推崩溃的编码,有效视距会突然失真。

选型建议:通用大模型、长上下文优先 RoPE,配合位置插值或 YaRN 外推;低资源、追求训练速度选 ALiBi;经典短文本任务 Sinusoidal 或绝对位置已够用;想探索位置机制的边界,再上 NoPE,同时备好显式编码做对照。

给观众配票不看品牌,看客流。每种导座方案都有自己的“距离观”:读懂它们的差异,才能给不同场景配最合适的票。

dˉ=∑d=1L−1d⋅s(d)∑d=1L−1s(d)\displaystyle \bar{d} = \frac{\sum_{d=1}^{L-1} d \cdot s(d)}{\sum_{d=1}^{L-1} s(d)}
有效视距越大,说明模型越擅长整合远处信息;外推稳定的编码,有效视距随长度平滑增长。
  1. 平均注意力 s(d)对距离为 d 的所有 token 对求平均注意力分数。
    s(d)=avg{attn(i,j):∣i−j∣=d}\displaystyle s(d) = \text{avg}\{ \text{attn}(i,j) : |i-j| = d \}
  2. 距离加权求和每个距离乘以对应的注意力分数后累加,突出远距离贡献。
    ∑d=1L−1d⋅s(d)\displaystyle \sum_{d=1}^{L-1} d \cdot s(d)
  3. 归一化质心除以总注意力得分,得到注意力分布的重心距离。
    dˉ=∑d=1L−1d⋅s(d)∑d=1L−1s(d)\displaystyle \bar{d} = \frac{\sum_{d=1}^{L-1} d \cdot s(d)}{\sum_{d=1}^{L-1} s(d)}

AI 应用场景

大模型长上下文训练的位置编码选型

阶段:模型预训练与架构设计

解决的问题:传统可学习绝对位置编码把位置表“钉死”在 2k/4k,用户输入 32k 时直接越界;AI 通过 RoPE 的相对旋转特性配合位置插值,把 4k 训练的模型平滑外推到 32k 以上。

具体案例:Llama 2 在 4k 长度上预训练并采用 RoPE,配合 YaRN 线性插值后能稳定处理 32k 上下文;Qwen 系列用 RoPE 加 NTK 动态缩放,把窗口扩展到 128k,同时保持短文本性能不降。

推理引擎中的 KV Cache 位置同步

阶段:推理部署与性能优化

解决的问题:流式生成时位置号每步都在变,若逐 token 重算位置编码,开销巨大;RoPE 的旋转性质让 KV Cache 可以“增量旋转”——已写入缓存的 K 不必重算,只需对新 token 的 K 补转对应角度。

具体案例:vLLM 等推理框架在连续批处理中利用 RoPE 的角度增量特性,对新加入序列的 K 向量做一次性旋转,避免整条序列重新编码,显著降低长对话场景的显存与延迟开销。

因果掩码位置信号的架构精简实验

阶段:算法研究与架构实验

解决的问题:是否所有任务都需要显式位置编码?NoPE 实验帮助团队判断架构中哪些模块是必需的,从而在低资源场景下精简模型。

具体案例:研究者对比 OPT 模型在有/无位置编码下的表现,发现因果语言模型能通过掩码隐式编码位置;后续工作据此在低资源小模型上移除位置嵌入层,在部分分类任务上取得持平甚至更优的效果。

Python 演示

python26 行
import numpy as np def sinusoidal_rel(d, dim=8):    """Sinusoidal 位置向量在距离 d 上的差值能量"""    freq = 1.0 / 10000 ** (2 * np.arange(dim // 2) / dim)    pe0 = np.concatenate([np.sin(0 * freq), np.cos(0 * freq)])    ped = np.concatenate([np.sin(d * freq), np.cos(d * freq)])    return float(np.linalg.norm(pe0 - ped)) def rope_rel_dot(d, dim=8):    """RoPE 中单位向量旋转 d 后的点积和"""    freq = 10000.0 ** (-2 * np.arange(dim // 2) / dim)    return float(np.sum(np.cos(d * freq))) def alibi_bias(d, slope=0.1):    """ALiBi 对距离 d 的线性惩罚"""    return -slope * abs(d) def nope_bias(d):    """NoPE 不提供任何距离相关的显式偏置"""    return 0.0 if __name__ == "__main__":    print("距离 d  Sinusoidal差值  RoPE点积  ALiBi偏置  NoPE偏置")    for d in range(10):        print(f"{d:5d}  {sinusoidal_rel(d):10.3f}  {rope_rel_dot(d):8.3f}  {alibi_bias(d):8.3f}  {nope_bias(d):6.1f}")
目的:用 30 行代码对比四种位置编码对“距离”的响应模式,直观看出为什么 RoPE/ALiBi 更利于长度外推。
  1. pe0 = np.concatenate([np.sin(0 * freq), np.cos(0 * freq)])把偶维正弦、奇维余弦拼成完整位置向量,作为原点参照。
  2. return float(np.linalg.norm(pe0 - ped))用两个位置向量的欧氏距离衡量 Sinusoidal 的“位置差异”。
  3. freq = 10000.0 ** (-2 * np.arange(dim // 2) / dim)RoPE 各维度旋转角速度,低频慢波负责远距结构。
  4. return float(np.sum(np.cos(d * freq)))旋转后内积只依赖角度差,正是 RoPE 相对位置的数学来源。
  5. return -slope * abs(d)ALiBi 的距离惩罚,线性且单调,距离越远扣分越多。
  6. return 0.0NoPE 没有显式距离信号,位置信息全靠因果掩码隐式提供。
  7. print(f"{d:5d} ...")输出对比表,观察不同编码对距离的响应曲线差异。

常见误区

误区反正都是往词向量里加一个向量,用可学习位置还是用公式生成,效果应该差不多吧?我平时改模型从不关心它用哪种位置编码。

正解编码方式决定了模型如何看待“距离”。背编号(绝对位置)只记住了具体的 0、1、2……,而 RoPE/ALiBi 教给模型的是“相对距离规则”,后者才能泛化到没训练过的长度。就像观众背“3排5座”永远推不出 6000 排怎么走,但看懂罗盘就会了。位置编码是模型的归纳偏置,不是可有可无的装饰。

为何常见:从接口看都是“加了一个向量”,差异藏在注意力分数的统计行为里,肉眼不可见,所以容易被低估。

误区Sinusoidal 的公式对任何 pos 都能算出向量,理论上序列多长都不怕,外推能力应该是满分的。

正解公式“可计算”不等于模型“会用”。模型在训练中只见过短距离的注意力分布,长距离下的 softmax 权重没有任何经验支撑,实测外推时困惑度会快速上升。波纹可以画到没盖好的墙上,但观众没在那里排练过,依然会迷路。

为何常见:把“数学上可定义”误当成“模型已学会”,忽略了训练分布对注意力模式的约束。

误区NoPE 既然叫“无位置编码”,那模型一定彻底不知道词的前后顺序,只能靠词序猜。

正解因果掩码让每个 token 的可见集合不同,“前面有几个词”这个信息通过 softmax 归一化项自然泄露进了表征;句首、分隔符还可充当定位锚点。研究发现 NoPE 模型在早期层就形成了隐式位置信号。它只是不显式画位置,不等于模型“听不见”顺序。

为何常见:用“是否显式添加向量”来判断位置信息的存在,但信息完全可以藏在其他模块里。

误区RoPE 记的是相对位置,所以序列长度随便加,外推应该没有上限。

正解RoPE 的外推确实优于早期方案,但超过训练长度 2-4 倍后性能仍会明显下降。低频波长接近训练长度时表现才稳,再远就需要配合线性插值、NTK-Aware 缩放或 YaRN 等技巧恢复长距离精度。远端衰减只是缓解,不是解决。

为何常见:把“相对位置公式”与外推能力直接画等号,忽略了注意力分布仍受训练长度约束这一事实。

误区RoPE 有旋转矩阵、很多模型在用,ALiBi 就是个固定减法,肯定更弱。

正解ALiBi 用硬编码的线性惩罚提供了极强的“近大远小”先验:零参数、训练稳定、外推平滑,MPT、Mistral 早期版本等模型的表现验证了它的实用价值。RoPE 的优势在细粒度的相对位置建模,两者是不同取舍,不是简单的强弱关系。

为何常见:直觉上“参数越多能力越强”,但位置编码提供的是归纳偏置而非容量,量级不决定效果。

面试题

Q1. 可学习绝对位置编码最主要的局限是什么?

单选题 · easy

  • A.参数过大导致训练缓慢
  • B.无法外推到更长序列← 正确答案
  • C.完全无法并行计算
  • D.不适合自回归模型

答案:B。可学习位置表只训练了 0 到 L-1 行,超过训练长度就“没票可发”,即使插值模型也没见过长距离注意力分布。A 是次要问题,C、D 与位置编码无关。

Q2. Sinusoidal 位置编码使用的基本函数是?

单选题 · easy

  • A.指数函数与对数函数
  • B.正弦函数与余弦函数← 正确答案
  • C.线性整流与激活函数
  • D.幂函数与开方函数

答案:B。原始 Transformer 论文用正余弦函数配对编码:偶维填 sin、奇维填 cos,同一相位用两个函数表达,形成周期性波纹。

Q3. RoPE 中“旋转”发生在什么空间?

单选题 · mid

  • A.词嵌入的语义空间
  • B.相邻维度构成的平面← 正确答案
  • C.输出概率分布空间
  • D.注意力权重矩阵区域

答案:B。RoPE 把 d 维向量看成 d/2 个二维平面,在每个由相邻维度对 (2i, 2i+1) 张成的平面上按位置旋转角度 mθ_i。词嵌入语义空间不承担旋转,C、D 更是无关。

Q4. ALiBi 通过什么方式调整注意力?

单选题 · mid

  • A.在归一化前减去距离惩罚← 正确答案
  • B.在归一化后乘距离系数
  • C.直接修改值矩阵的数值
  • D.增强位置嵌入的表达

答案:A。ALiBi 在 softmax 之前从缩放点积分数中减去 m·|i-j|。若在 softmax 之后操作,惩罚会被归一化破坏,无法形成稳定的近大远小权重。

Q5. NoPE 中位置信息主要来源于?

单选题 · easy

  • A.网络参数的随机初始化
  • B.因果掩码造成可见集合差异← 正确答案
  • C.训练数据的词频统计
  • D.学习率的动态调整策略

答案:B。因果掩码让不同位置的 token 看到不同数量的前文,softmax 归一化项因此携带“前面有几个词”的信号;句首锚点与词频统计只是补充,初始化与学习率不提供位置信号。

Q6. 关于 RoPE 的长距离外推,哪种说法最准确?

单选题 · extreme

  • A.低频波长接近训练长度时最稳← 正确答案
  • B.频率越高则外推能力越强
  • C.外推能力与频率配置无关
  • D.高频维度主导长距离外推

答案:A。低频维度旋转角速度慢、波长长,外推到未见过的距离时角度变化平缓,表现更稳;高频维度负责近距细节,波长远小于训练长度时外推意义不大。所以频率配置与外推能力强相关,且是低频而非高频主导。

Q7. 下列哪些编码/机制具备“相对位置感知”能力?

多选题 · mid

  • A.RoPE 旋转位置编码← 正确答案
  • B.ALiBi 距离惩罚← 正确答案
  • C.可学习的绝对位置
  • D.Sinusoidal 的相位差← 正确答案

答案:ABD。RoPE 点积只剩角度差,天然相对;ALiBi 直接用距离惩罚;Sinusoidal 因 PE(pos+k) 可由 PE(pos) 线性变换得到,能间接表达相对差。可学习绝对位置只会背编号,不含相对归纳偏置。

Q8. 关于 NoPE,下列说法正确的是?

多选题 · hard

  • A.模型缺失全部顺序信息
  • B.对参数初始化较敏感← 正确答案
  • C.外推能力全面领先 RoPE
  • D.因果注意力隐式感知位置← 正确答案

答案:BD。NoPE 通过因果掩码隐式编码位置,并非完全缺失顺序信息;但这种隐式信号脆弱,对初始化敏感,且长上下文外推明显不如 RoPE 与 ALiBi,因此 B、D 正确,A、C 错误。

Q9. ALiBi 的特点包括?

多选题 · mid

  • A.无需增加额外的参数← 正确答案
  • B.按距离线性减少分数← 正确答案
  • C.需要维护位置查询表
  • D.斜率按头数几何递减← 正确答案

答案:ABD。ALiBi 零新增参数,惩罚项随距离线性增长;每个注意力头的斜率按几何序列递减,提供多尺度距离感知。它不维护任何位置查询表,因此 C 错误。

Q10. 训练长度为 L 的序列中,相距为 d 的 token 对数量约为?

单选题 · hard

  • A.大约等于序列长度加距离
  • B.大约等于序列长度减距离← 正确答案
  • C.等于序列长度乘距离
  • D.等于序列长度除以距离

答案:B。长度为 L 的序列里,起点只能取 0 到 L-1-d,因此相距 d 的对数为 L-d。距离越大样本越少,这就是长距离外推困难的数学根源,也是位置编码不断演进的底层动力。