OpenAI、斯坦福大学提出Meta-Prompting,有效提升语言模型的性能

本文主要是介绍OpenAI、斯坦福大学提出Meta-Prompting,有效提升语言模型的性能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为了研究如何提高语言模型的性能,使其更充分有效地输出对于提问的回答,来自斯坦福和 OpenAI 的学者强强联手,通过提出一种名为元提示(meta-prompting)的方法来深入探索。元提示通过让单个语言模型(如 GPT-4)充当中央控制器和多种专家角色,以实现对各种任务的准确和可靠回复。该方法结合了多个独立专家模型的优势和多样性,以便更好地解决复杂的任务和问题。

元提示的显著特点之一是其将复杂任务巧妙地分解为各个组件,然后汲取不同专业知识为每个组件提供支持,最终将各个专业领域的输出巧妙地整合在一起。让我们一起来看看究竟什么是元提示,而该方法又有着怎样的表现~

论文题目:
Meta-Prompting: Enhancing Language Models with Task-Agnostic Scaffolding

论文链接:
https://arxiv.org/abs/2401.12954


元提示(meta-prompting)的核心思想在于使用一个模型来协调和执行多个独立的提问,然后综合它们的回复以生成最终的答案。

从本质上讲,这种机制支持借助独立专业模型的能力和多样性,共同解决复杂任务或问题的集成方法。结合多个领域专业模型(即专家)的观点和结论,可能会产生更全面、强大和准确的解决方案。

▲图1 通过元提示增强 GPT-4 的有效性

举例来说,如果想通过应用元提示使 GPT-4 解决一个数学难题的话,通常可以采用三阶段的策略:

  1. Meta Model 的输入指令:首先请教专业的“高级数学家”将难题分解为简单步骤;

  2. Meta Model 输出:其次,将各步骤分配给专业领域的专家(比如让“程序员”来写代码);

  3. 专家输出:最后,协调专家之间的交流并综合他们的输出。

因此,通过一个高层次的提示,GPT-4 可以同时充当两种角色

  • Meta:管控过程的指挥者,扮演着任务的中枢,引导整个问题解决过程,提供指导和整体协调。

  • Expert:解决子任务的专家小组,通过多角度思考,为任务的提供各个专业领域的贡献。

在作者的设置下,专家只能由元模型调用。尽管在与新专家互动时,元模型可以选择综合各个专家的见解或共享一些文本给他们,但他们不能直接交互或沟通。这种限制是为了简化专家之间的交流,并将元模型置于操作的中心

图 2 是元提示对话的可视化示例。元提示的独特之处在于,它将决定使用哪些提示和执行哪些代码片段交由 LLM 自身判断

▲图2 元提示历史的示例

元提示

元提示(Meta-Prompting)是一种提高语言模型性能的方法,通过使用模型来协调和执行多个独立提问,待合成回复后生成最终的答案。这种方法原则上采用了集成方法,借鉴了多个专门模型(称为专家)的优势和多样性,以协同解决和处理具有多面性的任务或问题。

元提示的主要特点有:

  1. 使用模型协调和执行多个独立提问,然后合成它们的回复以生成最终答案。

  2. 元模型在整个过程中保持对整个历史和协调的全局视图。

  3. 动态选择上下文为专家提供新颖视角,同时元模型保留对整个过程的鸟瞰。

  4. 元提示可以启用单个黑盒模型充当中央控制器和各种专家小组,以生成更准确、可靠和连贯的回复。

▲算法1 元提示

