Automatic Prompt Engineering

让大模型自己生成prompt,生成提示(prompt)存在两种不同的操作方式。第一种方式是在文本空间中进行,这种提示以离散的文本形式存在。第二种方式是将提示抽象成一个向量,在特征空间中进行操作,这种提示是抽象的、连续的。

APE

论文地址:https://arxiv.org/abs/2211.01910

候选prompt自动生成

简单来说就是给答案,让LLM去反推prompt长什么样。典型例子如下:

由于LLM大多采用decoder-only结构,所以把需要生成的内容放在最后肯定是最合理的,作者管这种生成方法叫forward generation template。这个template看起来是作者自己设计的,这个template只是一个candidate生成器,评分的时候用的是生成的candidate,和这儿的template无关。

相应的,另一种叫reverse generation template,就是把需要生成的prompt放到文章中的任意位置。

最后一种是根据task不同来制定相应的模板,比如有的task就固定是某种问答结构,这时候你需要和task align一下。

所以这样我们就完成了prompt的自动生成。这里的prompt可以生成很多次(采样),从而生成一个候选集。

评估prompt分数

生成完了候选prompt,接下来就需要想个方法评价哪个prompt比较好。

我们需要先从训练集里取一个子集(就是取一些有gt的训练数据),然后把上一步生成的prompt丢进去。由于我们是有gt的,所以可以比对模型生成gt的概率,生成gt的概率越大说明prompt越好,从某种程度上说和PPL是差不多的东西。

重新采样

经过上述评估之后我们可以留下那些评分高的prompt(由你自己设置top k%),然后把这些好的prompt再送进LLM,让它生成意思相近的prompt,这样相当于再次扩充了候选集,之后可以再进行一轮评估。如此反复迭代即可。

APE针对的场景主要是那种短prompt+固定小任务。比如说我固定了我的任务是“找反义词”,那么我只需要用一些数据去找prompt,这个prompt固定下来之后就不用动了。

OPRO

论文地址:https://arxiv.org/pdf/2309.03409.pdf

在OPRO框架中,有两个主要的大型语言模型(LLM):一个担任评分者(scorer),负责对提示进行评分;另一个则作为优化器(optimizer),根据给定的提示模板来生成新的提示。

首先,我们向优化器提供一个问题描述(用紫色字体表示,如“做数学题”),以及一些已经过评分的提示和它们的分数(用蓝色字体表示,即这些提示已经被评分者评估过,以判断其准确性)。此外,还会提供一些额外的指令(用橙色字体表示)。

接下来,优化器的任务是根据问题描述和已评分的提示,生成一些新的提示。这些新生成的提示应当旨在获得尽可能高的分数。一旦生成了新的提示并获得了它们的分数,我们就会将这些新的提示-分数对加入到之前的蓝色字体部分。如果存在长度限制,我们可能会移除一些分数较低的提示-分数对,以保持提示集的精简和高效。

INSTINCT

如何给ChatGPT正确的prompt?

在强化学习中,我们面临着exploration-exploitation dilemma。想象一下,你想要出售一台二手电脑,你去了市场,第一个人出价50元,你可以选择立即卖给他(exploitation利用),但如果你认为价格不够理想,你可以选择继续寻找下一个买家(exploration探索)。然而,一旦你决定继续寻找,你就不能回头了。下一个买家的出价可能低于50元,也可能高于50元,这就是探索与利用之间的dilemma两难选择,也被称为bandit问题。通过bandit算法,你可以做出“某种选择”。

这个例子虽然简单,但在实际的强化学习场景中,搜索空间可能非常庞大(比如你有100件商品要卖,每件商品都有100个潜在的买家),在这种情况下,遍历整个搜索空间是不切实际的。为了克服这个难题,研究者们提出了一系列专门的算法,例如INSTINCT中采用的NeuralUCB算法,它就是一种bandit问题的算法。

迭代流程

INSTINCT的何改

INSTINCT的改进主要体现在两个方面:首先是提示生成的方式,其次是迭代逻辑的优化。

