Redian新闻
>
自动生成prompt:Automatic prompt engineering

自动生成prompt:Automatic prompt engineering

公众号新闻

作者:刘小虎,中国科学院计算技术研究所 

来自:青稞AI

前言

组内现在正在做大模型相关,笔者负责prompt engineering,在实际工程中会发现prompt对模型的输出影响巨大,可能一个字就会改变模型的输出(笔者用的是量化后的7B model),而且换一个模型,就要改变手工制定的prompt,非常麻烦和受限。因此想到了Automatic prompt engineering。由此记录自己的paper阅读,肯定会有自己的理解错误的地方,如有发现请联系笔者进行更正。

APE: Larger Language models are human-level prompt engineers

paper: Large Language Models Are Human-Level Prompt Engineers
链接:https://arxiv.org/abs/2211.01910
accepted by ICLR 2023
code: https://github.com/keirp/automatic_prompt_engineer
lilian weng's blog: https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/

这篇论文的核心思路就是:

  • • 从训练集中生成候选prompt

  • • 评估这些候选prompt,选出得分最高的prompt

  • • resample, 使用LLM 生成语义相近的prompt(2中得分最高的prompt),然后再进行评估,最终得到prompt

APE整体框架图
APE算法

生成候选prompt

论文指出有三种生成候选prompt的方式

  • • Forward Mode Generation

这个比较直观,就是写一段指令,然后将训练集的输入输出给出,直接让LLM自动生成prompt。这个生成prompt的模板不知道是哪的出处,有网友知道是哪的,可以直接指出。

  • • Reverse Mode Generation

这个也很直观,就是填补空白的方式。但是这个方式怎么实现呢?我比较疑惑,不知道怎么实现这个填补空白的方式,因为LLM都是一个字一个字的自回归生成。

  • • Customized Prompts

这一类就是自己根据task来设计了,论文给出了一个示例。我认为就是使用不同的模板来扩充了多样性(可能是我的理解有错误)

评估候选prompt

  • • Execution accuracy

这种方式其实就是使用GT来进行比较。将得分最高的prompt扔进模型,得到结果和GT进行比较。

  • • Log probability

给定指令和问题后所得到的所需答案的对数概率

另外,这一步如果在全量训练集上评估,则开销非常大,因此作者提出一种multi-stage策略。大致思想是先在少量subset上评估,然后过滤掉比较差的,循环这一过程直到候选集足够小,此时再在全量训练集上进行评价、挑选。

Resample

使用的是蒙特卡罗搜索的方式。说的这么玄乎,其实还是使用LLM来生成prompt!但是这一步他是使用之前得分最高的prompt再次来生成语义相近的prompt

这里可以是迭代的方式进行。怎么迭代呢?笔者是这样认为的: 

1、得到语义相近的prompt。 
2、评估这些prompt。
3、得到得分最高的prompt 重复1、2步骤。

作者实验发现,对于比较难的任务,进行resample能够进一步提升效果。

ProTeGi (Automatic Prompt Optimization with “Gradient Descent and Beam Search)

paper: Automatic Prompt Optimization with "Gradient Descent" and Beam Search
链接:https://arxiv.org/abs/2305.03495
code: https://github.com/microsoft/LMOps/tree/main/prompt_optimization
accepted by EMNLP 2023

这篇文章早就在arxiv上发出来了。当时的缩写还是APO。今年被EMNLP2023收录

首先让我们先来看看这篇论文的整体框架图。

ProTeGi总体框架图

方法:利用数值梯度下降自动优化提示,同时结合beam search和bandit selection procedure提高算法效率。

优势:无需调整超参数或模型训练,ProTeGi可以显著提高提示的性能,并具有可解释性。

什么原理呢?

  • • 得到当前prompt的“gradient”

这个“gradient”怎么得到的了呢,这是个啥玩意,怎么还有梯度?注意,注意。人家是带引号的!比喻成梯度。这玩意有什么用呢。

文章指出给定一批error samples(当前prompt无法预测正确的),让LLM给出当前prompt预测错误的原因,这一原因即文本形式的“gradient”。使用的还是LLM!

  • • 将“gradient”输入到LLM中,得到新的prompt

  • • 和APE一样,resample, 得到语义相近的prompt,然后迭代。

注意注意啊,每轮迭代中,最外层包含一个beam search过程,以便强化探索。这一块就看不懂了, 也是本论文的贡献之一。没有想过改进,所以略过直接使用。

OPRO (Large Language Models as Optimizers)

paper: Large Language Models as Optimizers
链接:https://arxiv.org/abs/2309.03409
code: https://github.com/google-deepmind/opro

首先来看框架图

然后接着看论文对meta-prompt的定义

blue 蓝色的是 solution-score pairs 也就是 prompt + score。这个score怎么来的呢?使用LLM进行打分,也就是Figure 2 中的 objective function evaluator。这应该也是个LLM, 这个LLM和 LLM as optimizer 可以是同一个 也可以不是。** 注意,这个打分其实就是评估新生成的prompt在任务上的表现,说白了就是和GT进行对比(对了+1)**。

