一个小妙招从Prompt菜鸟秒变专家!加州大学提出PromptAgent,帮你高效使用ChatGPT!

news2024/11/23 15:02:42

 夕小瑶科技说 原创
 作者 | 谢年年、王二狗

有了ChatGPT、GPT4之后,我们的工作学习效率得到大大提升(特别在凑字数方面୧(๑•̀◡•́๑)૭)。

图片

作为一个工具,有人觉得好用,自然也有人觉得难用。

要把大模型用得6,必须得研究一下prompt使用技巧,但有时候绞尽脑汁想的prompt却无法获得理想的输出结果。一个好的prompt的重要性不言而喻,怪不得Prompt工程师这个新兴职业的年薪已经达到了二三十万美元。

但对于大部分公司来说,prompt工程师是请不起的,怎么办呢?

这里有一个省钱小技巧,让你从小白秒变大佬级Prompt工程师!

加州大学团队提出了可以自动优化Prompt的框架——PromptAgent,结合大模型的自我反思特点与蒙特卡洛树搜索规划算法,自动迭代检查Prompt,发现不足,并根据反馈对其进行改进,寻找通往最优Prompt的路径,可以将平平无奇的初始Prompt打造成媲美人类专家手工设计的Prompt

论文

图片

论文链接
https://arxiv.org/pdf/2310.16427.pdf

先看一下例子感受一下有多厉害。

假设我们想要实现生物医学领域的命名实体识别任务,从句子中提取疾病等实体。

prompt可能就设置为:

从句子中提取疾病或状况

这样简单粗暴的prompt虽然也能完成部分简单任务,但是效果并不好。

PromptAgent能够通过该prompt所获得的结果指出错误并不断优化prompt:

您的任务是提取疾病或疾病情况...请避免包含任何相关元素,如遗传模式(如常染色体显性)、基因或基因座(如PAH)、蛋白质或生物途径。...考虑具体的疾病和更广泛的类别,并记住疾病和情况也可以以常见的缩写或变体形式出现。以以下格式提供识别出的疾病或情况:{entity_1,entity_2,....}。...请注意,“locus”一词应被识别为基因组位置,而不是疾病名称。

图片

▲优化示例

可以看到,最终的这份Prompt涵盖了丰富的生物领域知识,且准确率得到了极大提升。简直就是菜鸟秒变大佬!

让我们来看看具体是怎么做的吧!

方法

PromptAgent框架设计

PromptAgent在确保对广阔的prompt空间进行高效策略性的搜索的同时,有效地将专家知识整合到任务prompt中。所谓专家知识通过大模型如GPT-4生成,而其搜索策略使用的是著名的蒙特卡洛树搜索。整体框架如图3所示:

图片

本文将任务prompt定义为状态,而对prompt的修改过程定义为执行动作。如图3(b)所示:

  1. 给定当前状态(也就是初始prompt),基本模型(gpt-3.5-turbo)从任务数据集获得初始输出,初始输出往往不如人意,需要进一步优化。

  2. 使用优化器模型(gpt-4)提供错误反馈并给出改进建议。

  3. 优化后的模型根据反馈更新prompt并过渡到下一个状态。

如此循环往复,最终导向专家级prompt。

策略优化过程

上述对prompt优化的过程可以无缝地将PromptAgent与主要的规划算法特别是蒙特卡洛树搜索(MCTS)相结合。从而产生最具普适性的专家级Prompt。

