0%

CONNECTING LARGE LANGUAGE MODELS WITH EVOLUTIONARY ALGORITHMS YIELDS POWERFUL PROMPT OPTIMIZERS

ABSTRACT:
大型语言模型(llm)在各种任务中表现出色,但它们依赖于精心制作的提示,而这往往需要大量的人力努力。为了自动化这一过程,在本文中,我们提出了一个新的离散提示优化框架,称为诱发提示,它借鉴了进化算法(EAs)的思想,因为它们表现出良好的性能和快速的收敛速度。为了使EAs能够处理离散的提示,这是一种需要连贯的、具有人类可读性的自然语言表达式,我们将llm与EAs联系起来。这种方法允许我们同时利用llm强大的语言处理能力和EAs的高效优化性能。具体来说,去掉任何梯度或参数,诱发提示从提示种群开始,基于进化操作符使用llm迭代生成新的提示,基于开发集改进种群。我们在31个数据集上,优化了包括GPT-3.5和Alpaca在内的封闭和开源llm的提示,包括语言理解、生成任务以及BIG-Bench Hard(BBH)任务。诱发提示的性能显著优于人工工程提示和现有的自动提示生成方法(例如,在BBH上高达25%)。此外,evo提示法还表明,将llm与EAs连接起来可以产生协同效应,这可以启发对llm与传统算法结合的进一步研究。

Introduction:
大型语言模型(LLMs)在多种自然语言处理(NLP)任务上表现出显著的表现。为了适应下游任务,只需在输入文本中添加一条指令,也称为离散提示符,即可引导llm执行所需的任务,而对计算成本的影响可以忽略不计。这种方法还消除了对llm中所有参数和梯度的需要,使其适用于具有api的llm,如GPT-3和GPT-4。尽管方便,LLMs对特定任务的表现受到提示的显著影响。因此,这种方法的关键挑战在于提示工程的设计,这已成为一种被称为提示工程的关键技术。鉴于不同语言模型和任务之间的提示符差异很大,提示性设计通常需要大量的人力努力和专业知识,以及主观的和相对有限的指导方针。
为了减轻人类在离散提示设计上的努力,以前的方法通常依赖于从llm的输出层访问token概率,这可能并不总是可以通过api访问。最近的一些工作考虑列举不同的提示并选择最好的提示,或修改当前的提示来改进它们,这些方法要么强调探索不同的提示,这可能导致优柔寡断和浪费资源,要么专注于利用当前确定的好提示,这可能导致停滞,并将搜索限制在局部最优。几种传统的无导数算法设计良好,在勘探和开发之间取得了良好的平衡。其中,进化算法(EAs)因其简单、高效、适合离散即时优化而突出,提示中的短语序列可以看作是典型EAs中的基因序列,使其与自然进化过程相容。
在本文中,我们借用了EAs的思想,并提出了一个离散的提示调优框架,即诱发提示。虽然EAs中的进化操作符通常是为序列而设计的,但它们倾向于独立地改变标记,以生成新的候选解决方案。不幸的是,这种方法忽略了令牌之间的连接,而这对于保持提示中的一致性和可读性至关重要。利用LLMs在NLP方面的专业知识和EAs的特殊优化能力,我们将这两种方法连接起来,其中LLMs根据进化操作符生成新的候选提示,而EAs指导优化过程以保留最优提示。
具体来说,基于几个初始提示,我们利用llm作为进化操作符来生成新的提示候选符,并保留了在开发集上具有更好性能的提示。对更新种群进行上述操作的迭代应用,以提高质量。通过精心设计进化算符和调整更新策略,可以用各种类型的EAs来实例化诱发提示。我们优化了两个不同的llm的提示,包括不同范围的神经语言理解和生成任务,以及具有挑战性的BBH任务,使用总共31个数据集。与人工设计的提示和以前的自动提示生成方法相比,诱发提示始终能得到更好的提示。

