Attention Mask
Attention Mask 是一个 [B, S, S] 的矩阵,定义了 Transformer 中 Query i 能否读取 Key j 的二维关系。
为什么是二维的?
如果只有一维 [B, S] 的 mask,只能表达"token i 是否有效"。
但 Attention 需要回答的是:Query i 能否读取 Key j?这是两个位置之间的关系,需要二维矩阵。
Key →
A B C D E
Query A 1 1 1 0 0
B 1 1 1 0 0
C 1 1 1 0 0
D 1 1 1 1 0
E 1 1 1 1 1每一行表示:"这个 Query 可以读取哪些 Key"。
如何起作用?
在 Scaled Dot-Product Attention 中:
其中 表示禁止访问,softmax 后权重变为 0:
常见类型
- Causal Mask:下三角矩阵,token 只能看到过去
- Padding Mask:过滤无效的 padding token
- Block-Causal Mask:同一 block 内双向,不同 block 间 causal
- Prefix Mask:prefix 双向,后续 causal
实际使用时通常是多种 mask 的组合。
相关概念
- [[Block-Causal Attention]]
- [[Padding Mask]]
- [[Prefix-LM]]
- [[Causal Attention]]