Automatic Prompt Optimization with “Gradient Descent” and Beam Search

文章提出了一种使用LLM自我评估和改进prompt的方法,通过类似梯度下降的策略,让LLM识别并修复prompt的问题。结合Beamsearch和Banditselection策略拓宽搜索空间,寻找最优prompt。实验显示这种方法在网络安全相关的分类问题上优于传统方法,并且容易过拟合,需要控制迭代次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在“自然语言域”使用类似梯度下降的方法优化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遍差不多就到最优了。

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

### 关于视觉-语言提示调优与知识引导的上下文优化的研究 #### KgCoOp的关键思想 KgCoOp旨在通过减少可学习提示和人工提示之间的差异来缓解对一般文本知识的遗忘。这种方法确保在不放弃原有知识的前提下,使模型保持与普遍知识的一致性[^1]。 #### 方法概述 具体而言,在CLIP和CoOp框架下,尽管视觉编码器φ和预训练的文本编码器θ均处于冻结状态,但不同于CLIP采用固定的提示方式,CoOp专注于推断适合特定任务需求的提示以增强其适用性和区分度。而KgCoOp进一步发展了这一理念,强调利用已有的广泛类别层面的文字资料作为基础来进行调整优化工作[^2]。 #### 文本知识嵌入的应用 为了提升这些可学习提示的表现——即它们既能广泛应用又能精准识别目标对象的能力——研究人员开发出了名为TKE的技术方案。这项技术能够把描述各类事物特征的信息转化为计算机易于处理的形式,并将其同之前已经过训练得到的结果结合起来,从而创造出既具有针对性又富含背景含义的新颖表达形式。实验结果显示这种做法确实有助于改善系统的性能表现[^3]。 ```python def text_knowledge_embedding(class_description, pretrained_class_token): """ Converts class-level textual embeddings into task-specific prompts using TKE. Args: class_description (str): Description of the class to be converted. pretrained_class_token (Tensor): Pretrained token associated with the class. Returns: Tensor: Task-specific prompt embedding. """ # Convert description to embedding class_embedding = convert_to_embedding(class_description) # Combine with pretrained token combined_embedding = combine_embeddings(pretrained_class_token, class_embedding) return combined_embedding ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值