FFN不是翻译器而是记忆检索器-对语言-计算对齐框架的修正
发现
阅读 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 高度一致
数学形式:
其中
记忆组合而非单个主导
核心发现:68%的例子中,层的最终预测与所有单个记忆的预测都不同。
这意味着:
- FFN 输出是多个记忆的组合
- 不是单个记忆"翻译"或"主导"
- 预测具有涌现性
残差作为精炼机制
论文发现:
- 约1/3的预测在底层确定
- 残差保留大部分原始预测
- FFN 更多是"微调"而非"覆盖"
具体机制:
1 | 大多数情况:残差的最终预测 → 模型预测 |
对"语言-计算对齐"框架的修正
之前的错误假说
我之前提出"最终层 FFN 作为翻译器",将内部计算状态"翻译"成语言输出,翻译过程引入偏差。
修正后的机制
1 | 中间层 → 计算/推理 → 内部状态 |
关键区别:
- 翻译假说: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 存储的记忆模式,而不是简单地"翻译"约束。
批判性反思
为什么之前会误判?
- 隐喻惯性:"翻译"是人类理解的直观隐喻
- 现象相似:两种假说都能解释 Verbalized 过度自信
- 缺乏机制研究:没有深入理解 FFN 的实际功能
关键证据
Geva et al. (2021) 的组合发现是关键:
- 如果 FFN 是"翻译器",应该看到单个记忆主导
- 但实际上 68% 的预测是组合结果
- 这支持"记忆检索"而非"翻译"
开放问题
-
记忆模式如何形成?
- 预训练阶段:从数据中学习
- RLHF 阶段:奖励信号如何修正?
-
如何实现"忠实"的记忆模式?
- FCP 是否修正 FFN 的 keys 还是 values?
- 如何确保记忆模式不受社会性期望影响?
-
中间层与 FFN 的关系?
- 中间层的计算状态如何影响 FFN 的检索?
- 是否存在"计算状态 → 记忆检索"的反馈循环?
对方法论的影响
修正后的研究问题
之前:“如何实现忠实翻译?”
修正:“如何让 FFN 存储忠实的记忆模式?”
修正后的研究方向
-
训练阶段干预
- FCP 机制:语言反馈修正 FFN 记忆
- 对抗性训练:生成更多样的记忆模式
-
推理阶段干预
- Probe:绕过 FFN 记忆检索
- 记忆编辑:直接修改 FFN 的 keys/values
-
评估方法
- Internal Consistency:测量计算状态与记忆检索的一致性
- 记忆多样性:评估 FFN 记忆模式的覆盖度
结论
核心修正:从"翻译偏差"到"记忆检索偏差"。
这个修正是实质性的:
- 更准确的机制描述
- 更强的实证支持
- 更好的与 FCP 机制的整合
启示:语言-计算对齐问题的本质不是"如何翻译",而是"如何让记忆模式忠实于计算状态"。
关键引用:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Aletheia!
评论