Contributions:
1、我们提出了一种新的连接llm和EAs的自动离散提示优化框架,称为evople提示,它具有以下优点: 1)不需要访问llm的任何参数或梯度;2)它在探索和开发之间取得平衡,从而获得更好的结果;3)生成的提示是人类可读的。
2、在31个数据集上进行的实验表明,与精心制作的提示以及现有的方法相比,诱发提示的有效性。针对情绪分类、主题分类、主观性分类、简化、总结和推理等常见任务,我们发布了通过诱发提示得到的最优提示。
3、我们证明了llm能够实现提供适当指令的多种类型的EAs。我们希望我们的探索将激发对llm与传统算法结合的进一步研究,为llm的新应用和创新应用铺平道路。

Related Works:
Prompts in LLMs :提示法是在特定任务中使用llm的一种有效方法。然而,性能受到提示符的选择的严重影响。近年来,自动提示优化得到了广泛的关注。基于提示的连续方法,仅调整某些输入token的参数引起了大量关注。尽管这些范式具有有效的性能,但它们的两个缺点不容忽视: 1)连续提示的优化需要黑盒api无法访问的llmam参数。2)软提示往往缺乏可解释性。离散提示,简单地添加几个离散的标记,如“It是”,或特定于任务的描述性指令,如“将评论分为积极或消极”。,可以为输入文本提供一个交互界面,具有更好的可解释性的人,并在各种NLP任务中显示出良好的性能。
Discrete Prompts :已经提出了各种方法来自动离散提示搜索和生成,而这些方法仍然依赖于输出层的梯度或标记概率。最近,考虑到下游任务中不同提示的高方差,一些工作集中于通过从一些候选提示中列举和选择最佳提示,主要通过重新抽样来增强。基于提示编辑的方法强调开发,这可能会导致局部优化。另一种方法是收集错误预测的案例,并分析相应的根本原因,以改进现有的提示,这也强调了开发利用。此外,这些方法被限制为具有标准答案的任务,不能直接应用于生成任务。我们提出的具有进化算法的诱发提示在不需要任何参数或梯度的情况下,在探索和开发之间取得平衡。
LLMs and Optimization Algorithms :llm显示了作为黑盒优化器的潜力;然而,这种黑盒方法缺乏可解释性。一些研究表明,llm有能力模仿传统算法中的特定操作。例如,llm可以通过收集错误预测的样本,在离散空间中执行“梯度下降”。同时,已经证明LLMs可以模仿遗传算法(GA)中的突变或交叉操作符。Chen等人进一步集成了llm和GA用于神经结构搜索,而Lanzi&Loiocono也引入了类似的游戏设计方法。我们的工作向前迈出了重要的一步,提出了一个将llm与进化算法连接起来的通用框架,该框架可以通过定制进化和选择过程实例化到不同的进化算法,从而扩大其在该领域的适用性和潜在影响。我们渴望这项工作,以激发结合llm和传统算法的更广泛的应用。

Method:
自动离散提示优化:

