前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PromptAgent: 利用语言模型进行策略规划实现专家级提示优化

PromptAgent: 利用语言模型进行策略规划实现专家级提示优化

作者头像
用户1324186
发布2024-02-21 17:32:17
5370
发布2024-02-21 17:32:17
举报
文章被收录于专栏:媒矿工厂

题目: PromptAgent:Strategic Planning with Language Models Enables Expert-level Prompt Optimization 作者:Xinyuan Wang, Chenxi Li, Zhen Wang, Fan Bai, Haotian Luo, Jiayou Zhang, Nebojsa Jojic, Eric Xing, Zhiting Hu 文章地址:https://arxiv.org/abs/2310.16427 内容整理:张俸玺 这篇文章介绍了PromptAgent,一种用于自动生成大语言模型(LLMs)专门任务提示的优化方法。PromptAgent采用了策略规划框架,结合蒙特卡洛树搜索,有效地引导和优化提示空间。其目标是创建能够与专家手工制作的质量相匹配的提示,融入领域知识和详细指令。通过应用于不同领域的12个任务,实验结果表明PromptAgent显著超过了现有的提示优化方法和Chain-of-Thought基线,证明了其生成高效、专家级提示的能力以及高度的泛化性。

引言

提示工程旨在为大型语言模型(LLMs)制定有效的提示,以发挥其全部潜力。近期的自动提示工程,即提示优化,通过利用LLMs的内部状态或梯度,成功地研究了训练软提示或搜索离散令牌的最佳组合。对于如 GPT-4 这样的尖端、专有API基础的LLMs,提示工程很大程度上依赖于某种特定的人机交互。因此,人类提示专家需要将领域知识和对LLMs的直觉相结合,以设计最有效的提示,这可能包括任务描述、领域知识、解决方案指导等,这些都能显著提高提示的质量和性能。

图1 专家级提示 VS 普通人工撰写的提示以及来自基于采样方法的提示

在API基础的大型语言模型(LLMs)上实现专家级提示工程的自动化面临重大挑战,主要是因为专家级提示的复杂性。尽管最近的提示优化方法开始使用迭代采样或进化算法等技术,但这些方法大多采用启发式方法,如文本编辑或改写来生成候选提示,并且通常依赖于简单的迭代算法,缺乏指导探索的原则性策略。这导致它们往往只能产生普通用户提示的局部变体,很少能达到专家级提示的卓越性和细腻度。此外,许多方法忽视了提示工程本质上是一个人在循环中的应用,其中人类通过迭代互动修正中间错误并整合必要的领域知识,这个迭代精炼过程是人类专家制作高级提示的特点。然而,人类探索虽有效,但可能成本高且在同时处理多个错误探索提示空间时效率低下,这限制了专家级提示的可扩展性。

先前的研究通常使用进化算法,如蒙特卡洛搜索和吉布斯采样,来生成候选提示的方法,这些方法主要依赖于文本编辑或改写等启发式方法。它们倾向于使用直接的迭代算法且缺乏指导探索的原则性策略,结果往往只生成普通用户的局部变异提示,难以达到专家级提示的精细度。许多方法忽略了提示工程本质上需要人类参与的循环过程,即通过迭代互动修正错误并整合领域知识来精炼提示。尽管人类探索有效,但可能成本高且效率低,影响专家级提示的可扩展性。

为了应对上述挑战并结合人类探索与机器效率,作者在本文中介绍了PromptAgent。PromptAgent借鉴人类试错过程,无缝融合了原则性规划方法,特别是蒙特卡洛树搜索(MCTS),以策略性地优化提示过程。它将提示优化重新定义为一个策略规划问题,使用MCTS来前瞻性地模拟未来奖励,从而在复杂的专家级提示空间中作引导。通过这种策略规划,PromptAgent迭代利用洞察性错误反馈来精炼提示,有效地整合领域知识,引导深入提示的生成。在本文中,PromptAgent被应用于跨三个实际且不同领域的12项任务,展示了其发现高效专家级提示的能力。这些任务包括BIG-Bench Hard、领域特定和通用NLP任务。从一个初始的人类编写的提示和一小组训练样本出发,PromptAgent不仅大幅提升了初始人类提示的性能,而且显著超过了强大的Chain-of-Thought和最近的提示优化基线。通过广泛的定性结果进一步强调了优化提示的专家级特征,表明PromptAgent有效地弥合了领域间的差距,在挑战性任务中提供了极高的探索效率和泛化能力。

