LLM agentic模式之reflection:SELF-REFINE、Reflexion、CRITIC

架构简析| 一种Generative Agents 斯坦福《Generative Agents: Interactive Simulacra of Human Behavior》论文解读。 阅读详情

SELF-REFINE

SELF-REFINE出自2023年3月的论文《Self-Refine: Iterative Refinement with Self-Feedback》,考虑到LLM第一次生成结果可能不是最好的输出,提出一种包括反馈(feedback)和改善(refinement)两个步骤的迭代方法来改进LLM的初始输出。

基本思路

对于输入,SELF-REFINE让LLM生成一个初始输出,接着让同一个LLM对这个输出提供反馈(Feedback),再让LLM根据反馈来改善其输出(Refine),不断迭代进行Feedback和Refine步骤,直到满足停止条件,停止条件为指定的时间步或者从反馈中提取的停止标记(如停止分数)。流程示意如下图:

在这里插入图片描述

SELF-REFINE算法示意如下图,所用的prompts都是任务相关的few-shot prompt,根据不同类型的任务指定不同的prompt。

在这里插入图片描述

反馈会包含输出的不同方面,比如对于代码优化任务,反馈包括效率、可读性、代码整体质量等,prompt模型提供actionable且specific的反馈,actionable是指反馈包括一个可以提升输出效果的action,比如下面代码优化例子中的action:“use the formula”;specific是指反馈要包括输出中具体要改进的地方,比如下面代码优化例子中的反馈提到了"for loop"效率不高。

在这里插入图片描述

实验结论

实验模型是GPT 3.5 和GPT 4,有以下分析结果:

  • SELF-REFINE在不同大小模型下都有提升效果,在GPT 4上提升效果更明显,作者认为SELF-REFINE可以使得更强的模型如GPT-4解锁其潜能。
  • 反馈质量对于SELF-REFINE的影响较大,根据反馈进行Refine也能有效提升输出质量。
  • 模型输出质量随着迭代次数增加而提升,同时存在边际效应递减。
  • 在Vicuna-13B上的实验结果表明它很难进行Refine步骤。

Reflexion

Reflexion出自2023年3月的论文《Reflexion: Language Agents with Verbal Reinforcement Learning》,使用语言反馈来增强LLM agent,让LLM可以从之前的错误中学习。

下图是Reflexion agent通过试错和自我反思(self-reflection)解决决策、编程、推理任务的示例。

在这里插入图片描述

基本思路

Reflexion的框架和算法示意如下图所示,包括三个模型:Actor模型记作 M a M_a Ma,用来生成文本和动作;Evaluator模型记作 M e M_e Me,用来对 M a M_a Ma的输出打分;Self-Reflection模型记作 M s r M_{sr} Msr用来生成文字增强反馈以帮助Actor进行自我提升。

在这里插入图片描述

  • Actor:LLM经prompt根据观测状态生成文本和动作,就像传统基于策略的RL算法一样,在时刻t,从当前策略 π θ \pi_{\theta} πθ采样动作或者输出,并从环境得到一个observation o t o_t ot。作者们使用了不同Actor模型,包括CoT和ReAct,且设计了一个记忆组件mem用来提供额外上下文给agent。
  • Evaluator:评估Actor生成输出的质量,给定任务上下文和Actor的输出轨迹计算出一个奖励分数。对于推理任务,奖励函数基于绝对匹配(exact match)打分,确保生成输出与期望方案尽可能地对齐;对于决策任务,使用预定义的启发式函数,这些函数满足特定的评估准则。此外对于决策任务和编程任务,还尝试使用一个LLM的不同实例作为Evaluator来生成奖励。
  • Self-reflection:生成文本自我反思来为Actor未来的尝试提供反馈。它对给定的奖励信号如成功状态(成功/失败)、当前轨迹、存储记忆mem,生成细致且具体的反馈,这个反馈也会被存储到agent的记忆模块mem中。 比如对于一个多步决策任务,当agent收到一个失败信号,它能推测出动作 a i a_i ai导致了不正确的动作 a i + 1 a_{i+1} ai+1 a i + 2 a_{i+2} ai+2;且可推断它应该执行动作 a i ′ a_i^{'} ai并且得到 a i + 1 ′ a_{i+1}^{'} ai+1 a i + 2 ′ a_{i+2}^{'} ai+2;这样在接下来的尝试中,agent就可以利用其过去的经验在t时刻选择动作 a i ′ a_i^{'} ai
  • Memory:Reflexion包括短期记忆和长期记忆,短期记忆是历史轨迹,Self-Reflection模型的输出则是长期记忆。