如算法 1 所示,元提示主要包括以下步骤:

  1. 转换输入:使用转换函数  将原始提问放在合适的模板中,然后在 Meta Model 的初始指令中添加。

  2. 循环迭代:a) 提示 Meta Model:当前消息列表  指导 Meta Model 的下一个操作,要么直接回复提问,要么咨询特定领域的专家。b) 与领域专家模型互动:如果 Meta Model 没有返回结果,它可以调用任何专家并给予相应的指令,这些指令通过  从其输出中提取。此过程是隔离的,即每个专家只看到 Meta Model 选择与他们共享的内容,并根据这些内容作出回复。例如,如果问题涉及数学和历史,Meta Model 可能会咨询数学专家进行计算,并咨询历史专家提供历史背景。使用  模板提取专家的输出并附加上额外的指令。c) 返回最终回复:如果 Meta Model 的回复包含最终答案(通过特殊 token 突出显示),则使用  提取解决方案并返回。d) 错误处理:如果模型的回复  没有包含最终答案或没调用专家模型,则在消息列表  中附加错误消息。

  3. 实时代码执行:将 Python 专家引入到 meta-prompting 框架中,可以显著提高在算法挑战方面的表现。这使得立即验证和优化解决方案成为可能,大大提高了问题解决的效率和精确度。

通过这种方法,单一的黑盒语言模型可以充当中央控制器和多领域的不同专家角色,从而产生更准确、可靠和连贯的回复。

实验结果

本文实验要评估下述零样本提示任务的有效性:

  • 24 点游戏;

  • Three BIG-Bench Hard(BBH),即几何形状、多步算术和单词排序,以及一步将军的推理任务

  • Python 编程难题;

  • 多语言小学数学(MGSM),即 GSM8K 数据集的多语言版本

  • 莎士比亚十四行诗创作,这是作者创建的一个新任务。

有如下度量标准来衡量准确性:

  • 精确匹配(EM):严格。要求答案与真实标签完全相同。

  • 软匹配(SM):相对宽松。只要答案中存在真实标签即可,而不考虑其他文本内容。

  • 功能正确(FC):确定答案是否在功能上正确,即是否符合任务特定的约束。

在不同任务中应用不同的度量标准。例如,使用 EM 的任务包括几何形状、多步算术和一步将军;SM 度量标准用于解 MGSM 和单词排序;而 FC 则被用于 24 点游戏、Python 编程难题和莎士比亚十四行诗创作。

元提示的整体表现

实验结果如表 1 所示,元提示方法在各项任务中相相较于零样本提示方法取得卓越效果,元提示可以以任务无关的方式利用 Python 解释器,搭配使用时显著提高了准确性。在标准提示方面的表现提升了 17.1%,在专家(动态)提示方面提升了 17.3%,在多人物提示方面提升了 15.2%。

▲表1 不同任务中的综合比较

  • 在 24 点游戏挑战中,元提示方法相较于基本标准提示方法,准确性提高了超过 60%;在Python 编程难题中获得了约 15% 的增益;在创作十四行诗的任务中,准确性提升近 18%。这些任务对于启发式或迭代试错问题解决策略具有挑战性,而传统的单次提示方法无法胜任。元提示通过充分利用各种专家角色的集体智慧,迭代地推进解决方案发展,展现了更具动态和有效的问题解决能力。

  • 在创意写作任务中,尤其是在莎士比亚十四行诗创作中,元提示同样表现出色。

  • 在 MGSM 和几何形状等任务中,元提示相对于其他提示方法的优势较小,尤其是在几何形状任务中,性能仅略有增益。然而,在一步将军任务中,元提示甚至在没有用 Python 解释器的情况下也取得了 20.8% 的提升。

让多位专家合作

元提示框架成功在其策略性运用专业知识、自我协作和隐式验证循环。这一方法,尤其是多人物提示,鼓励多轮互动,促使不同专家角色共同参与问题解决。

本文的结构化方法体现了集体的多样化批判性思想家意见往往超过个别专家的见解通过在 Meta Model 的指导下利用一系列专业专家模型,每个模型从不同的专业角度贡献,从而实现了更准确和可靠的问题解决方案。

引入新颖视角

引入新颖视角对于缓解语言模型的重复错误和过于自信的表现具有关键作用。元提示与多人物提示存在着区别,它是通过重新评估问题引入新的专业视角。相较于元提示,新颖视角提供了发现新颖见解和之前未注意到的错误解决方案的机会

其中,专家的提示不包含整个历史记录,因此每一步都引入了新的视角,有效地找到解决方案的同时识别和纠正错误。

实时执行代码

对比实验结果,在引入 Python 专家进行代码生成和执行的元提示框架中,解决算法挑战的能力得到显著提高。这一提升主要归功于 Meta Model 能够使用 Python 专家基于自然语言指令生成和执行代码。实时执行代码使得可以即时验证和优化解决方案,极大地提高了解决问题的效率和准确度。

▲图4 Meta Model 在涉及 Python 解释器的实验中调用专家的分布

▲图5 Meta Model 在没有使用 Python 解释器的实验中调用专家的分布

然而,这种增强不只适用于 Python 编程难题这一任务,总体而言,与没有 Python 解释器的元提示相比,集成 Python 解释器平均使不同任务的性能额外提高了 11.5%。这凸显了代码生成和执行在提高元提示框架效果方面的关键作用,并展示了其在不同计算任务中的变革性影响

元提示框架的局限性

  1. 成本效益问题:其显著限制便是模型多次调用 GPT-4 API,导致产生了相当高的费用。

  2. 大规模上下文窗口的要求:元提示框架对大规模和相当大的上下文窗口有要求。它需要一个能够处理和保留大量文本信息的语言模型。

  3. 操作效率挑战:由于逐步处理的步骤,依赖于前面调用的结果,这个线性(顺序)性质带来操作效率上的挑战。限制了并行处理的可能性,从而影响系统的速度和效率。

  4. 封闭领域系统的限制:当前只在封闭领域系统中研究,未在更广泛的实际应用中测试。该框架的潜力在于整合外部资源,如 API、专门调优的模型、搜索引擎或计算工具,但这一方面带来的提升仍需进一步研究。

  5. 回复模式和信息管理问题:元模型在面对性能较差的任务时,其回复的措辞可能总在表达歉意,其根源可以追溯到元模型在训练中接受的指令数据。而且偶尔会忽略向专家传达必要信息。这凸显了改进信息管理的需要,以确保元模型与专家之间的沟通更加准确和完整

  6. 亟待开发的潜力:例如在同时调用多个专家或利用具有不同温度参数的单个专家,以更有效地综合他们的输出。希望在后续版本中,元模型能够在推进过程之前从其历史中受益,通过精简或总结信息来提高整个过程的相关性和效率。

总结

本文介绍了元提示这一技简单而强大的框架,可以以任务无关的方式增强语言模型的性能。这一方法的独特之处在于,它巧妙地利用语言模型兼具中央控制器和专家的双重角色,赋予传统模型动态和多功能能力。

实验结果表明,元提示方法在多种任务和数据集上的表现优于其他零样本提示技术。特别是与 Python 解释器相结合时,元提示框架显著提高了 GPT-4 在各种任务中的整体准确性和稳定性。

本文提出的元提示框架作为语言模型不断发展的一部分,有望博采众家之长,其独特的任务分解、多专业知识引入和输出整合方法,使其在解决各种问题时表现出灵活性和效果。然而,作者也明确指出了一些限制和挑战,如成本效益、可扩展性和操作效率等问题,这需要在未来的研究中进一步探讨和解决。

这篇关于OpenAI、斯坦福大学提出Meta-Prompting,有效提升语言模型的性能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/656796

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

一文教你PyCharm如何有效地添加源与库

《一文教你PyCharm如何有效地添加源与库》在使用PyCharm进行Python开发的时候,很多时候我们需要添加库或者设置源,下面我们就来和大家详细介绍一下如何在PyCharm中添加源和库吧... 在使用PyCharm进行python开发的时候,很多时候我们需要添加库或者设置源。这些操作可以帮助我们更方便

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2