跳转至

四十三:反思 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 的评估、成本、失败模式和生产化。

img

2. Reflection 的基本定义

Reflection 是 Agent 在一次尝试后,根据结果、错误、环境反馈或评估器反馈,总结经验并调整后续行为的机制。 基本循环:

Attempt -> Feedback -> Reflection -> Memory/Policy Update -> Retry
反思可以回答: - 哪一步错了?

  • 缺少什么信息?

  • 工具选错了吗?

  • 计划是否遗漏?

  • 下次应如何改变?

Reflection 的目标是提升多次尝试或长期任务中的表现。

3. Reflection 与 Verification

Verification 是判断结果是否正确,Reflection 是根据判断结果生成改进建议。

Verifier: 这个答案没有引用证据。
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
核心是用语言记忆替代梯度更新,让 Agent 在多次尝试中自我改进。

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,再用该结构求解问题。

img

高层流程:

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 分支,用环境反馈和价值评估选择更有希望的路径。

img

高层流程:

state -> generate candidate actions
execute / simulate
observe feedback
evaluate value
expand promising nodes
reflect on failures
return best trajectory
LATS 可看作 ToT、ReAct 和 Reflexion 的结合:有树搜索,有工具/环境交互,也有反思。

12. LATS 与 ToT、ReAct、Reflexion

ToT: - 多分支 thought search。

  • 不一定真实执行工具。

ReAct: - 推理和行动交替。

  • 通常单路径或少量路径。

Reflexion: - 根据反馈生成语言反思。

  • 用记忆改进后续尝试。

LATS: - 树搜索多个行动路径。

  • 使用环境反馈评估节点。

  • 可结合反思改进搜索。

13. LATS 的搜索过程

LATS 中的节点可以表示状态或轨迹,边表示 action。搜索过程类似:

Selection: 选择有潜力节点
Expansion: 生成候选动作
Simulation/Execution: 执行动作或获取反馈
Evaluation: 评估节点价值
Backpropagation: 更新路径价值
它与 Monte Carlo Tree Search 有相似直觉,但由语言模型生成和评估动作。

14. LATS 的优势

优势: - 能探索多个行动路径。

  • 能从环境反馈中修正。

  • 比单路径 ReAct 更不容易卡死。

  • 比纯 ToT 更接近真实工具环境。

  • 适合复杂交互任务和规划任务。

但成本高、实现复杂。

15. LATS 的限制

限制: - 搜索成本高。

  • 分支数和深度难控制。

  • 价值评估可能不准。

  • 环境执行成本高。

  • 需要良好的状态表示。

  • 不适合低延迟简单任务。

生产中通常只对高价值复杂任务使用。

16. 反思记忆设计

反思记忆应包含: - 任务类型。

  • 失败原因。

  • 修正策略。

  • 适用条件。

  • 来源反馈。

  • 时间。

避免: - 把错误反思长期保存。

  • 把一次性经验泛化到所有任务。

  • 记忆过多污染上下文。

  • 泄露敏感信息。

反思记忆需要检索、过期和验证机制。

17. 评估方法

反思型方法评估: - 首次成功率。

  • 多次尝试后的成功率。

  • 平均尝试次数。

  • 反思质量。

  • 成本和延迟。

  • 错误重复率。

  • 是否引入新错误。

  • 任务泛化能力。

要比较:

without reflection
with reflection
with verifier only
with reflection + memory

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="