当你让大模型写一首「莎士比亚十四行诗」,并以严格的韵律「ABAB CDCD EFEF GG」执行。
同时,诗中还要包含提供的3个词。
对于这么高难度的创作题,LLM在收到指令后,并不一定能够按要求做出这首诗。
正所谓,人各有所长,LLM也是如此,仅凭单一模型有时是无法完成一项任务的。
那该如何解?
最近,来自斯坦福和OpenAI的两位研究员,设计了一种提升LLM性能的全新方法——元提示(meta-prompting)。
「元提示」能够把单一的LLM变身为全能的「指挥家」。
论文地址:https://arxiv.org/abs/2401.12954
通过使用高层「元提示」指令,让大模型把复杂任务拆成子任务,然后再将这些任务分配给「专家模型」。
每个模型收到量身订制的指令后,输出结果。最终元模型有效整合这些结果,输出最终的答案。
最重要的是,LLM还会利用自身理解、推理能力,对最终输出结果进行打磨和验证,确保输出结果的准确性。
这种合作方式,能够让LLM成为核心,通过灵活调用专家,在多种任务上实现大幅性能提升。
实验中,研究人员在Game of 24(24点游戏)、Checkmate-in-One、Python编程挑战等多种任务上,为GPT-4集成了Python解释器,在元提示策略下,模型性能刷新SOTA。
具体来说,相比「标准提示」提升了17.1%,相比「动态专家提示」提高了17.3%,相比「多角色提示」提高了15.2%。
元提示让LLM充当「指挥者」
我们已看到,GPT-4、PaLM、LLaMa等新一代大模型已经在NLP处理生成中,展现出强大的泛化能力。
然而,所有的LLM并非强大到无所不能,也会在输出结果中产生「幻觉」,比如输出不符合事实、误导性的内容。
随着这些模型的运行成本变得更加实惠,人们自然会问,是否可以使用「脚手架」(Scaffolding)系统并利用多个 大模型查询,以便提升LLM输出的准确性和稳健性?
在这项研究中,斯坦福和OpenAI的研究人员便提出了一种增强大模型性能的新技术——元提示(meta-prompting)。
这个过程,就需要构建一个高级「元提示」,来指示大模型:
- 将复杂的任务或问题分解为多个小的、可管理的子任务
- 为每个子任务分配一个受过特定领域训练的「专家」模型
- 监督这些专家模型之间的沟通
- 在整个过程中,运用LLM理解、推理和验证能力
当收到「查询」时,大模型在元提示下充当「指挥者」。它会生成一个消息历史,包含来自各种专家模型的响应。
LLM最初负责生成消息历史中的「指挥」部分,过程就包括选择专家模型,并为它们制定具体指示。
然而,相同的LLM也可以充当这些独立专家,根据指挥者为每个特定查询选择的专业知识和信息生成输出。
这种方法允许单一、统一的LLM保持一致的推理思路,同时还可以利用各种专家角色。
通过动态选择的上下文来提示这些专家,从而为大模型流程引入了新的视角,而指挥模型则保留了整个历史和协调的全景图。
因此,这种方法使单个黑盒LLM,能够有效地充当核心指挥者的角色,又可以作为多样化专家小组生成更准确、可靠和一致的响应。
作者介绍,「元提示」方法结合并扩展了进来一系列关于各种 「提示理念」的研究。
其中,就包括高层次规划和决策、动态角色分配、多智能体辩论、自我调试和自我反思等等。
任何任务,皆不惧
而「元提示」独到之处就在于,与任务无关性。
与需要针对每个任务量身定制的特定指令或示例的传统脚手架方法不同,「元提示」是在各种任务和输入中采用同一组高级指令。
这种通用性对用户来说非常有利,因为为每个不同任务提供详细示例,或具体指导非常的麻烦。
举个栗子,当收到「写一首关于自拍的莎士比亚十四行诗」之类的一次性请求时,用户不需要提供「高质量新古典主义诗歌」的示例。
「元提示」通过提供广泛、灵活的框架,提高了LLM的实用性,同时又不影响相关性。
此外,为了展示「元提示」的多功能性和集成功能,研究人员还调用「Python解释器」的功能,增强了AI系统。
这使得该技术的应用更加动态和全面,进一步扩展了其有效解决各种任务和查询的潜力。
下图中,展示了「元提示」对话内容的可视化。
具体描述了元模型(中心控制LLM,又名「指挥者」)如何将其自身的输出,与各种专家模型或代码执行的输入和输出穿插在一起。
这样的配置使得元提示成为几乎通用的工具。
它允许将各种LLM交互和计算整合到一个单一的、一致的描述中。「元提示」的与众不同之处在于,它让大模型自行决断使用哪些提示以及执行哪些代码片段。
算法过程
「元提示」方法的本意是,使用模型来协调和执行多个独立的查询,然后综合它们的响应以输出最终响应。
这一机制支持集成方法,利用独立专业模型的优势和多样性,来协作解决和解决多方面的任务或问题。
研究人员认为,虽然单个通用模型可能为通用查询提供有价值且有用的见解,但结合多个特定领域模型(我们也称为专家)的观点和结论有可能输出更全面、更稳健的结果,甚至是准确的解决方案。
我们的元提示策略的核心是其浅层次结构,其中一个模型(称为"元模型")作为权威的主要实体出现。
从概念上讲,框架内的特定领域专家可以采取多种形式,例如为执行特定任务而定制的微调LLM、用于处理特定领域相关查询的专用API,甚至是计算器或Python解释器等计算工具可以执行算术计算或编写和执行代码。
这些专家尽管功能各异,但都在元模型的监督下进行指导和统一。
实验设置中,只能通过元模型调用专家模型,它们之间不能直接相互交流。这一限制,是为了简化专家之间的沟通,并将元模型置于操作的中心。
- 转换输入
使用转换函数t_init,将原始查询放置在合适的模板(template)中,然后向元模型发出初始指令。
- 循环迭代
(a)提示元模型:当前消息列表,即H_t,指导元模型的下一步行动——直接处理查询,或咨询特定领域的专家。
(b)调用特定领域的专家模型:如果元模型没有返回结果,它可以调用任何专家并给它指令,这些指令是使用e_exp从其输出中提取的。不过,这个过程是孤立的:每个专家模型只能看到元模型选择与它们共享的内容,并做出相应的响应。
比如,如果问题涉及数学和历史,元模型可能会咨询数学专家进行计算,并咨询历史专家了解历史背景。专家的输出结果会被提取出来,并附加额外的说明,所有这些都使用t_mid模板。
(c)返回最终响应:如果元模型的响应包含最终答案(通过不同的特殊标记突出显示),则使用e_ret提取解决方案并返回。
(d)错误处理:如果模型响应y_t既不包含最终答案,也不包含对专家模型的调用,则在信息列表中附加错误信息H_t。这确保了程序是稳健的,并可以处理意外的输出。
在接下来的实验中,研究人员将「元提示」与四种基线方法进行了比较,包括标准提示(Standard prompting)、零样本CoT提示、专家提示、多角色提示。
此外,为了评估「元提示」方法相对于其他零样本提示基线的有效性,研究人员还采用了一系列需要不同程度的数学和算法推理、特定领域知识和文学创作能力的任务和数据集。
其中包括:
- 24点游戏:使用四个给定数字中的每一个,恰好一次组成一个值为24的算术表达式
- Three BIG-Bench Hard:即几何形状、多步算术、单词排序
- Python编程难题:一系列用Python编写的具有挑战性的编程难题,具有不同的难度级别
- 多语种小学数学:是GSM8K数据集的多语种版本,将一个子集的示例翻译成十种不同类型的语言
- 莎士比亚十四行诗写作:目标是以严格的韵律「ABAB CDCD EFEF GG」写一首十四行诗,需要包含提供的三个词。
主要成果
从表1所示的结果中可以看到,元提示(meta-prompting)技术相较于传统的零样本(zero-shot)提示技术具有明显的优势——
元提示技术的表现分别比标准提示提高了17.1%,比专家(动态)提示(expert (dynamic) prompting)提高了17.3%,以及比多人格提示(multipersona prompting)提高了15.2%。
而在Python解释器的辅助下,元提示(meta-prompting)技术在多种任务上显著超越了传统的零样本(zero-shot)提示技术。这一方法在解决那些高度依赖启发式或反复试错策略的任务上表现出色。
例如,在24点游戏挑战中,与传统提示方法相比,元提示技术使准确度大幅提升了超过60%,在Python编程难题上取得了约15%的提升,并在十四行诗创作上实现了近18%的提升。
零样本分解、错误检测与聚合
元提示框架之所以成功,一大原因是它巧妙地利用了专业知识、内部合作以及在过程中不断自我检验的机制。
这种方法,连同采用多角色互动的方式,促进了多轮对话,让不同的角色共同参与到解决问题的过程中。
以解决MGSM数据集中的多语言算术问题为例,GPT-4在采用元提示方法时,通常会经历三个阶段:
首先将问题从源语言(比如,孟加拉语)翻译成英语,接着应用计算专长(例如,请求数学专家的帮助)来寻找解决方案,最后进行独立或验证确认。
其中,元提示能够在不被明确指令的情况下完成这样的翻译。
新视角
这个概念可以帮助解决一个广为人知的问题:大语言模型倾向于重复自己的错误,并且还非常自信。
相比于多角色提示,元提示会在过程中让专家或不同角色重新审视问题,从而为发现新的见解和先前未被注意到的错误提供了可能。
想象一下,如果任务是解决24点游戏,即用6、11、12和13这四个数字,每个各用一次,组成一个算术表达式,使其结果为24:
1. 元模型(Meta Model)建议咨询数学、问题解决和Python编程的专家。强调需要准确无误地遵循规则,并在必要时让其他专家进行复审。
2. 在一位专家给出方案后,另一位专家指出了其中的错误。于是,元模型建议编写一个Python程序来搜索可行的方案。
3. 接着,元模型邀请了一位编程专家负责编写这个程序。
4. 另一位编程专家随后发现了程序中的错误,对其进行了修改,并执行了更新后的程序。
5.为了确保输出的结果无误,元模型又请了一位数学专家来进行验证。
6. 经过核验,元模型最终给出了答案。
可以看到,通过在每一步骤中加入新的视角,元提示不仅能找到问题的解决方案,还能有效地发现并更正错误。
实时代码执行
通过在高级编程策略中引入Python编程专家,并使其根据人类的自然语言指令来编写并执行代码,研究人员成功地把解决问题的比例从32.7%提高到了45.8%。
这种实时执行代码的能力,让研究人员能够即时地验证和优化解决方案,极大地提升了解决问题的效率和准确性。
而且,这种提升的效果并不局限于某一种特定的任务。
在24点游戏和单词排序这样的任务中,将Python解释器集成到元提示中后,准确率分别提高了56.0%和15.6%。(与基线相比则分别提高了64.0%和19.2%)。
总的来说,Python解释器可以让各类任务的平均性能提升额外的11.5%。
作者介绍
Mirac Suzgun
Mirac Suzgun是斯坦福大学计算机科学专业的博士生,同时他也在斯坦福法学院攻读法学博士学位。
他专注于研究大语言模型(LLM)的局限与潜能,寻找更有效、更易于理解的文本生成方法。
他本科毕业于哈佛学院,取得了数学与计算机科学的双学位,并辅修了民间传说与神话学。
Adam Tauman Kalai
Adam Tauman Kalai是OpenAI的一名研究员,专注于Lilian Weng领导下的AI安全与伦理问题。
在此之前,他在微软研究院新英格兰分部工作,自该研究院2008年成立以来,共参与了包括代码生成(教计算机编程)、公平性原则、算法设计、翻译鲸鱼语言、博弈论、计算机幽默、众包技术等多个有趣项目的研究。
在加入微软研究院之前,他曾在乔治亚理工学院和丰田工业大学芝加哥分校担任计算机科学助理教授。