当前位置: 首页 » 资讯 » 新科技 » 正文

当AI考试蒙对了答案,我们却以为它真的懂了

IP属地 中国·北京 科技行者 时间:2026-08-29 00:16:09


你有没有想过一个问题:一个大语言模型在选择题考试里拿了90分,这到底说明了什么?

大部分人的直觉反应是,这说明它掌握了这些知识。但2024年一系列研究开始戳破这个幻觉,最扎心的发现是这样的:如果你把选择题的选项顺序打乱,同一个模型、同一道题,答案可能会变。

这不是小概率事件。研究显示,把ABCD的顺序换一换,模型给出的答案经常会跟着换。也就是说,模型考90分,可能不是因为它懂这道题,而是因为它对"这道题恰好长这个样子"产生了某种条件反射。

这就好比你去检查一个学生是不是真的会做数学题,你把选项A和选项C换个位置,如果这孩子的答案也跟着变了,你会怎么想?你大概会怀疑,他压根不是在算题,而是在凭某种直觉蒙——也许他记住了"正确答案通常在第二个位置"这种规律,也许他被某个选项的措辞风格吸引了注意力。这不是知识,这是投机。

这篇来自贝尔法斯特女王大学的论文,标题叫《Accuracy and Order Sensitivity Diverge Under Label-Free Strategies》,做的就是这件事:既然选项顺序会污染我们对模型知识的判断,那有没有办法让模型在不看选项顺序的情况下作答,从根源上避免这个问题?

答案可能会让你意外:两种看似很合理的"防作弊"方案,效果都不理想。这篇论文最有价值的地方,不是告诉你哪个方法管用,而是通过一层层拆解,告诉你为什么这些看似正确的直觉,在实践中会失灵。

选择题评测,到底哪里出了问题

先说清楚背景。

多选题benchmark

*benchmark:用来衡量AI模型能力水平的标准化测试集,常见的比如MMLU、ARC-Challenge*

之所以被广泛使用,原因很简单:便宜、好打分、能自动化。你不需要雇人去评判模型的回答是否正确,机器直接对比A、B、C、D就行了。MMLU这个基准包含14042道题,横跨57个学科;ARC-Challenge是更难的一批,专门收录那些连检索算法都答不出来的科学题。

但便宜带来的代价,是评测本身可能不靠谱。

已经有多篇论文指出,模型对选项顺序异常敏感。有研究发现,仅仅重新排列选项,模型的表现就会发生显著变化。还有研究提出一个更尖锐的说法:模型可能不是在"找出正确答案",而是在"排除最不像错的选项"——这是两种完全不同的认知过程,但产出的准确率数字可能长得一样。

这就带来一个棘手的矫正问题。如果模型的选择题成绩里混杂着"真知识"和"位置偏好"这两种成分,那么单看准确率这一个数字,你根本分不清哪部分是真本事。

已有的纠偏方法,比如循环排列(把选项轮流放在每个位置,问四遍取多数)和全排列(把所有排列方式都问一遍),确实能在一定程度上消除位置偏差,但代价是要多问k次甚至k!次,题量一大就跑不动了。还有一种叫PriDe的方法,用一个小的校准集去估算模型的位置偏好,然后从预测结果里减掉这个偏好——听起来很聪明,但它需要拿到模型的logits(也就是每个选项被选中的概率分布),而很多商业API根本不对外开放这个数据。

*logits:模型在给出最终答案前,对每个候选选项计算出的原始概率分数,用来衡量模型对每个选项的"信心"*

这就是这篇论文想解决的真正问题:能不能设计一种不需要反复问、也不需要拿到logits的方法,从提示词设计(prompt design)本身出发,让模型压根就"看不到"选项顺序,从而彻底避免这个偏差?

方案一:先让模型自由发挥,再帮它对号入座

第一个思路叫两阶段提示(Two-Stage prompting)。

它的逻辑是这样的:如果模型的答案偏差来自"看到了ABCD的排列方式",那我干脆先不给它看选项,只给它看问题本身,让它自由地用自己的话回答。等它说完了,我再拿着它的回答,去四个选项里找最匹配的那个。

