如何挑选最佳示例

Automatic Chain of Thought Prompting in Large Language Models, arXiv:2210.03493v1

研究背景与动机

大型语言模型(LLMs)在执行复杂推理任务时,能够通过生成中间推理步骤(即思维链,Chain-of-Thought, CoT)来提升性能。CoT提示主要有两种范式:一种是零样本CoT(Zero-Shot-CoT),即在问题后添加“Let‘s think step by step”等简单提示,引导模型逐步思考;另一种是手动CoT(Manual-CoT),即提供少量人工编写的、包含问题和对应推理链的示例进行少样本提示。Manual-CoT凭借精心设计的手动演示示例,通常能获得比Zero-Shot-CoT更优的性能,但其性能优势严重依赖于为特定任务手工设计有效的演示示例,这需要投入大量非平凡的人力努力。不同任务(如算术推理、常识推理)需要不同的演示方式,进一步增加了人力成本。

因此,本论文旨在解决的核心问题是:**如何在不依赖人工设计的情况下,自动构建有效的CoT演示示例,以匹配甚至超越Manual-CoT的性能,从而消除CoT提示中对人工设计的依赖。**​ 研究动机是探索利用LLMs自身的能力(通过Zero-Shot-CoT)来生成演示所需的推理链,实现CoT提示的自动化。

论文核心方法和步骤

论文提出了自动CoT提示方法(Auto-CoT),其核心思想是通过多样性采样简单启发式规则来自动构建演示示例。Auto-CoT主要包含两个阶段:问题聚类和演示采样。下面我们以一个具体的例子来演示Auto-CoT方法是如何工作的。

假设场景:我们使用算术推理数据集MultiArith(包含600个问题),目标是自动构建 k=8个演示示例。

第一步:问题聚类

  1. 向量化:使用Sentence-BERT模型将数据集中的600个问题全部转换为向量表示。例如,问题“一个厨师需要煮15个土豆。他已经煮了8个。如果每个土豆需要煮9分钟,他煮剩下的土豆需要多长时间?”会被转换成一个高维向量。

  2. 聚类:使用k-means算法将这些600个问题向量聚成 k=8个簇。每个簇包含语义上相似的问题。

  3. 排序:在每个簇内部,根据问题向量到簇中心向量的距离,对问题进行升序排序。距离最近的问题被认为是最能代表该簇的“中心”问题。

第二步:演示采样

现在,我们需要从每个簇中选出一个问题,并为其生成推理链,最终构成8个演示。我们以其中一个簇的采样过程为例。

  • 簇内遍历:假设在簇 i中,排序后的问题列表为 q(i)=[q1(i)​(距离最近),q2(i)​,q3(i)​,…]。算法从 q1(i)​开始尝试。

  • 生成推理链:对于当前尝试的问题 qj(i)​,比如是“Wendy上传了45张图片到Facebook。她把27张图片放入一个相册,剩下的放入9个不同的相册。每个相册有多少张图片?”,我们构建如下输入给LLM(如GPT-3):

    1
    2
    Q: Wendy uploaded 45 pictures to Facebook. She put 27 pics into one album and put the rest into 9 different albums. How many pictures were in each album?
    A: Let's think step by step.
  • LLM生成输出:LLM可能会生成如下推理链:

    1
    First, we know that Wendy uploaded 45 pictures in total. Second, we know that Wendy put 27 pictures into one album. That means that Wendy put the remaining 18 pictures into 9 different albums. That means that each album would have 2 pictures. The answer is 2.

    这样,我们就得到了一个候选演示 dj(i)​,它包含问题 qj(i)​、原理(rationale)rj(i)​和答案 aj(i)​。

  • 应用启发式规则:接下来,检查这个候选演示是否满足预设的简单启发式规则:

    1. 问题令牌数 ≤ 60?(本例中,问题较短,满足)

    2. 原理中的推理步骤数(通过换行符 \n计数)≤ 5?(本例中,推理步骤清晰,满足)

    3. (对于算术任务)答案是否非空且出现在原理中?(答案是“2”,原理末尾明确写出,满足)

  • 确认采样:由于所有条件都满足,这个候选演示 dj(i)​就被正式选为该簇的演示 d(i)。算法然后继续处理下一个簇。

最终演示集构建与使用

对全部8个簇重复上述采样过程后,我们得到一组自动构建的演示 d=[d(1),d(2),…,d(8)]。当有一个新的测试问题,例如“一个厨师需要煮13个土豆。他已经煮了5个。如果每个土豆需要煮6分钟,他煮剩下的土豆需要多长时间?”时,我们将这8个演示拼接在测试问题前,形成最终提示:

