Notes on Intepretability
最近 LLMs (大语言模型)火得一比吊糟, 笔者也不能免俗, 因此弃坑光影包(并没有, 其实还在写)转战此处.
相比于一些连线性代数都没学好而每天阅读 transformer 基础教程的热衷于制造 fancy 字符串拼接轮子的前端程序员和勤于转发 10 个你必须知道的 prompt 技巧并喜欢制造 LLM 蜈蚣的产品经理[1], 笔者无意于在谈天狗屁通本体之外糊一层技术含量稀薄无比的壳. 模型参数量数据量大推理能力就是强, 上下文窗口大就是能碾压基于段落向量嵌入存取上下文的方法, 这是无论如何写 prompt 都改变不了的对比关系. 在价值链上, prompt 必将成为 CRUD 类似物, 也许可以养活一些 prompt boy, 但也可以一夜之间让他们被开掉; 一切不碰 LLM 权重的魔改套壳都不能从根本上提高 LLM 的能力.
训练 LLaMa 产生了大约
以上愿景似乎还不足以让可解释性研究被单列出来作为一个领域(而只作为 LLM 训练者的业余休闲). 感谢终结者系列, 感谢黑客帝国系列, 感谢所有热衷于以人工智能叛乱人类灭绝为题材的电影小说作者描摹了充满心机能力强大的人工智能形象, 公众对于人工智能危险性的关注似乎与它的实际能力不太相称; 感谢互联网上所有的喷子, 语言模型的友好性的价值被大大凸显; 感谢所有以 prompt 为核心价值的产品和功能, 其产品经理试图建立壁垒的努力和乐子人偷 prompt 或白嫖 token 量的努力让反越狱变得看起来的确是一个重要的安全措施. 所有这一切对人工智能的可靠性/友好性/忠诚性的期望带来了对理解 LLM 的幻觉的需求[2], 从而也养活了不少以对齐(Alignment)为主要拉赞助理由的可解释性研究人员. 例如, 如果我们需要
- 判断 LLM 是否在进行欺骗
- 判断 LLM 是否确实学到了我们在预训练期间提供的知识
- 纠正 LLM 中存储的错误知识
- 检查 LLM 真正[3]的推理过程
- 保证 LLM 能在复杂环境下进行正确的指代消解
- 阻止 LLM 将"金贵"的 prompt 傻乎乎地输出给用户
我们就仍然必须深入 LLM, 去解释这个神秘的黑盒子里究竟发生了啥. 对这个黑盒子可以有好多层面的理解:
- 检查黑盒子里每个神经元的激活条件, 并尝试总结出每个神经元各自的激活规律.
- 将黑盒子内紧密协作的权重看作一条线路(circuit), 对每条线路的工作方式进行概括, 并对于一些能完成一定复杂度的任务的组合线路, 分解出各线路在其中发挥的作用.
- 让黑盒子去处理一个因果图已知的问题, 并搜索黑盒子的内在表征, 以把这些表征与因果图中的中间变量对应起来.
更间接一些的理解有:
- 检查 LLM 内常见的子结构, 并通过消融实验来证明这些子结构在训练中的出现与 LLM 的 ICL(In-Context Learning) 能力有关.
- 通过总结神经元激活条件与层数的关联, 得出低层神经元储存词法句法等知识, 高层神经元储存语义和事实信息的结论.
笔者比较好(2)这一口, 因此本文将先介绍这一层面的理解所需基本的框架. 本文剩余部分是笔者阅读可解释性相关论文的笔记. 为了阅读本文, 读者应具有对基于 transformer 的语言模型的基本知识.
A Mathematical Framework for Transformer Circuits
这一数学框架来自 transformer-circuits.pub.
首先回顾 pre-norm transformer LLM 的基本结构. transformer 处理的是 token 序列. 一个 token A 通过取出嵌入矩阵 d_model
, 大小往往成百上千. 随后 transformer 通过堆叠
pre-norm transformer 的构建块具有以下形式:
其中,
值得在 transformer 的语境下以一种直观而不严谨的方式定义信息(的类似物). 考虑网络中的任何一个位置上的向量. 该向量有表观维度
. 如果它在网络中被进行了一个秩不低于
而在残差流中传输的
其中,
Attention 机制则为信息在不同 token 之间的流动提供了手段. 例如, 在第
// TODO
- 1.是的,这确实是不客观的充满偏见的地图炮,但地图炮很爽;这一段是照着我的推特timeline写的,你也不希望自己的推特timeline被这种东西充满,不是吗? ↩︎
- 2.也许有人会说,理解LLM中每一个注意力头的作用和每个嵌入维度的作用就足以理解LLM了.然而,LLM终究是一个足够复杂的系统,由于superposition的存在,很难说能保证不遗漏在复杂上下文中嵌入维度的特殊语义;组合起来的注意力头会产生远比单个注意力头复杂的行为.在这种情况下,也许对LLM的理解只能停留在一种幻觉的层面(就如同笔者尽管熟知计算机体系结构,却仍然会被主板的硬件bug折磨一样). ↩︎
- 3.通过CoT等技巧诱导LLM输出的推理过程不见得是其真正使用的推理过程.这又是一种自以为理解LLM的幻觉,即把它们看作诚实的人类,误以为它们会准确地说出自己的内心戏. ↩︎