当前的高级llm通常通过黑盒api进行交互,而梯度和参数是不可访问的。进化算法(EAs)是一种无导数的算法,具有特殊的精度和快速的收敛性。因此,我们考虑在离散即时优化中引入EAs。然而,为了生成新的候选解决方案,进化操作符通常会独立地编辑当前解决方案中的元素,而不考虑它们之间的连接。这使得在离散提示上应用进化操作符具有挑战性,因为这需要一致性和可读性。为了解决这一挑战,我们提出了一种协同的方法,将llm的自然语言处理专业知识与EAs的优化能力联系起来,称为诱发提示。具体来说,llm基于进化操作符生成新的候选提示,而EAs指导优化过程以找到最优提示。
为了在实践中实现诱发提示,有必要用一种特定的EAs算法对其进行实例化。EAs有各种各样的类型,在本文中,我们考虑了两种广泛使用的算法,包括遗传算法(GA)和微分进化(DE)。GA是最受重视的进化算法之一,DE自成立以来已成为复杂优化挑战的最广泛应用算法之一。下面,我们将首先概述所提出的诱发提示,然后分别用GA和DE实例化诱发提示。
FRAMEWORK OF EVOPROMPT:
EAs通常从N个解的初始种群开始(在我们的设置中是提示),然后在当前种群上使用进化算符(例如,突变和交叉)迭代生成新的解决方案,并基于适应度函数更新它。遵循典型的EAs,诱发提示主要包括三个步骤:
初始化种群:与大多数现有的忽略先验人类知识的自动提示方法相反,我们将可用的手动提示作为初始种群来利用人类的智慧。此外,EAs通常从随机解开始,导致一个多样化的种群,并避免陷入一个局部最优。因此,我们还在初始人群中引入了一些由llm生成的提示。
进化:在每次迭代中,诱发提示使用llm作为进化操作符,根据从当前总体中选择的几个父提示生成一个新的提示。为了实现这一点,我们为每个特定类型的EAs设计了突变和交叉操作符的步骤,以及相应的指令来指导llm基于这些步骤生成新的提示。
更新:我们在开发集上评估生成的候选提示,并保留那些具有优越性能的提示,类似于自然界中的适者生存。具体的更新策略可能会根据所使用的EAs的类型而有所不同。
当迭代的次数达到一个预定义的值时,该算法将停止。在算法1中概述了诱发提示的细节。当使用特定的EAs算法实例化诱发提示时,需要调整进化过程,而关键的挑战是在离散提示上设计进化操作符
使用遗传算法的实例化:

在遗传算法中,父解通常使用轮盘赌轮选择方法进行选择,并根据其适应度值进行指导。类似地,我们使用轮盘赌轮选择,从当前人群中选择两个父提示,基于他们在开发集中获得的性能分数。设si表示在包含N个提示的总体中,第i个提示的性能分数。选择第i个提示作为父提示的概率可以表示为6fe89f7f3204b96ec3ff998b317f605.png
进化符合遗传算法框架,我们通过两个步骤生成一个新的候选提示: 1)在亲代提示之间进行交叉,产生一个新的后代提示;2)对子代提示进行突变,对某些元素引入随机改变。我们将这一两阶段的操作形式化为算法指令,以指导llm在算法1中实现Evo(·)。整个过程如图1所示。
我们采用了一种简单的选择策略来更新种群:在每次迭代中,诱发提示产生N个新的提示,这些提示与现有的N个提示的种群合并。随后,根据他们的分数,保留前N个提示,以形成更新的总体。因此,种群的整体质量不断提高,最终在最终种群中选择最好的一个作为最佳提示。
具有差异进化的实例化:

在这里,我们从对DE的一些初步知识开始。与遗传算法不同,DE的解用数值向量表示。种群中的每个向量依次选择为一个基向量,记为x,随后进行突变和交叉。在突变过程中,从当前种群中随机选择的方案a生成突变方案y。该突变是通过将两个不同的、随机选择的解决方案b和c之间的比例差添加到a中来实现的,即y=a+F(b−c),其中F是比例参数。
交叉是通过从基本解x或突变解y中选择向量中的每个参数来生成一个试验解be2ebcf167bbd1fae5a76bc0c10c700.png。然后,如果x‘比x好,则用x’代替x。在逐步的进化中,DE以一个高质量的种群结束。DE的一个修改版本使用当前的最佳解决方案作为向量a来利用来自最佳解决方案的信息。
DE的进化过程可以解耦为三个步骤: 1) F(b−c);2) y = a + F(b−c);3)x和y的交叉。在基于DE的诱发提示中,我们遵循三个步骤来设计进化过程,以及llm根据这些步骤生成新提示的相应指令,如图2所示:
1、受DE中的微分向量的启发,我们考虑只改变当前种群中两个随机选择的两个提示的不同部分(图2中的步骤1和步骤2)。当前人群中的提示被认为是当前最好的提示。因此,两个提示的共享组件往往对性能有积极的影响,因此需要予以保留。
2、DE的一个变体在突变过程中使用了当前的最佳向量,其中通过将微分向量的规模添加到当前的最佳向量中来生成一个突变向量。在此基础上,我们通过选择性地将当前最好的部分替换为突变的不同部分,从而生成突变提示。(图2中的第3步)。
3、交叉将基本提示符中的某些组件(即当前总体的候选组件)替换为从突变提示符中获得的片段。此操作结合了两个不同提示的特性,可能会创建一个新的和改进的解决方案(图2中的步骤4)。
按照标准DE,当前总体中的每个提示pi被选择为基本提示,然后使用图2中的指令生成相应的新提示p’i 。然后,保留得分较高的提示符,或pi或p’i 。因此,种群规模保持不变,而种群的总体质量则有所提高。

