OPRO:大型语言模型作为优化器

发布于:2025-07-05 ⋅ 阅读:(15) ⋅ 点赞:(0)

摘要

优化无处不在。尽管基于导数的算法在诸多问题中是一种强有力的工具,但在许多现实世界的应用中,由于缺乏梯度信息,优化任务面临挑战。在本研究中,我们提出了一种简单而有效的方法,称为基于提示的优化(Optimization by PROmpting,OPRO),用于利用大型语言模型(LLMs)作为优化器,其中优化任务通过自然语言进行描述。在每一个优化步骤中,LLM 会根据包含先前生成的解及其对应数值的提示生成新的解,然后对这些新解进行评估,并将其添加到下一轮优化的提示中。

我们首先在线性回归和旅行商问题上展示了 OPRO 的能力,随后转向我们主要的应用场景——提示优化(prompt optimization),目标是找到能最大化任务准确率的指令。在使用多种大型语言模型进行实验后,我们发现 OPRO 优化出的最佳提示在 GSM8K 上相较于人工设计的提示性能提升最高可达 8%,在 Big-Bench Hard 任务上则提升高达 50%。代码地址:https://github.com/google-deepmind/opro

在这里插入图片描述

1 引言

优化在各个领域都至关重要。许多优化技术是迭代式的:优化从一个初始解开始,然后通过迭代方式更新解以优化目标函数 (Amari, 1993; Qian, 1999; Kingma & Ba, 2015; Bäck & Schwefel, 1993; Rios & Sahinidis, 2013; Reeves, 1993)。优化算法通常需要针对具体任务进行定制,以应对决策空间和性能地形带来的特定挑战,尤其是在无导数优化的场景中。

在本工作中,我们提出了一种简单而有效的方法,即通过提示进行优化(Optimization by PROmpting,简称 OPRO),用于利用 large language models(LLMs)作为优化器。随着提示技术的进步,LLMs 在多个领域都取得了令人瞩目的表现 (Wei et al., 2022; Kojima et al., 2022; Wang et al., 2022; Zhou et al., 2022a; Madaan et al., 2023; Bai et al., 2022; Chen et al., 2023e)。其理解自然语言的能力为优化带来了新的可能性:我们不再需要以形式化方式定义优化问题并通过编程求解器推导更新步骤,而是用自然语言描述优化问题,并指示 LLM 基于问题描述和先前找到的解迭代生成新的解。使用 LLM 进行优化使得任务之间的快速适应成为可能,只需更改 prompt 中的问题描述即可;同时优化过程也可以通过添加说明来指定解的期望属性进行定制。

为了展示 LLM 在优化中的潜力,我们首先展示了两个经典优化问题的案例研究:线性回归与旅行商问题。这两个问题在数学优化、计算机科学和运筹学中是许多其他问题的基础。在小规模的优化问题中,我们展示了仅通过 prompt,LLMs 即可找到高质量解,甚至在某些情况下可与手工设计的启发式算法相媲美或超越。

接下来,我们展示 LLM 优化 prompt 的能力:目标是找到一个能最大化任务准确率的 prompt。我们特别关注自然语言任务,其中任务的输入与输出均为文本。已有研究表明,LLMs 对 prompt 的格式非常敏感 (Zhao et al., 2021; Lu et al., 2021; Wei et al., 2023; Madaan & Yazdanbakhsh, 2022);尤其是语义相近的 prompt 在性能上可能存在显著差异 (Kojima et al., 2022; Zhou et al., 2022b; Zhang et al., 2023),而且最优 prompt 的格式可能依赖于模型及任务的具体特性 (Ma et al., 2023; Chen et al., 2023c)。因此,prompt 设计(prompt engineering)对 LLM 获得良好性能往往至关重要 (Reynolds & McDonell, 2021)。然而,庞大且离散的 prompt 空间使得优化任务变得具有挑战性,尤其是在仅能通过 API 使用 LLM 的场景中。延续先前对连续与离散 prompt 优化的研究 (Lester et al., 2021; Li & Liang, 2021; Zhou et al., 2022b; Pryzant et al., 2023),我们假设有可用的训练集用于计算训练准确率,作为优化目标函数的值,并在实验中表明,在小规模训练集上优化 prompt 的准确率已足以在测试集上获得良好表现。

