Attention、掩码与下一 token 预测
交互教程
Transformer 在位置之间混合信息。mask 决定哪些信息可见,却不决定这些值是离散还是连续。
前置阅读:概率与张量
之前已经能做什么
Section titled “之前已经能做什么”卷积使用固定局部邻域。attention 计算内容相关的加权和,每位置把特征投影为 Q、K、V。Q 与 K 的点积产生得分,softmax 把允许的得分变为权重。
改变了什么,为什么
Section titled “改变了什么,为什么”自回归训练中,位置 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)逐步理解机制
Section titled “逐步理解机制”在矩阵中选择一行 query。因果模式只允许过去和当前列,前缀模式含三个已知 token,遮罩模式观察偶数位置并隐藏奇数位置。矩阵显示权限而非学习权重;实际权重仍取决于 Q/K。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
行是 query,列是 key。遮罩模式仅偶数索引位置包含已知值。
| 量 | 值 |
|---|---|
| 选中行 | 3 |
| 可见 keys | 4 |
训练与采样的区别
Section titled “训练与采样的区别”训练时已有真实历史,可以在一次 masked 前向中并行评估所有移位目标。采样时则必须先生成历史。因果 KV cache 保存旧 K/V;双向上下文中,新增 token 会改变旧状态,不能直接复用同类缓存。
这些结果不能证明什么
Section titled “这些结果不能证明什么”位置编码告诉 attention 位置信息,因果 mask 告诉它访问权限,两者不能互相替代。连续因果模型、离散遮罩模型、双向图像编码器都可成立。
展开公式推导
每个 head 的 Q、K 宽度为 d,内积得到各 query/key 对的分数。加法 mask 对允许位置用 0、禁止位置用负无穷;softmax 沿 keys 归一化。
一行可见单元格是概率分布吗?
不是,它是访问 mask。对内容相关且允许的得分做 softmax 才得到注意力权重。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。