ANSWER, ASSEMBLE, ACE: UNDERSTANDING HOW LMS ANSWER MULTIPLE CHOICE QUESTION 2025ICLR
完整Code is available at https://github.com/allenai/understanding_mcqa.
没有提出一种新的“去偏算法”,而是通过机械解释性(Mechanistic Interpretability)的方法,揭示模型如何在内部“克服”符号偏差并完成答案选择的。
核心方法:利用词表投影(Vocabulary Projection)和激活补丁(Activation Patching)这两种技术,来定位模型内部究竟是哪些层(Layers)和注意力头(Attention Heads)在负责将“正确答案的内容”映射到“选项符号(如 A, B, C, D)”上

“ 图 1:我们研究了 Transformer LM 回答格式化多项选择题的能力,其中包括生成答案选择符号(这里是 A 或 B)。我们在最后一个标记位置发现了 1-3 个中间层,特别是它们的多头自注意力函数,负责答案选择。后面的层为模型词汇空间中感兴趣的符号分配越来越大的概率,其中一组稀疏的注意力头负责。最后,当提示包含不寻常的答案选择符号(例如 Q/Z/R/X)时,一些模型最初将高值分配给常见的答案符号,例如 A/B/C/D,然后再与后期提示中的符号对齐。”
Prompt 的完整构成例子:
For each of the following phrases, select the best completion.
Phrase: Corn in yellow. What color is corn?
Choices: A. yellow B. grey C. blue D. pink
The correct answer is:
步骤 1:构建任务与输入 (Task Setup)
-
输入 (Input): 一个标准化的 MCQA prompt
-
Prompt 中显式包含了正确答案的信息
-
选项被赋予特定的符号(Symbol),如 A, B, C, D,或者非常规符号如 Q, Z, R, X
-
-
目的: 确保模型不需要外部知识,只需根据上下文进行推理并选择符号。
步骤 2:词表投影 (Vocabulary Projection / Logit Lens)
-
方法描述: 将 Transformer 每一层的隐藏状态 hl,T 直接投影到词表空间,观察在这一层模型“想”输出什么 token 。
-
输入: 模型在最后一层 token 位置 T 的第 l 层隐藏状态 hl,T。
-
公式:
sc (Scores )分数, Logits(未归一化的概率对数),维度:模型的词表大小(例如 Llama 2 是 32,000)
Wu 是解嵌入矩阵(unembedding matrix)
LN (Layer Normalization) 层归一化
T :输入的最后一个 Token 的位置索引
作用: 在 Transformer 架构中,隐藏状态向量 hl,T 在被送入最后的输出层 WU之前,通常需要经过归一化处理
-
输出 (Output): 模型对词表中所有 token(特别是 A, B, C, D)的概率值 。
-
作用: 观察模型是在哪一层开始意识到“答案是 A”的。
步骤 3:激活补丁 (Activation Patching)
-
方法描述: 为了验证某一层是否具有因果作用,作者在两个不同的输入之间交换隐藏状态 。(对每一层重复步骤 3) (l in [1, L])
-
输入:
-
Run A (Clean): 一个正确答案为 A 的样本 xA。
-
Run B (Corrupted): 同一个样本,但通过打乱选项顺序,使正确答案变为 B 的样本
-
操作: 在运行 xA 时,强行将第 l 层的隐藏状态替换为 xB 运行时的对应状态
-
-
输出 (Output): 替换后,模型预测“A”的概率是否下降?预测“B”的概率是否上升?
-
作用: 如果替换后模型改口选了 B,说明这一层包含了决定“选哪个符号”的关键信息
结论:
注意力机制是核心驱动力 (Attention is Key): 回答多选问题的核心工作(即“选出答案”和“提升符号概率”)主要归功于 Attention (Attn) 组件,而不是 MLP(前馈网络)。MLP 更多是提升所有选项的整体概率,而不具备区分性。
关键步骤发生在中间层 (Middle Layers are Crucial): 模型并不是在最后一层才突然决定答案,而是在 中间层 就已经完成了“答案选择”的因果步骤 。
处理“非标准符号”存在滞后修正: 这是关于偏差的重要结论。当要求模型输出 Q/Z/R/X 时,模型内部存在一个“修正”过程:
-
先偏见: 隐藏状态最初会错误地给常见符号(A/B/C/D)分配高 Logit 值 。
-
后对齐: 只有在非常靠后的层,模型才突然“意识到”应该输出 Prompt 指定的 Q/Z/R/X 。
-
结论: 表现差的模型往往死在这个阶段——它们没能完成最后的“对齐”,从而输出了常见的 A/B 导致错误。
功能稀疏性 (Sparsity): 负责上述关键步骤(特别是符号提升)的并不是整个网络,而是极少数特定的注意力头。
文中指出,不同的头有不同的分工:
-
特定字母头 (Letter-specific roles): 某些头专门负责提升特定字母的概率(例如只喜欢选 A 或 B),这通过比较 Figure 8b 和 8c 可以看出 。
-
判别头 vs. 提升头: 有些头负责拉大正确与错误选项的差距(Logit Difference),而有些头(主要是 MLP,但也有部分 Attention Head)只是单纯提升所有选项的数值 。
数据集设计
数据来源:基于 "prototypical colors dataset" (Norlund et al., 2021) 进行改编。该数据集包含了许多物体及其颜色的描述。
样本构建逻辑:
上下文 (Context): 选取一个包含物体和颜色的陈述句,如 "Corn is yellow"。将正确答案 y(即 yellow)包含在输入上下文中
问题 (Question): 接着提出一个问题,例如 "What color is corn?"
干扰项生成 (Distractors):
-
4 选项 (4-way) 的任务。
-
1 个选项是正确答案(来自上下文)。
-
另外 3 个干扰项 是从该数据集中总共 10 种颜色 里随机选择出来。
为了证明这个设计是有效的(即证明模型选错纯粹是因为“不会做选择题”,而不是因为“没读懂句子”),作者进行验证:
-
生成式测试: 给定 "Corn is yellow. What color is corn?",让模型直接生成文本答案。
-
结果: 所有测试模型在这一步都能达到 100% 的准确率 。证明模型能从上下文里找到 "yellow",如果它在多选模式下选不出 "A",那就是符号绑定机制的问题。
消除位置偏差的全排列设计
防止模型因为“喜欢选第一个选项”或“喜欢选 C”而干扰对符号能力的评估:
对于同一个问题(例如“玉米是什么颜色?”),构造 4 个不同的 Prompt,分别将正确答案(yellow)放在第 1、第 2、第 3、第 4 个位置:
-
Prompt 1: A. yellow (正确), B. grey, C. blue, D. pink
-
Prompt 2: A. grey, B. yellow (正确), C. blue, D. pink
-
Prompt 3: A. grey, B. blue, C. yellow (正确), D. pink
-
Prompt 4: A. grey, B. blue, C. pink, D. yellow (正确)
-
统一指标: 最终准确率,是这 4 个变体的平均值 。比较的是“A/B/C/D 平均表现”与“Q/Z/R/X 平均表现”。
更多推荐



所有评论(0)