返回课堂

承载与读取:从三条记忆到当次上下文

上一讲的 Transformer 用 attention 读取输入、用 MLP 继续变换表示。把训练材料扩展到很大规模时,我们还要分清两个问题:结构能承载什么,以及需要时能否从许多相关内容中选择出这一次要用的东西。本主题先用三条可复算的记忆展示干扰,再区分训练参数和当次 K/V,最后回到上下文学习。

查询 A,为什么 B 和 C 也进入结果

令查询 q=kA=(1,0),另外两条 key 为 kB=(0.2,√0.96)、kC=(−0.2,√0.96)。三条 key 都是单位向量。value A、B、C 分别是三维坐标基向量 (1,0,0)、(0,1,0)、(0,0,1),因此读取结果的每个分量都能追溯到一条记忆。本篇与课堂 N02–N08 统一采用行向量:q、kᵢ 为 1×2,vᵢ 为 1×3。单条关联可写成外积 Mᵢ=kᵢᵀvᵢ(2×3),于是 qMᵢ=(qkᵢᵀ)vᵢ。把三条线性关联相加得到 M=ΣᵢMᵢ,读取为

$$f(q)=qM=\sum_i(qk_i^\top)v_i.$$

点积为 (1,0.2,−0.2),所以 f(q)=1A+0.2B−0.2C。目标 A 的分量仍为 1,另外两项却没有消失;非目标分量长度为 √(0.2²+0.2²)≈0.283。这里的系数未经归一化,可以为负,不能称为概率。所有数值都是本课独立教学构造,不是某个语言模型的输出。

增加许多弱相关候选会让读取面临更多干扰来源,但不意味着每添一条,误差都按固定幅度增加;方向之间也可能抵消。课堂增加卡片的图只是说明为什么需要研究规模与干扰,不是实测性能曲线。

两种替代的选择性读取

保持同三张卡和原分数 s=(1,0.2,−0.2) 不变。第一种示意是逐项平方 ReLU,即 max(0,s)²,得到 (1,0.04,0):负响应被截去,较小的正响应被压低。这些系数之和是 1.04,仍不是一组归一化概率。

另一种示意直接从原分数计算 softmax(4s):

$$a_i=\frac{e^{4s_i}}{\sum_j e^{4s_j}}\approx(0.9533,0.03886,0.00785).$$

这时三个非负系数和为 1,对应约 95.33%、3.89%、0.78%。两种方法是从同一原分数出发的替代读取,不是先平方 ReLU 再 softmax 的连续管线。4 是本例的教学锐度,不能当成标准 attention 统一使用的缩放常数;平方 ReLU 也不是所有实际 MLP 的共同激活函数。两组系数归一化方式不同,不能只看柱高便宣布哪种具有更大的模型知识容量。非线性在各条匹配分数上先发生,再汇总对应 value;不能将它画成对已经压成 qM 的结果随意补一个函数。显式保留全部 K/V 与把线性关联压缩为 M 的存储方式不同,这里也没有比较等存储预算下的容量。

选择性本身也没有正确性保证。若 query 与错误记忆更匹配,更尖锐的分布可能让错误占比更大。实际 attention 还包括训练形成的投影、按 head 维度缩放、mask 和多层计算,三卡例子只拆出了读取接口。

两条标量记忆的补充算例

原两条记忆算例保留作另一种观察。取 q=(1,0),k₁=(1,0)、k₂=(0,1),v₁=10、v₂=20,线性读取为 10。仅把 k₂ 改为 (0.6,0.8),读取变成 10×1+20×0.6=22;额外 12 来自第二条记忆。

对 (1,0.6) 做 softmax,权重约为 (0.5987,0.4013),读取约为 14.013;把原分数同乘 5 再做 softmax,权重约为 (0.8808,0.1192),读取约为 11.192。它用标量值方便手算;与三条基向量构造的观测口径不同,不能直接比较输出数值的大小来排性能。

两类信息来源,三种不同容量

Geva 等的研究从 key-value memory 的角度分析训练后的 Transformer 前馈层:输入模式可以与参数中的方向匹配,输出再组合相应内容。这支持一种理解 MLP 的视角,不等于所有知识只存在 MLP,也不意味着一个神经元就是一条独立事实。研究对象是论文所分析的语言模型和实验条件,结论不能无条件推广到每个模型。

在省略偏置和门控的前馈示意中,可以写 φ(xKₚᵀ)Vₚ。Kₚ 的行是训练形成的检测方向,Vₚ 的行是输出方向,φ 先作用在中间响应上。这个表达让前面的读取直觉回到真实 MLP 的位置,但不把三张教学卡解释为三个事实神经元。现代门控 MLP(如 SwiGLU)还有额外投影和逐项相乘,不能不加说明地都归成这个简式。

self-attention 的当前 K/V 来源不同。令当前 token 表示为 X,则 K=XW_K、V=XW_V,query 由相应表示乘 W_Q 得到。W_Q、W_K、W_V 在普通推理中固定,而 X 随输入改变,因此当前 Q/K/V 可以变化。训练形成怎样处理输入的结构,上下文提供这一次参与计算的内容。