Experiments:
通过GPT-3.5执行进化操作符,我们使用开源Alpaca-7b和闭源GPT-3.5(文本-达文奇-003年)的诱发提示来优化提示。我们选择在开发集上分数最高的提示符,并在测试集上报告其分数。对羊驼报告的结果在3个随机种子上进行平均,并提供了标准偏差,而对于GPT-3.5,由于预算限制,我们报告了一个种子的结果。在我们的评估中,我们比较了诱发提示与三类基于提示的方法,具体如下:
**Manual Instructions (MI)**:这些作为特定任务的指导方针,并基于已建立的工作制定,特别引用Zhang等人(2023b)用于语言理解,Sanh等人(2021)用于总结,Zhang等人(2023c)用于文本简化。
PromptSource and Natural Instructions (NI) :这些存储库聚合了跨不同数据集的人类组成的提示。
APE和APO:APE采用迭代蒙特卡罗搜索策略,强调探索。我们复制它,并初始化与诱发提示相同大小的种群。APO将错误预测的实例作为“伪梯度”来迭代地细化原始提示,这强调了开发。我们以最优手动提示作为初始提示,在二进制分类任务上重现APO。
语言理解:
数据集和设置我们首先进行实验语言理解任务在7个数据集来验证我们的方法,包括情绪分类(SST-2,MR,CR,SST-5),主题分类(AG’s News,TREC和主观性分类)。为了约束输出标签空间,我们在测试用例之前准备每个类一个示例的演示。

主要结果表1显示: 1)与以往关于提示生成和人工书面指令的工作相比,基于GA和DE的诱发提示具有明显更好的效果。2)在情绪分类数据集上,诱发提示(GA)略优于诱发提示(DE)。当涉及到主题分类数据集时,evo提示符(DE)表现得更好。值得注意的是,在主观性分类任务(Subj)上,诱发提示符(DE)比其遗传算法有了很大的改进,获得了5%的准确率优势。这可能是由于当初始提示不是高质量时,DE逃避局部最优的特殊能力。
语言生成:
数据集和设置为语言生成,我们评估我们的文本摘要和简化任务的诱发提示。对于总结,我们采用了SAMSum,这是一个具有挑战性和复杂的对话总结数据集,并报告了Alpaca-7b和GPT-3.5的ROUGE-1/2/L评分。为了简化文本,旨在在简化源文本的同时保留其原始含义,我们使用了资产数据集,这是一个以其多重参考翻译而闻名的基准。我们将SARI评分作为评价指标,这是一种基于n-gram的评分系统,广泛用于文本编辑任务。
主要结果汇总和简化结果见表2和表3。与人工设计的提示相比,Evopnicte实现了显著的性能提高,在Alpaca和GPT-3.5 API上的SARI分数提高了3分以上。此外,在评估场景中始终优于APE方法,表明所生成的提示能够有效地利用llm的功能来获得卓越的性能。此外,在总结任务中,诱发提示(DE)明显优于诱发提示(GA),同时在文本简化任务中表现出类似的性能。这表明,DE变体对于诸如摘要等更复杂的语言生成任务特别有效。
BIG BENCH HARD (BBH):
为了验证在不同的任务上我们的方法,我们应用BBH,包括23个具有挑战性的任务,需要多步推理。由于这些任务具有挑战性,我们专注于优化GPT-3.5的提示。我们从测试集中抽取一个子集作为开发集,并报告标准化分数1,并与提示符“让我们一步一步地思考”进行比较。在测试集上进行3次思维链演示。我们使用任务id来简化每个任务的表示,并删除一个,因为手动提示的准确率已经达到100%。

