Concept

Attention Mask

定义 Transformer 中 Query-Key 二维关系的矩阵,控制哪些 token 可以互相通信

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 中:

S=QKTd+MS = \frac{QK^T}{\sqrt{d}} + M

其中 Mij=M_{ij} = -\infty 表示禁止访问,softmax 后权重变为 0:

αij=0Vj 不参与 Query i 的输出\alpha_{ij} = 0 \Rightarrow V_j \text{ 不参与 Query i 的输出}

常见类型

  • 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]]