Reflection的算法流程如上图右侧所示,也是一个迭代优化过程。Actor与环境交互后生成轨迹 τ 0 \tau_0 τ0,Evaluator生成分数 r 0 r_0 r0,由 r t = M e ( τ 0 ) r_t=M_e(\tau_0) rt=Me(τ0)计算得到, r t r_t rt是第t次尝试的标量分数并随着任务表现提升而增加。Self-Reflection模型分析 { τ 0 , r 0 } \{\tau_0, r_0 \} {τ0,r0}后生成总结 s r 0 sr_0 sr0并存储在记忆模块mem s r t sr_t srt是第t次尝试的自然语言经验反馈。Actor、Evaluator、Self-Reflection模型一起协同迭代直到Evaluator认为轨迹 τ t \tau_t τt是正确的。 试验时,记忆模块mem的大小由最大存储经验个数 Ω \Omega Ω来决定,通常被设置为1-3。

CRITIC

CRITIC是Self-Correcting with Tool-Interactive Critiquing的简称,出自2023年5月的论文《CRITIC: Large Language Models Can Self-Correct with Tool-Interactive Critiquing》,它使用外部工具来核实和改正LLM的输出。

基本思路

CRITIC的示意图如下图所示,给定输入,LLM先生成初始输出,再通过text-to-text API与外部工具交互来核实输出,核实结果与初始输出一起作为LLM的反馈让其改正其输出,这个"Verify → Correct → Verify"的循环不断迭代直到满足终止条件。

在这里插入图片描述

CRITIC方法的算法描述如下图:

在这里插入图片描述

  • CRITIC方法利用LLM的COT推理涌现能力和few-shot in-context learning能力。
  • 为了让LLM能够使用工具,将不同的外部工具如搜索引擎、代码编译器、各种API变成text-to-text函数,用in-context learning的方式让LLM利用工具。(虽然可以让LLM自动选择使用哪种工具,在论文实验中是不同的任务使用不同的工具来校验生成结果,比如问答会使用搜索引擎)
  • 输入x,模型记为M, prompt为 ℘ \wp ,LLM生成的初始输出为 y 0 ^ ∼ P M ( ⋅ ∣ ℘ ⊕   x ) \hat{y_0} \sim \mathbb{P}_{\mathcal{M}} (\cdot |\wp \oplus \ x) y0^PM( x) ⊕ \oplus 为表示连接),LLM使用外部工具来评估 y ^ i \hat{y}_i y^i并生成critiques c i ∼ P M ( ⋅ ∣ ℘ ⊕   x ⊕ y i ^ , T ) c_i \sim \mathbb{P}_{\mathcal{M}} (\cdot |\wp \oplus \ x \oplus \hat{y_i}, \mathcal{T}) ciPM( xyi^,T) T \mathcal{T} T是指工具集合)。critiques可识别错误、提供可执行建议或者提供可信的原则等。
  • LLM根据输入x、之前的输出、和critiques c i c_i ci生成改进的输出 y ^ i + 1 ∼ P M ( ⋅ ∣ ℘ ⊕   x ⊕ y i ^ ⊕ c i ) \hat{y}_{i+1} \sim \mathbb{P}_{\mathcal{M}} (\cdot |\wp \oplus \ x \oplus \hat{y_i} \oplus c_i) y^i+1PM( xyi^ci)​ 。
  • "vevify-then-correct"的过程不断迭代直到满足停止标准,停止标准如满足了校验条件、收到环境反馈、达到最大迭代次数等。

参考资料

  1. Self-Refine: websitegithubarxiv

  2. Reflexion: arxiv, github

  3. CRITIC: arxiv, github, 使用工具github

Self Refine技术测评:利用Self Refine提高LLM的生成质量 ​ 在当今人工智能蓬勃发展的时代,大型语言模型(Large Language Models,简称 LLMs)已成为众多企业不可或缺的核心技术。从智能客服到内容创作,LLMs 在各个领域都展现出了惊人的能力。然而,随着应用范围的不断扩大,LLMs 的输出质量问题也日益凸显。许多组织发现,尽管 LLMs 能够生成看似合理的内容,但在细节、一致性和上下文理解等方面仍存在显著缺陷。 阅读详情

相关推荐

Agent之推理模式ReflectionReflexion、LATs

反思的定义:LangChain博客的介绍说是一种用来提供Agent质量和成功率的。归根结底,核心还是prompt的设计。用额外的计算来获得更好的输出质量,这点有点像CoT和ToT的设计。但与之不同的是,CoT和ToT是和LLM单轮的交互,而Reflection一般是和LLM多轮的交互(封装在Agent框架当中),尽管看起来和人类的交互是单轮的。

谁怕平生太急 4529

Self-Refine自我纠错坍缩

