一步一步建立直观
先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。
01先把上下文压缩成一次加权读取
完整语言模型要根据此前的词元预测下一个词元。右图只抽出其中的注意力读取:两个候选信息各带一个分数,归一化后决定各自参与输出的份额。分数相同就平均读取。这些份额不是整个词表的下一词概率,二者在模型中的位置不同。
02相关性改变了信息的去向
增加第二项相对分数,输出便更靠近它的值。可以把这一步理解为读者根据当前问题重新分配注意,而不是把所有上下文不加区分地平均。实际模型会从向量计算查询和键;本图直接调分数,用来隔离“分数如何影响权重”这一机制。
03集中读取不等于理解正确
降低温度后,权重更加集中,但若较高分数本来分配给错误线索,集中只会强化错误。语言模型还需要词元表示、多层变换、训练目标及最终概率输出。这个窗口帮助理解一个局部部件,不把输出偏向某个值称为已经完成语言理解。
3.6.1 把生成一句话拆成一连串预测¶
模型不必一次选出完整句子。给定当前上下文,它先为下一个 token 分配概率,选择一个 token 后放回上下文,再预测下一步。token 是编码单位,可能是词、字或词的一部分,不能总按完整单词理解。
一条序列的概率是沿这条路径的条件概率乘积。第二步的分布取决于第一步已经选了什么,所以不能把每步无条件概率相乘,更不能把概率相加。取负对数后,乘积转成和,这让每个位置对训练目标的贡献可以累积。
3.6.2 局部最可能不等于整句最可能¶
假设第一步选甲的概率为 、选乙为 ;在甲之后最可能的下一步概率是 ,在乙之后则为 。贪心先选甲,完整两步最多得 ;经过乙的路径却可达 。因此每一步取最大值,不保证整段序列概率最大。
温度改变分数经 Softmax 后的尖锐程度。低温让高分候选占比更大,高温使分布更平缓;这会改变采样行为,却不凭空增加事实知识。概率较高描述模型的统计偏好,不等于内容一定真实。
接下来要理解的核心,是上下文如何变成这些概率。Transformer 先把 token 写成向量,再让它们交换信息,最后产生词表分数。先弄清输入、条件概率和采样的关系,后续矩阵细节才有明确任务。
与本图相连的定义与证明:3.8 · 一次注意力读取是凸组合。本节的具体条件与形式化范围见下文。
数学表述 3.6.1¶
语言模型为下一个 token 分配条件概率,采样一个结果后把它放回上下文,继续预测。token 可以是词的一部分,不能总当成完整单词。
概率链式分解为 训练中常最小化正确 token 的负对数概率总和;推理中的采样温度改变概率分布的尖锐程度。
例 3.6.1 把概念用于具体计算
两步条件概率分别为 时,这条具体序列的联合概率为 ,不是 。
练习 3.6.1¶
概率 的三步序列概率?
展开解答与检查
,负对数概率将乘积变成和。
Lean 对照 3.6.1 命题、证明与适用边界
验证两个合法概率的乘积仍在 ;完整条件概率的测度论链式法则未形式化。
NeuralNetworks.conditional_product_bounds
theorem conditional_product_bounds (p q : ℝ)
(hp : 0 ≤ p) (hp₁ : p ≤ 1) (hq : 0 ≤ q) (hq₁ : q ≤ 1) :
0 ≤ p*q ∧ p*q ≤ 1 := by
constructor
· positivity
· nlinarith [mul_nonneg hp (sub_nonneg.mpr hq₁)]