PRewrite: Prompt Rewriting with Reinforcement Learning

news2024/10/5 16:30:50

PRewrite: Prompt Rewriting with Reinforcement Learning

基本信息

2024-01谷歌团队提交到arXiv

博客贡献人

徐宁

作者

Weize Kong,Spurthi Amba Hombaiah,Mingyang Zhang

摘要

  工程化的启发式编写对于LLM(大型语言模型)应用的发展至关重要。然而,通常这种编写是以“试错”的方式手动进行的,这可能耗时、低效且不够优化。即使对于表现良好的提示,也总会有一个悬而未决的问题:是否可以通过进一步修改使提示更好?
为了解决这些问题,我们在本文中研究了自动化的启发式编写。具体而言,我们提出了PRewrite,一种自动化方法,用于将未优化的提示重写为更有效的提示。我们使用LLM实例化提示重写器。重写器LLM经过强化学习训练,以优化给定下游任务的性能。我们在多样化的基准数据集上进行实验,证明了PRewrite的有效性

目前研究存在问题:
  • 手工编辑prompt
    • 该方法是基于试错的,且要编写较好的prompt还受限于对应的指导原则。
  • 自动化设置prompt
    • 有基于梯度的搜索方法来迭代编辑prompt,但对语言模型进行梯度访问代价过大。
    • 使用强化学习的方法来优化prompt,该方法可能会产生难以解释的胡言乱语的解释;同时这种方法虽然可以允许根据任务输入编辑prompt,但导致其较小的行动空间也会阻碍探索最优prompt的产生。
    • 之前的方法采用的语言模型都较小,例如BERT,并不清楚在只通过API访问模型的情况下,上述方法能否有效推广到更大规模的模型上。
本文研究思路:
  • 将prompt的自动化生成视作一个优化问题,通过强化学习的方式训练一个prompt重写器来寻找更有效的提示。
    • 人工给定初始的instruction生成prompt
    • 通过prompt重写器LLM来重写生成一个prompt
    • 重写的prompt通过另一个任务LLM生成最终的输出
    • 通过最终输出和真实输出进行比较计算奖励,以此对重写器LLM进行强化学习微调
    • 值得注意的是,重写的提示是与特定输入(input)无关的(agnostic)。即所重写的提示是通用的,不是为了响应或适应特定的输入而定制的(泛化性)。
      在这里插入图片描述
研究方法:
prompts:

在这里插入图片描述
在这里插入图片描述

  • Meta Prompt

    • 元提示是用于指导重写器LLM重写初始prompt的重写指令
    • 整个训练过程中,元提示不会改变
    • 但在训练模型时以及针对不同的数据集会尝试不同的元提示
  • Instruction

    • 上图中的Prompt即由Instruction和Input构成,其中Instruction是由重写器LLM从初始提示生成的最终重写提示。
强化学习
  • 强化学习算法:近端策略优化算法(PPO)
    在这里插入图片描述
    使用不同的奖励函数在数据集上的效果

  • 奖励函数

    • EM(精确匹配)
    • F1:实际输出与预测输出之间的令牌 F1 分数
    • 困惑度(Perplexity)
    • 困惑度 + F1:困惑度和 F1 分数的线性组合
重写策略
  • 在重写器LLM训练好之后,对instruction重新进行优化组合时,可采取两种策略
    • 设置了一个行动空间,作为提示重写模型词汇表中所有token的集合,这些token可以用来通过添加、删除或修改来编辑/重写提示。
    • 推断策略:在生成重写提示时,贪婪的选择每一个最高概率的标记,最终生成一个单一的重写提示,存在局部最优的问题。
    • 搜索策略:在生成重写提示时会考虑多种可能性,生成多个重写提示,最终根据重写提示在测试数据集上的表现来选定最终的重写提示。
实验结果:
数据集

在这里插入图片描述

  • 本文一共使用了4个数据集涵盖了分类,问答,算术推理任务。
    • 分类:AG News、SST-2
    • 问答:NQ(自然问题数据集)
    • 算数推理:GSM8K
实验结果
表1.与基线对照图