Self-Refine是2024-2026年大模型高阶推理的核心技术,核心逻辑是让模型自主完成「生成-自检-纠错-迭代重写」,无需外部监督,依靠自身认知闭环提升复杂任务正确率,广泛用于数理推理、代码生成、论文写作、逻辑解题等场景。常规认知中,迭代次数越多、纠错越充分,答案质量越高。但真实工程落地完全相反:模型存在自我认知偏置,第一轮纠错可以修正显性错误,第二轮优化细节瑕疵,三轮之后模型会陷入「自我认同闭环」,无法发现自身隐性缺陷,反而不断同质化改写、过度修正有效内容、叠加次生错误,最终导致整体答案崩坏。

2602_95606446的博客 346

Self-Reflection缓解LLM幻觉(Hallucination)问题

自从Chat-GPT发布以来,国内外的LLM的军备竞赛正在如火如荼的进行。LLM的综合能力在不断的提升,提升速度也在增加,LLM表现的一些问题也在凸显出来,其中一个比较严重的问题就是“幻觉问题”,Hallucination。大模型生成的内容听起来有道理,但是实际却是不切实际、没有意义的。

CCSco4355 1552

卡耐基梅隆与多家知名研究单位共同提出在LLM中引入自反馈机制

与人们一样,本文引入了SELF-REFINE框架,通过反复的反馈和改善,类似地改进LLMs的初始输出。最后,通过使用其自身的反馈,同一模型改进其之前生成的输出。本文在7个不同的任务中进行了实验,涵盖从评论改写到数学推理的范围,证明了本文的方法优于直接生成。在所有任务中,使用SELF-REFINE生成的输出得到人类和自动化度量标准的更好评价,相对于直接使用GPT-3.5和GPT-4生成,平均改进幅度约为20%。**基础模型用来生成输出,反馈模型用来对输出进行评估,并为基础模型提供反馈。

Hekena的博客 1030

大语言模型提示词方式 Self-Refine

Self-Refine 是一种基于自我精炼的语言模型提示方法,它允许模型在生成文本的过程中进行自我反思和改进。

weixin_40090689的博客 946

大模型核心技术之Agent智能体详解

关于 AI Agent 核心模式与实战的完整指南:它首先定义了 Agent 的概念,并详细阐述了工具使用、ReAct、反思、规划及多智能体五种核心模式。文档的核心部分是代码实战,从基础的 LangChain 工具调用开始,逐步深入到使用 LangGraph 构建包含规划、执行、审核和反思闭环的复杂多智能体系统,清晰地展示了从单一 Agent 到协作式、可自我优化的智能体架构的演进路径

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 422

【论文解读】Self-Refine:让大模型进行自我反思与迭代精炼

Self-Refine 提出了一种简洁且无需额外训练的框架,使得大型语言模型 (LLM) 能够通过自我反馈和迭代精炼来提升其初始输出的质量。模拟了人类在创作或解决问题时“初稿-反馈-修改”的迭代过程。通过精心设计的少样本提示 (few-shot prompts),同一个 LLM 能够扮演生成器、反馈提供者和精炼器三个角色,在多种任务上均展现了显著的性能提升。

分享论文解读,分享思考见解,分享实践经验 2045

【亲测免费】 Self-Refine:基于自我反馈的迭代优化