传递给 LLM 的 prompt 起到调用优化器的作用,我们将其称为 meta-prompt。如图 3 所示,meta-prompt 包含两个核心信息。第一部分是之前生成的 prompt 及其对应的训练准确率;第二部分是优化问题的描述,其中包括从训练集中随机选择的若干示例,用于说明所关注的任务。我们还提供了额外说明,以帮助 LLM 理解不同部分之间的关系以及期望的输出格式。不同于近期使用 LLM 进行自动 prompt 生成的工作 (Zhou et al., 2022b; Pryzant et al., 2023),本研究中每一个优化步骤都会生成新的 prompt,其目标是在先前生成 prompt 的轨迹基础上提升测试准确率,而不是根据自然语言反馈对单个输入 prompt 进行编辑 (Pryzant et al., 2023),或要求新 prompt 保持相同的语义含义 (Zhou et al., 2022b)。通过利用完整的优化轨迹,OPRO 使得 LLM 能在整个优化过程中逐步生成新的 prompt,从而不断提升任务准确率,即使初始 prompt 的准确率很低。

我们在多个 LLM 上进行了全面评估,包括 PaLM-2 模型家族中的 text-bison 与 Palm 2-L (Anil et al., 2023),以及 GPT 模型家族中的 gpt-3.5-turbo 与 gpt-4。我们在 GSM8K (Cobbe et al., 2021) 和 Big-Bench Hard (Suzgun et al., 2022) 上优化 prompt,这些是推理类基准任务,在这些任务中,prompt 技术已取得显著性能突破 (Wei et al., 2022; Kojima et al., 2022; Suzgun et al., 2022)。从初始准确率较低的 prompt 开始,我们展示了所有参与评估的 LLM 均可作为优化器使用,并能通过迭代优化过程持续提升生成 prompt 的性能直到收敛(见图 1)。特别地,尽管这些 LLM 通常生成风格不同的 instructions(见表 1),在 zero-shot prompting 场景下,其生成的最佳 instructions 在应用于 PaLM 2-L 时,已能达到 few-shot chain-of-thought prompting 的性能,且在 GSM8K 上的 zero-shot 表现相比人工设计的 prompt 最多可提升 8%。此外,我们还观察到 OPRO 优化得到的 prompt 可迁移至同一领域的其他基准任务,并带来显著的性能提升。

在这里插入图片描述

2 OPRO: LLM 作为优化器

图 2 展示了 OPRO 的整体框架。在每一步优化中,LLM 会根据优化问题描述和 meta-prompt 中以往评估过的解,生成当前优化任务的候选解。然后,新解会被评估,并加入 meta-prompt 中用于后续的优化过程。当 LLM 无法提出更优的解,或者达到最大优化步数时,优化过程终止。我们首先概述 LLM 优化应具备的理想特性,然后基于这些理想特性介绍关键设计选择。

2.1 LLM 优化的理想特性

利用自然语言描述。 LLM 优化的主要优势在于其理解自然语言的能力,这使人们可以不依赖形式化定义,而是直接用自然语言描述优化任务。例如,在 prompt 优化中,目标是找到一个能够提升任务准确率的 prompt,此类任务可以通过高层次的文本摘要以及输入-输出示例来描述。

在探索与利用之间进行权衡。 探索与利用之间的权衡是优化中的一个基本挑战。作为优化器的 LLM 应当能够在这两者之间取得平衡:一方面利用已发现优解的搜索空间区域,另一方面也探索新的空间区域,以避免错失潜在更优的解。