图2 不同基础模型的提示对比

方法

在给定基础大型语言模型

\mathcal{B}

和目标任务

\mathcal{T}

的情况下,提示工程师的任务是制定一个优化的自然语言提示

\mathcal{P}^{\mathcal{T}}

,以最大化

\mathcal{B}

\mathcal{T}

上的性能。然而,初学者和专家提示工程师之间的差距可能很大,特别是对于那些需要专门领域专业知识的任务,如生物医学领域。作者的主要目标是自动精炼任务提示

\mathcal{P}^{\mathcal{T}}

,以弥合这种知识差距,最小化人为干预。大多数现有方法依赖于迭代采样本地提示替代品,这不仅资源密集,而且也无法保证产生最优的最终提示。鉴于此,作者引入了PromptAgent,一个基于代理的框架,通过策略规划和在提示过程中利用错误反馈进行反思,来生成专家级任务提示,恰当地平衡了探索和性能。

图3 (a)蒙特卡罗树搜索规划专家级提示。(b)一个简化的状态转换示例

PromptAgent框架设计

PromptAgent的目标是在任务提示中有效地整合专家先验知识,同时确保对广阔的提示空间进行有效和策略性的探索。在这个规划框架中,作者将每次迭代或任务提示的版本定义为状态

s_t=\mathcal{P}_t

,这允许系统地监控提示的演化并直接应用精炼来修改它们。在这个上下文中,动作可以被视为对当前提示(状态)的潜在修改,例如在先前的工作中探索的单词替换或改述。然而,更理想的动作空间应该引入更有效和有意义的修订,这些修订调用先前的专家知识,最终指导向专家级提示。

因此,作者提出了基于错误的动作,其中每个动作都是基于基础模型犯下的某些错误来生成的。具体来说,如图3(b)所示,动作被框定为错误反馈,以指导提示的后续精炼。这样的错误反馈有效地建议了纠正模型错误的潜在方向,确保修订后的提示更好地指导基础模型避免先前观察到的陷阱。值得注意的是,这种方法也与最近关于大语言模型(LLMs)自反思能力的发现相呼应,即LLM可以直接反思它们的错误,以产生更好的提示修改。

考虑到状态和动作的定义,PromptAgent将提示优化问题构建为一个马尔可夫决策过程(MDP),由元组

(\mathcal{S}, \mathcal{A}, T, r)

表示。这里,

\mathcal{S}

代表状态空间,

\mathcal{A}

是动作空间,

T

定义了转换函数

T: \mathcal{S} \times \mathcal{A} \mapsto \mathcal{S}

r

是奖励函数

r: \mathcal{S} \times \mathcal{A} \mapsto \mathbb{R}

。如图3(a)所示,对于任何给定的当前状态

s_t

,PromptAgent基于

a_t \sim p_{\mathcal{O}}\left(a \mid s_t, m_1\right)

迭代生成一个动作

a_t

,其中

m_1

是一个元提示,由优化器LLM

\mathcal{O}

使用以促进动作生成。具体来说,图3(b)展示了动作生成的两步过程:从训练样本中收集基础模型的错误(第1步)并反思这些错误以得出有用的错误反馈(第2步)。之后,PromptAgent根据转换函数

p_{\mathcal{O}}\left(s_{t+1} \mid s_t, a_t, m_2\right)

获得一个新状态,其中

m_2

是另一个元提示,帮助状态转换以更新提示,也在

\mathcal{O}

上操作。更具体地说,给定当前的错误反馈作为动作

a_t

m_2

要求优化器生成一个新的提示(状态)以利用任何领域知识并有效地解决模型错误,类似于提示专家如何基于错误反馈修订他们的提示。

