跳转到内容
English

Attention、掩码与下一 token 预测

交互教程

Transformer 在位置之间混合信息。mask 决定哪些信息可见,却不决定这些值是离散还是连续。

前置阅读:概率与张量

卷积使用固定局部邻域。attention 计算内容相关的加权和,每位置把特征投影为 Q、K、V。Q 与 K 的点积产生得分,softmax 把允许的得分变为权重。

自回归训练中,位置 i 不应看到所预测目标。移位 decoder 中,token i 可看到包括自身的历史,并预测 i+1。若前缀是已提供条件且不承担预测目标,可在内部双向注意。遮罩生成也可在已知 token 间双向交互。

阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。

投影 Q、K、V

按特征通道拆分 heads,而非按序列位置拆分。

q,k,v = project(x).reshape(B,N,3,heads,d).unbind(2)

遮罩得分

被禁止位置在 softmax 后应具有零权重。

scores = q @ transpose(k) / sqrt(d)
scores = mask_blocked_with_minus_inf(scores)

混合 values

残差连接在新混合结果之外保留旧状态。

weights = softmax(scores, dim=-1)
y = x + output_projection(weights @ v)

查看固定版本来源

Attention⁡(Q,K,V)=softmax⁡(QK⊤/d+M)V\operatorname{Attention}(Q,K,V)=\operatorname{softmax}(QK^\top/\sqrt{d}+M)V

在矩阵中选择一行 query。因果模式只允许过去和当前列,前缀模式含三个已知 token,遮罩模式观察偶数位置并隐藏奇数位置。矩阵显示权限而非学习权重;实际权重仍取决于 Q/K。

改变参数,查看计算值,再把它与上方的真实模型说明对照。

解析教学模型 · 控件改变的是例子,不是训练后的研究模型。

行是 query,列是 key。遮罩模式仅偶数索引位置包含已知值。

当前例子的计算值
量值
选中行3
可见 keys4

训练时已有真实历史,可以在一次 masked 前向中并行评估所有移位目标。采样时则必须先生成历史。因果 KV cache 保存旧 K/V;双向上下文中,新增 token 会改变旧状态,不能直接复用同类缓存。

位置编码告诉 attention 位置信息,因果 mask 告诉它访问权限,两者不能互相替代。连续因果模型、离散遮罩模型、双向图像编码器都可成立。

展开公式推导

每个 head 的 Q、K 宽度为 d,内积得到各 query/key 对的分数。加法 mask 对允许位置用 0、禁止位置用负无穷;softmax 沿 keys 归一化。

Attention⁡(Q,K,V)=softmax⁡(QKT/d+M)V\operatorname{Attention}(Q,K,V)=\operatorname{softmax}(QK^T/\sqrt d+M)V
一行可见单元格是概率分布吗?

不是,它是访问 mask。对内容相关且允许的得分做 softmax 才得到注意力权重。

返回学习地图

本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。