在提示生成方面,APE采用的传统方法是给定一个模板后生成候选提示;OPRO的提示生成方式本质上相似,但采用了更先进的生成技术(APE更像是随机抽样,而OPRO则通过不断更新条件来进行抽样)。INSTINCT则采用了全新的方法,它通过在隐空间中生成软提示(soft prompt)来得到所需的提示。这种方法的巧妙之处在于,尽管最终得到的提示是离散的,但在操作过程中却是在连续的提示空间中进行,这使得许多优化变得可能。

在迭代逻辑方面,APE的方法相对简单,它直接利用大型语言模型(LLM)根据现有提示生成语义相似的提示,而且这一步骤是可选的。OPRO的迭代方法更为先进,它提供了大量示例和评分;但是,将LLM作为优化器的方法似乎缺乏逻辑依据。

INSTINCT的迭代逻辑则更加现代化,它采用了NeuralUCB算法来迭代优化软提示,从而控制真实提示的生成。换句话说,在第一步训练的评分网络中,实际上蕴含了判断“哪个提示更好”的知识,然后通过NeuralUCB算法利用这些知识寻找“可能更好的提示”。如果找到了更好的提示,那自然是最理想的结果;即使没有找到,这也相当于对训练集进行了一次采样。

总的来说,INSTINCT的方法在技术上比前两者更为优雅,而且在结果上也表现得更好。

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

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

相关文章

React高阶组件(HOC)