在 N09 的两个独立请求中,第一次给出 A12秒/B8秒,第二次仅说“请概括这次A/B实验”,且不携带旧记录。参数仍在,但第二次输入没有提供那组数字;应用若重新传入旧记录,才会重新形成对应当前状态。应用保存历史、服务器按条件复用缓存、继续训练后改变参数,是三个不同过程。请求结束不意味着所有服务实现必定立刻物理删除缓存,也不意味着事实自动学进了参数。

“参数知识容量”“上下文中可访问的信息量”和“GPU 显存容量”是三个问题。前者关乎训练后能提取什么,第二个关乎本次提供了什么以及模型是否利用,第三个关乎这些数值能否放入设备。一个短期缓存的字节账本不能证明模型理解了其中全部信息;模型能存多少参数也不直接等于能回答多少事实。

关联记忆实验能支持多大的结论

Alex Wang 的关联记忆文章用受控随机向量实验研究干扰。其 d=64 时约 64、2700、120 万条的比较依赖随机单位向量、以精确存储 key 作 query 和特定干扰阈值;各方案的存储预算也不相同,显式 K/V 随记忆条数增长。这些是相应关联读取构造的结果,不能换算成固定参数语言模型的事实条数,也不能据此证明 Transformer 在所有任务中必然胜出。

参数知识容量可另参看 Allen-Zhu 与 Li,2404.05405v1。该研究用合成知识与可提取结果定义容量,训练曝光和实验设置影响结果。“每参数 2 bit”不是适用于所有真实训练资料、模型与知识类型的定律。

历史 R1 材料中的 LAB02(associative-memory)保存了另一项独立随机向量实验。固定该种子、维度和 beta 时,记忆数由 64 增至 256,read MSE 约由 0.02264 增至 0.04617,目标权重约由 0.4063 降至 0.1434。它没有复刻博客容量实验;只有一个种子、显式 K/V 和课程构造条件。这些是原保存输出。当前实验的记忆主题位于 LAB 01,两套编号与结果应分别辨认。

从续写接到上下文学习

上下文学习(in-context learning,ICL)指模型借助一次输入中的任务信息或示例完成任务,普通使用中不为这次输入进行梯度更新。GPT-3 论文 v4 Figure 2.1 以英译法说明提示格式。无示例时为:

Translate English to French:
cheese =>

加入一个已完成示例后为:

Translate English to French:
sea otter => loutre de mer
cheese =>

sea otter 是海獭,loutre de mer 是对应法语。教师参考续写 fromage 对应奶酪;它不是本课实时模型输出。原图也没有列出这两条提示的实测生成,不能说“之前答错,加入示例后答对”。海獭示例没有提供奶酪的译词,它给出任务与格式线索,翻译能力仍依赖此前训练。

单条提示与整组评测分别说明什么

GPT-3 Table 3.4(物理第 15 页)中,175B 模型在 WMT’14 英译法上的结果为 zero-shot BLEU 25.2、one-shot 28.3、few-shot 32.6。翻译评测的 few-shot 设置为 K=64,并受上下文窗口限制,不能假定每条提示都装入了64个任意长度的句对。BLEU 是整组结果的评价,不能当作 cheese 的单词分数,也不能把 32.6 归因于当前一个海獭示例。示例的相关性、位置和格式都可能影响表现,因此不是“例子越多越好”的保证。

把示例加入提示后,新增 token 经固定投影产生新激活与 K/V,输出可以因当次信息而变化。要解释示例并推广到待答对象,仍依赖既有多层计算;attention 是重要读取接口,不是 ICL 的完整理论。

用可重复的比较检查自己的任务

若缺少训练后发生的新事实,先提供可靠材料或检索结果。若任务格式含糊,明确指令并给出一致示例;若希望许多请求稳定保持同类行为,再建立评价、比较提示和参数适配。长上下文不保证利用可靠,矛盾、无关内容及位置变化都值得单独测试。

当前 LAB 04「上下文:固定参数的对照」保留了 24 条真实小样本 pilot,以及单列的 6 条课堂诊断。pilot 在四种条件中使用相同的 3 条留出记录,分别有 3、3、9、9 次请求;它不是对全部 24 条留出记录的完整评价。活动先核固定模型、提示和逐条回答,再重新评分、检查对照条件。显式规则与示例传递映射的条件还同时改变了规则表达和格式,不能将差值单独解释为示例的因果效应。可从 当前实验导航 进入 LAB 04 的 I1—I3。

历史 ICL192 材料 固定 24 条留出记录和 6 个示例,区分语义标签与任意标签映射,用三轮映射组成 192 请求设计。其保存输出仍是明确标识的 SYNTHETIC dry-run,只检验数据、请求与评分链路,不能用其正确率论证真实模型的 ICL 效果,也不能与上面的小样本实测合并成 192 条模型结果。

N02–N09在开场辨认承载与读取,随后以视觉扩展实验证明“是否值得增加投入”必须另看证据;N33–N36在续写与 SFT 之间再回访 ICL。有关当前 K/V 的实际容量与生命周期,继续读 推理服务。

把这个问题带进实验

打开对应 Notebook 后,找到下列同名小节。各本的准备说明、已有输出和证据边界保留在本册中。

查看全部实验与课堂页对应

本篇 Markdown