张芷铭的个人博客

causal attention

Causal Attention(因果注意力) 是一种在序列建模中用于约束注意力流向的机制,核心目的是确保模型在处理序列数据时,当前位置只能关注到历史位置(包括自身),而无法“看到”未来位置的信息,从而遵循时序上的因果关系,避免信息泄露。

一、核心目的:维持时序因果性

在序列生成任务(如文本生成、语音合成、时间序列预测等)中,模型需要根据“过去的信息”预测“未来的内容”。例如:

  • 生成句子时,第t个词的生成只能依赖第1t-1个词的信息,不能提前用到第t+1个词及以后的内容(否则属于“作弊”);
  • 预测股票价格时,t时刻的预测只能用1t-1时刻的数据,不能用t+1时刻的未来数据。

因果注意力通过限制注意力的范围,严格保证这种“过去影响未来,未来不影响过去”的因果逻辑。

二、工作机制:基于掩码的注意力约束

因果注意力是在标准注意力机制基础上增加了一个因果掩码(causal mask) 实现的,具体步骤如下:

  1. 标准注意力回顾
    注意力机制通过“查询(Q)”、“键(K)”计算相似度,得到注意力权重,再对“值(V)”加权求和,公式为:
    $$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
    其中,$QK^T$ 是相似度矩阵(每行对应一个位置的查询,每列对应一个位置的键)。

  2. 因果掩码的作用
    因果掩码是一个下三角矩阵(对角线及以下为0,对角线以上为负无穷),其维度与序列长度一致。例如,对长度为4的序列,掩码矩阵为:
    $$\begin{bmatrix} 0 & -\infty & -\infty & -\infty \ 0 & 0 & -\infty & -\infty \ 0 & 0 & 0 & -\infty \ 0 & 0 & 0 & 0 \ \end{bmatrix}$$

    将这个掩码与相似度矩阵 $QK^T$ 相加后,再输入 $\text{softmax}$ 函数:

    • 对角线以上的元素(对应“未来位置”)会被加上 $-\infty$,$\text{softmax}$ 后权重变为0,即当前位置无法关注这些未来位置;
    • 对角线及以下的元素(对应“历史位置及自身”)不受影响,权重正常计算。
  3. 最终效果
    经过掩码处理后,每个位置的注意力权重仅分配给“过去和自身”,完全屏蔽未来信息,严格遵循因果关系。

三、典型应用场景

因果注意力是生成式模型的核心组件,最经典的应用是:

  • Transformer解码器:在机器翻译、文本生成(如GPT系列模型)中,解码器需要生成目标序列,必须使用因果注意力保证生成的时序合理性;
  • 自回归模型(Autoregressive Models):所有依赖“逐元素生成”的模型(如语音生成、视频帧预测)都会用到因果注意力,确保生成过程符合时间逻辑。

四、与其他注意力的对比

注意力类型核心特点适用场景
因果注意力单向关注(仅过去及自身)生成任务(文本生成、预测)
双向注意力可关注所有位置(包括未来)理解任务(文本分类、翻译编码器)
局部注意力仅关注局部窗口内的位置长序列效率优化

例如,Transformer的编码器使用双向注意力(无掩码),因为它需要“理解”整个序列的全局信息(如文本分类需要知道上下文);而解码器使用因果注意力,因为它需要“生成”序列,必须依赖历史信息。

总结

因果注意力通过掩码机制强制约束注意力范围,确保序列建模中的时序因果性,是生成式模型(尤其是自回归模型)能够合理生成序列的关键保障。其核心逻辑可概括为:“过去可追溯,未来不可见”

💬 评论