logo
P
Prompt Master

Prompt 大师

掌握和 AI 对话的艺术

Active-Prompt

用 uncertainty 选择 demonstrations(CoT)

思维链(CoT)方法依赖于一组固定的人工注释范例。问题在于,这些范例可能不是不同任务的最有效示例。为了解决这个问题,Diao 等人(2023)提出了一种新的提示方法,称为 Active-Prompt,以适应 LLMs 到不同的任务特定示例提示(用人类设计的 CoT 推理进行注释)。

下面是该方法的说明。第一步是使用或不使用少量 CoT 示例查询 LLM。对一组训练问题生成 k 个可能的答案。基于 k 个答案计算不确定度度量(使用不一致性)。选择最不确定的问题由人类进行注释。然后使用新的注释范例来推断每个问题。

ACTIVE

图片来源:Diao 等人(2023)

核心思想

传统 CoT 的问题在于:所有任务共用同一批人工标注的示例,但不同任务的难点不同,固定示例很难覆盖所有场景。Active-Prompt 的核心洞察是:让模型自己告诉我们哪些问题最难,然后优先标注这些问题作为示例。

这个过程借鉴了主动学习(Active Learning)的思想——不是随机选择训练样本,而是选择模型最"困惑"的样本来标注,从而以最少的标注量获得最大的性能提升。

四步流程详解

Step 1:不确定性估计(Uncertainty Estimation)

首先,使用 LLM 对每个训练问题生成 k 个答案(例如 k=5)。通过多次采样,可以观察模型对同一问题的回答一致性。

问题:如果一个数的3倍减去7等于20,这个数是多少?

采样1:3x - 7 = 20, 3x = 27, x = 9 → 答案:9
采样2:3x - 7 = 20, 3x = 27, x = 9 → 答案:9
采样3:20 + 7 = 27, 27 / 3 = 9 → 答案:9
采样4:3x = 20 + 7 = 27, x = 9 → 答案:9
采样5:3x - 7 = 20, x = 9 → 答案:9
→ 不一致性:0(所有答案一致,模型很确定)
问题:一列火车从A站到B站需要3小时,从B站到C站的速度是前段的1.5倍,
     距离是前段的2倍。问从A站到C站共需多少小时?

采样1:AB段3小时,BC段 = 2d/(1.5v) = 4小时,总计7小时 → 答案:7
采样2:BC段速度1.5倍距离2倍,时间 = 2/1.5 × 3 = 4小时,总计7 → 答案:7
采样3:BC = 2 × 距离,速度1.5×,时间 = 2d/1.5v = 2/(1.5) × 3 = 4,→ 答案:7
采样4:1.5倍速走2倍距离,需要 2/1.5 = 1.33倍时间 = 4小时,总5 → 答案:5
采样5:3 + (2 × 3)/(1.5) = 3 + 4 = 7 → 答案:7
→ 不一致性:0.2(一个答案不一致,说明模型对此问题不够确定)

Step 2:选择最不确定的问题

按不确定性(不一致性)从高到低排序,选择排名靠前的 n 个问题。这些问题就是模型最"困惑"的,也是最值得人工标注的。

论文中使用了几种不确定性度量:

  • 不一致性(Disagreement)k 个答案中不同答案的比例
  • 熵(Entropy):答案分布的信息熵
  • 方差(Variance):对于数值答案,使用答案的方差

Step 3:人工标注

对选出的最不确定问题,由人类标注者提供详细的 CoT 推理过程。由于只需要标注最有价值的少量问题(通常 4-8 个),标注成本远低于对所有问题的标注。

Step 4:推理

使用新标注的范例作为 few-shot 示例,对所有问题进行推理。由于这些示例是针对模型弱点"精选"的,因此通常能带来更好的效果。

实验结果

Active-Prompt 在多个推理基准上取得了显著提升:

基准CoTActive-Prompt提升
GSM8K(数学)74.4%78.0%+3.6%
AQuA(代数)52.4%55.1%+2.7%
SVAMP(数学)79.0%82.3%+3.3%
CSQA(常识)73.5%76.2%+2.7%
StrategyQA65.4%69.0%+3.6%

注:结果基于 code-davinci-002 模型,具体数值请参考原论文。

关键发现:

  • 不确定性选择的示例始终优于随机选择的示例
  • 即使标注预算很小(4-8 个示例),Active-Prompt 也能带来显著提升
  • 不同的不确定性度量(不一致性 vs 熵)表现相近,不一致性是最简单有效的选择

实际应用指南

何时使用 Active-Prompt?

Active-Prompt 最适合以下场景:

  1. 标注预算有限:你只能标注少量示例,需要每个示例都"物超所值"
  2. 任务特定性强:通用示例效果不佳,需要针对特定领域定制
  3. 存在明显的难题分布:某些问题类型模型特别容易出错

简化版实践流程

在日常使用中,你不需要完整实现论文的流程。以下是一个简化的应用方法:

Step 1: 用你的问题集测试 LLM,找到模型经常答错的问题
Step 2: 为这些"易错题"编写详细的 CoT 示例
Step 3: 将这些示例放入你的 few-shot prompt 中
Step 4: 验证新的 prompt 在整体测试集上的表现

与其他方法的对比

方法示例选择策略适用场景
Few-shot CoT随机或人工挑选通用任务
Auto-CoT聚类后自动生成大规模自动化
Active-Prompt不确定性驱动选择精确优化、预算有限
Self-Consistency多次采样取多数提高单题准确率

自查清单

  • 是否对模型做了充分的不确定性估计(至少 k=5 次采样)?
  • 选择的标注问题是否覆盖了主要的错误类型?
  • 标注的 CoT 推理是否详细且逻辑清晰?
  • 是否在验证集上确认了新示例的效果提升?

参考文献