概述
因果注意力(Causal Attention)是一种自注意力机制,广泛应用于自回归模型中,尤其是在自然语言处理和时间序列预测等任务中。它的核心思想是在生成每个时间步的输出时,只关注当前时间步及之前的时间步,确保生成过程的因果性,从而避免模型在预测时依赖未来的信息。
工作原理
因果注意力的工作原理是通过掩码矩阵限制模型在计算每个时间步的注意力时,只关注当前时间步及之前的内容。具体地,掩码矩阵是一个下三角矩阵,其上三角部分为0,其余部分为1。这样,在计算注意力分布时,掩码矩阵将未来时间步的注意力得分设置为非常大的负值(-inf
),使得这些位置在 softmax
操作后接近于零,从而不会对最终的输出产生影响。
掩码矩阵示例
掩码矩阵的结构如下:
[
[1, 0, 0, 0],
[1, 1, 0, 0],
[1, 1, 1, 0],
[1, 1, 1, 1]
]
该掩码矩阵确保每个时间步仅关注当前时间步及之前的时间步,维持因果性。
NumPy实现
以下是基于NumPy的因果注意力机制实现代码:
import numpy as np
def softmax(x):
"""Compute the softmax of vector x in a numerically stable way."""
shift_x = x - np.max(x, axis=-1, keepdims=True)
exp_x = np.exp