TextGrad:文本梯度优化生成式AI

斯坦福大学James Zou提出TextGrad,这是一个功能多样的框架,它通过反向传播由大型语言模型生成的反馈信息来实现优化,从而改进人工智能系统。通过利用自然语言反馈来评判并为系统的任何部分(从提示词到诸如分子或治疗方案之类的输出)提出改进建议,TextGrad能够针对各种不同的任务对生成式人工智能系统进行自动优化。一系列研究展示了TextGrad的通用性和有效性,这些研究涵盖了解决博士水平的科学问题、优化放射治疗方案、设计具有特定属性的分子、编程以及优化智能体系统等方面。TextGrad使科学家和工程师能够轻松开发出具有重大影响力的生成式人工智能系统。

原文:Yuksekgonul, M., Bianchi, F., Boen, J. et al. Optimizing generative AI by backpropagating language model feedback. Nature 639, 609–616 (2025). https://doi.org/10.1038/s41586-025-08661-4

TextGrad概览

LLM 正在改变 AI 系统的构建方式。新一代的人工智能应用越来越多地以复合系统的形式运行,协调着多个复杂的组件——从基于LLM的智能体到诸如模拟器和网络搜索引擎之类的专业工具。例如,一个由LLM与符号求解器交互组成的系统能够解决奥林匹克水平的数学问题;一个使用搜索引擎和代码解释器工具的大型语言模型系统,其表现可与人类竞赛级程序员相媲美,并且能够解决现实世界中来自GitHub的问题。尽管取得了这些进展,但许多此类突破都来自于由领域专家手工构建的系统。因此,开发自动化优化算法是利用LLM构建复合系统并加速未来突破的最关键挑战之一 。

在过去的15年里,人工智能领域的许多进展都依赖于神经网络和可微优化。神经网络的各个组件(例如,两个人工神经元)通过矩阵乘法等可微函数进行通信 。因此,通过反向传播在每个组件之间传递数值梯度(这为调整每个参数以改进模型提供了方向),并且一直是训练人工智能模型的常用方法。然而,微分优化并不容易应用于新一代的生成式人工智能系统,因为这些系统通常涉及自然语言交互、黑箱大型语言模型或外部工具,这使得数值梯度的反向传播变得困难。

为了应对这一挑战,TextGrad 通过文本进行自动的“求导”。神经网络通过数值进行通信,而现代人工智能系统则通过文本、代码和图像等非结构化数据进行通信。在TextGrad中,每个人工智能系统都被转化为一个计算图,其中各个组件通过复杂的(不一定可微的)函数交换这些丰富的、非结构化的变量。TextGrad 将“求导”用作一种比喻,LLM 以信息丰富且易于解释的自然语言评判的形式提供反馈(称为“文本梯度”-textual gradients),描述了为改进整个系统每个变量应如何修改。文本梯度通过任意函数进行传播,例如 LLM 的应用程序编程接口(API)调用、模拟器或外部数值求解器。值得注意的是,文本反馈并不针对底层神经网络的参数,因此与黑箱API兼容

现在,多个不同领域展示了TextGrad的强大能力,从问答基准测试到放射治疗计划优化以及分子生成(图1),所有这些都在一个单一的框架内完成,无需针对不同任务进行修改。LLM 能够在如此广泛的领域中为变量提供丰富、清晰且富有表现力的自然语言反馈,例如对分子提出修改建议、向其他 LLM 提供提示词以及代码片段等。TextGrad框架建立在这样一个前提之上,即当前最先进的 LLM 能够对它们所优化的系统的各个组件和子任务进行推理。研究结果展示了TextGrad在自动改进生成式AI系统及其输出方面的潜力。
fig1a-b

  • 图1a:神经网络以及使用数值梯度的反向传播。梯度的反向传播是深度学习的驱动力。损失函数相对于像 v 1 v_1 v1这样的变量的数值梯度,会通过像 h 1 h_1 h1这样的隐藏状态进行反向传播。
    图1b:黑箱人工智能系统以及使用自然语言“梯度”的反向传播。对于黑箱人工智能系统组成的复合系统,我们没有(传统意义上的)梯度,但我们可以针对基于文本的反馈构建类似的反向传播方式,这构成了TextGrad的基础。

fig1c

  • 图1c:TextGrad与PyTorch具有相同的抽象概念和语法,这使得它具有通用性且易于学习。在这两种情况下,作者使用相同的抽象概念来实例化网络变量 θ \theta θ、目标输出 y y y和预测输出 y ^ \widehat{y} y 、模型 f f f、损失函数 L L L以及梯度下降优化器 G D GD GD。例如,在TextGrad中,模型 f f f可以是一个黑箱语言模型,在这种情况下,将提示词视为想要优化的参数。TextGrad模仿了PyTorch在反向传播方面的抽象概念,从而能够在黑箱人工智能系统中进行优化。

fig1d-g

  • 图1d-g:TextGrad的示例应用包括:优化分子结构以使其具备诸如类药性和蛋白质结合亲和力等特性(d),优化编码问题的解决方案(e),优化放射治疗计划(f),以及优化提示词以提升语言模型的推理能力(g)。

TextGrad反馈LLM的前向传播