具体流程分两步。第一步(Stage 1),模型只收到问题文本,没有任何选项,直接生成一段自由文本的答案。第二步(Stage 2),把这段自由文本连同四个选项一起交给模型(或者交给另一个匹配算法),让它判断哪个选项和这段自由文本的意思最接近。

这个思路听起来相当合理,对吧?如果模型压根没看到选项的排列顺序,它总不可能被排列顺序影响。这就好比你想测试一个人是不是真的认识某位明星,你不给他看照片墙(照片墙上明星的位置可能会诱导他随便指一个),而是先让他凭记忆描述这位明星的长相,再拿这段描述去对照片墙上找。如果他描述得清楚准确,匹配环节应该是水到渠成的事。

问题恰恰出在这个"如果"上。

论文测试了六个模型(包括GPT-4.1 mini、Gemini 2.5 Flash、两个版本的Llama 3.1 8B、两个版本的Qwen 2.5 7B)在两个benchmark上的表现,结果是:两阶段提示在12组"模型-数据集"组合里,有11组的准确率反而下降了。

这不是个小打折扣,有些情况下的跌幅相当惨烈。Gemini在MMLU上从84.9分掉到68.3分,跌了16.6个百分点;在ARC-Challenge上从96.9掉到86.6,跌了10.3个百分点。

真正戳破这个方案幻觉的,是GPT-4.1 mini这个案例。它在这个流程中一次解析失败都没有出现(也就是说,Stage 2的匹配步骤100%成功找到了一个选项),可它的准确率依然从81.8掉到了80.1。这说明问题不是"匹配没做好"这么简单,而是更深层的东西出了问题。

问题出在哪?论文给出了一个相当有说服力的解释:很多选择题,如果不给你看选项,你压根没法回答。

想想这种题型:"以下哪一项最能描述XX现象?"这种问题本身是依赖选项存在的,它的完整语义需要靠选项来补全。如果你藏起选项只让模型凭空回答,模型给出的自由文本很可能是模糊的、不完整的,甚至压根答不到点上——不是因为它不懂这道题,而是因为这道题的提问方式本身就依赖"对照选项来确定答案范围"这个机制。

论文里做了一个特别巧妙的拆解实验,来验证这个猜想。他们设计了一个2×2的诊断网格:把"Stage 1是否给模型看选项"和"Stage 2是用LLM来匹配还是用语义相似度算法匹配"这两个维度交叉组合,得到四种配置。

这个网格用来测的关键,是把"藏选项"和"匹配方式差"这两个可能造成损失的因素分开算。结果非常清楚:当Stage 1藏起选项、Stage 2改用语义相似度算法匹配的时候,性能会暴跌。但只要把Stage 1的选项亮出来,即使Stage 2依然用简单的语义匹配算法,大部分的损失都能被找回来。GPT-4.1 mini在MMLU上从45.8分直接跳到81.7分,恢复了35.9个百分点。

这说明什么?说明真正的瓶颈,不是Stage 2的匹配算法不够聪明,而是Stage 1藏起选项这件事本身,就让很多题目变得没法回答了。

只有一种配置能稳定地打平baseline:选项在Stage 1里给模型看到,Stage 2用LLM来做匹配。但注意,这个配置已经不再是"位置无关"的了,因为选项顺序又被引入了Stage 2。也就是说,唯一效果好的方案,恰恰放弃了"不看顺序"这个初始目标。

方案二:把每个选项拆开单独审

如果Stage 1藏起选项会导致问题不完整,那有没有一种办法,既让模型看到每个选项的内容,又不让选项之间产生位置关系?

第二个方案叫独立假设评分(Independent Hypothesis Scoring)。

做法是:对每道题,模型被问k次(k是选项数量,通常是4)。每一次,模型只看到问题和一个选项,被要求给这个选项打一个0到100的分数,表示这个选项有多大可能是对的。四次打分做完之后,选分数最高的那个选项作为答案。