2.2 Meta-prompt 设计

作为优化器 LLM 的输入,meta-prompt 包含以下两个核心部分:

优化问题描述。 第一部分是优化问题的文本描述,包括目标函数和解的约束条件。例如,在 prompt 优化中,可以指示 LLM:“生成一个能获得更高准确率的新指令”,我们将 meta-prompt 中的此类指令称为 meta-instruction。我们也可以提供定制化的 meta-instruction,作为生成解的非正式正则化,例如“该指令应简洁且具有普适性”。

优化轨迹。 除了理解自然语言指令外,LLM 也被证明能够从 in-context 示例中识别模式(Wei et al., 2023; Madaan & Yazdanbakhsh, 2022; Mirchandani et al., 2023)。我们的 meta-prompt 利用了这一特性,引导 LLM 借助优化轨迹生成新解。具体而言,优化轨迹包括以优化得分升序排序的历史解及其得分。将优化轨迹纳入 meta-prompt,可以使 LLM 识别高分解之间的相似性,从而在无需显式定义解更新方式的前提下,基于已有优解构造潜在更优解。

2.3 解的生成

在解的生成阶段,LLM 使用 meta-prompt 作为输入生成新解。我们在此阶段解决以下关键优化挑战:

优化稳定性。 在优化过程中,并非所有解都能获得高分并相对于前一解单调提升。由于 in-context learning 对 prompt 的敏感性,LLM 的输出可能会被优化轨迹中质量较低的解严重影响,尤其是在早期探索尚不充分的阶段。这种现象有时会导致优化过程不稳定及方差较大。为提高稳定性,我们引导 LLM 在每一步优化中生成多个解,使其可以同时探索多个可能方向,从而更快发现有潜力的前进方向。

探索-利用权衡。 我们通过调整 LLM 的采样温度来实现探索与利用的平衡。较低的温度鼓励 LLM 在已知解周围进行微调和利用,而较高的温度则引导 LLM 更积极地探索可能截然不同的新解。

3 激励示例:数学优化

我们首先展示 LLM 在数学优化中作为优化器的潜力。具体来说,我们呈现两个案例研究:一个是线性回归,作为连续优化的示例;另一个是旅行商问题(TSP),作为离散优化的示例。在这两项任务中,我们观察到:仅基于 meta-prompt 中提供的过往优化轨迹,LLM 即能在小规模问题上正确捕捉优化方向。

3.1 线性回归

在线性回归问题中,目标是找到在线性模型中最有可能解释输入变量与响应之间关系的线性系数。我们研究的设定中,自变量和因变量 X X X y y y 均为一维,并包含一个截距项 b b b,因此有两个一维变量 w , b w, b w,b 需要优化。在一个合成设定中,我们为一维变量 w true w_{\text{true}} wtrue b true b_{\text{true}} btrue 采样真实值,并根据以下公式生成 50 个数据点:

y = w true x + b true + ϵ y = w_{\text{true}} x + b_{\text{true}} + \epsilon y=wtruex+btrue+ϵ
其中 x x x 从 1 到 50, ϵ \epsilon ϵ 是标准高斯噪声。我们的优化从 5 组随机采样的 ( w , b ) (w, b) (w,b) 对开始。在每一步中,我们使用一个包含历史中最优的 20 组 ( w , b ) (w, b) (w,b) 对及其排序后的目标值的 meta-prompt 来提示一个 instruction-tuned 的 LLM。meta-prompt 接着要求生成一个新的 ( w , b ) (w, b) (w,b) 对,以进一步降低目标值。一个示例 meta-prompt 如附录 C.1 中图 19 所示。我们对 meta-prompt 进行 8 次提示,在每一步中最多生成 8 组新的 ( w , b ) (w, b) (w,b) 对,以提升优化稳定性。然后我们评估每组候选对的目标值并将其加入历史记录中。我们执行的是黑盒优化:meta-prompt 中不包含目标函数的解析形式。这是因为 LLM 通常可以直接从解析表达式中计算出解。

