基础知识:位置编码与 Mask:顺序和可见性

基础知识:位置编码与 Mask:顺序和可见性

Charles Lv7

Attention 本身只计算 token 之间的相关性。它并不知道第一个 token 在前、第二个 token 在后,也不知道哪些 token 不应该被看见。位置编码和 mask 就是为了解决这两个问题。

Transformer long-distance attention

图源:Attention Is All You Need,Figure 3。原论文图意:Transformer encoder 的某些 self-attention heads 会关注长距离依赖,例如围绕 making ... more difficult 的依赖关系。

初学者先抓住

Transformer 本身像一袋 token。位置编码解决“谁在前谁在后”,mask 解决“谁能看谁”。看到长上下文、packing、VLM 多图输入或 agent 历史记忆时,先问三个问题:位置机制能不能表达顺序,mask 有没有限定正确可见性,padding 或未来 token 有没有泄漏。

1. 为什么需要位置编码

如果没有位置编码,Transformer 对输入顺序不敏感。句子:

1
2
猫追狗
狗追猫

包含的字相同,但意思完全不同。模型必须知道 token 的顺序。

常见位置机制可以先按用途区分:

方法 直观理解 常见场景
绝对位置编码 给每个位置一个固定或可学习编号 早期 Transformer
相对位置编码 关注 token 之间相对距离 长序列建模
RoPE 用旋转方式把位置信息注入 Q/K 现代 LLM 常见
ALiBi attention 分数按距离加入偏置 长上下文扩展

2. Mask 决定可见性

Mask 是 attention 里的可见性规则。

Causal Mask

自回归语言模型只能看过去,不能看未来:

1
2
3
token 1 -> 看 token 1
token 2 -> 看 token 1,2
token 3 -> 看 token 1,2,3

这样模型才能做 next-token prediction,不会偷看答案。

Padding Mask

不同样本长度不一样,batch 时会补 padding。Padding token 不是有效内容,需要被 mask 掉。

Block / Sliding Window Mask

长上下文模型有时只允许 token 看局部窗口,减少 L2L^2 attention 成本。

3. Attention Mask 的伪代码

1
2
3
4
5
6
7
8
9
10
scores = Q @ K.T / sqrt(d)

if causal:
scores[future_positions] = -inf

if padding:
scores[padding_positions] = -inf

weights = softmax(scores)
output = weights @ V

把某些位置设成 -\infty,softmax 后这些位置权重接近 0,也就相当于不可见。

4. 为什么长上下文很贵

标准 attention 需要计算 L×LL \times L 的分数矩阵。序列长度 LL 翻倍,attention 分数矩阵大约变成 4 倍。

推理时还会产生 KV cache:

KV cache sizelayers×L×D\text{KV cache size} \propto \text{layers} \times L \times D

所以长上下文系统往往不会只扩大窗口,而是同时引入上下文压缩、KV cache 量化、prefix cache、sliding window attention 和检索式外部记忆。它们解决的是同一个系统问题:哪些信息必须留在注意力里,哪些可以压缩、缓存或外部检索。

5. 多模态里的位置更复杂

图像和视频不只有一维顺序,还有二维空间和时间结构。

输入 位置问题
图像 patch 行列位置、局部邻域
视频 token 帧内位置 + 时间位置
文档图像 OCR 文本位置 + 页面布局
机器人轨迹 时间步 + 空间状态

所以 VLM、视频模型和 VLA 不只是“把所有 token 拼起来”,还要设计位置编码和 mask,让模型知道哪些关系重要。

6. 和后续专题的关系

  • Transformer 输入与注意力:理解 Q/K/V 和 attention 主体。
  • 推理系统:理解 KV cache、长上下文和上下文压缩。
  • VLM/VLA:理解视觉 token、视频状态和动作序列为什么依赖 mask 与位置。
  • 动作表示与控制接口:理解动作 token、动作块和时序控制的接口。

位置编码告诉模型“在哪里”,mask 告诉模型“能看谁”,上下文管理告诉系统“保留哪些信息”。三者共同决定 Transformer 是否能稳定处理长序列和多模态输入。

  • Title: 基础知识:位置编码与 Mask:顺序和可见性
  • Author: Charles
  • Created at : 2025-07-12 09:00:00
  • Updated at : 2025-07-12 09:00:00
  • Link: https://charles2530.github.io/2025/07/12/ai-files-foundations-positional-encoding-masks-and-context/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments