Reflexion对ReAct的改进
根据《Reflexion: Language Agents with Verbal Reinforcement Learning-NeurIPS2023.pdf》的内容,Reflexion是对ReAct的改进,二者虽同属语言智能体决策相关的技术,但Reflexion在ReAct“推理-行动”核心逻辑的基础上,通过新增关键模块和机制,解决了ReAct在复杂任务中面临的“无法跨试错学习”“反馈利用低效”“易陷入重复错误”等问题,具体改进体现在以下4个核心维度:
一、核心目标拓展:从“单轮任务执行”到“跨试验持续学习”
ReAct的核心目标是“在单次任务尝试中,通过‘思考-行动-环境反馈’的循环完成当前任务”,但不具备“从过往失败中学习并应用于未来任务”的能力;而Reflexion的核心目标是让智能体跨多次任务尝试(trial)积累经验,通过反思持续优化决策策略,实现“越用越优”的学习效果。
论文4.1节以AlfWorld任务为例明确对比:ReAct-only方法在6-7次试验后性能完全停滞,无法解决新任务;而ReAct+Reflexion通过12次连续试验,能持续学习并解决134个任务中的130个,核心原因就是Reflexion新增了“跨试验学习”的能力,这是ReAct完全不具备的目标导向。
二、新增“自我反思(Self-Reflection)模块”:解决ReAct“反馈利用低效”问题
ReAct仅能利用“环境即时反馈”(如“行动成功/失败”“看到物品”)调整当前任务的下一步行动,但无法对“失败原因”进行深度分析并转化为长期经验;Reflexion则专门新增了Self-Reflection模块,将“稀疏反馈”(如二进制成功/失败信号)转化为“可解释的文本反思”,明确指出错误根源和改进方向。
具体来说,该模块的改进体现在:
- 反馈转化:ReAct的反馈是“无语义的信号”(如AlfWorld中“行动无效”),而Self-Reflection模块会将其转化为自然语言总结(如“上次先找杯子再找台灯导致任务失败,下次应先定位台灯”),让智能体明确“错在哪、怎么改”;
- 错误归因:针对ReAct无法定位长轨迹错误的问题,Self-Reflection模块能分析整个行动轨迹(如“早期拿错物品导致后续所有行动无效”),实现精准的“信用分配”(即找到失败的关键节点),而ReAct仅能感知当前步骤的反馈,无法追溯历史错误。
三、新增“双记忆机制”:解决ReAct“无长期经验存储”问题
ReAct仅依赖“短期轨迹记忆”(即当前任务中已执行的行动序列),任务结束后记忆清空,无法保留任何经验;Reflexion则设计了**“短期记忆+长期记忆”双记忆机制**,让经验可累积、可复用:
- 短期记忆:与ReAct类似,存储当前任务的行动轨迹(如AlfWorld中“打开抽屉6→看到钥匙链→去书桌1”),用于实时决策;
- 长期记忆:专门存储Self-Reflection模块生成的“反思文本”(如“先找台灯再找杯子”),并通过滑动窗口(通常保留1-3条关键反思)控制容量,确保后续任务尝试时能直接调用过往经验。
论文4.2节HotPotQA任务的消融实验证明:仅依赖短期轨迹记忆的ReAct/CoT方法,无法改进首次失败的任务;而加入长期反思记忆的Reflexion,能让智能体在后续尝试中修正推理错误,准确率提升20%。
四、反馈类型与利用方式:从“单一环境反馈”到“多源反馈融合”
ReAct仅能利用“环境直接反馈”(如文本环境的状态变化、工具调用结果),且反馈形式单一(多为二进制或简单描述);Reflexion则支持多类型、多来源的反馈信号,并通过Evaluator模块统一处理,让反馈更全面、更精准:
- 反馈类型拓展:包括二进制环境反馈(成功/失败)、预定义启发式反馈(如“行动重复3次判定为低效”)、LLM自我评估反馈(如用LLM判断推理逻辑是否正确)、代码任务中的“自生成单元测试反馈”(如通过测试用例失败定位代码bug);
- 反馈利用优化:ReAct仅将反馈用于“调整当前行动”,而Reflexion的Evaluator模块会先对反馈进行“语义化处理”(如将单元测试失败信息转化为“数组越界错误需修正循环条件”),再传递给Self-Reflection模块生成反思,实现“反馈→分析→经验”的完整闭环。
这种改进在编程任务中尤为明显:论文4.3节指出,ReAct无法利用代码编译/测试反馈改进代码;而Reflexion通过融合“单元测试反馈”和反思记忆,在HumanEval Python任务上实现91%的pass@1准确率,远超ReAct和GPT-4的80%。
总结:Reflexion对ReAct的改进本质
ReAct是“语言智能体与环境交互的基础框架”,核心解决“如何通过思考-行动循环完成单次任务”;而Reflexion是“在ReAct基础上,通过新增‘自我反思模块’和‘双记忆机制’,赋予智能体‘跨试错学习能力’的增强框架”,核心解决“如何让智能体从过往失败中积累经验,持续提升复杂任务的成功率”。二者的关系可概括为:Reflexion = ReAct的“推理-行动”核心 + 自我反思(错误分析) + 长期记忆(经验存储) + 多源反馈融合。