斯坦福 CS229 2026年春季 第14讲:变换器和上下文学习

TL;DR

讲座解释了大型语言模型如何将文本转换为令牌,使用变换器自回归地建模令牌序列,通过最大似然进行训练,并使用诸如温度缩放和 top‑k 采样之类的技术生成文本,同时指出自注意力随着序列长度的平方增长。

分词

分词将原始文本转换为变换器可以处理的整数 ID 序列。讲者将分词描述为选择最小的输入单位,指出纯字符或词语分词效率低下。子词分词(例如,字节对编码)将单词拆分为可重复使用的片段,使模型能够在诸如“internationalize”和“internationalization”之类的相关单词之间共享理解。得到的词汇表是一个预定义的子词列表;每个令牌都会获得一个 ID。讲者提到,开源模型如 Qin 3.5 在其词汇表中大约有 250 个令牌(根据讲者的说法),而一些专有的分词器,如 Cloud Code 使用的那些,已经被做得更细粒度,使得相同文本的令牌数从大约 1,000 增加到 1,500 个。

自回归概率模型

语言模型使用链式法则定义令牌序列上的概率分布:p(x₁…x_T) = ∏ₜ p(x_t | x₁…x_{t‑1})。每个条件分布由一个神经网络建模,该网络输出一个针对词汇表的 logit 向量,然后通过 softmax 转换为概率。由于直接建模联合分布需要 V^T} 是不可行的,自回归分解将每一步降低为对 V‑ 的 softmax,这是可以管理的。

变换器架构

变换器计算的令牌序列仅依赖于前面的令牌,模型是因果的(自回归)。在训练过程中,损失是观测序列的负对数似然,计算为 −log softmax(f_θ(x₀…x_{t‑1}))[x_t] 的求和。在生成过程中,模型从这些条件分布中逐个采样令牌;温度缩放会使分布变尖或变平,而 top‑k 采样将考虑范围限制为 k 个最可能的令牌。

注意力机制

单头注意力层接受一个向量序列(令牌嵌入)并输出一个新的向量序列。对于每个位置 t,它计算查询 Q_t = h_t W_Q、键 K_t = h_t W_K 和值 V_t = h_t W_V(均为行向量)。注意力得分是所有源位置 s 的内积 Q_t·K_sᵀ,经过缩放并通过 softmax 得到权重 α_{t,s}。位置 t 的输出是加权和 ∑s α{t,s} V_s。为了强制因果性,一个掩码在 softmax 之前将未来位置的得分设为 −∞,以确保 α_{t,s}=0 对于 s>t。

多头注意力和掩码

多个注意力头并行工作,每个头有自己的投影矩阵(W_Q、W_K、W_V)。它们的输出被连接并线性投影以生成最终层输出。讲者指出,头的数量通常在十到几百之间,具体取决于模型大小。掩码应用于每个头内部以保持自回归属性:在 softmax 之前,任何对应未来令牌的得分被替换为 −∞,在 softmax 之后变为零,从而防止模型关注未来令牌。

MLP 和残差连接

在每个注意力层之后,每个位置的向量通过一个由两个线性层和一个非线性函数(例如 GeLU)组成的多层感知器(MLP)。MLP 在每个位置上独立且相同地应用。残差连接将层的输入加到其输出上,随后进行层归一化(讲者提到了 pre‑norm 或 post‑norm 变体)。这种模式——注意力 → 加 & 归一化 → MLP → 加 & 归一化——在多个变换器层中重复。

训练和生成

训练通过使用诸如 SGD 或 Adam(称为黑箱优化器)的优化器,最小化所有时间步的负对数似然之和。生成从句首令牌(或给定的提示)开始,并从 softmax 分布中迭代采样下一个令牌。温度 t 在 softmax 之前缩放 logits:t<1 使分布变尖(倾向于高概率令牌),t>1 使分布变平(增加多样性)。top‑k 采样仅保留 k 个最大的 logits,重新归一化,并从该子集中采样。

计算效率

讲者强调,天真的自注意力需要计算所有成对的内积,导致时间和内存复杂度为 O(T²·d_h),其中 T 是序列长度,d_h 是头维度。这种二次依赖对于长上下文(例如,数百万个令牌)变得难以承受。诸如 flash attention 之类的技术旨在通过即时重新计算注意力矩阵的部分来减少内存占用。讲者指出,替代的注意力变体可以改善对 T 的依赖,但可能以牺牲表达能力为代价。


仅基于提供的记录;未添加外部事实。

Sources