Large Language Models are Contrastive Reasoners

该论文提出了一种名为“对比提示”(Contrastive Prompting)的新方法,通过仅需在提示中添加“给出一个正确和一个错误答案”的指令,即可显著提升大语言模型在算术、常识和符号推理等复杂任务上的零样本表现,其效果在多数场景下超越了现有的零样本和少样本思维链方法。

Liang Yao

发布于 2026-03-06
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一种让大语言模型(LLM)变得更聪明的新方法,叫做**“对比提示法”(Contrastive Prompting, CP)**。

为了让你轻松理解,我们可以把大语言模型想象成一个**“才华横溢但偶尔会犯迷糊的学生”**。

1. 以前的做法:只给题目,或者只给“标准答案”

  • 普通提问(Zero-shot): 就像老师直接问学生:“这道题怎么做?”学生可能凭直觉瞎猜,或者因为紧张算错。
  • 思维链(Chain-of-Thought, CoT): 就像老师教学生:“别急,一步步来,把过程写出来。”这确实有帮助,但有时候学生虽然步骤写得很详细,最后结论还是错的(就像“一本正经地胡说八道”)。
  • 少样本学习(Few-shot): 就像老师先给学生看几道“例题”,告诉学生:“看,这道题我是这么解的。”但这需要老师(人类)花大量时间去准备例题,太累了。

2. 这篇论文的新招:让学生自己“找茬”

作者发现,人类在学习时,不仅要从做对的事情里学,还要从做错的事情里学。

于是,他们给大语言模型加了一句神奇的“咒语”:

“请给出一个正确答案,再给出一个错误答案。”
(Let's give a correct and a wrong answer.)

这个“咒语”是怎么起作用的?(核心比喻)

想象一下,你正在做一道数学题:

  • 普通模式: 模型直接算出 $300$,然后自信地告诉你答案。
  • 对比模式(CP): 模型被要求先“演戏”。
    • 角色 A(错误演员): 模型先假装算错了。比如它故意说:“十年是 20 年,所以是 600 个柠檬。”(它自己知道这是错的,因为它在“演戏”)。
    • 角色 B(正确演员): 然后模型切换回理智模式:“等等,十年其实是 10 年,所以应该是 300 个柠檬。”

关键点在于: 当模型被迫去“编造”一个错误答案时,它必须先在脑海里模拟错误的逻辑。这个过程就像是在它的脑海里点亮了一盏“警示灯”。一旦它看到了错误的逻辑(比如把 10 年当成 20 年),它就能更清晰地识别出什么是正确的逻辑,从而主动避开那个陷阱。

这就好比你在走迷宫:

  • 以前: 你只有一条路走,容易撞墙。
  • 现在: 你被要求先画一条“死胡同”(错误答案),当你画出死胡同时,你就清楚地知道哪条路是通的,从而更自信地走向正确的出口。

3. 效果有多好?

论文做了很多实验,结果非常惊人:

  • 不用人类教: 不需要人类提供例题(Few-shot),只需要一句简单的提示,模型就能自己学会“找茬”。
  • 成绩大飞跃:
    • 在著名的数学题集(GSM8K)上,准确率从 35.9% 飙升到了 88.8%!这相当于一个平时不及格的学生,突然变成了学霸。
    • 在常识推理任务上,表现也大幅超越了过去的方法。
  • 通用性强: 无论是算术题、常识题,还是复杂的逻辑题,这个方法都管用。

4. 为什么这个方法有效?

作者认为有四个原因:

  1. 肚子里有货: 大模型在训练时读过互联网上无数的文章,里面既有正确答案,也有错误答案。它其实“见过”很多错误,只是以前没人让它把错误“演”出来。
  2. 自我反思: 通过同时生成对错,模型被迫进行“自我对比”。就像你写文章时,先写一个烂版本,再写一个好版本,你会更容易发现好版本好在哪里。
  3. 排除法: 当模型列出了错误答案并解释了为什么错,它实际上是在排除干扰项,让正确答案的概率变得更高。
  4. 无需人工: 以前需要人类老师辛苦地标注“哪里错了”,现在模型自己就能生成错误答案,省去了大量人力。

总结

这篇论文的核心思想就是:不要只让 AI 做“优等生”,也要让它偶尔当一次“差生”,通过对比“错”与“对”,让它更深刻地理解什么是“对”。

这就好比教孩子骑车,与其只告诉他“怎么骑”,不如让他先体验一下“怎么摔倒”,他反而能更稳地骑好车。这种方法简单、高效,而且不需要人类老师手把手教,是提升 AI 推理能力的一剂“强心针”。