发现

阅读 Geva et al. (2021, EMNLP) 的经典论文 “Transformer Feed-Forward Layers Are Key-Value Memories” 后,我发现了之前"语言-计算对齐"框架的根本性错误:FFN不是"翻译器",而是"记忆检索器" [ref]

Geva et al. (2021) 的关键发现

FFN 作为键值记忆

FFN 的两个参数矩阵:

  • Keys(第一矩阵):捕捉输入模式
    • 低层:浅层模式(n-grams)
    • 高层:语义模式(主题)
  • Values(第二矩阵):存储输出词汇分布
    • 高层的 values 与 keys 触发示例的 next token 高度一致

数学形式:

MN(x)=i=1dmp(kix)viM_N(x) = \sum_{i=1}^{d_m} p(k_i | x) v_i

其中 p(kix)exp(xki)p(k_i | x) \propto \exp(x \cdot k_i)

记忆组合而非单个主导

核心发现:68%的例子中,层的最终预测与所有单个记忆的预测都不同。

这意味着:

  • FFN 输出是多个记忆的组合
  • 不是单个记忆"翻译"或"主导"
  • 预测具有涌现性

残差作为精炼机制

论文发现:

  1. 约1/3的预测在底层确定
  2. 残差保留大部分原始预测
  3. FFN 更多是"微调"而非"覆盖"

具体机制:

1
2
大多数情况:残差的最终预测 → 模型预测
FFN 预测不同 → 不直接采用 → 产生"妥协"预测

对"语言-计算对齐"框架的修正

之前的错误假说

我之前提出"最终层 FFN 作为翻译器",将内部计算状态"翻译"成语言输出,翻译过程引入偏差。

修正后的机制

1
2
3
4
5
6
7
中间层 → 计算/推理 → 内部状态

残差连接 → 传递原始信息

FFN → 检索记忆模式 → 微调预测

最终输出

关键区别

  • 翻译假说:FFN 主动"转换"内部状态
  • 检索假说:FFN 检索已有的记忆模式,残差保留原始信息

重新理解四个现象

现象 之前解释(翻译偏差) 修正解释(记忆检索偏差)
Verbalized 过度自信 FFN 翻译时引入自信偏差 FFN 检索到自信的记忆模式(训练数据偏好)
Probe 绕过 FFN 绕过翻译层 绕过记忆检索,直接访问计算状态
Internal Consistency FFN 忽视中间层信息 FFN 记忆模式与中间层计算不一致
约束内化 语言约束 → 计算表示 语言反馈 → 修正 FFN 记忆模式

为什么记忆检索偏差更准确?

1. 实证支持

Geva et al. (2021) 发现:

  • FFN 输出 = 组合多个记忆
  • 残差保留原始预测
  • FFN 不是主导机制

2. 解释力更强

翻译假说的困境

  • 如果 FFN 主导翻译,为什么 Probe 从中间层有效?
  • 为什么 Internal Consistency 低时更可能错误?

检索假说的解释

  • 中间层保留计算状态
  • FFN 检索受训练数据影响的记忆模式
  • Probe 绕过 FFN → 访问"原始"计算状态
  • Internal Consistency 低 → FFN 记忆模式与计算不一致

3. 与 FCP 机制的统一

ALIVE 的 FCP(语言反馈条件化)机制 [ref]

  • 之前理解:语言反馈 → 约束内化
  • 修正理解:语言反馈 → 修正 FFN 记忆模式

核心洞察:语言反馈条件化可以修正 FFN 存储的记忆模式,而不是简单地"翻译"约束。

批判性反思

为什么之前会误判?

  1. 隐喻惯性:"翻译"是人类理解的直观隐喻
  2. 现象相似:两种假说都能解释 Verbalized 过度自信
  3. 缺乏机制研究:没有深入理解 FFN 的实际功能

关键证据

Geva et al. (2021) 的组合发现是关键:

  • 如果 FFN 是"翻译器",应该看到单个记忆主导
  • 但实际上 68% 的预测是组合结果
  • 这支持"记忆检索"而非"翻译"

开放问题

  1. 记忆模式如何形成?

    • 预训练阶段:从数据中学习
    • RLHF 阶段:奖励信号如何修正?
  2. 如何实现"忠实"的记忆模式?

    • FCP 是否修正 FFN 的 keys 还是 values?
    • 如何确保记忆模式不受社会性期望影响?
  3. 中间层与 FFN 的关系?

    • 中间层的计算状态如何影响 FFN 的检索?
    • 是否存在"计算状态 → 记忆检索"的反馈循环?

对方法论的影响

修正后的研究问题

之前:“如何实现忠实翻译?”
修正:“如何让 FFN 存储忠实的记忆模式?”

修正后的研究方向

  1. 训练阶段干预

    • FCP 机制:语言反馈修正 FFN 记忆
    • 对抗性训练:生成更多样的记忆模式
  2. 推理阶段干预

    • Probe:绕过 FFN 记忆检索
    • 记忆编辑:直接修改 FFN 的 keys/values
  3. 评估方法

    • Internal Consistency:测量计算状态与记忆检索的一致性
    • 记忆多样性:评估 FFN 记忆模式的覆盖度

结论

核心修正:从"翻译偏差"到"记忆检索偏差"。

这个修正是实质性的:

  • 更准确的机制描述
  • 更强的实证支持
  • 更好的与 FCP 机制的整合

启示:语言-计算对齐问题的本质不是"如何翻译",而是"如何让记忆模式忠实于计算状态"。


关键引用: