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 在各种任务中的整体准确性和稳定性。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/355059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript基础入门】04 JavaScript基础语法(二)

JavaScript基础语法(二) 目录 JavaScript基础语法(二)变量变量是什么声明变量变量类型动态类型注释 数字与运算符数字类型算术运算符操作运算符比较运算符逻辑运算符运算符的优先级 变量 变量是什么 在计算机中,数据…

练习12.6_横向射击_Python编程:从入门到实践(第3版)

编写一个游戏,将一艘飞船放在屏幕左侧,并允许玩家上下移动飞船。在玩家按空格键时, 让飞船发射一颗在屏幕中向右飞行的子弹,并在子弹从屏幕中消失后将其删除。 ship_shooting.py import pygame import sys from leftship impor…

RabbitMQ基础编程模型及详细使用

目录 RabbitMQ基础编程模型 引入依赖 创建连接,获取Channel 声明Exchange-可选 声明queue 声明Exchange与Queue的绑定关系-可选 Producer根据应用场景发送消息到queue Consumer消费消息 Consumer主要有两种消费方式 1、被动消费模式 2、主动消费模式 完成…

sqli-labs闯关

目录 1.安装靶场2.了解几个sql常用知识2.1联合查询union用法2.2MySQL中的通配符:2.3常用函数2.4数据分组 3.mysql中重要的数据库和表4.开始闯关4.1 Less-14.1.1 首先进行一次常规的注入4.1.2 深入解析 1.安装靶场 1.首先推荐使用github下载靶场源码 https://githu…

内网安全:PTH PTK PTT

目录 实验所用网络拓朴图 网络环境说明​​​​​​​ LM认证 NTLM认证 NTLM Hash Kerberos认证 TGT票据 服务票据 Windows系统密码存储 域控制器 - 用户登录 域用户 本地用户 域用户和本地管理员 用户登录 Mimikatz抓取密码来源 域内一台主机上可以得到非本地用…

js实现贪吃蛇

文章目录 实现方法_11实现效果2 实现步骤2.1 移动场地2.2 游戏难度2.3 造蛇和食物2.4 蛇的移动2.5 产生食物的随机位置 3 全部代码 实现方法_21 实现效果2实现想法2.1 蛇的存储 实现方法_1 1实现效果 2 实现步骤 html部分忽略,布局写的太辣眼了 2.1 移动场地 用的表…

遥感的CCDC连续变化监测的qgis插件

简介 今天我逛GitHub的时候,看到一个比较有意思的插件:CCD-Plugin,记录一下。 CCD-Plugin是一个qgis插件,它使用 Google Earth Engine 获取 Landsat 或 Sentinel2 数据集,并运行连续变化检测 (CCDC) 算法来分析给定点的多年时间序…

【C++】一题掌握空指针

今天看见一道面试题&#xff0c;比较有意思&#xff0c;这一分享出来&#xff1a; 1.下面程序能编译通过吗&#xff1f; 2.下面程序会崩溃吗&#xff1f;在哪里崩溃 class A {public:void PrintA(){cout<<_a<<endl;}void Show(){cout<<"Show()"&…

(自用)learnOpenGL学习总结-高级OpenGL-模板测试

模板测试 模板测试简单来说就是一个mask&#xff0c;根据你的mask来保留或者丢弃片段。 那么可以用来显示什么功能呢&#xff1f;剪切&#xff0c;镂空、透明度等操作。 和深度缓冲的关系是&#xff1a; 先片段着色器&#xff0c;然后进入深度测试&#xff0c;最后加入模板测…

Linux第37步_解决“Boot interface 6 not supported”之问题

在使用USB OTG将“自己移植的固件”烧写到eMMC中时&#xff0c;串口会输出“Boot interface 6 not supported”&#xff0c;发现很多人踩坑&#xff0c;我也一样。 见下图&#xff1a; 解决办法&#xff1a; 1、打开终端 输入“ls回车”&#xff0c;列出当前目录下所有的文件…

Centos7 升级Docker 至最新版本

卸载旧版本的Docker yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 添加Docker的yum源 #yu…

防范[myers@airmail.cc].mkp攻击:解密[myers@airmail.cc].mkp勒索病毒的方法

引言&#xff1a; 随着科技的迅猛发展&#xff0c;网络安全问题日益突出&#xff0c;而勒索病毒也成为当前互联网威胁中的一大焦点。其中&#xff0c;[datastorecyberfear.com].mkp [hendersoncock.li].mkp [hudsonLcock.li].mkp[myersairmail.cc].mkp勒索病毒以其强大的加密能…

QT学习日记 | 初始QT

目录 一、创建QT文件 二、目录结构讲解 1、.pro文件 2、源文件与头文件 3、编译运行 4、界面文件 三、梦开始的地方&#xff08;Hello World&#xff01;&#xff09; 1、代码方式 2、拖拽方式 四、Qt中的“容器” 五、Qt的对象树机制 1、对象树的引入 2、对象树…

Java 的文件类的学习总结

目录 一、File 的创建 二、File 类的常用方法 一、File 的创建 二、File 类的常用方法

开始学习第二十五天(番外)

今天分享一下写的小游戏啦 头文件game.h #include<stdio.h> #include<time.h> #include<stdlib.h> #define H 3 #define L 3 void InitBoard(char Board[H][L], int h, int l); void DisplayBoard(char Board[H][L], int h, int l); void playermove(cha…

【开源】基于JAVA+Vue+SpringBoot的智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

OpenCV-29 自适应阈值二值化

一、引入 在前面的部分我们使用的是全局阈值&#xff0c;整幅图像采用同一个数作为阈值。当时这种方法并不适应于所有情况。尤其是当同一幅图像上的不同部分具有不同的亮度时。这种情况下我们需要采用自适应阈值。此时的阈值时根据图像上的每一个小区域计算与其对应的阈值。因此…

Less-1(sqlmap自动注入攻击)--sqli

环境准备 打开火狐浏览器&#xff0c;进入sqli第一关的页面 工具准备 sqlmap 参数解释 -u URL 指定目标URL进行注入测试。--dataDATA指定POST请求的数据进行注入测试--cookieCOOKIE指定用于身份验证的cookie进行注入测试-p PARAMETER指定要测试的参数--levelLEVEL设置测试的深…

微信小程序开发 逐级选择地区

1.需求 微信小程序开发,逐级选择地区&#xff08;市、区县、街道、社区、网格&#xff09;&#xff0c;选择每一级然后展示下一级数据。 微信小程序逐级选择 2. 完整代码 2.1. 选择界面 2.1.1. selectArea.wxml <text bindtap"selectGrid">{{gridName}}</…

Java技术栈 —— Hadoop入门(二)

Java技术栈 —— Hadoop入门&#xff08;二&#xff09; 一、用MapReduce对统计单词个数1.1 项目流程1.2 可能遇到的问题1.3 代码勘误1.4 总结 一、用MapReduce对统计单词个数 1.1 项目流程 (1) 上传jar包。 (2) 上传words.txt文件。 (3) 用hadoop执行jar包的代码&#xff0c;…