Complexity-based Prompting
Complexity-based Prompting(Fu et al., 2023b)对 CoT 做了两件事:(1) 更“会挑示例”,(2) 更“会挑输出”。核心假设是:对需要多步推理的任务,更复杂/更长的推理链往往更有信息量,因此在示例选择与推理链选择上都引入“复杂度”信号。
1) 修改 1:基于“复杂度”的示例选择(for prompting)
传统 few-shot CoT 往往随机选或人工挑例子。Complexity-based prompting 会优先选“更复杂”的问题来做 CoT 标注并塞进 prompt,让模型在上下文中看到更强的推理范式。
复杂度如何估计(论文描述的典型信号):
- 问题长度(question length):更长往往意味着条件更多
- 所需推理步数(reasoning steps required):例如需要多次运算/多跳推导 -(实现时也可加:数字量级、运算种类、是否多子问题等)
直觉:如果示例太简单,模型学到的是“短链、跳步、模板化”解法;给复杂示例能更好覆盖真正难题的推理结构。
2) 修改 2:推理时的“长度门控 + 多链投票”(for inference)
推理阶段它也会采样多条 CoT(类似 self-consistency),但投票时不是对所有链一视同仁,而是:
- 采样多条 reasoning chains(多次生成,每次得到一条推理+答案)
- 只保留长度超过阈值的链(length threshold)
- 在这些“足够长”的链里做多数票,以得到最终答案
这里的关键前提(premise)正如你引用的那句:
更长的推理往往意味着更高的答案质量(longer reasoning indicates higher answer quality)
因此它把“长度”当作一种启发式的质量过滤器:短链可能是拍脑袋/漏步/直接猜;长链更可能完成了必要步骤(尤其在数学推理数据集上)。
3) 适用范围与效果(按你给的描述)
- 报告在 三个数学推理数据集上有提升(这类任务“推理链长度”与正确性相关性通常更强)。
4) 实操落地时的关键参数
如果你要实现/复现,通常要决定:
- 示例复杂度指标:用题目长度?还是用(模型/规则)预估的步骤数?
- 采样条数 K:越大越稳但成本越高(常见 5/10/20)
- 长度阈值 L:按 tokens/字符/句子数/推理步数都可以,但要一致
- 保留不足时的回退策略:如果超过阈值的链太少(甚至为 0),是降低阈值、还是退回到全体投票/greedy?
5) 局限与注意点
- “长=好”是启发式,并非总成立:模型也可能用更长的文本“胡说八道”。
- 对非数学类、非严格推理类任务(开放问答、写作),长度与质量未必正相关。
- 长度阈值通常需要在验证集上调参,否则可能过筛或漏筛。
如果你接下来还要继续同一综述里的下一条方法,把原文再贴一段即可。我也可以把 Complexity-based prompting 写成一段简短伪代码(示例选择 + 推理采样 + 长度过滤 + 投票 + 回退),便于你直接放进笔记或实现。