Automatic Prompt Optimization with “Gradient Descent” and Beam Search

news2024/11/25 7:46:47

在“自然语言域”使用类似梯度下降的方法优化prompt

整篇文章比较精髓的思想在于

  1. 利用LLM本身去寻找prompt的瑕疵。将语言模型的输出 y ^ \hat{y} y^与正确答案(label) y y y还有prompt p p p 一起送入LLM,并通过类似“What is wrong with p p p? ”这样的问题让LLM自己找出prompt的问题所在,并将这次输出当作prompt在“自然语言域”的“梯度” g g g
  2. 根据梯度 g g g让LLM自己对prompt做调整。把 p , g p, g p,g一起输入给LLM,并通过类似 “Use g g g to fix p p p”的指令让LLM生成新的prompt。原文在此基础之上,还使用LLM多次paraphrase新的prompt从而“拓宽蒙特卡洛搜索空间”。
  3. 结合Beam search和Bandit selection在生成的新prompt里寻找最优解。每次做完前面所述的1.2.两步以后,就会产生许多候选prompt,文章使用beam search的方式,每次用bandit selection找到比较好的几个prompt,在此基础之上继续迭代,若干次后挑选其中最好的prompt。
    在这里插入图片描述

Beam search过程

在这里插入图片描述
B i B_i Bi为每个beam search步产生的prompt候选集, C C C是储存候选集的临时变量。(PS:这里的 i i i是不是该从0开始来着)

在每个搜索步中,先对当前步的候选集 B i B_i Bi中的每个prompt做一次Expand操作,扩充候选集。Expand过后用Select算法进行筛选,找到最好的 b b b个保留到下一步的候选集里。最后从 B r B_r Br挑出最好的prompt。

Expand

在这里插入图片描述
第一步,从整个训练集 D t r \mathcal{D_{tr}} Dtr中抽出一个小样本集合 D m i n i \mathcal{D_{mini}} Dmini,。
第二步, D m i n i \mathcal{D_{mini}} Dmini进行测试,把出错的样本收集起来,称为有错的样例集合 e e e
第三步,将 p , e p, e p,e一起送入LLM让LLM挑错,得到 g g g
第四步,将 p , g , e p,g,e p,g,e送入LLM让LLM优化 p p p,得到 p ′ p' p
第五步,paraphase p ′ p' p,得到 p ′ ′ p'' p′′
第六步, p ′ , p ′ ′ p',p'' p,p′′一起送回去。

Select

本文把选择看作了一个“多臂老虎机”问题,可以参考这篇文章。简单说来,每个生成的新prompt就像老虎机的摇臂,可能会带来收益,但收益的分布是不确定的。多臂老虎机问题就是通过最少次“拉臂”操作找到带来收益最高的摇臂。放到这个prompt optimization问题里,拉臂操作就是以新的prompt作为输入做一次实验看效果,要做到用最少的实验找到最好的prompt。

本文描述了两种多臂老虎机问题的算法,UCB和Successive Rejects
在这里插入图片描述
均值越大,标准差越小,被选中的概率会越来越大。
在这里插入图片描述
简单理解就是打淘汰赛。

实验

在4个数据集上做了实验,都是偏向网络安全类的,而且都是分类问题。
Jailbreak:用户尝试绕过LLM的一些安全限制
Ethos:辨别英语仇恨言论
Liar:辨别英语fake news
Sarcasm:辨别阿拉伯语讽刺言论
在这里插入图片描述
看上去是吊打Monte-Carlo (MC),Reinforcement Learning (RL)和AutoGPT。

在这里插入图片描述
Beam search有效果,比 r = 1 r=1 r=1(No iteration)和 b = 1 b=1 b=1(Greedy)要好。
在这里插入图片描述
又比了几个多臂老虎机算法,UCB和其变种UCB-E好。
在这里插入图片描述

学习曲线表明这玩意儿很容易过拟合,整个流程跑3遍差不多就到最优了。

一些优化结果展示:
在这里插入图片描述

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

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

相关文章

如果提取音乐的伴奏和人声,分享两个方法给大家!

音乐中的伴奏提取一直是许多音频爱好者关注的话题。在本文中,我们将介绍两种简单易用的方法,并且特别推荐一款记灵在线工具,它能够帮助你轻松提取音乐伴奏,并且支持批量处理! 方法一:Audacity 首先&#…

