PRewrite: Prompt Rewriting with Reinforcement Learning

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.mzph.cn/news/723829.shtml

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

相关文章

uniapp 滑动页面至某个元素或顶部

直接上代码: uni.pageScrollTo({selector: #top, // 需要返回顶部的元素id或class名称duration: 300 // 过渡时间(单位为ms) }); 官方文档:

什么是云游戏?云游戏平台可以运行3A游戏吗?

对于不熟悉游戏行业的人来说,面对云游戏可能会有一个疑问——除了单机游戏,现在所有游戏不都是联网玩吗?云游戏和网络游戏有什么区别? 实际上,云游戏和传统网络游戏有着本质的不同。 传统网络游戏需要玩家先下载并在本…

工时管理软件:为什么企业需要工时跟踪?

工时跟踪对于企业经营来说,可能不是首要事项。工时跟踪有什么用? 管理学大师彼得德鲁克曾说过:If you can’t measure it, you can’t improve it(如果无法衡量,就无法改进)。企业经营也是同样道理&#x…

Linux运维_Bash脚本_编译安装CMake-3.28.3

Linux运维_Bash脚本_编译安装CMake-3.28.3 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux …

Unity 报错:SSL CA certificate error

使用UnityWebRequest时出现如下报错&#xff1a; SSL CA certificate error Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_USER_ERROR1 原因&#xff1a; 证书验证失败 和 SSL CA证书错误 解决方法&#xff1a; 创建一个如下的类&#xff1a; /// <…

注解校验备忘

NotNull 可用于一切包装类型 NotEmpty 用于String类型&#xff0c;表示不为空&#xff0c;并且长度大于0 用于List集合&#xff0c;表示不为空&#xff0c;并且size大于0 NotBlank 只用于字符串&#xff0c;去除两端空格后&#xff0c;长度大于0 Min和Max 包含当前值&a…

上传图片流

/** * 使用httpclint 发送文件&#xff0c;如果不传输文件&#xff0c;直接设置fileParamsnull&#xff0c; * 如果不设置请求头参数&#xff0c;直接设置headerParamsnull&#xff0c;就可以进行普通参数的POST请求了 * * param url 请求路径 * param fileParams 文件参数 * p…

Android 中为什么主线程不会因为 Looper.loop() 里的死循环卡死?

在 Android 中&#xff0c;主线程&#xff08;通常被称为 UI 线程或事件分发线程&#xff09;通过 Looper.loop() 方法进入一个无限循环&#xff0c;这个循环负责处理各种事件&#xff0c;如按钮点击、触摸事件、绘制请求等。尽管这是一个死循环&#xff0c;但它并不会导致主线…

基于Python dlib的人脸识别的上课考勤管理系统(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

day49(vueJS)vue3的生命周期钩子 服务端渲染概念 vue3的组建通信 vue3的ref属性应用 vue3(vuex和pinia的使用)

vue3的生命周期钩子 服务端渲染概念 vue3的组建通信 vue3的ref属性应用 vue3&#xff08;vuex和pinia的使用&#xff09; vue3的生命周期钩子常规要点、总结代码演示 补充要点、总结 服务端渲染概念要点总结 vue3的组建通信要点总结父对子传值子对父传值跨层级组件传值 vue3的r…

2024年Android开发陷入饱和,想拿高工资

前言 从16年毕业至今&#xff0c;就职过两家公司&#xff0c;大大小小项目做了几个&#xff0c;非常感谢我的两位老大&#xff0c;在我的android成长路上给予我很多指导&#xff0c;亦师亦友的关系。 从年前至今参加面试了很多公司&#xff0c;也收到了几家巨头的offer&#…

2024Java大厂面试真题,java高级开发面试经验

概述 毫无疑问&#xff0c;Spring Cloud是目前微服务架构领域的翘楚&#xff0c;无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面&#xff0c;其底层的很多原理&#xff0c;很多人可能并不知晓。因此本文将通过大量的手绘图&#xff0c;…

一次线上JVM GC 长暂停排查,加班搞了好久

给大家分享一篇我在知乎上看到的&#xff0c;针对长时间 GC 问题排查定位过程的文章。 最终原因定位到 swap 空间上&#xff0c;是我未曾设想过的角度&#xff0c;因为常规的 GC 问题&#xff0c;相当大一部分原因最终定位出来都是代码相关、流量相关、配置相关的&#xff0c;…

C++高级面试题:什么是C++的模板元(Template Argument)?请提供一个示例。

什么是C的模板元&#xff08;Template Argument&#xff09;&#xff1f;请提供一个示例。 在 C 中&#xff0c;模板参数&#xff08;Template Argument&#xff09;是指在模板的实例化过程中&#xff0c;为模板提供的具体类型、值或模板的参数。模板参数可以是类型、非类型或模…

需求并行开发场景,如何高效发布

云布道师 微服务架构下&#xff0c;每个应用服务独立开发、独立发布&#xff0c;小步快跑&#xff0c;持续快速交付业务需求。多人协同开发同一个应用时&#xff0c;分支开发模式是一个适合的协同方案。该模式下一个需求或任务通常对应一个 feature 分支&#xff0c;多个需求一…

测试用例例子:在线购物平台的结算功能测试

用例标题&#xff1a;在线购物平台结算功能测试 测试目的&#xff1a; 验证在线购物平台的结算功能是否正常工作&#xff0c;确保用户能够顺利完成支付流程。 用例级别&#xff1a;高 测试环境&#xff1a; 操作系统&#xff1a;Windows 10浏览器&#xff1a;Chrome 最新版…

WSL2安装+深度学习环境配置

WSL2安装深度学习环境配置 1 安装WSL22 配置深度学习环境1.1 设置用户名、密码1.2 安装cuda修改WSL安装路径 1.3 安装Anaconda 参考&#xff1a;搭建Windows Linux子系统&#xff08;WSL2&#xff09;CUDA环境 参考&#xff1a;深度学习环境配置 WindowsWSL2 1 安装WSL2 WSL …

《计算机程序的构造和解释》:计算思维的圣经,引领你走向编程的巅峰

写在前面 《计算机程序的构造和解释》&#xff08;Structure and Interpretation of Computer Programs&#xff0c;简记为SICP&#xff09;是MIT的基础课教材&#xff0c;出版后引起计算机教育界的广泛关注&#xff0c;对推动全世界大学计算机科学技术教育的发展和成熟产生了…

判断文件类型

public static void main(String[] args) { String filePath "C:\\Users\\XXX\\Downloads\\5542402071585721"; // 文件路径 // 创建 File 对象 File file new File(filePath); // 创建 MimeTypes 实例 MimeTypes mimeTypes MimeTypes.getDefaultMimeTypes(); try…

【QT】自定义控件的示例

自定义控件&#xff08;很重要&#xff09; 什么是自定义控件&#xff1f; 顾名思义就是创建一个窗口&#xff0c;放入多个控件&#xff0c;拼接起来&#xff0c;一起使用。 为什么需要它&#xff1f; 需求&#xff0c;假设有100个窗口&#xff0c;那如果有两个控件同时被使…