**Self-Refine** 是一个创新的开源项目,旨在通过自我反馈机制,使大型语言模型(LLMs)能够生成对其输出的反馈,并利用这些反馈来改进输出,从而实现迭代优化。这一过程不仅提高了模型的输出质量,还展示了LLMs在自我改进方面的潜力。 ![Self-Refine 动画示例](https://raw.githubusercontent.com/madaan/self-refine/main...

gitblog_00813的博客 1017

自我精炼革命:如何让AI通过迭代反馈实现性能飞跃

自我精炼(Self-Refine)是一项突破性的AI技术,它使大型语言模型(LLMs)能够对自己的工作生成反馈,利用这些反馈改进输出,并迭代重复这一过程。这一创新方法彻底改变了AI的工作方式,显著提升了模型在各类任务中的表现。 ## 自我精炼的核心原理 自我精炼的工作流程建立在一个闭环反馈机制上,让AI能够像人类一样通过反思和改进来提升自身能力。 [![自我精炼闭环反馈机制](https:/

gitblog_00048的博客 1475

大模型如何使用工具?一文速览最新进展

© 作者|陈志朋机构|中国人民大学研究方向|自然语言处理来自 | RUC AI Box引言:近来,大语言模型飞速发展,在众多领域都取得了优秀的成绩,甚至在某些领域中超越了人类的表现。但是,大语言模型在一些具有挑战性的问题上(如:复杂推理、细粒度知识运用等)都难以取得优异的表现。有研究指出,外部工具的使用可以提升大模型在复杂问题上的表现。本文针对大模型对外部工具的使用,整理了多篇相关工作,旨在与...

zenRRan的博客 2570

论文解读:吴恩达来信AI Agent技巧—利用自我反馈的迭代细化技术

Large language models (LLMs) 经常无法在一次尝试中生成最佳输出。受人类在修改书面文本时所表现出的迭代精炼过程的启发,我们提出了 SELF-REFINE,一种通过迭代反馈和精炼来改进大型语言模型初始输出的方法。主要思想是使用一个语言模型生成初始输出;然后,该语言模型对其输出提供反馈,并使用这些反馈来精炼自己,迭代进行。SELF-REFINE 不需要任何监督训练数据、额外的训练或强化学习,而是使用单个语言模型作为生成器、精炼器和反馈提供者。

大F子的智能小课 2567

LLM-推理】Self-Refine:使用feedback迭代修正LLM的Output

本文主要提出了Self-Refine策略,旨在通过一个LLM不断refine修正LLM的输出,使其在无需额外训练的情况下,在下游任务产生更好的效果。该方法的直观Insight:我们在写一封 email 时,往往写出一个 draft,然后再修改其中措辞不当的地方,修改为更好的版本。首先,给定一个input x,在下让 LLM 先生成一个初始outputy0。​进行迭代,每一轮 t 中:Feedback:将input x、上一轮和给 LLM,得到这一轮的。【feedback的prompt】

weixin_57128596的博客 951

智能体九大推理范式之四——Self-Refine(自我优化), 简单迭代范式

Self-Refine(自我优化)是一种AI模型的内部迭代范式,通过"生成→评判→修改"循环优化输出结果。其核心特点包括:1)纯模型内部迭代,不依赖外部工具;2)适用于文本润色、代码优化等简单场景;3)包含生成初稿、自我评判和修改优化三个关键步骤。该范式通过多次迭代逐步改进输出质量,但需注意控制迭代次数(通常3-5次)以避免过度消耗资源。实现方式上可采用LangChain等工具构建自动化流程,典型案例包括养老产品文案优化等场景。相比其他范式,Self-Refine更专注于结果优化而非过程

聚焦大模型理解与应用开发 422

每日学术速递4.6

标题:PODIA-3D:使用姿势保持文本到图像扩散的 3D 生成模型跨大域间隙的域自适应作者:Gwanghyun Kim, Ji Ha Jang, Se Young Chun文章链接:https://arxiv.org/abs/2304.01900项目代码:https://gwang-kim.github.io/podia_3d/摘要: 最近,3D 生成模型取得了重大进展,但跨不同领域训练这些模型具有挑战性,需要大量训练数据和姿势分布知识。文本引导域适应方法允许生成器使用文本提示适应目标域,从

与君共勉,一起学习 1039

MCT Self-Refine算法原理解读与代码复现

MCT Self-Refine(MCTSr)算法,它是大型语言模型(LLM)与蒙特卡洛树搜索(MCTS)的创新集成,旨在提高复杂数学推理任务的性能。MCTSr 利用系统探索(MCT的特点)和启发式自我完善(self-refine)机制来改进 LLM 中的决策框架,从而解决了 LLM(尤其是战略和数学推理)中的准确性和可靠性难题。该算法通过 "选择"、"自我完善"、"自我评估 "和 "反向传播 "的迭代过程来构建蒙特卡罗搜索树,并利用改进的置信度上限(UCB)公式来优化探索与利用。

wanxueyao的博客 3098

Reflection Llama-3.1 70B:目前最强大的开源大语言模型

Reflection Llama-3.1 70B:目前最强大的开源大语言模型

engchina的专栏 821

评论家:大型语言模型可以通过工具交互式批评进行自我修正(ICLR2024)

大语言模型有时会显示不一致性和问题行为,例如产生幻觉事实、生成有缺陷的代码或创建令人反感和有毒的内容。与这些模型不同,人类通常利用外部工具来交叉检查和改进他们的初始内容,比如使用搜索引擎进行事实检查,或者使用代码解释器进行调试。作者受到了这一观察的启发写了这一文章。

weixin_45785795的博客 927

SELF-REFINE: 带自我反馈的迭代改进

23年5月来自CMU、AI2、U Washington、Nvidia、UCSD和谷歌的论文 “SELF-REFINE: Iterative Refinement with Self-Feedback”。

yorkhunter的博客 1437
上一篇: 图神经网络pytorch_geometric库之MessagePassing类
下一篇: LLM推理优化笔记1:KV cache、Grouped-query attention等
chencjiajy
博客等级 码龄14年 807粉丝 · 116原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值