orange 橙色 就是指令 meta-instructions.

purple 紫色 就是task description,包含一些任务的examples、优化的目标等

因此, OPRO的核心思路是让LLM基于过往的迭代记录、优化目标,自己总结规律,逐步迭代prompt,整个过程在文本空间上完成。

PE2 (Prompt Engineering a Prompt Engineer)

paper: Prompt Engineering a Prompt Engineer
链接https://arxiv.org/abs/2311.05661

这一篇paper 是 APE 和 APO (ProTeGi)的改进版,集成了这2个方法的优点。

这篇论文主要提出了一个meta-prompt的东东(等等,我去,这玩意和OPRO这篇论文里的好像啊)

提供更细节的指令和内容

  • • 提供提示工程的教程

  • • 2阶段的任务描述

  • • step-by-step 推理的模板

  • • 明确指定提示与输入之间的相互关系

结合优化的概念

  • • batch size : 指的就是使用batch size失败的例子

  • • step size : 指的就是改变原始的prompt中step size个字

  • • Optimization History and Momentum : 其实就是增加了以外的prompt和修改后的prompt

看完后惊呼道:这是真能写啊。写的玄乎又玄乎的。一图胜千言

给我的感觉就是前面3篇论文的集成版本。

将OPRO中的meta-prompt的概念用到了 APO中了,然后丰富了模板的内容。有反思分析有推理,迭代的让模型自动修改prompt。

总结

  • • 上述四篇论文基本上是用作推理、选择、反义词等有确定GT的数据集上

  • • 使用上面4篇论文需要有自己的数据集,而且每一个任务有一个数据集,然后自动生成一个prompt

  • • automatic PE, 说是自动,其实就是根据模板让模型不断的去试错,告诉他方向,然后达到好的prompt

  • • 对于开放式的任务,比如摘要、总结、翻译、介绍等这种开放式没有明确GT的任务,可能不适用!!

  • • 随着迭代输入的token数量会越来越多,可能会受到计算资源的限制。




备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群


id:DLNLPer,记得备注呦

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
恭喜 南加州大学 M同学 成功斩获 New Neutral Trading Company Inc 全职 Offer!今日arXiv最热NLP大模型论文:IBM研究院提出Genie方法,自动生成高质量数据集英国游玩:令人恼火的“车事儿”!City Slickers: How Shanghai Is Outfoxing Its Raccoon Dog Problem斯坦福和OpenAI提出meta-prompting,最强零样本prompting技术诞生了In Northeast China, Tourists From the South Spark a Winter Boom南开&山大&北理工团队开发trRosettaRNA:利用Transformer网络自动预测RNA 3D结构音乐厂牌Free-Out:有一种hip-hop叫“南京”鸿发超市「2000 万美元」买下82街前Walmart超市!开设第4家Hông Phát分店!Providing Long-Term Care for Shanghai’s Most Vulnerable Resident「和众科技」完成Pre-A与Pre-A+两轮数千万融资,专注Matter标准下开发者操作系统|36氪首发hé bàng?hé bèng?大模型RAG问答技术架构及核心模块回顾:从Embedding、prompt-embedding到RerankeriOS 17.4中苹果播客将自动生成文本GPT 自动生成SQL语句一路走来(三十八)Young Chinese Street Vendors Toil for Friendship, FreedomChatGPT代码生成飙升10%!北大华人一作:细化prompt,大幅改进大模型代码能力GPT-4准确率最高飙升64%!斯坦福OpenAI重磅研究:全新Meta-Prompting方法让LLM当老板浓人,nèng死淡人App Fleet:在 Linux 上实现工作空间自动化的开源应用 | Linux 中国2023年末专利盘点|腾讯研究影视剧预告片自动生成,哔哩哔哩实现弹幕跳转链接「和众科技」完成Pre-A与Pre-A+两轮数千万融资,专注Matter标准下开发者操作系统丨早起看早期克罗地亚斯普利特(Split),街头漫步「有现房9月可排队 |NEU & Berklee & Emerson|接受本科生|城市天际线|无敌健身房|Chinatown」Thom Browne罕见55折!Longchamp6折白菜!Polo/Weekday半价!【首发】生科自动化新锐中析生物完成Pre-A+轮融资,启明创投独家投资红色日记 董老逝世 4.1-15How Chinese Officials Are Subtly Promoting Having Children编码数据集生成框架 UnitGen 0.4.0:代码文档生成、测试代码生成LLM准确率飙升27%!DeepMind提出全新「后退一步」Prompt技术HCSSA | 三校联办 Career Speed Networking 期待见到你!How Women in China Are Tapping Into a Craft Beer Revolution宾州斯通利花园(Stoneleigh garden),思绪飞扬Diving Controversy Prompts Sports Fandom Criticism
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。