evo提示符会为所有22个任务获得更好的提示(图3)。具体来说,诱发提示(DE)达到高达25%的改善,平均为3.5%,而诱发提示(GA)达到峰值为15%的改善,平均为2.5%。尽管对于某些任务,GA对应项的性能优于DE版本,但性能差距仍然相对较小(即约1%)。同时,在6个任务中,诱发提示(DE)超过诱发提示(GA)2%以上。因此,DE版本通常是处理这些具有挑战性的任务的一个很好的选择。
分析:
对于诱发提示(GA),我们默认应用轮盘赌轮选择策略来选择父母的提示,对后代有贡献。为了进一步探索各种选择策略的影响,我们将我们的方法与另外两种流行的策略进行了比较,即tournament和随机选择,如表4所示。我们观察到,使用轮盘赌轮的诱发提示(GA)获得了更高的分数,显示了这种选择方法的有效性。

对于evo提示(DE),我们深入研究了使DE的进化操作符适应离散提示时的两个关键设计考虑: 1)不同部分的突变,2)选择当前性能最好的提示作为图2中的“提示3”。我们评估了这些设计选择对两个数据集: Subj,一个理解数据集,其中evo提示(DE)优于evo提示(GA),和资产,一个生成数据集,其中两个变体表现出相似的性能。
为了说明只突变不同部分的好处,我们将图2中的前两个步骤替换为指令“随机突变提示1和提示2”,以允许对提示1和提示2中的所有内容发生突变,在表5中表示为“所有”。同时,诱发提示中的原始设计,只改变不同的部分,记为“差异”。如表5所示,仅在不同部分上进行突变设计可以在两个任务中一致地获得性能提高。

在DE算法的诱发提示(DE)中应用DE算法的一个变体,我们在当前总体中选择最佳提示作为图2中的提示3。我们通过以下设置来验证这一设计: 1)提示3从当前人群中随机抽样,在表5中表示为“随机”;2)通过让基本提示直接跨越突变的不同部分来消除提示3的使用(即删除图2中的步骤3),在Tabel 5中表示为“消除”。表5清楚地说明了引入提示符3的重要性。此外,选择最佳提示作为提示3比随机抽样更有效。
总体初始化:
我们研究了初始种群质量对诱发提示的影响。我们进行了试点实验,根据提示在开发集上的性能对提示进行排序(手动设计或由GPT-3.5生成)。然后,我们选择底部、随机和顶部的提示以及它们相应的变化作为初始提示。这些变化是使用Zhou等人(2022)设计的重采样模板生成的,如附录B.2中的图4所示,该模板用于为初始化引入随机性。

表6表明: 1)初始提示的
精心设计并不必要
,因为随机选择提示可以达到与选择性能最好的提示相似的性能;2)在选择性能最好的提示时,通过允许GPT-3引入随机性。产生变化可以导致整体性能的轻微提高;但是,当随机选择提示时,没有必要对诱发提示(DE)引入额外的随机性;3)当使用性能最好的初始提示时,诱发提示(GA)略优于诱发提示(DE);但当从表现不佳的初始提示开始时,诱发提示(DE)优于诱发提示(GA),这表明当可用的手动提示质量不高时,DE是一个更好的选择。

Conclusions:
我们引入了诱发提示来优化离散提示,它将llm与进化算法连接起来。在31个数据集上的大量实验证明了诱发提示的优越性,比手动指令和现有方法产生一致的性能收益。此外,我们还验证了llm可以作为一个有效的、可解释的接口来实现遗传算法和DE等进化算法。虽然本研究集中在EAs上,但我们的方法的可扩展性为将llm应用于其他传统算法开辟了途径,如粒子群优化(PSO)、蚁群优化(ACO)和最近的质量-多样性(QD)优化算法。我们的发现旨在激发未来在llm和传统算法的交叉点上的研究,鼓励创新的应用。