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

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

<a id="three-memories"></a>
## 查询 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。这里的系数未经归一化，可以为负，不能称为概率。所有数值都是本课独立教学构造，不是某个语言模型的输出。

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

<a id="selective-reading"></a>
## 两种替代的选择性读取

保持同三张卡和原分数 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 和多层计算，三卡例子只拆出了读取接口。

<a id="legacy-two-memory"></a>
## 两条标量记忆的补充算例

原两条记忆算例保留作另一种观察。取 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。它用标量值方便手算；与三条基向量构造的观测口径不同，不能直接比较输出数值的大小来排性能。

<a id="parameter-and-context"></a>
## 两类信息来源，三种不同容量

[Geva 等的研究](https://arxiv.org/abs/2012.14913)从 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 显存容量”是三个问题。前者关乎训练后能提取什么，第二个关乎本次提供了什么以及模型是否利用，第三个关乎这些数值能否放入设备。一个短期缓存的字节账本不能证明模型理解了其中全部信息；模型能存多少参数也不直接等于能回答多少事实。

<a id="capacity-boundaries"></a>
## 关联记忆实验能支持多大的结论

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

参数知识容量可另参看 [Allen-Zhu 与 Li，2404.05405v1](https://arxiv.org/html/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，两套编号与结果应分别辨认。

<a id="icl-example"></a>
## 从续写接到上下文学习

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

```text
Translate English to French:
cheese =>
```

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

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

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

<a id="icl-evidence"></a>
## 单条提示与整组评测分别说明什么

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 的完整理论。

<a id="icl-study"></a>
## 用可重复的比较检查自己的任务

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

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

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

[N02–N09](../classroom/N02.html?step=b0)在开场辨认承载与读取，随后以视觉扩展实验证明“是否值得增加投入”必须另看证据；[N33–N36](../classroom/N33.html?step=b0)在续写与 SFT 之间再回访 ICL。有关当前 K/V 的实际容量与生命周期，继续读 [推理服务](serving.html#kv-capacity)。


## 把这个问题带进实验

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

- [LAB 01 · M4 · 参数不变，内容可变；选择性也会放大错误](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-06-2ff4b87b-2904-4b9c-b9e9-bdbd72962691/notebook/LAB-01-e1f6f8c1ebd543c5ade548e0af61edc1?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=e1f6f8c1ebd543c5ade548e0af61edc1&utm_term=get_notebook)
- [LAB 04 · I1 · 哪些东西在这次运行中没有改变？](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-06-2ff4b87b-2904-4b9c-b9e9-bdbd72962691/notebook/LAB-04-8d38f8a6b20944129b6587b282ab38d2?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=8d38f8a6b20944129b6587b282ab38d2&utm_term=get_notebook)
- [LAB 04 · I2 · 对照能回答什么？先核输入，再看输出](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-06-2ff4b87b-2904-4b9c-b9e9-bdbd72962691/notebook/LAB-04-8d38f8a6b20944129b6587b282ab38d2?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=8d38f8a6b20944129b6587b282ab38d2&utm_term=get_notebook)
- [LAB 04 · I3 · 改一次分析条件，看看结论是否稳固](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-06-2ff4b87b-2904-4b9c-b9e9-bdbd72962691/notebook/LAB-04-8d38f8a6b20944129b6587b282ab38d2?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=8d38f8a6b20944129b6587b282ab38d2&utm_term=get_notebook)

[查看全部实验与课堂页对应](../labs/index.html)