centos7 编译bluez ARM版本及undefined reference to `g_thread_new‘

在我辛辛苦苦编译成功 glib 库后(看我上一篇文章 centos7 glib2.0 arm版本的编译),以为可以顺利编译我的 bluez ARM 版本,结果出现了最后一个错误(其中一个是私有库里的),如: 就是这…

英文论文(sci)解读复现【NO.15】学习聚合多尺度背景的实例分割在遥感图像

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

基于customerId来实现

定义两个upstream,他们和service及route的关系如下: 这里我们使用 0、将下面的这个spring boot项目在192.168.19.50上进行部署 KongDemoApplication.java package com.example.kongdemo;import org.springframework.beans.factory.annotation.Value; import org…

8个升级到ChatGPT Plus的理由,不升级你就out了

​关注文章下方公众号,可免费获取AIGC最新学习资料 导读:ChatGPT Plus 是 OpenAI 聊天机器人的高级付费版本。以每月 20 美元的价格,该服务为您提供访问 GPT-4,您可以享有令人难以置信的稳定性和更快的响应时间。 本文字数&#…

i18n(国际化)代码简单实现

目录 i18n(国际化)是什么?如何实现 i18n(国际化)是什么? 各个国家都有各个国家的语言,如果网站需要让全世界的人使用,那就需要进行国际化功能开发 国际化我知道的一共有两种&#…

弄懂局部变量

成员变量和局部变量的区别 多个线程调用同一个对象的同一个方法时: 如果方法里无成员变量,那么不受任何影响 如果方法里有成员变量,只有读操作,不受影响 存在写操作,考虑多线程影响值 多线程调用…

【网络原理】网络层 IP 协议

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 目 录 🍀一. IP协议报头格式🌻二. IP 地址🌿三. 路由选择 网络层协议的工作: 地址管理路由选择(规划路径) …

如何解决多个node版本问题?

1. 安装nvm 1.1 下载nvm:https://github.com/coreybutler/nvm-windows/releases 注意:路径中不得有空格 接着的直接下一步直至安装完成 安装完成后,打开安装目录 打开settings.txt文件,文件内容如下 在文档内容后面加上下面两行代…

朴素贝叶斯算法的介绍

一、朴素贝叶斯算法的介绍 1.什么是朴素贝叶斯算法? 朴素贝叶斯算法(Naive Bayes Algorithm)是一种基于贝叶斯定理和特征独立性假设的概率分类算法。它被广泛应用于文本分类、垃圾邮件过滤、情感分析等任务。 朴素贝叶斯算法的基本思想是基…

OpenMMLab AI实战营第二期(1)计算机视觉与OpenMMLab概述

通过今天课程的学习,算是比较大的扩展了我的视野,近期主要学一些强化学习的知识,没有想到计算机视觉领域已经发展的这么迅猛,很多以前只是在脑海里想象的计算机视觉应用场景,原来OpenMMLab已经实现了。我比较对目标检测…

人脸识别(Java+ Face++实现)

人脸识别(Java Face实现) 一. 概述 Face的核心技术是基于深度学习的人脸识别技术,其算法在准确率和速度方面都处于领先地位。该公司的产品和服务包括人脸识别SDK、人脸识别API、人脸比对服务、人脸检测服务、活体检测服务等。这些产品和服务广…

在树莓派3B+上安装Pytorch1.7

在树莓派3B上安装Pytorch1.7(应该是最简单的方法了)_package libopenblas-dev has no installation cand_Chauncey_Wang的博客-CSDN博客由于项目要求,我需要在树莓派上安装pytorch这就有几个问题,首先吧,咱们和外面之间有一道长城&#xff0c…

计算机网络 七大性能指标【速率】【带宽】【吞吐量】【时延】【时延带宽积】【往返时间】【利用率】

计算机网络 速率(bit/s 数据的传送速率)带宽(频域-频带宽度,时域-最高速率)吞吐量(单位时间的 数据量)时延(一端传送到另一端所需的时间)1. 发送时延(发送所用…

来自6种编程语言的祝福:欢乐六一儿童节

六一儿童节的由来是为了纪念在法西斯侵略战争中死难的儿童,反对帝国主义的虐杀和毒害儿童,保障儿童权利。1949年11月,国际民主妇女联合会在莫斯科召开大会,决定每年的6月1日为全世界少年儿童的节日,即国际儿童节。 六一…

RPC(1):软件项目架构变化简述

1单体架构 1.1架构图 单体架构就是一个项目里面包含这个项目中全部代码。一个应用搞定全部功能。 DNS 服务器可以是单映射,也可以配置多个映射。 1.2软件代码结构 在单体架构项目中,团队都是通过包(package)进行区分每个模块。 总体包结构&#xff…

Android进阶 :实现自定义View

Android进阶:实现自定义View 导语 有时候我们会想要实现一些复杂或者是独特的组件效果,这时候系统提供的组件可能不能满足我们的需求,这个时候我们一般就会有两个解决办法,一是上网查找开源的控件库,一些流行的开源库…

【JUnit技术专题】「入门到精通系列」手把手+零基础带你玩转单元测试,让你的代码更加“强壮”(夯实功底篇)

手把手零基础带你玩转单元测试,让你的代码更加“强壮” 前言介绍JUnit是什么?JUnit和xUnit之间的关系 JUnit的基本概念JUnit的特点什么是一个单元测试用例 JUnit的用法JUnit的最佳实践案例分析创建一个类创建 Test Case 类创建 Test Runner 类 JUnit总体…

Web实验二 CSS基本样式实验

实验原理 通过创建CSS样式文件,理解CSS样式基本属性作用及意义。 实验目的 理解CSS基本概念及功能 理解CSS样式的设计原则 理解并掌握CSS样式的基本声明方法 理解并掌握多种CSS选择器的使用方法 理解并掌握字文本、表格、超链接等元素常用属性的使用方法 理解并掌握…

机器人学:DH参数总结(传统DH方法和改进DH方法)

1. 传统DH参数方法 1.1 确定坐标系的方法 定义:杆 i i i的近端是关节 i i i,远端是关节 i 1 i1 i1. 【下面的规则参考上面的图看得更清楚】 对于 n n n自由度机器人,可用以下步骤建立与各杆件 i ( i 0 , 1 , … , n ) i(i0,1,…,n) i(i0,…