首页 > 其他分享 >自动提示优化APO:淘汰提示工程师

自动提示优化APO:淘汰提示工程师

时间:2023-05-23 23:22:28浏览次数:34  
标签:工程师 提示 梯度 APO LLM 提示符 优化

模型调教得好不好,提示(prompt)最重要。

在优化和改进提示工程的过程中,提示变得越来越精巧、复杂。

图片

据Google Trends,提示工程在过去的6个月受欢迎程度急剧上升,到处都是关于提示的教程和指南。

比如,一个在网上爆火的提示工程指南GitHub已经狂澜28.5k星。

图片

然而,完全用试错法开发提示可能不是最有效的策略。

为了解决这个问题,微软研究人员开发了一种全新提示优化方法,称为自动提示优化(APO)。

图片

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

手写提示省了

 

近来,各种迹象表明,在大规模网络文本中训练的大型语言模型在跨越各种NLP任务中有时表现不佳。

这些LLMs都是通过提示来遵循人的指令。然而,编写这些自然语言提示仍然是一个手工试错的过程,需要人们付出巨大努力,甚至还得具备专业知识。

因此,还得需要自动,或半自动的程序来帮助程序员写出最好的提示。

图片

最近的一些研究,通过训练辅助模型,或对提示进行可微表示来研究这个问题。

然而,这些工作假定可以访问到LLM的内部状态变量,而实操的人通常通过API与LLM进行交流。

其他的工作则通过强化学习或LLM基础反馈对提示进行离散操做。

这些算法也可能需要对LLM的低级访问,还会产生不可理解的输出,或依赖于无方向蒙特卡罗搜索(monte-carlo search)的语义空间上的提示。

对此,微软研究人员提出了自动提示优化(APO),一个通用的和非参数提示优化算法。

APO是一种受数值梯度下降(numerical gradient descent)启发的通用非参数提示优化算法,旨在自动化和改进LLM的快速开发过程。

图片

APO算法的整体框架

这一算法建立在现有的自动化方法的基础上,包括训练辅助模型,或提示的可微表示,以及使用强化学习或基于LLM的反馈进行离散操作。

与以前的方法不同,APO通过在基于文本的苏格拉底对话(Socratic dialogue)中使用梯度下降法来解决离散优化的障碍。

它用LLM反馈代替了差异,用LLM编辑代替了反向传播。

更具体来讲,该算法首先利用小批量的训练数据获得自然语言「梯度」,以描述给定提示中缺陷的。

这些梯度指导编辑过程,在梯度的相反语义方向上编辑当前提示符。

然后,再进行更广泛的集束搜索(beam search),以扩大提示的搜索空间,将提示最佳化问题转化为集束候选的选择问题。

非参数「梯度下降」的离散提示优化

自动提示优化框架假设可以访问由输入和输出文本对(数字、类别、汇总等)组成的初始提示图片

要注意的是,所有提示p都是从相干自然语言图片 的空间中提取的。

研究人员假设访问了一个黑盒LLM API,图片,它返回由连接p和x组成的提示符可能的文本延续y (例如,少样本提示符和输入示例,或Chatbot角色和对话历史)。

在这种情况下,APO算法迭代精化了提示图片的一个近似。

梯度下降

在研究的设置中,梯度下降法是指 (1) 用一批数据评估提示符的过程,(2) 创建一个局部丢失信号,其中包含关于如何改进当前提示符的信息,然后 (3) 在开始下一次迭代之前,在梯度的相反语义方向编辑提示符。

在此,研究人员使用一对静态LLM提示来完成这个过程,如图所示。

第一个提示是创建丢失信号「梯度」,叫做图片

虽然特定的内容可能会有所不同,但是图片必须始终考虑当前提示图片,以及图片在一小批数据(特别是错误数据集)上的行为,并生成图片缺陷的自然语言摘要。这个摘要变成了梯度图片

就像传统的梯度一样,梯度表示参数空间中的一个方向,这会使模型用当前提示描述缺陷的自然语言空间变得更糟糕。

第二个提示符叫做图片,虽然这个提示符也是变化的,但它必须始终采用梯度图片和当前提示符图片,然后在与图片相反的语义方向上对图片执行编辑,即修复图片指示的图片问题。

图片

与传统的机器学习设置不同,研究人员并没有生成一个单一的梯度或编辑,而是生成了一些方向,可以改善当前的提示。

集束搜索

接下来,研究者描述了梯度下降用于指导集束搜索在提示符空间上的运行。这个集束搜索是提示训练算法的外部循环。

图片

集束搜索是一个迭代优化过程,在每次迭代中,当前提示符用于生成许多新的候选提示符。

接下来,一个选择过程就是用来决定哪些提示,值得继续进行到下一次迭代。这个循环允许对多个提示符候选进行增量改进和探索。

实验评估

 

为了评估 APO 的有效性,微软研究小组将其与三种最先进的NLP任务即时学习基线进行了比较,包括越狱检测、仇恨语音检测、假新闻检测和讽刺检测。

APO在所有四个任务中都持续超越基线,在蒙特卡洛(MC)和强化学习(RL)基线上取得了显著的进步。

图片