在这里插入图片描述

  • 本文方法所使用的模型为:PaLM 2-S。
  • 由上表可看出,但强化学习有更大的行动空间之后,强化学习方法的改进效果更加显著。
  • 本文提出的方法在三个任务四个数据集上的效果普遍优于基线模型,但基线模型效果不佳也存在是使用了较小的任务模型RoBERTa-Large导致的。
  • PRewrite-S持续显示出优于PRewrite-I的改进,表明搜索策略可能更有帮助。
表2.在GSM8K数据集上与强基线任务的对比

在这里插入图片描述

  • 此次实验基于模型PaLM 2-L。
  • PRewrite-S不仅显著改进了初始提示,而且超过了诸如APE和OPRO之类的强基线,并且与Promptbreeder不相上下。
  • 这几个强基线任务对GSM8K数据有特殊处理,但本文方法只是用了一个通用的元提示用于GSM8K。也可以体现出本方法有效性。

相关知识链接

下载

论文下载

总结

局限

  • 大模型使用的局限性: 本文只是用了PaLM系列的大模型,并未在其他大模型上验证其效果。
  • 元提示: 还可以探究不同的元提示和初始提示的组合对整体任务性能的影响。
  • **数据集:**目前测试使用的数据集较少,需要在更多不同种类和数量的数据集上持续验证其性能。

优点

  • 本文所使用的方法不再需要开源大模型,仅通过大模型API的方式进行使用,降低了对资源的要求
  • 利用大模型和传统机器学习结合的方式优化prompt是可以尝试的方向。

BibTex

@article{kong2024prewrite,
  title={PRewrite: Prompt Rewriting with Reinforcement Learning},
  author={Kong, Weize and Hombaiah, Spurthi Amba and Zhang, Mingyang and Mei, Qiaozhu and Bendersky, Michael},
  journal={arXiv preprint arXiv:2401.08189},
  year={2024}
}

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

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

相关文章

大数据分析技术工程师CCRC-BDATE

大数据分析技术工程师介绍 大数据始于科技之美,归于创造价值。大数据时代,“谁用好数据,谁就能把握先机、赢得主动”。当下数据驱动的电信、社交媒体、生物医疗、电子政务商务等行业都在产生着海量的数据,随着大规模数据关联、交叉…

vue基本用法

文本插值 {{}} 用来绑定data方法返回的对象属性 v-bind:为标签的属性绑定data方法中返回的属性 事件绑定v-on:xxx 简写为xxx 双向绑定v-model 条件渲染 v-if v-else v-else-if 动态渲染页面元素

兰德:《中国量子技术的产业基础和军事部署报告》

2月1日,美国智库兰德公司发表中国量子技术的产业基础和军事部署报告,该报告强调了美国和中国均视量子科学和技术为确保各自经济和军事领导地位的战略要素。还指出量子科学是一项军民两用的技术。 该报告提到目前美国政府已经为量子科学制定了一项公开的国…

SoraAI优先体验资格注册教程

SoraA1视频工具优先体验资格申请 申请网址:https://openai.com/form/red-teaming-network 申请步骤: 填写基础信息 请使用英文根据内容填写以下内容,名、姓、电子邮件、居住国家、组织隶属关系(如果有)、教育水平 、学位(哪个领…

数据库-DDL

show databases; 查询所有数据库 select database(); 查询当前数据库 use 数据库名; 使用数据库 creat database[if not exists] 数据库名…

【python】六个常见爬虫案例【附源码】

大家好,我是博主英杰,整理了几个常见的爬虫案例,分享给大家,适合小白学习 一、爬取豆瓣电影排行榜Top250存储到Excel文件 近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程序&a…

leetcode热题HOT 54. 螺旋矩阵(59. 螺旋矩阵 II)

一、问题描述: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 二、解题思路: 整体思路就是模拟螺旋遍历矩阵的过程,依次遍历外围边界的元素,并将其按顺序存入结果列表…

vant van-field 密码输入框小程序里隐藏、显示密码bug总结