蒙特卡洛树搜索(MCTS)通过逐步构建树状结构来实现策略搜索,如图3(a)所示,其中每个节点表示一个状态,每条边表示状态转移的动作。MCTS执行选择、扩展、模拟和反向传播四步走来迭代搜索。迭代过程在达到预定义的迭代次数后结束,选择最高回报的路径作为最终的Prompt。

  1. 选择:在每层选择最有前途的节点进行进一步的扩展和探索。在每次迭代中,它从根节点开始,遍历每树的每一层,选择每层的后续子节点,并在叶节点处停止。在选择每层的子节点时,利用了上界置信树算法(UCT),帮助在"选择最有希望的路径"和"探索新路径"之间找到一个好的平衡。具体如下所示:

    图片

    其中表示在状态执行动作时的有可能获得的回报,表示节点的动作集合,表示节点的访问次数,表示在应用动作到节点后得到的子节点,是一个用于调整探索的常数。

    公式中第一项用于衡量路径的价值,而第二项衡量被访问节点的不确定性。换句话说,如果一个节点被探索得较少且其子节点也较少被访问过,那么第二项的值会较高。

  2. 扩展:在前一步选择到达的叶节点下面添加新的子节点来扩展树结构。通过多次应用动作生成和状态转换(图3(b))来完成的,从而产生多个新的动作和状态。需要注意的是,本文采样了多个训练批次得到多样化的错误反馈(动作)。在新的节点中,选择最高回报的节点作为下一个模拟步骤的输入。

  3. 模拟:模拟扩展阶段所选节点的未来轨迹,并计算如果选择该路径可能得到的回报。模拟策略的选择很灵活,比如选择随机移动直到达到终止状态。为了减少模拟的计算成本并简化过程,本文选择不断生成多个动作,并选择其中回报最高的节点,以快速进入下一个树级别。

  4. 反向传播:在模拟过程中遇到终止状态时,将进行反向传播。终止状态由预设的最大深度或提前停止条件决定。此时,通过更新Q值函数,沿着从根节点到终止节点的路径反向传播计算未来的回报。对于次条路径中的每个状态-动作对,聚合从状态开始的所有未来轨迹的回报来更新,更新方式如下:

    图片

    这里M表示从状态开始的未来轨迹的数量,和分别表示从状态和动作开始的第个状态序列和动作序列。

PromptAgent使用预设的迭代次数执行上述四个操作,当达到迭代次数后,选择具有最高回报的最佳路径中的最佳节点(即Prompt)进行最终评估。

实验

实验设置

为了全面评估PromptAgent对各种应用的影响,作者从三个不同领域精选了12个任务进行深入实验:
- 6个BIG-Bench Hard (BBH)任务,强调领域知识(如几何形状和因果判断)和复杂推理能力(如桌上的企鹅、物体计数、认识论推理和时间序列)。
- 3个生物医学领域特定任务:疾病命名实体识别(NER)、生物医学句子相似性任务(Biosses)和医学问答任务(Med QA)。
- 3个著名的自然语言理解任务,包括两个文本分类任务(TREC和Subj)和一个自然语言推理任务(CB)。

实验结果与分析

整体效果

表1显示PromptAgent在BBH任务上明显优于所有基线。相对人类Prompt(ZS)、CoT和APE方法分别提升了28.9%、9.5%和11.2%。

图片

对于需要广泛的领域知识和深厚的LLM Prompt工程经验的生物领域任务,人类Prompt和CoTPrompt效果不佳。而APE通过自动Prompt抽样和优化融入了一些领域知识,减少了人工干预,效果有所提升。但是,PromptAgent相对于APE平均提高了7.3%,这表明PromptAgent可以更好地引导有效的领域知识,产生专家级Prompt,并弥合新手和专家Prompt工程师之间的知识差距。

而对于通用的NLU任务,PromptAgent的能力和通用性也完胜所有的基线。

图片

Prompt泛化性

作者还对经过PromptAgent优化后的Prompt能否推广到其他基础LLM模型上展开评估。由于较低级别和较小规模的LLM模型(如GPT-2或LLaMA)可能无法熟练掌握这些专家级Prompt的微妙之处,会导致显著的性能下降。本次评估选取了一个性能更强大(GPT-4)和一个比GPT-3.5性能更弱的模型(PaLM 2)。结果显示PromptAgent具有巨大的潜力:

  • 当使用更强大的GPT-4时,优化后的专家Prompt几乎在所有任务(11/12)中都取得了进一步改进。

  • 将专家Prompt转移到PaLM 2时,性能可能不如更强大的模型,但仍然可以在某些任务(如Penguins)中获得提升。

图片

消融实验

本文还对比了多种搜索策略的效果,包括每次随机抽样并选择一个动作的单次蒙特卡洛(MC)搜索、始终选择多个样本中的最佳样本的贪婪深度优先搜索(Greedy)和在每个层级保留多个有用路径的束搜索(Beam search)。表格4显示:

  • 贪婪搜索(Greedy)和束搜索(Beam)都极大地改进了MC基线,表明结构化的迭代探索是必要的。

  • Beam和Greedy严格按照前进的方向操作,没有在Prompt空间中进行策略性搜索,缺乏预见未来结果和回溯过去决策的能力。相比之下,MCTS的策略规划允许PromptAgent更有效地遍历复杂的专家Prompt空间,在所有任务上明显优于所有搜索变体。

    图片

搜索效率分析

除了卓越的性能外,PromptAgent的一个关键优势是通过策略规划能够高效地搜索。搜索效率是通过搜索过程中Prompt数量来衡量的,即在搜索过程中生成的节点数。图4a中绘制了搜索效率与任务性能的关系,可以看到,PromptAgent的数据点聚集在左上角,表明在更高的准确性下,搜索的节点数也较少。

图片

结论

本文介绍了PromptAgent,一种新颖的Prompt优化框架,结合LLMs的自我反思能力将任务的领域特定知识纳入到新生成的Prompt中,并使用MCTS规划的能力高效遍历复杂的Prompt空间找到专家级Prompt,PromptAgent优化后Prompt也始终表现出专家级的特征,丰富了领域特定的细节和指导。

在未来势必会出现越来越强大的大语言模型,能理解并支持的复杂指令越来越多,仅依赖人工专家Prompt是远远不够的,自动构建专家级Prompt将是一个非常有潜力的方向。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

518抽奖软件,为什么说比别的抽奖软件更美观精美?

518抽奖软件简介 518抽奖软件,518我要发,超好用的年会抽奖软件,简约设计风格。 包含文字号码抽奖、照片抽奖两种模式,支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 精致美观功能 字体平滑无锯齿图片放大后清晰…

SCADA在污水和供水系统解决方案

1. 引言 随着城市化的不断发展,污水和供水系统的管理变得越来越重要。为了提高运营效率和监控系统状态,许多污水处理厂开始使用SCADA系统。 SCADA系统具有实时数据采集、监控和控制功能,可以帮助污水处理厂运营人员实时了解系统的运行情况&…

Google Play优化之如何增强应用的吸引力

视觉元素,在增强应用在Google Play上的吸引力方面发挥着巨大作用。应用程序的图标、屏幕截图和宣传视频,构成了应用程序商店优化过程的关键部分。 1、图标是用户遇到的第一个视觉元素。 精心设计的图标可以有效地代表应用程序的用途,可以显著…

LeetCode | 26. 删除有序数组中的重复项

LeetCode | 26. 删除有序数组中的重复项 OJ链接 这里的非递增是什么意思? 就是反过来的,递减,不能说是乱序~~也就是后一个比前一个小也就是和非递减等价,后一个比前一个大~~ 所以非递增和非严格递增是不一样的~~ 这里本质上的…

亚马逊云科技为奇点云打造全面、安全、可扩展的数据分析解决方案

刘莹奇点云联合创始人、COO:伴随云计算的发展,数据技术也在快速迭代,成为客户迈入DT时代、实现高质量发展的关键引擎。我们很高兴能和云计算领域的领跑者亚马逊云科技一同,不断为客户提供安全可靠的产品与专业的服务。 超过1500家…

外汇天眼:GOMAX──假网友热心教投资,高返利活动骗入金

在通讯科技如此发达的今日,人们愈来愈习惯透过网路交友,寻找志同道合的伙伴,甚至发展一段亲密关系。 然而,近年来假交友诈骗十分猖獗,至今已造成许多民众极大的财务损失,成为无法忽视的社会问题。 不久前&a…

kubectl资源管理命令---声明式

目录 一、yaml和json介绍 1、yuml语言介绍 2、k8s支持的文件格式 二、声明式对象管理 1、deployment.yaml文件详解 2、Pod yaml文件详解 3、Service yaml文件详解 三、编写资源配置清单 1、 编写yaml文件 2、 创建并查看pod资源 3、创建service服务对外提供访问并测试…

从零开始学习Java:如何成为一名Java开发者并找到工作

文章目录 🌟 JavaSE🌟 JavaWeb🌟 多线程🌟 主流框架🌟 Redis缓存🌟 消息中间件🌟 全文搜索🌟 MySQL🌟 Mongodb🌟 开发工具🌟 模板引擎&#x1f31…

