一步一步建立直观
先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。
01在结构图中定位这一小块计算
Transformer 把词元变成向量,反复进行上下文信息交换与逐位置变换,再输出词表分数。右图展示信息交换中的一个头、一次查询和两个候选值。先用相同分数得到平均值,确认加权读取的基本算术,再放回完整网络结构中理解其作用。
02把归一化前后分清楚
注意力先得到实数分数,softmax 再把它们转成正权重并归一化。给所有分数加同一个常数不会改变结果,因为共同的指数因子会约去。本图只保留分数差,正是利用这一不变性。实际模型的缩放与掩码应在归一化前处理。
03明确预测时可见的信息范围
降低温度可以观察更集中的权重,但自回归预测还要用因果掩码禁止读取未来位置。权重是否集中与是否泄露未来是两个不同问题。此处只有两个可见候选,没有模拟掩码、多头、残差与完整词表;正文的架构说明负责连接这些部件。
3.7.1 沿着数据走一遍整体结构¶
一段文字先分成 token,每个 token 查表得到嵌入向量,再加入或结合位置信息。只有内容、没有顺序,就无法区分同一组词的不同排列。随后经过多层注意力和前馈计算,向量逐渐携带上下文信息,最后投影成词表上每个候选的分数。
分数不是概率:它可以为负,也不必相加为一。Softmax 先指数化使其为正,再用总和归一化。相对分数差决定概率偏好,同加一个常数只引入共同因子,除法会将其抵消。
3.7.2 从一个两分类例子看出数值实现的意义¶
分数 指数化后是 ,归一化得到 。两分数都减去 后,虽然数值改变,概率不变。实现中常减去最大分数,避免指数过大;这个技巧基于精确恒等式,浮点误差仍需单独考虑。
嵌入空间的方向可能与某些语义变化相关,但不要把每个坐标轴都当成固定概念标签。向量表示允许特征分布在许多坐标中,网络也可能在不同层使用不同表示。
本节只建立全景路线:嵌入负责表示,注意力交换位置间信息,前馈层处理各位置的特征,输出投影把表示转为预测分数。真实架构还涉及归一化、残差等细节;理解它们时仍应沿数据形状和作用追踪,而不是只记一张盒子图。
与本图相连的定义与证明:3.8 · 一次注意力读取是凸组合。本节的具体条件与形式化范围见下文。
数学表述 3.7.1¶
token 先嵌入为向量,再通过注意力与前馈层反复更新,最后映射为词表上的分数。位置信息使顺序能被模型感知。
logits 转成概率:。对全部分数加同一常数 不改变概率,因为共同因子 会抵消。
例 3.7.1 把概念用于具体计算
两个 logits 为 ,得到概率 。把两者都减去 后概率相同,这也是数值稳定 Softmax 的依据。
练习 3.7.1¶
的概率?
展开解答与检查
;这与 logits 的绝对大小无关。
Lean 对照 3.7.1 命题、证明与适用边界
完整证明双分类 Softmax 的平移不变性。定理使用精确实指数;浮点稳定性仍属于数值实现问题。
NeuralNetworks.softmax_shift
theorem softmax_shift (x y c : ℝ) :
Real.exp (x+c)/(Real.exp (x+c)+Real.exp (y+c)) =
Real.exp x/(Real.exp x+Real.exp y) := by
rw [Real.exp_add, Real.exp_add]
have hx := Real.exp_pos x
have hy := Real.exp_pos y
have hc := Real.exp_pos c
field_simp
ring