老规矩先上效果图: vant 输入框组件 密码的隐藏与显示功能: 注: 用password属性控制密码的显示与隐藏 不要用type属性,type属性在真机上有时会没有效果 1、当然如果只用typepassword 不需要切换显示、隐藏也可以使用。 2、如果用到了密码的显示与…

计算机mfc140.dll文件缺失的修复方法分析,一键修复mfc140.dll

电脑显示mfc140.dll文件缺失信息时,不必担心,这通常是个容易解决的小问题。接下来让我们详细探究并解决mfc140.dll文件缺失的状况。以下将详述相应的解决方案,从而帮助您轻松克服这一技术难题。通过几个简单步骤,即可恢复正常使用…

mac使用Vscode运行C语言遇到的问题

mac系统如何使用vscode运行C语言 Unable to start debugging. Program path ‘/Users/ling/Learning/frontEnd/web/Test/main.cpp’ is missing or invalid. LLDB failed with message: Command ‘file-exec-and-symbols’. Target binary ‘/Users/ling/Learning/frontEnd/we…

(2024,SD3,整流流,定制的采样器,DiT)扩展整流流 transformer 以实现高分辨率图像合成

Scaling Rectified Flow Transformers for High-Resolution Image Synthesis 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2. 流的无模拟训练 3. 流轨迹 3.1. RF 模型的定…

运维知识点-ACCESS

ACCESS access 扫出后缀为asp的数据库文件 迅雷下载,直接改后缀为.mdbMicrosoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。 Microsoft Off…

商城|商城小程序|基于微信小程序的智慧商城系统设计与实现(源码+数据库+文档)

商城小程序目录 目录 基于微信小程序的智慧商城系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、 商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 …

防患未然,OceanBase巡检工具应用实践——《OceanBase诊断系列》之五

1. OceanBase为什么要做巡检功能 尽管OceanBase拥有很好的MySQL兼容性,但在长期的生产环境中,部署不符合标准规范、硬件支持异常,或配置项错误等问题,这些短期不会出现的问题,仍会对数据库集群构成潜在的巨大风险。为…

几种电脑提示mfc140.dll丢失的解决方法,以及如何预防mfc140.dll丢失

mfc140.dll真是一个超级关键的动态链接库文件!一旦这个文件不翼而飞,可能会导致一些程序无法顺利运行,甚至给系统带来麻烦。但别担心!遇到mfc140.dll文件丢失的情况,我们有一堆应对措施可以立马施行,确保问…

qnx display

05-SA8155 QNX Display框架及代码分析(1)_openwfd-CSDN博客 backlight p: 0 t: 0 00000 SHD -----ONLINE----- 2024/03/06 13:49:22.046 backlight p:1060958 t: 1 00000 ERR backlight_be[backlight_be.c:284]: pthread_create enter 2024/03/06 13…

java多线程编程(四)-----线程池

一.线程池的介绍 java中的池是非常重要的思想方法,比如内存池,进程池,连接池,常量池等等。本篇重点介绍java中的线程池。这里的这些池的概念都是一样的,比如做饭的时候,有烧水,切菜&#xff0c…

持续集成(CICD)- Jenkins+Git+gogs综合实战(笔记二)

文章目录 七、拉取代码方法一:直接填写命令进行拉取(不建议用这种)方法二:使用源码管理拉取代码步骤一:确认环境(检查自己是否有Git插件)步骤二:构建项目时对项目的源码管理选择 Git步骤三:输入你仓库的SSH地址或者https地址,并且添加gitee的用户名和密方法一和方法二…

bug_java

文章目录 1.创建Maven时: idea报错为:java:错误:不支持发行版本5 1.创建Maven时: idea报错为:java:错误:不支持发行版本5 在 maven地址\conf\setting.xml 中设置默认jdk版本… 把图…

VGW在 Windows 平台上局域网就绪的旁路由器程序

在查阅本篇文章之前可以查看下,本人前两年写的关于VGW软件路由器的文章 Linux 平台上面单网卡 TUN/TAP实现局域网其它设备上网_linux 物理网卡与tun同网段-CSDN博客 VGW软件路由器是一个工作IEEE以太网(L2)链路层的路由器程序,它…