# 承载与读取：从关联记忆到 MLP 和 attention

模型要用上更多知识，需要同时回答两个问题：结构能否容纳并读出更多信息，数据与训练又实际形成了什么能力。本节先讨论第一个问题，为随后阅读视觉训练实验和硬件约束建立机制基础。这是课程的组织顺序；实际训练时，数据、目标、表示与参数更新共同发生，并不是先造好“知识盒子”再逐条装入事实。

本节的论证受 [Alex Wang《You could have invented transformers from memory》](https://alexwang.ai/posts/associative-memory/) 启发。两条目数字例为教学构造，图样实验和容量曲线为教学独立复算。曲线解释的是指定随机向量模型下的读回干扰，不是模型事实数、语言理解能力或可部署上下文长度。

## 先给“记住”一个可检查的含义

一组关联由线索 $k_i$ 和内容 $v_i$ 构成。这里用列向量：$k_i\in\mathbb R^{d_k}$，$v_i\in\mathbb R^{d_v}$。输入查询 $x$ 后，希望得到相关内容。接受过多少条输入并不足以说明记忆可用；还需要检查指定内容是否能读回来。

在查询某条已存储key时，把读出写成目标贡献与其他条目的贡献：

$$f(k_j)=a_{jj}v_j+\sum_{i\ne j}a_{ij}v_i.$$

单次读出的干扰比为

$$R=\frac{\left\|\sum_{i\ne j}a_{ij}v_i\right\|}{\|a_{jj}v_j\|}.$$

分母是**实际目标贡献**，不普遍等于 $\|v_j\|$；R也不普遍等于 $\|f(k_j)-v_j\|/\|v_j\|$。用R=1作比较线，表示干扰与目标项同量级，不表示过线后所有任务一齐失败。分类、向量恢复和生成任务有不同的成功标准，因此不能直接交换它们的容量数字。

[AM02的T形图样](../pages/AM02.html)使用64维value的8×8像素显示。固定seed=20261021、查询 $k_0$、维度 $d_k=d_v=64$，依次使用同一256条存储数组的前1、16、64、256条。实算R为0、0.454740、1.038556、2.142358。生成时先一次采样并归一化全部key，再采样并归一化全部value，最后将第一个value替换成单位T形向量；这个顺序也是复现条件。

所有图共用灰度范围[−0.125,0.125]，不做逐图归一化或人工模糊。超范围像素只在显示时裁剪，指标仍用原始向量。这不是自然图像理解实验。

## 外积怎样把关联写进一个矩阵

先看两组完全指定的关联：

| 条目 | key | value |
| --- | --- | --- |
| A | $(1,0)^\top$ | $(1,0)^\top$ |
| B | $(0.6,0.8)^\top$ | $(0,1)^\top$ |

两个key都是单位向量，却不是正交向量。两个value只是相互独立的内容方向，不是两个词。

外积累加得到

$$W=\sum_i v_i k_i^\top=\begin{bmatrix}1&0\\0.6&0.8\end{bmatrix}.$$

读取时

$$Wx=\sum_i v_i(k_i^\top x).$$

这与“先按key匹配，再把分数乘到对应value上相加”是同一次计算。查询A给出 $(1,0.6)^\top$，查询B给出 $(0.6,1)^\top$。0.6是内积系数，不是概率；查询变了，哪一项是信号、哪一项是干扰也会改变。

详见[写入](../pages/AM03.html)与[读取分解](../pages/AM04.html)。旧[I02](../pages/I02.html)、[I03](../pages/I03.html)保留原三条目和行向量示例，使用时须分清记号与数值。

## 干扰怎样随条目数与维度变化

假定key相互独立、均匀分布于单位球面；非目标value相互独立，与key独立，并为零均值、各向同性的单位向量。精确查询 $x=k_j$ 下，目标分数为1，随机非目标相似度 $s=k_i^\top k_j$ 有

$$\mathbb E[s^2]=\frac1{d_k}.$$

交叉项在期望下消失，因而外积读取的均方根干扰比为

$$R_{\rm RMS}=\sqrt{\frac{M-1}{d_k}}.$$

这里先对干扰向量范数的平方取期望，再开平方；它不是单次R，也不是平均范数或跨查询中位数。不能把所有绝对值简单相加成 $M/\sqrt{d_k}$，也不能因正负期望相消就宣布实际干扰为零。

固定 $d_k=64$ 时，RMS到达1的位置为M=65；常说“约64条”是在说与维度同阶。固定M=128时，维度从64增至256，RMS从约1.409降至约0.704。增加维度能减少随机线索之间的干扰，但不是实际64维语言模型的“事实配额”。[AM05](../pages/AM05.html)将这两个因素分开比较。

## 改善写入：相同线性层也可以做得更好

外积累加不是选择W的唯一方法。对全部指定关联同时求最小二乘：

$$\min_W\sum_i\|Wk_i-v_i\|^2.$$

两条目例有一个精确解

$$W^*=\begin{bmatrix}1&-0.75\\0&1.25\end{bmatrix}.$$

代入可得 $W^*k_A=(1,0)^\top$、$W^*k_B=(0,1)^\top$。矩阵尺寸、key与value均未改变。非正交key带来外积串扰，不代表所有线性映射都无法区分它们。

若M不超过输入维度且key线性独立，无正则线性回归可以满足任意指定的这M组输出。病态key、数值精度和有噪查询是另一些问题。

当 $M>d_k$ 且以key为行的 $K\in\mathbb R^{M\times d_k}$ 满列秩时，

$$W^*=V^\top K(K^\top K)^{-1},\qquad P=K(K^\top K)^{-1}K^\top.$$

P是投影矩阵。查询j的目标系数是 $P_{jj}$，不再固定为1，并有

$$\sum_{i\ne j}P_{ij}^2=P_{jj}-P_{jj}^2.$$

在各向同性近似 $P_{jj}\approx d_k/M$ 下，R约为 $\sqrt{M/d_k-1}$，到达1的位置约为 $2d_k$。因此64维的“128”是有误差时的比较阈值；**精确恢复区间仍是M≤64且key独立**。课堂图使用线性纵轴，将零值保留在基线上，并标出精确恢复区间。若另用对数纵轴，就需单独说明零值，不能偷偷换成小正数。详见[AM07](../pages/AM07.html)、[AM08](../pages/AM08.html)。

## 改善读取：先处理每条响应，再汇总value

从原始匹配分数重新开始，可以定义

$$f(x)=\sum_i v_i\,g(k_i^\top x)=V^\top g(Kx).$$

两条目例中，原分数为[1,0.6]。ReLU把负数截零，但这两个正数不变；平方ReLU $g(s)=\max(s,0)^2$ 才把响应改成[1,0.36]。非线性发生在value汇总之前；先汇总再平方是另一种计算。负匹配先被截零，不能直接平方成强正响应。

将K叫作 $W_1$，将 $V^\top$ 叫作 $W_2$，就得到两层MLP形式 $W_2g(W_1x)$。本显式构造中中间宽度H等于条目数M；K大小为 $H\times d_k$，$V^\top$ 大小为 $d_v\times H$。增加M也增加显式存储量 $H(d_k+d_v)$，并非固定参数量下免费获得容量。

[Geva等](https://arxiv.org/abs/2012.14913)从文本模式响应与输出分布研究FFN的关联记忆解释，但这不等于每个神经元一条知识、全部知识都在MLP中，或所有层功能都能被这个视角穷尽。实际FFN可有偏置、残差、归一化和门控。若改用行向量记号，一般SwiGLU使用不同投影，如 $(\mathrm{SiLU}(xW_g)\odot xW_u)W_d$；共享投影的幂次类比不能直接当作独立门控的一般结论。

精确查询和上述随机条件下，任意响应g可由

$$R_{\rm RMS}^2=(M-1)\frac{\mathbb E[g(s)^2]}{g(1)^2}$$

比较。对 $g(s)=\max(s,0)^p$，球面分布给出

$$\mathbb E[\max(s,0)^{2p}]=\frac{(2p-1)!!}{2d_k(d_k+2)\cdots(d_k+2p-2)}.$$

| 响应 | 64维球面RMS到达1的M |
| --- | ---: |
| Linear | 65 |
| ReLU | 129 |
| 平方ReLU | 2817 |
| 立方ReLU | 38298.6，约38299 |

这些是本课有限维理论值。[原文](https://alexwang.ai/posts/associative-memory/#reducing-interference-with-higher-powers)的采样曲线先在每个seed内取查询结果中位数，再跨5个seed平均；其正文近似64、128、2700、35000也采用不同近似。两种口径分别命名，不应强行修成重合。详见[AM09](../pages/AM09.html)至[AM11](../pages/AM11.html)。

## 指数、截断和softmax

继续用两条分数1与0.6，设β=4。相对于目标，非目标指数响应为

$$\frac{e^{4\times0.6}}{e^4}=e^{-1.6}\approx0.202.$$

指数值本身都可能增加，但B/A下降。选择性讨论的是这个相对比例。

指数可展开为各次幂之和。不过截断式

$$T_n(\beta s)=\sum_{p=0}^{n}\frac{(\beta s)^p}{p!}$$

含常数项，且必须用它自己的 $T_n(\beta)$ 作为目标响应。增加一项不能机械地保证所有条件下检索更好。课堂曲线切换到随机64维、β=8，比较2/3/4项截断（分别到一次、二次、三次）与完整指数；2项截断在R=1处仅M=41.5，甚至低于线性的65。部分奇次截断对负相似度可给负响应，不能把它们都叫概率。

回到二维、β=4，指数值约为54.598和11.023，总和65.621。归一化后为[0.8320,0.1680]，输出仍是两个value的混合。归一化不改变相对比例；R中的共同分母也会约掉。稳定实现先减去最大logit，再指数和归一化，避免指数步骤溢出。

标准attention常写成 $\mathrm{softmax}(QK^\top/\sqrt{d_k})V$。本节单位向量列记号为 $V^\top\mathrm{softmax}(\beta Kx)$。若实际q、k的典型范数约为 $\sqrt{d_k}$，改成单位向量后的尺度可对应β约 $\sqrt{d_k}$；这不是对任意训练模型都精确成立的恒等关系。[Transformer原论文](https://arxiv.org/abs/1706.03762)与[AM12](../pages/AM12.html)、[AM13](../pages/AM13.html)可结合阅读。

## 当前条目来自哪里，百万量级又意味着什么

MLP的 $W_1/W_2$ 是训练参数。self-attention中的投影 $W_K/W_V$ 也是训练参数，但 $K=XW_K$、$V=XW_V$ 是当前输入计算出的结果。X多一行，可以让K/V多一行，而不改变投影矩阵大小。

因此“非参数式”描述的是条目能随输入长度增长，不是attention没有参数，也不是一个token等于一条独立事实。普通推理中读过A12秒/B8秒材料，可以影响本次回答而不改变训练参数；下一次请求能否看到它，取决于应用是否再次提供或保留相关上下文。KV缓存属于保留计算结果的工程机制。[AM14](../pages/AM14.html)讲来源，后续服务段再计算成本。

对随机单位key的相似度作高斯近似 $s\sim\mathcal N(0,1/d_k)$，精确查询下指数读取有

$$R_{\rm RMS}\approx\sqrt{M-1}\exp(\beta^2/d_k-\beta).$$

忽略一项目标，R=1给出 $M\approx\exp(2\beta-2\beta^2/d_k)$。64维、β=8时约 $e^{14}=1.20\times10^6$；有限维球面矩计算约 $1.27\times10^6$。两者不是作者采样中位数统计。

若目标匹配为ρ而不是1，高斯估计改为 $\exp(2\beta\rho-2\beta^2/d_k)$。它显示查询噪声会迅速降低这个量级。独立随机value的向量合成也十分关键：不能把许多非目标权重的绝对值直接相加，再与这里的R比较。

这些结果说明选择性读取能在理想条件下显著延后干扰占优；没有证明64维模型存下百万个人类事实，没有给出真实上下文长度保证，也没有消除保存K/V与计算匹配的成本。[AM15](../pages/AM15.html)始终带条件读数量级。

## 长度改变后，锐度能做什么

固定β时，M增长仍使弱贡献累积。本课用一条LogN教学对照：

$$\beta(M)=8\max\left(1,\frac{\ln M}{\ln1024}\right).$$

1024是本检索实验的参考长度，**不是Qwen报告的真实训练长度2048**。前台比较固定β=8与此规则，仍假定64维随机单位key、独立各向同性value和精确查询。旁边以同一组分数比较不同β时的全部softmax权重，不把变化画成只有目标增加。

[Qwen技术报告](https://arxiv.org/abs/2309.16609)中的LogN、[Su的推导](https://kexue.fm/archives/8823)与[YaRN](https://arxiv.org/abs/2309.00071)的尺度不同。YaRN中的 $0.1\ln(s)+1$ 作用于q/k幅度，因而对logit的因子平方；s为上下文扩展比例。把尺度按当前候选M变化，是理想检索实验中的比较设置，不能等同完整模型部署。

更尖锐不总是更有用。分配趋近只取一项，会减少多个相关内容的共同参与；训练时还可能饱和，多个方向的梯度变小。有限精度、位置外推、训练分布、噪声查询、显存和计算都仍存在。有限个互异key、精确查询、锐度可任意提高的数学极限，与真实系统是不同的问题；图示有限长度范围的改善不证明无限容量。详见[AM16](../pages/AM16.html)。

## 从机制走向训练证据

对线性层 $y=Wx$，梯度更新为

$$\Delta W=-\eta\frac{\partial L}{\partial y}x^\top.$$

它有外积形式，说明参数如何改变输入与输出方向之间的关联；但 $-\eta\partial L/\partial y$ 是误差信号，不是原始事实value。实际网络还需学习合适的内部表示，且这些表示在优化中变化。因此能表示、训练能学到、任务能用好，需要分别检查。

[现代Hopfield与attention](https://arxiv.org/abs/2008.02217)讨论关联检索的联系；[固定参数量事实记忆](https://arxiv.org/abs/2412.06538)则是另一类研究问题。不能用显式K/V随M增加的检索曲线替代固定参数模型的事实容量结论。

[AM17](../pages/AM17.html)和[AM18](../pages/AM18.html)将机制分析收束为一个实证问题：在清楚的任务和评测条件下，扩大模型或训练材料后，表现怎样变化？下一页[N11](../pages/N11.html)保留具体图像的patch操作，随后读取ViT和MAE的真实实验。结构提供可能性，实际训练、评测与资源条件决定其中哪些可能性变成可用能力。

## 可复算材料与来源

本节公开图表由独立实现生成，并保留输入、公式与统计方式。原文代码和图资产的公开可访问性不等于已授予开放再分发许可；课程保留[原配套仓库链接](https://github.com/KeAWang/associative-memory-blog)，不将其代码伪称为本课实现。

课堂、当前停点说明、逐页阅读与连续讲者稿共用作者内容。模拟问答是备课设计，不能作为真实学生已经理解的证据。


## 把这个问题带进实验

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

- [LAB 01 · M1 · 同一查询与目标，写得更多会怎样？](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 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)

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