四十三:反思 Reflexion¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484578&idx=1&sn=b61ab79770234f60ff09b8318912234c&chksm=f01eb7dbc7693ecdce6dc2b71d21a6935b8ce71ec1311a1b032603b74df7d5062fab7fc481d1#rd
1. 学习范围¶
本日主题是 Planning 中的反思方法,重点是 Reflexion 和 LATS,同时覆盖 SELF-DISCOVER。反思方法关注 Agent 在执行后如何根据反馈总结错误、改进策略、选择更好的推理结构,并在后续尝试中提升表现。 本日覆盖: - Reflection 在 Agent Planning 中的作用。
-
Reflexion:语言反馈与记忆驱动的自我改进。
-
SELF-DISCOVER:自我发现推理结构。
-
LATS:Language Agent Tree Search。
-
反思、搜索、环境反馈、记忆和 verifier 的关系。
-
反思型 Agent 的评估、成本、失败模式和生产化。
2. Reflection 的基本定义¶
Reflection 是 Agent 在一次尝试后,根据结果、错误、环境反馈或评估器反馈,总结经验并调整后续行为的机制。 基本循环:
反思可以回答: - 哪一步错了?-
缺少什么信息?
-
工具选错了吗?
-
计划是否遗漏?
-
下次应如何改变?
Reflection 的目标是提升多次尝试或长期任务中的表现。
3. Reflection 与 Verification¶
Verification 是判断结果是否正确,Reflection 是根据判断结果生成改进建议。
二者常配合使用。没有 verification,reflection 缺少可靠反馈;没有 reflection,verification 只能指出错误,不能指导下一步。4. Reflexion 的核心思想¶
Reflexion 让语言 Agent 通过 verbal feedback 学习。它不一定更新模型参数,而是把失败经验转化为自然语言反思,存入记忆,在下一次尝试时作为上下文使用。 流程:
Actor executes task
Evaluator gives score / success signal
Self-reflection generates verbal feedback
Reflection stored in memory
Next trial uses memory to improve
5. Reflexion 的组件¶
Reflexion 通常包含: - Actor:执行任务的 Agent。
-
Evaluator:给出成功/失败或分数。
-
Self-reflection model:生成反思文本。
-
Memory:保存反思。
反思文本可能包括: - 错误原因。
-
缺失信息。
-
下次策略。
-
避免重复错误的规则。
6. Reflexion 的适用场景¶
适合: - 有明确反馈信号的任务。
-
多次尝试可以改进的任务。
-
代码生成和测试。
-
交互环境。
-
问答和决策任务。
-
Web navigation。
例如代码任务中,测试失败信息可以作为 evaluator feedback,Agent 反思后修正代码。
7. Reflexion 的限制¶
限制: - 依赖反馈质量。
-
反思可能错误。
-
记忆可能污染。
-
多次尝试成本高。
-
不更新模型参数,长期泛化有限。
-
如果任务没有明确成功信号,反思效果弱。
反思不是魔法,错误 feedback 会让 Agent 学坏。
8. SELF-DISCOVER 的核心思想¶
SELF-DISCOVER 让模型为具体任务自我发现合适的推理结构。它不是直接回答问题,而是先从一组 reasoning modules 中选择、组合并实例化一个 task-specific reasoning structure,再用该结构求解问题。
高层流程:
Select relevant reasoning modules
Adapt modules to task
Implement a reasoning structure
Solve task using the structure
9. Reasoning Modules¶
reasoning modules 可以是通用推理操作,例如: - 分解问题。
-
列出约束。
-
构造中间变量。
-
反事实分析。
-
类比。
-
验证答案。
-
逐步消元。
SELF-DISCOVER 会根据任务选择和组合这些模块,形成特定结构。
10. SELF-DISCOVER 与 CoT¶
CoT 直接生成推理链;SELF-DISCOVER 先生成推理结构,再用结构解题。 区别: - CoT 更像“边想边写步骤”。
-
SELF-DISCOVER 更像“先选择解题方法论”。
-
SELF-DISCOVER 更强调结构化推理模板。
适合任务类型多样、需要不同推理策略的问题。
11. LATS 的核心思想¶
LATS, Language Agent Tree Search, 把语言 Agent、树搜索、环境反馈和反思结合起来。它让 Agent 在搜索树中探索多个 action/thought 分支,用环境反馈和价值评估选择更有希望的路径。
高层流程:
state -> generate candidate actions
execute / simulate
observe feedback
evaluate value
expand promising nodes
reflect on failures
return best trajectory
12. LATS 与 ToT、ReAct、Reflexion¶
ToT: - 多分支 thought search。
- 不一定真实执行工具。
ReAct: - 推理和行动交替。
- 通常单路径或少量路径。
Reflexion: - 根据反馈生成语言反思。
- 用记忆改进后续尝试。
LATS: - 树搜索多个行动路径。
-
使用环境反馈评估节点。
-
可结合反思改进搜索。
13. LATS 的搜索过程¶
LATS 中的节点可以表示状态或轨迹,边表示 action。搜索过程类似:
Selection: 选择有潜力节点
Expansion: 生成候选动作
Simulation/Execution: 执行动作或获取反馈
Evaluation: 评估节点价值
Backpropagation: 更新路径价值
14. LATS 的优势¶
优势: - 能探索多个行动路径。
-
能从环境反馈中修正。
-
比单路径 ReAct 更不容易卡死。
-
比纯 ToT 更接近真实工具环境。
-
适合复杂交互任务和规划任务。
但成本高、实现复杂。
15. LATS 的限制¶
限制: - 搜索成本高。
-
分支数和深度难控制。
-
价值评估可能不准。
-
环境执行成本高。
-
需要良好的状态表示。
-
不适合低延迟简单任务。
生产中通常只对高价值复杂任务使用。
16. 反思记忆设计¶
反思记忆应包含: - 任务类型。
-
失败原因。
-
修正策略。
-
适用条件。
-
来源反馈。
-
时间。
避免: - 把错误反思长期保存。
-
把一次性经验泛化到所有任务。
-
记忆过多污染上下文。
-
泄露敏感信息。
反思记忆需要检索、过期和验证机制。
17. 评估方法¶
反思型方法评估: - 首次成功率。
-
多次尝试后的成功率。
-
平均尝试次数。
-
反思质量。
-
成本和延迟。
-
错误重复率。
-
是否引入新错误。
-
任务泛化能力。
要比较:
18. 常见失败模式¶
常见失败: - 反馈错误。
-
反思空泛。
-
反思不适用于下一次。
-
记忆污染。
-
过度自我修正。
-
搜索树爆炸。
-
价值评估误导搜索。
-
反思增加成本但不提升效果。
高质量反馈和清晰任务边界是反思有效的前提。
19. 生产化建议¶
生产建议: - 只在有明确反馈的任务启用反思。
-
反思写入前做校验。
-
限制反思记忆数量和作用域。
-
对高成本搜索设置预算。
-
结合工具验证而不是纯自评。
-
对简单任务禁用 LATS。
-
记录每次尝试和反思。
-
失败多次后转人工或降级。
20. 核心总结¶
Reflexion 通过语言反思和记忆让 Agent 在多次尝试中改进;SELF-DISCOVER 让模型为任务发现合适的推理结构;LATS 把语言 Agent、树搜索、环境反馈和反思结合起来探索更优行动轨迹。 面试表达重点: - Reflection 依赖反馈质量。
-
Reflexion 不更新参数,而是写语言记忆。
-
SELF-DISCOVER 先找推理结构再解题。
-
LATS 是搜索 + 行动 + 反思的复杂 Agent 方法。
-
反思型方法提升复杂任务表现,但成本和可控性是生产难点。
21. 参考资料¶
-
Reflexion paper: https://arxiv.org/pdf/2303.11366
-
SELF-DISCOVER paper: https://arxiv.org/pdf/2402.03620
-
LATS paper: https://arxiv.org/pdf/2310.04406
-
ReAct paper: https://arxiv.org/pdf/2210.03629
-
Tree of Thoughts paper: https://arxiv.org/pdf/2305.10601
预览时标签不可点<div class="