2023年是5G-A标准制定关键年 华为实现5G-A重大突破

5G商用四年,2023年5G应用项目已经达到10万个,5G向千行百业渗透的同时,也在向5G-Advanced(下简称5G-A)演进。 10月20日,在工业和信息化部主办的2023年中国5G发展大会上,由IMT-2020(5G…

Yusi技术资讯博客wordpress模板

Yusi技术资讯博客wordpress模板,从第一感觉看上去,两栏结构直接将网站的内容展现,以红白灰色调搭配,一种低调协调的风格,喜欢该wordpress主题的朋友可以下载试试。 下载地址:https://bbs.csdn.net/topics/…

在Instagram进行kol营销之后要如何去后续维护

在网红经济盛行的如今,学会利用网红的影响力来推广品牌是营销中很重要的一个形式。企业要把握这个风口,承接这些网红带来的流量之后,牢牢掌握,及时开展后续的营销活动,这样才能实现高转化,成为网红经济下的…

python按照windows或者Ubuntu的文件夹中文件的顺序读取文件

摘要 在使用python读取文件的时候,发现python读取文件的顺序和文件夹中的顺序不一致,这时候应该怎么办呢? 解决方法 使用os_sorted库,安装方式: pip install natsort使用方法: from natsort import os…

【JavaSE专栏56】Java面向对象编程:深入理解类、对象、属性和方法的核心概念

Java面向对象编程:深入理解类、对象、属性和方法的核心概念 📚🧬💻 摘要引言1. Java中的类和对象 📚🧬1.1 什么是Java类和对象? 🤔1.2 类和对象在面向对象编程中的作用 &#x1f3af…

centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置

目录 1.kfaka安装篇 1.1 安装jdk 1.2安装kafka 2.安全篇 2.1 kafka安全涉及3部份: 2.2 Kafka权限控制认证方式 2.3 SASL/SCRAM-SHA-256 配置实例 2.3.1 创建用户 2.3.2 创建 JAAS 文件及配置 3.测试 3.1 创建测试用户 3.2 配置JAAS 文件 3.2.1 生产者配…

关于息肉检测和识别项目的总结

前言 整体的思路:首先息肉数据集分为三类: 1.正常细胞 2. 增生性息肉 3. 肿瘤要想完成这个任务,首先重中之重是分割任务,分割结果的好坏, 当分割结果达到一定的准确度后,开始对分割后的结果进行下游分类…

【C语言_题库】C语言:编写一个程序,输入一组字符串,将字符串中的小写字母转换为大写字母,其它字符不变,并输出。

把键盘输入的一行字符串的小写字母转换成大写字母,其余字符不变,进行输出,直到遇到回车为止。 具体说明 【问题描述】 从键盘输入一行英文字符串,把所有小写字母变成大写字母,其他字母和字符保持不变。 【输入形式】 输入一行字符串,含大小写。 【输出形式】 输出大写字…

详解—数据结构《树和二叉树》

目录 一.树概念及结构 1.1树的概念 1.2树的表示 二.二叉树的概念及结构 2.1概念 2.2二叉树的特点 2.3现实中的二叉树 2.4数据结构中的二叉树 2.5 特殊的二叉树 2.6二叉树的存储结构 2.6.1二叉树的性质 2.6.2 顺序结构 2.6.3链式存储 三. 二叉树的链式结构的遍历 …

《算法通关村—用栈实现队列|用队列实现栈问题解析》

《算法通关村—用栈实现队列|用队列实现栈问题解析》 用栈实现队列 LeetCode232 先看题意: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): void push(int x) 将元素 x 推到…

Mac 解决 APP 快捷键冲突

打开 Mac 系统设置键盘->键盘快捷键->App快捷键->添加快捷键(加号)->标题需要和tab名称完全一致(包括中英文、标点符号等,如下图)设置快捷键即可 Reference: https://www.cnblogs.com/Questio…

qt-gui

C常用GUI开发框架Qt,开始支持Python 2018-12-24 12:49 C的GUI接口开发框架Qt宣布,在5.12版本中开始支持Python,Python开发人员现在可以使用所有的Qt API,目前仍在技术预览版的阶段,但官方也承诺,正式版将…