1
2
3
4
5
6
[演示1的完整问答]
[演示2的完整问答]

[演示8的完整问答]
Q: A chef needs to cook 13 potatoes. He has already cooked 5. If each potato takes 6 minutes to cook, how long will it take him to cook the rest?
A: Let's think step by step.

将这个完整的提示输入LLM,LLM就会根据前面多样化的演示示例,生成针对测试问题的正确推理链:“The chef needs to cook 13 potatoes. He has already cooked 5. That means he has to cook 13-5=8 more potatoes. Each potato takes 6 minutes to cook. That means it will take him 6 * 8=48 minutes to cook the rest. The answer is 48.”

通过这个例子可以看到,Auto-CoT的核心创新在于通过聚类保证演示问题的多样性,以避免相似错误聚集;通过Zero-Shot-CoT和简单规则自动化生成推理链,从而摆脱了对人工设计的依赖。

实验结果与结论

论文在十个公共基准推理任务上评估了Auto-CoT,任务涵盖算术推理(MultiArith, GSM8K, AddSub, AQUA-RAT, SingleEq, SVAMP)、常识推理(CSQA, StrategyQA)和符号推理(Last Letter Concatenation, Coin Flip)。主要实验结果和结论如下:

1. 主要性能对比

如表3所示,Auto-CoT在绝大多数任务上的性能匹配或超过了需要人工设计的Manual-CoT。例如,在MultiArith上,Auto-CoT达到了92.0%的准确率,而Manual-CoT为91.7%。这表明Auto-CoT能够有效替代Manual-CoT,自动构建高质量的演示示例。同时,Auto-CoT更具灵活性,能为每个数据集自动生成适配的演示,而Manual-CoT可能在不同数据集上复用相同的演示。

Model Arithmetic Commonsense Symbolic
MultiArith GSM8K AddSub AQuA SingleEq SVAMP CSQA Strategy Letter Coin
Zero-Shot-CoT 78.7 40.7 74.7 33.5 78.7 63.7 64.6 54.8 57.6 91.4
Manual-CoT 91.7 46.9 81.3 35.8 86.6 68.9 73.5 65.4 59.0 97.2
Auto-CoT 92.0 47.9 84.8 36.5 87.0 69.5 74.4 65.4 59.7 99.9

2. 方法有效性的深入分析

  • 多样性是关键:实验表明,基于相似性检索的方法(Retrieval-Q-CoT)性能不如基于随机采样(Random-Q-CoT)的方法。分析发现,Zero-Shot-CoT生成的推理链存在错误,而检索相似问题容易将这些错误集中传递给测试问题(即“相似性误导”)。

    通过聚类实现多样性采样,可以分散错误风险,即使演示中包含少量错误,对整体性能影响也较小。如图6所示,与在同一个簇内采样(In-Cluster Sampling)相比,Auto-CoT(多样性采样)对演示中错误数量的增加更具鲁棒性。

  • 简单启发式规则的有效性:使用简单启发式规则(如限制问题长度和推理步骤数)能有效减少演示中错误推理链的数量(如表9所示),将错误率控制在较低水平(多数任务低于20%),进一步提升了Auto-CoT的可靠性。

3. 通用性与扩展性

  • 当使用Codex模型作为LLM时,Auto-CoT同样表现出竞争力(如表4所示),证明了其方法在不同LLM上的通用性。

  • 论文还考虑了更具挑战性的流式设置(test questions分批到达),并提出了自举版本Auto-CoT_。实验表明,从第二批问题开始,Auto-CoT_的性能即可与Manual-CoT相媲美(如图7所示),显示了Auto-CoT在动态环境下的适用性。

结论

本论文提出的Auto-CoT方法,通过基于聚类的多样性问题采样结合简单启发式规则的推理链生成,成功地实现了CoT演示示例的自动构建。在十个推理任务上的实验证明,Auto-CoT能够 consistently 匹配或超越需要人工设计的Manual-CoT的性能。这项工作表明,LLMs能够通过自身生成的推理链来引导其进行有效的CoT推理,为消除CoT提示中的人工努力提供了可行的自动化方案,对推动LLMs的自动化、高效化推理应用具有重要意义。


http://example.com/posts/14.html
作者
司马吴空
发布于
2026年3月30日
许可协议