因为每次调用只涉及一个选项,选项之间根本没有"位置"这个概念存在——它们从来没有同时出现在同一个提示词里。这个方案从设计原理上,天然杜绝了位置偏差,不是靠事后纠正,而是从根本上让"位置"这个变量压根不存在。

这就好比给四个候选人分别做单独面试,而不是让他们四个人站成一排、面试官挨个问一遍。每个候选人被单独评估,谁站在第几个位置这件事根本无从谈起,因为他们从来没有以一个整体的形式出现过。

理论上这应该是最干净的解法。但结果又打了脸:独立假设评分在有效的11组"模型-数据集"配对里,8组的准确率是下降的。

只有一个模型是例外,本地部署的Llama 3.1 8B(论文里称Llama-local),它的准确率不但没降,反而涨了不少,尤其在ARC-Challenge上涨了14.4个百分点。

但论文接下来做的一件事特别值得说:它没有满足于"啊这个方法在这个模型上管用"就草草收场,而是去交叉验证了一下,这个涨幅到底是不是独立假设评分本身的功劳。

结果发现,不是。同样是Llama-local在ARC-Challenge上,循环排列这个完全不同的方法能让它涨到72.9分,Visible+LLM配置能涨到70.4分,独立假设评分涨到72.4分——三种毫不相关的方法,涨幅几乎一样。这说明这个模型本身有一种"容易被恢复的潜力",不管你用什么方法去恢复它,效果都差不多。这不是某个特定方法特别聪明,而是这个模型的baseline设置得特别糟糕,随便一种干预都能把它捞回来一点。

而在MMLU上,独立假设评分给Llama-local带来的涨幅就小得多了,只有1个百分点左右,在统计噪声范围内。这进一步说明,独立假设评分的效果,是数据集本身决定的,不是这个方法本身有什么特殊的魔力。

为什么独立假设评分整体表现不佳?论文给出的解释很有意思:把选项拆开单独打分,会丢失选项之间的比较关系。

已有研究发现,模型判断一个选项是否正确,很大程度上要靠"和其他选项对比"来完成推理,单独审视一个选项,缺乏这种参照系统。这就像让你判断一件衣服贵不贵,如果只给你看这一件衣服的价签,你可能没什么概念;但如果把它和旁边三件衣服放在一起比较,你立刻就能判断出这件是贵是便宜。选项之间的相对关系,本身就是一种信息,独立打分把这种信息彻底切断了。

还有一个统计细节值得一提:独立打分经常出现平局,也就是多个选项得到了同样的最高分。这种平局率在不同模型上从6.2%到43.2%不等,本地Llama在MMLU上平局率高达43.2%,接近一半的题目模型都拿不出明确的偏好,只能靠随机数来决定选哪个。这本身就说明这种打分机制的判别力是有限的。

消除了位置偏差,不代表答案更准

论文里还有一个特别值得展开说的发现,那就是"位置敏感度"和"答案准确率"这两件事,根本就不是一回事。

为了衡量位置敏感度,论文用了两个指标。一个叫翻转率(flip rate)

*翻转率:把同一道题的选项循环换位置问四遍,看模型给出的语义答案是否发生了变化的比例*

另一个叫召回标准差(RStd)

*RStd:按照正确答案落在A、B、C、D哪个位置,把题目分成四组,分别算模型在这四组题上的正确率,再看这四个正确率之间波动有多大*

这两个指标从不同角度衡量"模型有多依赖位置",数值越低说明模型越不受位置影响。

GPT-4.1 mini在MMLU上有一个特别讽刺的例子:用两阶段提示之后,它的翻转率从21.6%降到11.8%,几乎砍半,位置敏感度确实降低了。但同时,它的准确率也从81.8跌到了80.1。

也就是说,模型变得更"稳"了,但这份"稳"并不是靠更懂知识换来的,而是靠答不出题、随便给一个答案换来的。位置敏感度低,不代表答案对。

