[Reasoning 1] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
Intro
In-Context Learning已经发现模型会根据few-shot示例进行模式上的模仿
对于比较简单的任务有效,面对复杂的数学题等,模型参数加大也无法取得很好的效果
已有的方法
- 给模型大量问题—推理过程—答案数据,进行训练
- 缺点:贵
- 直接 Few-shot Prompting
- 缺点:相当于让模型通过单次前向传播,在参数内部进行推理,但是一旦语义和计算产生偏差,最后的结果往往不好
模型往往只能通过Few-Shot了解输出的格式,而无法学会求解过程
Idea
- 核心想法:解决问题应该是拆成多个步骤
不要试图让模型单次前向传播做过于复杂的内容
- 核心假设
- 模型是知道怎么推理的,也具备这个能力,关键就是如何激发这个能力
- 标准 Prompt 需要提供合适的输出结构来激活它、留有思考空间
最重要的思想转变不是多写一些解释,而是:
把自然语言 token 当作模型的计算空间。

因此作者尝试在Prompt的示例中添加CoT
让模型已模式模仿的形式,也会在输出时进行一定的CoT输出,从而进行了显式的推理
这个方法某种程度激发了模型的潜在推理能力
Exp
有一个有趣的实验现象(注意是2022年的模型)
- 小模型CoT反而降低水平
- 大模型CoT确实有提升
因此CoT方法不会为模型带来推理能力的提升,而是激发了模型本身的能力
小模型不具备这个能力,因此没有什么效果
Limits
- 对于模型仍然是单次的输出,因此过于复杂的任务,无法通过一次CoT想明白(状态、步骤没法被很好的切分)
[Planning 1] Language Models as Zero-Shot Planners: Extracting Actionable Knowledge for Embodied Agents
Intro
以往LLM只用来处理NLP任务
Idea
LLM从大量数据集中必然已经知道一些生活中的任务是有什么顺序的
也就是人类通常怎么完成某个任务
核心假设:大型语言模型已经从文本中隐式学到了大量“如何完成日常任务”的程序性知识。
核心想法:让冻结的 LLM 生成计划,再把自由语言计划翻译成环境允许的原子动作。
这篇论文挖掘了LLM内部知识,证明了LLM可以成为Agent的高层规划器
[Agent 1] ReAct: Synergizing Reasoning and Acting in Language Models
奠基之作
Intro
当时的技术路线
- LLM CoT
- 无法接触外部世界
- LLM Action:观察环境 -> 执行动作 -> …循环
- 缺少推理
对于人类来说做事应该是:
- 先想一下,做一个动作,看看结果,再根据结果继续思考
Idea
作者认为Agent应该具备如下能力
- Reasoning:决定为什么这样做
- Acting:真正影响或查询外部环境
- Observation:接收行动产生的真实反馈
Reasoning某种程度上承担了一些记忆、规划的工作
同时只改变内部上下文,不会对外界造成改变
Agent具备了Action和Reasoning的两种动作
[Reasoning 2] Self-Consistency Improves Chain of Thought Reasoning in Language Models
Intro
前序工作:
1CoT Prompt
2 ↓
3模型生成唯一一条推理链
4 ↓
5得到唯一答案
基本采用的是Greedy Decoding(每次采用概率最高的token进行推理)
因此很容易产生错误累积,模型推理产生了思考,但没有检测思考是否正确
已有的方法是训练额外的 verifier
1模型生成多个答案
2 ↓
3另一个验证模型进行评分
4 ↓
5选择最高分答案
但是肯定比较需要成本与数据质量
作者的方法是:不训练任何新模型,仅利用同一个 LLM 自身输出的分布完成筛选
Idea
核心假设:提升的关键不是“找更多高概率表达”,而是“探索真正不同的推理路径,并观察答案是否汇聚”。
希望拦截的是:偶然的中间错误

