Auto-CoT
Automatic Chain-of-Thought(Auto-CoT,Zhang et al., 2022b)的核心是:不用人工写 CoT 示例,而是先用 Zero-shot CoT 自动生成一批“问题—推理—答案”示例,然后把这些示例拼成 few-shot CoT prompt 去解测试问题。
1) 方法动机
Few-shot CoT 通常需要人工准备高质量示例(成本高、难扩展)。Auto-CoT 试图用 LLM 自己来“产出示例”,实现 自动化的 CoT 示例构建。
2) 两阶段流程
阶段 A:自动生成 CoT 示例库(离线或预处理)
- 从训练集/题库里选一批代表性问题(通常覆盖不同类型)。
- 对每个问题使用 Wei et al. (2022) 的 Zero-shot CoT 提示生成推理链,例如:
- “Let’s think step by step.”
- 得到自动生成的 CoT:
- (question, generated rationale, generated answer)
- 将这些生成结果作为候选 exemplars(可选:进行简单过滤/去噪)。
阶段 B:构建 few-shot CoT prompt 来解测试样本
对一个测试问题 (q_{test}):
- 从上述示例库中挑选若干条 exemplar(可随机、按聚类代表性、或按相似度检索)。
- 拼接成 few-shot CoT prompt:
- Example 1: Q / Reasoning / A
- Example 2: Q / Reasoning / A
- …
- Test: Q / Reasoning: (让模型继续生成)/ A
- 用这个 prompt 让模型输出测试题的推理与答案。
3) 关键点:示例怎么选(论文常见做法)
Auto-CoT 的效果很大程度取决于“自动生成的示例质量”和“覆盖性”。常见策略包括:
- 聚类后选代表点:先把问题做 embedding 聚类,从每一簇选若干题生成 CoT,保证示例多样性。
- 相似度检索:对测试题检索相似问题作为 exemplars(这时就接近检索式 few-shot)。
- 简单过滤:比如去掉明显太短、格式不完整、或答案不合法的生成链。
4) 它与相关方法的区别
- vs Zero-shot CoT:Zero-shot CoT 直接对测试题“逐步思考”;Auto-CoT 额外做一步:先自动产出一批 CoT 示例,把它们当 few-shot 提示来用。
- vs Memory-of-Thought:Memory-of-Thought 用“无标注数据上生成的推理”并在测试时按相似度检索;Auto-CoT 更强调用 Zero-shot CoT 自动生成示例,并常配合聚类挑选代表性样本来构建 few-shot prompt(不一定检索到测试题近邻)。
- vs 人工 few-shot CoT:Auto-CoT 的优势是省人工、可扩展;劣势是示例质量受模型生成误差影响。
5) 适用场景与局限
适用:
- 你有一批可用的训练题/题库(即使没人工 CoT)
- 任务结构相对稳定(算术、符号推理、常识推理等)
局限:
- 自动生成的 CoT 可能包含错误推理或错误答案,直接拿来 few-shot 会“教坏模型”
- 因此通常需要:示例多样性控制 + 质量过滤(或后续再用自一致性/校验器筛选)
如果你希望我把 Auto-CoT 写成一段更完整的伪代码(包括:题目聚类→zero-shot 生成→过滤→构建 prompt→测试推理),告诉我:
- 你的任务是数学/多选/短答案哪一种;
- 你想用“聚类选代表”还是“相似检索”来选 exemplars。