最终,通过应用动作

a_t

后每个新生成状态

s_t

的质量由奖励函数

r_t=r\left(s_t, a_t\right)

决定。与强化学习(RL)中奖励工程的复杂性类似,制定奖励可能很复杂,需要适应特定领域的知识或为关注的任务指定的偏好。为了不失去方法框架跨各种任务的通用性,作者直接将奖励定义为在从给定训练样本中分离出来的保留集上的任务性能。然而,奖励的确切定义将依赖于后续实施细节中描述的任务特定指标。

针对提示优化的策略规划

上述提示优化的重新构造使作者能够将PromptAgent与原则性规划算法无缝集成,特别是蒙特卡洛树搜索(MCTS)。这使得作者能够在策略性地导航庞大的提示空间的同时,在寻找高奖励路径的错误反馈中进行平衡探索和利用,这产生了最具泛化能力的专家级提示。具体来说,作者观察到一些错误反馈(动作)可能将实例特定的细节注入任务提示(状态)中,这些细节在任务层面上难以泛化(利用),在这里需要策略性规划来探索新的错误反馈以获得更高的奖励(探索)。MCTS通过逐步构建一个树结构来实现这种策略性规划,每个节点作为一个状态,每条边作为转换状态的动作。MCTS通过维护一个状态-动作价值函数

Q: \mathcal{S} \times \mathcal{A} \mapsto \mathbb{R}

来策略性地扩展树,该函数代表对状态

s_t

应用动作

a_t

可能获得的未来奖励。换句话说,该方法依赖这个函数

Q(s_t, a_t)

来预测并估计遵循当前状态-动作对的路径潜在奖励。

为了更新这个

Q

函数并扩展树,MCTS迭代执行四个操作:选择、扩展、模拟和反向传播。迭代过程在达到预定的迭代次数时结束,随后作者选择最高奖励的轨迹作为最终提示。接下来,作者编译PromptAgent中的四个操作。作者基于MCTS的提示优化伪代码如下图4所示。

图4 PromptAgent-MCTS算法伪代码图

实验

表1 在BBH任务上的提示表现。BBH任务(BIG-Bench Hard)是一个由23个挑战性的BIG-Bench任务组成的套件,这些任务是先前的语言模型评估没有超过平均人类评分者的表现的任务。

在实验部分,作者通过将PromptAgent应用于跨三个领域的12个任务来展示其发现生产性专家级提示的能力:BIG-Bench Hard、领域特定和一般NLP任务。

表2 在特定和一般NLU任务中的提示表现

从初始人类编写的提示和少量训练样本开始,PromptAgent不仅显著提升了初始人类提示的性能,还大幅超越了强大的Chain-of-Thought和最近的提示优化基线。例如,作者展示了PromptAgent在GPT-3.5、GPT-4和PaLM 2上持续超越人类和自动提示工程师的基线,分别提高了9.1%、7.7%和6%。广泛的定性结果进一步强调了优化提示的专家级方面,表明PromptAgent有效地弥合了挑战性任务中的领域差距,提供了极高的探索效率和泛化能力。

表3 提示泛化表现

结论

在本文中,作者提出了PromptAgent,这是一个新颖的提示优化框架,能够自主地为给定任务制作出专家级的提示。与传统的提示工程相比,专家级提示的特点是能够无缝整合领域洞察力,并为领域专家弥合知识差距。PromptAgent将提示优化视为一个策略规划问题,利用蒙特卡洛树搜索(MCTS)的能力,策略性地高效遍历复杂的提示空间。它通过基于大型语言模型(LLMs)的自我反思能力,以试错的方式将任务中的领域特定知识整合到新生成的提示中。作者在三个不同领域的12个多样化任务上测试了PromptAgent,其优化的提示一致展现出了专家级特征,丰富了领域特定的细节和指导,显著优于人类编写的提示、Chain-of-Thought提示和其他优化方法的基线。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 方法
    • PromptAgent框架设计
      • 针对提示优化的策略规划
      • 实验
      • 结论
      相关产品与服务
      腾讯云小微
      腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档