通过:温度、topK、topP等参数,完成采样,进行投票。
- 温度:温度越高,概率分布会更平缓,反之会更尖锐
- topK:选择概率最高的K个,重新归一化概率后再随机取样
- topP:在概率累积到P的最小集合中进行采样
The answer is xxx. 是固定写法,直接解析这一句话提取答案
Limits
- 它能过滤随机错误,但无法保证中间过程正确,也无法修复模型共同持有的系统性错误。
[Reasoning 3] Tree of Thoughts: Deliberate Problem Solving with Large Language Models
Intro
Self-Consistency虽然通过推理多样性,一定程度解决了推理过程中的偶然错误的问题
但是对于单条CoT,仍然无法避免中间错误积累到后续答案
Idea
- 将推理拆成多个中间推理状态
- 用 LLM Judge 对各候选打分(如:好 / 坏 / 有潜力)
- 进行BFS/DFS进行探索

这样本质上推理是可以回溯的
[Reasoning 4] SELF-REFINE: Iterative Refinement with Self-Feedback
代表了Reflection架构
Intro
1Prompt Engineering
2 ↓
3Chain-of-Thought
4让模型写出推理过程
5 ↓
6Self-Consistency
7尝试多条推理路径并投票
8 ↓
9ReAct
10推理与环境行动交替进行
早期工作致力于如何让模型:
- 如何生成更好的答案
- 如何更好的探索路径
- 如何更好的与环境交互
但是都基于一个隐藏假设:模型第一次给出的答案,就是当前链条的结果,不再更改
Idea
核心假设:模型能产生好答案与模型第一次输出就是好答案是不一样的
给模型的Prompt中可能存在非常多条件
但是模型的第一次输出,可能会有一些对条件满足质量的参差不齐
因此应该给模型机会,让模型自己去调整、优化

完整流程:
1生成初始答案 y₀
2
3for t = 0, 1, 2, ...:
4 fbₜ = Feedback(x, yₜ)
5
6 if 达到任务标准 or t 达到最大轮数:
7 return yₜ
8
9 yₜ₊₁ = Refine(x, 历史答案, 历史反馈)
[Planning 2] Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Model
Intro
早期CoT需要让模型根据few-shot示例模仿进行思考
随着模型指令遵循能力的上升,实质上只需要Let's think step by step.
相当于进行了zero-shot的CoT
Idea
核心假设:很多错误不是因为模型完全不会推理,而是因为它没有先明确整个任务需要哪些步骤。
核心想法:让模型的思考更有结构,防止步骤遗漏
CoT 证明了中间推理有价值。
Plan-and-Solve 进一步提出:
中间推理本身也应该被组织,而不是任由模型自由展开。
这是从 Reasoning 向 Planning 的一次重要概念转变。
[Planning 3] HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face
Intro
早期LLM只专注于文字,对其他模态能力较差
但是先前工作已经发现LLM具备规划能力,因此似乎可以使用LLM对各个专家模型进行组织
Method
任务规划:ChatGPT 把用户请求拆解成有依赖顺序的子任务列表,标注每个子任务的输入输出关系。
模型选择:从 Hugging Face 模型库检索,让 ChatGPT 根据描述文字选出最适合的模型。
任务执行:按依赖顺序调用对应模型的 inference API,上一个子任务的输出作为下一个的输入。
结果整合:把所有模型的返回结果收集起来,让 ChatGPT 总结成自然语言回答给用户。
[Agent 2] Reflexion: Language Agents with Verbal Reinforcement Learning
Intro
之前的工作在单个任务上失败后,在第二次尝试大概率也会出错
ReAct在单次任务中,能够通过当前环境的反馈,动态调整行动
但不过报错信息并不能足够丰富,可能会只是一个success/fail,能从环境中获取的奖励非常有限
通过RL进行训练代价极高
而LLM非常擅长理解语言,那么能不能把奖励转化为语言呢
Idea

- Actor:实际上可以使用ReAct作为一次尝试的Actor
- Evaluator:用于根据Actor的一次轨迹,生成奖励(判断这次尝试做的怎么样,值多少分)
- Self-Reflection:根据轨迹、奖励,生成经验总结,放入到内存中