高阶组件的基本概念 高阶组件(HOC,Higher-Order Components)不是组件,而是一个函数,它会接收一个组件作为参数并返回一个经过改造的新组件: const EnhancedComponent higherOrderComponent(WrappedCompo…

Gitee删除自己本地仓库

1、打开自己的本地仓库 2、点击管理 3、选择删除仓库 4、将□的内容复制到⭕里

mysql 存储引擎 基本介绍

目录 一 存储引擎概念介绍 (一)存储引擎概念 (二)MySQL常用的存储引擎 (三)存储引擎运作方式 二 MyISAM 存储引擎介绍 (一) MyISAM 存储引擎特点 1,不支持…

基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频

基于51单片机数控直流电压源proteus仿真LCD显示( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0072 讲解视频 基于51单片机数控直流电压源proteus仿真程序…

博途建立S7-1200PLC与HMS AB7013Profinet通讯

1、新建一个博图项目1200PLC .CPU 1214C ACDC/RIY 6ES7 214-1BG31-0x80 2、安装GSD文件 Install general station description fle (GsD) GSDMLV2.3-HMS-ABC PROFINET GSD 3、连接PLC 4、在线访问 5、增加访问子网络 6、设定IP地址 7、增加AnyBus模块 8、设定模块的IP地址及…

大语言模型(Large Language Model,LLM)简介

1. 什么是大语言模型 它是一种基于深度学习的人工智能模型,它从大量来自书籍、文章、网页和图像等来源的数据中学习,以发现语言模式和规则,如处理和生成自然语言文本。通常,大语言模型含数百亿(或更多)参数…

Spring Cloud Gateway Server MVC

之前你如果要用spring cloud gateway ,就必须是webflux 的,也就是必须是异步响应式编程。不能和spring mvc 一起使用。现在spring cloud 新出了一个可以不用webflux的gateway。 具体使用mvc的gateway步骤如下 普通的Eureka Client的项目 如果你只是想测…

Qt程序可执行文件打包

目录 一、新建一个目录二、命令行2.1 添加临时变量2.2 打包命令 三、添加动态库四、普通 Qt 项目打包 Qml 项目打包 笔者写的python程序打包地址(https://blog.csdn.net/qq_43700779/article/details/136994813) 一、新建一个目录 新目录(例如test)用以…

超高并发下Redis热点数据风险破解

1 介绍 作者是互联网一线研发负责人,所在业务也是业内核心流量来源,经常参与 业务预定、积分竞拍、商品秒杀等工作。 近期参与多场新员工的面试工作,经常就 『超高并发场景下热点数据』 可用性保障与候选人进行讨论。 本文聚焦一些关键点技术进行讨论,并总结一些热点场景…

vscode的一些技巧

技巧1:调试时传参数 在launch.json的configuration中"pwd"或者"program"选项之后添加如下选项: “--args”:["参数1", "参数2", ..., "参数3] 参数之间使用逗号隔开 技巧2:断点 普通断点使…

网络协议栈--传输层--UDP/TCP协议

目录 本节重点一、再谈端口号1.1 再谈端口号1.2 端口号范围划分1.3 认识知名端口号(Well-Know Port Number)1.4 回答两个问题1.5 netstat1.6 pidof 二、UDP协议2.1 UDP协议段格式2.2 UDP的特点2.3 面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议2.7 UDP…

生产力工具|安装更新R软件(R、studio)

内容介绍: 安装R软件: 下载 R X64 3.5.1: 访问官方R网站 https://cran.r-project.org/。选择适合Windows版本的安装包。将安装包下载到您的计算机。 本地安装: 运行下载的“R-3.5.1-win.exe”文件。按照安装向导,选择安装路径,取消…

Day08 Java复习8 Spring MVC概念

Day09 Java复习9 Spring MVC spring mvc 的核心组件是什么? DispatcherServlet 1.JAVA 和Spring 、Spring Boot 、Spring MVC的关系 你要举办一个生日派对,而且你希望它既特别又好玩。Java就像是举办派对的地方,Spring、Spring Boot和Spri…

20240319-图论

图论练习题目 拓扑排序深度优先搜索方法广度优先搜索方法 无向无权图无向有权图有向无权图 利用广度优先搜索算法有向有权图 带排序的广度优先算法/dijkstra最小生成树prims算法Kruskals Algorithm 最小割 min-cut二分图 Bipartite Graph 队列例题1 所有可能的路径例题2 岛屿数…

stm32知识总结--简单复习各部件

目录 内部结构 部件介绍 配置步骤 之前学了很多部件,配置了很多参数,但是没有很系统地把他们连接在一起,今天这个图里简洁描述了资源与资源之间的关系。 内部结构 部件介绍 黑框部分为CPU、内部有一个内核专门处理事件,所有的…

Ubuntu Desktop 更改默认应用程序 (Videos -> SMPlayer)

Ubuntu Desktop 更改默认应用程序 [Videos -> SMPlayer] References System Settings -> Details -> Default Applications 概况、默认应用程序、可移动介质、法律声明 默认应用程序,窗口右侧列出了网络、邮件、日历、音乐、视频、照片操作的默认应用程序…

【stable diffusion扩散模型】一篇文章讲透

目录 一、引言 二、Stable Diffusion的基本原理 1 扩散模型 2 Stable Diffusion模型架构 3 训练过程与算法细节 三、Stable Diffusion的应用领域 1 图像生成与艺术创作 2 图像补全与修复 3 其他领域 四、Stable Diffusion的优势与挑战 👉优势 &#x1f…

秒懂快速熟悉: PostgreSQL中的Copy(快速加载)

这里简要介绍一下PG中的Copy以及\Copy快速加载数据的基本用法及注意事项。同时也比较了Batch Insert与Copy之间的性能差异。它们在PG日常维护与使用的场景中经常要用到。 1.Copy语法 PG 9.0以后的新语法如下: COPY table_name [ ( column_name [, ...] ) ] FROM { filenam…

回调函数;qsort库函数介绍及实现;

目录 回调函数; 代码: qsort库函数介绍及实现; 冒泡排序; 代码: qsort函数实现排序; qsort介绍及使用; 比较两个数; 代码: ​编辑比较字符; 代码&a…

浙大版《C语言程序设计(第4版)》题目集-习题3-5 三角形判断

给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。 输入格式: 输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1、y1、x2、y2、x3、y3。 输出格式: 若这3个点不能构成三角形,则在一行中输…