斯坦福 CS229 2026年春季 第16讲:Transformer 注意力变体、专家混合和上下文学习
Transformer 注意力回顾
讲座一开始提醒观众基本的 Transformer 注意力机制。对于单个头,查询 Q、键 K 和值 V 是矩阵,其中每行对应一个时间步。注意力得分通过 QKᵀ 得到,随后进行掩码以强制自回归行为,然后按行进行 softmax 并乘以 V。结果是值的加权和。当使用多个头时,每个头都有自己的 Q、K、V 矩阵,权重不同但结构相同。
分组查询注意力
为了在推理过程中降低键值(KV)缓存的内存占用,讲座介绍了分组查询注意力(GQA)。与其为每个头存储单独的键和值向量,GQA 在多个查询头之间共享一组较小的键和值。每个查询头通过确定性映射分配到一个键组(例如,floor((j‑1)/tall)+1)。注意力计算使用该组的共享键来处理所有查询,而每个头仍然产生自己的输出。这将存储的键/值向量数量从 NH 减少到 NG,其中 NH 是头的数量,NG 是键组的数量,从而降低 GPU 内存使用并允许更大的批次大小。
滑动窗口注意力
讲座随后介绍了滑动窗口注意力,作为降低全注意力二次计算成本的方法。与其让每个查询关注所有之前的键,每个查询仅关注最近的 W 个键,其中 W 是固定窗口大小。这将复杂度从 O(T²) 降低到 O(T·W)。尽管顶层注意力仅限于最近的令牌,但更深的层可以间接传播来自较早令牌的信息,从而对于 L 层获得大约 L·W 个令牌的有效感受野。权衡在于长距离依赖减少,而计算和内存开销降低。
专家混合
接下来,讲师介绍了专家混合(MoE)层,作为在不导致计算成本成比例增加的情况下提升模型参数数量的方法。一个 MoE 层包含许多专家网络(通常每个都是前馈网络)和一个路由模块,该模块为每个令牌选择一小部分专家。例如,在共有 128 个专家且采用 top‑2 路由的情况下,每个令牌仅激活 2 个专家,因此激活的参数数量远小于总参数数量。路由通常基于学习到的投影,随后跟随 softmax 或 sigmoid,所选专家的输出通过加权和结合,并重新归一化以使总和为一。可以加入共享专家(始终激活)来捕获常见知识。其动机既是计算效率,也是希望专家在不同语言现象上进行专业化,尽管这种专业化是端到端训练中隐式产生的,而不是显式监督的结果。
上下文学习和零样本学习
讲座解释了大型语言模型如何在不进行梯度更新的情况下适应新任务。上下文学习涉及将演示示例(输入‑输出对)与测试输入连接,并让模型生成答案。零样本学习则更进一步,仅提供任务描述(例如,“classify emails into billing or technical”)和无示例。模型依赖其预训练知识来推断正确的行为。这些方法之所以有效,是因为模型将提示视为上下文,并生成与演示模式匹配或遵循指令的续文。
指令调优(监督微调)
最后,讲师描述了指令调优作为增强零样本和上下文学习能力的方法。收集了一组指令‑输出对(X,Y)的数据集,其中 X 是任务描述,Y 是期望的响应。然后使用标准语言模型损失(给定 X 下 Y 的负对数似然)在该数据集上进一步训练模型。这种监督微调不会改变架构;它调整参数,使模型在被提示时更有可能遵循指令并产生适当的输出。得到的模型在零样本和少样本任务上表现出性能提升。