平均而言,APO比MC和RL基线分别提高了3.9%和8.2% ,比原始提示图片提高了15.3% ,比AutoGPT提高了15.2%。

结果表明,提出的算法可以提高初始提示输入31%的性能,超过最先进的提示学习基线平均4-8% ,而依赖较少的LLM API调用。

此外,研究人员还展示了优化过程的可解释性,并调查了算法的缺点。

值得注意的是,这些改进是在没有额外的模型训练或超参数优化的情况下完成的,这表明了APO如何有效改进了LLM的提示。

对于提示工程来说,APO的出现是非常兴奋的。

APO通过使用梯度下降法和集束搜索自动化快速优化提示过程,减少了快速开发所需的人力和时间。

实证结果表明,该模型能够在一系列自然语言处理任务中迅速提高质量。

图片

越狱是一项新的任务,目标是确定用户对LLM的输入是否代表越狱攻击。我们将越狱攻击定义为一种用户互动策略,旨在让AI打破自己的规则。

图片

发现微软研究员带来的改变游戏规则的自动提示优化(APO)!一个强大的通用框架,用于优化LLM提示。

图片

参考资料:
https://arxiv.org/pdf/2305.03495.pdf

标签:工程师,提示,梯度,APO,LLM,提示符,优化
From: https://www.cnblogs.com/botai/p/Automatic-Prompt-Optimization.html

相关文章

  • sqlserver 创建表时,为何会出现不支持该后端版本设计数据库关系图或表的提示?
    https://www.null123.com/question/detail-2236078.html同事遇到的问题,查了下记录下:由于使用了错误的SSMS版本(SqlServerManagementStudio),这通常被报告为错误。使用为您的数据库版本设计的版本。您可以使用命令select@@version检查您实际使用的sqlserver版本。此版本的报......
  • ruby小提示
    目录删除要删除目录,请使用Dir.rmdir。但是,与命令rmdir一样,此方法只能删除空目录。Dir.rmdir("dir")因此,如果不递归删除内容,则无法删除包含内容的目录。fileutils库中的FileUtils.rm_r会为您完成这项工作。reqiure'fileutils'FileUtils.rm_r("dir")即使使......
  • 每日一练 | 网络工程师软考真题 Day8
    1、某客户端采用ping命令检测网络连接故障时,发现可以ping通127.0.0.1及本机的IP地址,但无法ping通同一网段内其他工作正常的计算机的IP地址。该客户端的故障可能是    。A.TCP/IP协议不能正常工作B.本机网卡不能正常工作C.本机网络接口故障D.DNS效劳器地址设置错误2、SNMP代理使......
  • 修改Android 触摸提示音及音量大小
    一、修改代码提高系统的音量。代码路径:base/services/core/java/com/android/server/audio/AudioService.javaprivatestaticint[]MAX_STREAM_VOLUME=newint[]{5,//STREAM_VOICE_CALL7,//STREAM_SYSTEM7,//STREAM_RING15......
  • js 连接数据库 提示:ActiveXObject is not defined
    ActiveXObjectisnotdefined最近比较闲,上班瞎捣鼓一下,没想到报错了,提示ActiveXObjectisnotdefined大概是在js连接数据库时new对象使用的是ActiveXObject完事儿使用的浏览器是edge,但是在ie就没有问题,那么估计就是浏览器的设置问题点开edge的设置然后在默认浏览器的侧栏......
  • Apollo planning 模块(三):path decider
    lanefollow场景为例,包含一个stage,每个stage又包含若干个task。在路径决策方面,依次进行lane_change_decider、path_reuse_decider、path_lane_borrow_decider、path_bounds_decider。在路径优化方面,依次进行piecewise_jerk_path_optimizer、path_assessment_decider、path_decider......
  • 测试工程师:这锅我不背,什么情况测试容易背锅以及化解妙招
     当产品出了问题,谁都不想担这个责任时,锅由谁来背呢?在测试的日常工作中,相信经常有测试的小伙伴遇到类似的情况:在项目上线时,只要出现问题(bug),测试就很容易成为“背锅侠”。1)背部门之间未及时沟通的锅之前做过一个项目,在项目验收阶段,客户对下单的流程提出了一些优化性的建议,但是在......
  • 全栈工程师的第一步
    全栈工程师的第一步记得在大学到时候,上计算机课觉得最有挑战的,就是做个一个个人主页。相对写个WORD文档、写个C语言程序,个人主页也是最有意思的一个主题。最开始的是用html标签方式来实现,用table来进行各种排版,丑得可见一斑。后面技术发展演进,大量的使用了html+css+js,再往后就衍生......
  • pod 插件报错: LoadError - cannot load such file -- cocoapods/command/gen
    报错信息:LoadError-cannotloadsuchfile–cocoapods/command/gen解决方法:geminstallcocoapods-generate......
  • VUE npm run serve 提示error Mixed spaces and tabs no-mixed-spaces-and-tabs 解决
    解析:看这个错误提示意思就是“不允许代码中出现空格和tab键混合的情况”大多数代码约定要求使用空格或tab进行缩进,禁止使用空格和tab混合缩进。因此,一行代码同时混有tab缩进和空格缩进,通常是错误的。解决办法:原因找到了,解决办法就是找到spaces和tabs混合的地方,然后统一即可!......