首先描述一个示例,以展示对于一个涉及两次调用LLM的系统而言,TextGrad是怎样的,并在“Methods”部分给出更通用的形式。请考虑以下系统:
eq1-2
在这里,用“+”表示两个字符串的拼接,并用“LLM(x)”表示将x作为提示词输入到一个语言模型中以获取回复。这种结构在将语言模型用于评估的场景中经常被使用,例如在“将语言模型用作裁判”的相关情况中。

在传统的自动求导中,人们使用链式法则来计算梯度,以确定如何修改系统中的数值变量,从而根据目标函数来改进系统。相比之下,TextGrad以文本的形式生成反馈,以指导对系统中非结构化变量的修改。它并不计算数值梯度,而是提供评判意见,给出一些具体的修改建议,这些建议能根据目标函数来改进系统。

为了改进一个人工智能系统,作者实例化了一种类似于反向传播算法的方法(图2a)。在这里,当前向函数是对LLM的调用时,作者将 ∇ L L M \nabla_{LLM} LLM用作文本梯度算子。一种灵活的实例化 ∇ L L M \nabla_{LLM} LLM的方式可见于图2b。具体来说,这个函数会返回一条评判意见,比如“可以通过……来改进预测结果”(“The prediction can be improved by…”),其中反馈内容描述了如何修改一个变量,以便根据目标函数来改进整个系统,这类似于数值梯度的作用。在这种情况下,一个可修改的组件可以是提示词(prompt)、中间输出结果(intermediate output)或最终的预测结果(final prediction)。在图2a中,为了将反馈反向传播到提示词,作者首先通过评估来收集对预测变量的反馈。然后,基于这个反馈以及对“LLM(Prompt + Question)”的调用,作者收集关于prompt的反馈。
fig2a

  • 图2a:展示了反向传播在由两次调用语言模型组成的系统中是如何工作的。需要注意的是,重复使用了一些符号来表示输出变量有后续项和没有后续项这两种情况。在此,绿色文本表示想要优化的参数。

fig2b

  • 图2b:展示了文本梯度算子的一个示例实现方式。这个算子会针对想要优化的变量提供一条自然语言反馈评判意见,其中该评判意见描述了如何修改这个变量以改进整个系统。在这里,紫色文本表示在这些操作中使用了大型语言模型的地方。

在数值梯度下降法中,参数 θ \theta θ通过减法运算与关于损失函数 L L L的梯度相结合。比如: θ n e w ( θ , ∂ L ∂ θ ) = θ − ∂ L ∂ θ \theta_{new}(\theta,\frac{\partial L}{\partial \theta})=\theta-\frac{\partial L}{\partial \theta} θnew(θ,θL)=θθL。延续梯度优化这一类比,作者采用文本梯度下降法(TGD),在这种方法中变量会依据反馈信息进行更新。在图2c中,作者展示了一种实例化文本梯度下降法的具体方式。这一步骤利用文本梯度,以能够根据目标函数改进系统的方式来修改各个组件。
fig2c

  • 图2c:一次文本梯度下降(TGD)迭代的示例实现。给定当前变量以及我们为该变量收集到的文本梯度(反馈),优化器会尝试更新此变量,以改进整个系统。所使用的确切提示词会有所不同,以确保具有通用性和灵活性;使用这些示例仅仅是为了进行阐述说明。
  • criticisms:批评;Incorporate the criticisms and produce a new variable:吸收批评意见并产生新变量

在自动求导中,目标函数通常是一个可微函数,比如均方误差函数。而在TextGrad中,目标可以是一个复杂的、可能不可微或者属于黑箱的函数。这样的设定为该框架增添了重要的通用性和灵活性。例如,作者证明了目标函数可以通过向语言模型发送提示词来获得,也可以是运行单元测试的代码解释器的输出,或者是分子模拟引擎的输出。一个使用 LLM 的简单目标函数可能如下所示:
eq3

  • investigate:调查;go through:浏览

在这种情况下,我们可以利用这个评估信号来优化代码片段,这得益于 LLM 在自我评判和自我提升方面有大量文献记载的潜力。

作者使用TextGrad来解决两大类任务。首先,在测试时优化中,直接将一个问题的解决方案——例如,一段代码片段、一个问题的答案或一个分子——视为一个优化变量。例如,在上述问答目标函数中,我们有一个希望在测试时进行改进的答案。TextGrad框架会为该答案生成文本梯度,并通过迭代的方式改进这个答案变量。其次,在提示词优化中,目标是找到一个能在针对某一任务的多次查询中提升大型语言模型性能的提示词。比如,我们可能希望找到一个针对LLM的系统提示词,以提高其在数学推理问题上的表现。特别要指出的是,我们希望这个系统提示词具有通用性,能适用于新问题,这与测试时优化不同,因为测试时优化的唯一目标是在测试时改进针对当前问题的变量。关键在于,这两类问题的解决都无需手工构建框架

作者在一系列多样的应用中展示了TextGrad的灵活性(各个案例的详细内容请参考论文原文):

  • 首先作者优化代码片段,以解决来自在线编程学习平台力扣(LeetCode)的难题。
  • 接下来,作者优化科学问题的答案。
  • 第三,作者优化提示词,以引导 LLM 进行推理。
  • 第四,作者为前列腺癌患者优化放射治疗计划。
  • 最后,优化涉及多个变量和更长链条的复合系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值