这个发现颠覆了一个很自然的直觉。你可能会觉得,一个不受选项排列影响的模型,一定比一个容易被排列干扰的模型更靠谱。但这篇论文用数据说明,这个推论是有漏洞的:一个模型完全可以用"变得更迷茫、更随意"的方式,来降低它对位置的敏感度,这种降低是虚假的进步。

语义匹配这个技术路径把这个悖论推到了极致:论文测试的十二组模型和数据集组合里,语义匹配的翻转率全部是0%,也就是彻底消除了位置影响。但代价是什么?准确率暴跌到三四十分的水平,比baseline掉了三四十个百分点。

*语义匹配:用一个专门训练来判断文本相似度的小模型(论文用的是all-MiniLM-L6-v2),去判断模型的自由文本回答和哪个选项在语义上最接近,不需要再调用一次大模型*

这就好比你为了防止一个学生看考场里其他人的答案而作弊,把他单独关在一个隔音的小房间里考试,确实,他再也不可能被别人的答案影响了,考试的"纯净度"达到了历史最高。但如果这个学生本来就不太会做题,单独关起来只会让他更加茫然,答得更差。消除干扰因素,不等于提升能力,这两件事的因果关系,经常被想反了。

论文还发现一个更微妙的细节,两个指标(翻转率和RStd)大部分时候是同向变化的,比如Gemini、Llama-API这些模型上,翻转率涨RStd也涨。但本地部署的Qwen 2.5 7B是个明显的反例:用两阶段提示之后,它的翻转率涨了(在MMLU上涨了5.2个百分点,在ARC上涨了12.2个百分点),但RStd反而降了(MMLU从8.06降到4.27,ARC从4.68降到3.05)。

这说明什么?说明这个模型的"整体位置公平性"(RStd衡量的是四个位置的整体正确率是否均衡)变好了,但"单题层面的稳定性"(翻转率衡量的是同一道题换个排列答案会不会变)反而变差了。这两个指标看的是不同层面的东西,一个是宏观均衡,一个是微观一致性,它们完全可以互相打架。这也提醒我们,衡量"公平"这件事,选用什么指标真的会得出不同的结论。

真正管用的老办法:循环排列

在所有测试的方法里,表现最稳的反而是最"笨"的循环排列法:把同一道题的选项轮换四种排列方式,各问一遍,取多数票作为最终答案。

这个方法在MMLU上六个模型里有五个准确率提升,在ARC-Challenge上同样是五个模型提升。综合来看,是所有被测试方法里表现最可靠的。

它为什么管用?论文的解释很朴素:多数投票本身自带一种去噪能力,即使模型受位置影响给出了不同答案,只要大多数排列下答案是稳定的,投票机制就能把这种偶发性的干扰抹平。它没有试图从原理上让模型"看不见"位置,而是承认模型会被位置影响,然后用统计手段把这个影响的平均效应削弱掉。

但循环排列也不是免费的午餐。它需要对每道题问k次(k是选项数),题库一大、模型调用成本一高,这个方法就会变得很贵。相比之下,两阶段提示只需要两次调用,独立假设评分虽然也要k次调用,但效果还比循环排列差。

论文里有一句话说得很直接:独立假设评分要的调用次数和循环排列一样多,但在11组对比里输给循环排列的有10组。这基本上宣判了独立假设评分在成本效益上是不划算的。

PriDe这个"聪明"方法,也没那么靠谱

前面提到PriDe需要拿到模型的logits,用一个校准集去估计位置偏好,再从预测里减掉这个偏好。这个方法听起来技术含量很高,但论文测试后发现,它甚至可能让准确率变得更差。

本地部署的Llama 3.1 8B在MMLU上用PriDe之后,准确率从50.2掉到44.2;在ARC-Challenge上从58.0掉到48.8。这两个跌幅都不小,说明即便有了logits这个"内部信息"的加持,纠偏这件事依然可能弄巧成拙。

这给了我们一个提醒:拥有更多的技术权限(比如访问logits),不代表你就能设计出更好的纠偏方案。方法本身的假设是否成立,比你能拿到多少数据更重要。

那这些结论到底说明了什么