表 2 总结了以下优化器 LLM 的结果:text-bisongpt-3.5-turbogpt-4。我们研究了三个 w true w_{\text{true}} wtrue b true b_{\text{true}} btrue 的设定:

  • 在起始区域内 [ 10 , 20 ] × [ 10 , 20 ] [10, 20] \times [10, 20] [10,20]×[10,20]

  • “近区外”(每个变量位于起始区域之外但距离小于 10)

  • “远区外”(每个变量位于起始区域之外且距离大于 10)
    在这里插入图片描述

我们观察到:

  • 每个模型探索的唯一 ( w , b ) (w, b) (w,b) 对的数量都少于穷举搜索,这表明这些模型能够执行黑盒优化:比较数值并提出下降方向。
  • text-bisongpt-4 模型在收敛速度上优于 gpt-3.5-turbo:它们以更少的步骤到达最优点。gpt-4 模型在发现最优点时也探索了更少的唯一点。从优化轨迹的细节来看,gpt-4 在根据历史提出合理下一步方面表现最佳:例如,当历史中 ( w , b ) = ( 8 , 7 ) (w, b) = (8, 7) (w,b)=(8,7) ( w , b ) = ( 8 , 6 ) (w, b) = (8, 6) (w,b)=(8,6) ( w , b ) = ( 8 , 5 ) (w, b) = (8, 5) (w,b)=(8,5) 的目标值在下降时,它最有可能提出 ( w , b ) = ( 8 , 4 ) (w, b) = (8, 4) (w,b)=(8,4) 作为评估点。
  • 当真实解距离起始区域越远时,对所有模型来说问题都会变得更困难:所有模型都需要进行更多的探索和更多步数。

3.2 旅行商问题

接下来,我们考虑旅行商问题(TSP)(Jünger 等,1995;Gutin & Punnen,2006),这是一个经典的组合优化问题,已有大量文献提出了相关算法,包括启发式算法和求解器(Rosenkrantz 等,1977;Golden 等,1980;Optimization 等,2020;Applegate 等,2006;Helsgaun,2017),以及基于训练深度神经网络的方法(Kool 等,2019;Deudon 等,2018;Chen & Tian,2019;Nazari 等,2018)。具体来说,给定一组 n 个具有坐标的节点,TSP 任务是找到一条最短路径,从起始节点出发,遍历所有节点,并最终回到起始节点。

我们使用 LLM 进行的优化过程从 5 个随机生成的解开始,每个优化步骤最多生成 8 个新解。我们在附录 C.1 的图 20 中展示了 meta-prompt。问题实例是通过在 [ − 100 , 100 ] [ - 1 0 0 , 1 0 0 ] [100,100] 区间内采样节点的 x 和 y 坐标生成的。我们使用 Gurobi 求解器(Optimization 等,2020)构造 oracle 解,并计算所有方法的最优性间隙,其中最优性间隙定义为:

Optimality Gap=评估方法的路径长度−oracle 路径长度oracle 路径长度\text{Optimality Gap} = \frac{\text{评估方法的路径长度} - \text{oracle 路径长度}}{\text{oracle 路径长度}}

除了评估使用不同 LLM(包括 text-bisongpt-3.5-turbogpt-4)的 OPRO,我们还将 OPRO 与以下启发式算法进行了比较:

  • Nearest Neighbor(最近邻,NN)。从一个初始节点开始,解通过最近邻启发式方法构建:在每一步中,从当前部分解中尚未包含的节点中选择与当前部分解尾节点距离最短的节点,将其作为新的尾节点加入。该过程在所有节点均被加入后结束。

温馨提示:
阅读全文请访问"AI深语解构" OPRO:大型语言模型作为优化器


网站公告

今日签到

点亮在社区的每一天
去签到