把所有结果拼在一起看,这篇论文其实揭示了一个很反直觉的结论:想要消除选项顺序对模型答案的影响,和想要提升模型答案的准确率,这两件事在很多情况下是互相拉扯的,甚至是矛盾的。

这不是说消除位置偏差没有意义,恰恰相反,它的意义在于让我们知道一个模型的"真实水平"到底是多少,不掺水。但这篇论文提醒我们,消除偏差这件事,如果做得不小心,很容易变成"消除信息",而不是"消除噪音"。藏起选项、把选项拆开单独看,这些操作看似是在剔除干扰,实际上剔除掉的,可能是模型完成这道题所必需的上下文。

这就像给一场辩论赛去除"发言顺序优势"这个变量。你可以让每个人单独在一个房间里陈述观点,录下来,事后统一评判,这样确实没有人会因为先说或后说占便宜。但问题是,辩论本身的精髓恰恰在于交锋和回应,把辩手隔开单独录制,你消除的不只是顺序优势,你把辩论变成了各自陈词,这已经不是原来那件事了。

论文的作者在讨论部分提到一个对比研究,如果把MMLU-Pro和GPQA-Diamond里那些"必须靠选项才能确定答案范围"的题目筛选出来,题量会砍掉一半以上。这也就是说,大量的选择题本质上是"半成品问题",题干本身是不完整的,完整性要靠选项来补足。这从根本上解释了为什么"藏起选项让模型先自由回答"这个思路,天然带着硬伤。

写在后面

读到这篇论文最触动我的一点,是它没有满足于"提出一个方法,证明它管用"这种研究套路,而是反过来花大量篇幅去证明"这些看起来很合理的方法,为什么不管用"。这种诚实的负面结果报告,在学术圈里其实不算主流,大部分论文都倾向于展示自己方法的优越性,而这篇论文几乎全篇都在讲"我们试了,但没成功,而且我们告诉你为什么没成功"。

最让我意外的细节是GPT-4.1 mini那个案例:解析成功率100%,但准确率还是跌了。这打破了我一个默认假设,我一直以为,只要匹配环节不出错,两阶段方法的损失就该被完全消灭。这篇论文用实打实的数据告诉我,藏起选项这件事本身就是一种信息损失,跟你后面匹配得多准没关系。

还有一个细节值得单独说一下,独立假设评分在Llama-local上涨了14.4个百分点,乍看是个漂亮的结果,但作者接着做了个交叉验证,发现循环排列和另一个配置也能给这个模型带来差不多的涨幅。这个"打自己脸"式的严谨,我觉得比那14.4个百分点本身更有价值。它提醒我们,看到一个好看的数字,先别急着归因,多问一句"如果换个完全不相关的方法,会不会也涨这么多"。

一个问题留给你想:如果消除偏差和提升准确率经常是矛盾的,那我们到底是要一个"更公平但更笨"的模型,还是一个"更聪明但带偏见"的模型?这个选择,恐怕不只是技术问题。

Q&A

Q1:两阶段提示法为什么大多数情况下会降低模型的准确率?

A:因为很多选择题的题干本身依赖选项来补全语义,藏起选项后模型难以给出完整答案,问题不在匹配环节,而在于第一阶段看不到选项本身就丢失了关键信息,实验显示只要恢复选项可见性,大部分损失都能找回来。

Q2:独立假设评分是不是完全没用?

A:不是完全没用,它从设计上彻底消除了位置偏差,在本地部署的Llama 3.1 8B上确实带来了明显提升,但整体来看八成的模型-数据集组合准确率是下降的,原因是单独打分丢失了选项之间的比较信息,而且平局率偏高,说明判别力有限。

Q3:循环排列法为什么比其他去偏差方法更靠谱?

A:因为它不依赖模型看不见选项这个假设,而是承认位置会造成干扰,然后用多次问询加多数投票的方式把偶发性偏差平均掉,在论文测试的六个模型两个数据集组合里表现最稳定,代价是需要多次调用模型,成本更高。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其内容真实性、完整性不作任何保证或承诺。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。

全站最新