作者:劉小虎,中國(guó)科學(xué)院計(jì)算技術(shù)研究所
組內(nèi)現(xiàn)在正在做大模型相關(guān),筆者負(fù)責(zé)prompt engineering,在實(shí)際工程中會(huì)發(fā)現(xiàn)prompt對(duì)模型的輸出影響巨大,可能一個(gè)字就會(huì)改變模型的輸出(筆者用的是量化后的7B model),而且換一個(gè)模型,就要改變手工制定的prompt,非常麻煩和受限。因此想到了Automatic prompt engineering。由此記錄自己的paper閱讀,肯定會(huì)有自己的理解錯(cuò)誤的地方,如有發(fā)現(xiàn)請(qǐng)聯(lián)系筆者進(jìn)行更正。
APE: Larger Language models are human-level prompt engineers
這篇論文的核心思路就是:
?從訓(xùn)練集中生成候選prompt
?評(píng)估這些候選prompt,選出得分最高的prompt
?resample, 使用LLM 生成語(yǔ)義相近的prompt(2中得分最高的prompt),然后再進(jìn)行評(píng)估,最終得到prompt
APE整體框架圖
APE算法
生成候選prompt
論文指出有三種生成候選prompt的方式
這個(gè)比較直觀,就是寫一段指令,然后將訓(xùn)練集的輸入輸出給出,直接讓LLM自動(dòng)生成prompt。這個(gè)生成prompt的模板不知道是哪的出處,有網(wǎng)友知道是哪的,可以直接指出。
?Reverse Mode Generation
這個(gè)也很直觀,就是填補(bǔ)空白的方式。但是這個(gè)方式怎么實(shí)現(xiàn)呢?我比較疑惑,不知道怎么實(shí)現(xiàn)這個(gè)填補(bǔ)空白的方式,因?yàn)長(zhǎng)LM都是一個(gè)字一個(gè)字的自回歸生成。
?Customized Prompts
這一類就是自己根據(jù)task來(lái)設(shè)計(jì)了,論文給出了一個(gè)示例。我認(rèn)為就是使用不同的模板來(lái)擴(kuò)充了多樣性(可能是我的理解有錯(cuò)誤)
評(píng)估候選prompt
?Execution accuracy
這種方式其實(shí)就是使用GT來(lái)進(jìn)行比較。將得分最高的prompt扔進(jìn)模型,得到結(jié)果和GT進(jìn)行比較。
?Log probability
給定指令和問題后所得到的所需答案的對(duì)數(shù)概率
另外,這一步如果在全量訓(xùn)練集上評(píng)估,則開銷非常大,因此作者提出一種multi-stage策略。大致思想是先在少量subset上評(píng)估,然后過濾掉比較差的,循環(huán)這一過程直到候選集足夠小,此時(shí)再在全量訓(xùn)練集上進(jìn)行評(píng)價(jià)、挑選。
Resample
使用的是蒙特卡羅搜索的方式。說(shuō)的這么玄乎,其實(shí)還是使用LLM來(lái)生成prompt!但是這一步他是使用之前得分最高的prompt再次來(lái)生成語(yǔ)義相近的prompt。
這里可以是迭代的方式進(jìn)行。怎么迭代呢?筆者是這樣認(rèn)為的:
1、得到語(yǔ)義相近的prompt。
2、評(píng)估這些prompt。
3、得到得分最高的prompt 重復(fù)1、2步驟。
作者實(shí)驗(yàn)發(fā)現(xiàn),對(duì)于比較難的任務(wù),進(jìn)行resample能夠進(jìn)一步提升效果。
ProTeGi (Automatic Prompt Optimization with “Gradient Descent and Beam Search)
這篇文章早就在arxiv上發(fā)出來(lái)了。當(dāng)時(shí)的縮寫還是APO。今年被EMNLP2023收錄
首先讓我們先來(lái)看看這篇論文的整體框架圖。
ProTeGi總體框架圖
方法:利用數(shù)值梯度下降自動(dòng)優(yōu)化提示,同時(shí)結(jié)合beam search和bandit selection procedure提高算法效率。
優(yōu)勢(shì):無(wú)需調(diào)整超參數(shù)或模型訓(xùn)練,ProTeGi可以顯著提高提示的性能,并具有可解釋性。
什么原理呢?
?得到當(dāng)前prompt的“gradient”
這個(gè)“gradient”怎么得到的了呢,這是個(gè)啥玩意,怎么還有梯度?注意,注意。人家是帶引號(hào)的!比喻成梯度。這玩意有什么用呢。
文章指出給定一批error samples(當(dāng)前prompt無(wú)法預(yù)測(cè)正確的),讓LLM給出當(dāng)前prompt預(yù)測(cè)錯(cuò)誤的原因,這一原因即文本形式的“gradient”。使用的還是LLM!
?將“gradient”輸入到LLM中,得到新的prompt
?和APE一樣,resample, 得到語(yǔ)義相近的prompt,然后迭代。
注意注意啊,每輪迭代中,最外層包含一個(gè)beam search過程,以便強(qiáng)化探索。這一塊就看不懂了, 也是本論文的貢獻(xiàn)之一。沒有想過改進(jìn),所以略過直接使用。
OPRO (Large Language Models as Optimizers)
paper:LargeLanguageModelsasOptimizers 鏈接:https://arxiv.org/abs/2309.03409 code:https://github.com/google-deepmind/opro
首先來(lái)看框架圖
然后接著看論文對(duì)meta-prompt的定義
blue 藍(lán)色的是 solution-score pairs 也就是 prompt + score。這個(gè)score怎么來(lái)的呢?使用LLM進(jìn)行打分,也就是Figure 2 中的 objective function evaluator。這應(yīng)該也是個(gè)LLM, 這個(gè)LLM和 LLM as optimizer 可以是同一個(gè) 也可以不是。** 注意,這個(gè)打分其實(shí)就是評(píng)估新生成的prompt在任務(wù)上的表現(xiàn),說(shuō)白了就是和GT進(jìn)行對(duì)比(對(duì)了+1)**。
orange 橙色 就是指令 meta-instructions.
purple 紫色 就是task description,包含一些任務(wù)的examples、優(yōu)化的目標(biāo)等
因此, OPRO的核心思路是讓LLM基于過往的迭代記錄、優(yōu)化目標(biāo),自己總結(jié)規(guī)律,逐步迭代prompt,整個(gè)過程在文本空間上完成。
PE2 (Prompt Engineering a Prompt Engineer)
paper:PromptEngineeringaPromptEngineer 鏈接https://arxiv.org/abs/2311.05661
這一篇paper 是 APE 和 APO (ProTeGi)的改進(jìn)版,集成了這2個(gè)方法的優(yōu)點(diǎn)。
這篇論文主要提出了一個(gè)meta-prompt的東東(等等,我去,這玩意和OPRO這篇論文里的好像?。?/p>
提供更細(xì)節(jié)的指令和內(nèi)容
?提供提示工程的教程
?2階段的任務(wù)描述
?step-by-step 推理的模板
?明確指定提示與輸入之間的相互關(guān)系
結(jié)合優(yōu)化的概念
?batch size : 指的就是使用batch size失敗的例子
?step size : 指的就是改變?cè)嫉膒rompt中step size個(gè)字
?Optimization History and Momentum : 其實(shí)就是增加了以外的prompt和修改后的prompt
看完后驚呼道:這是真能寫啊。寫的玄乎又玄乎的。一圖勝千言
給我的感覺就是前面3篇論文的集成版本。
將OPRO中的meta-prompt的概念用到了 APO中了,然后豐富了模板的內(nèi)容。有反思分析有推理,迭代的讓模型自動(dòng)修改prompt。
審核編輯:黃飛
-
算法
+關(guān)注
關(guān)注
23文章
4630瀏覽量
93365 -
prompt
+關(guān)注
關(guān)注
0文章
14瀏覽量
2685 -
LLM
+關(guān)注
關(guān)注
0文章
299瀏覽量
401
原文標(biāo)題:總結(jié)
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AI對(duì)話魔法 Prompt Engineering 探索指南
![AI對(duì)話魔法 <b class='flag-5'>Prompt</b> Engineering 探索指南](https://file1.elecfans.com//web1/M00/F4/76/wKgZoWcsIbSADg9yAAKJVH91TJY986.png)
HTML DOM prompt()方法使用
![HTML DOM <b class='flag-5'>prompt</b>()方法使用](https://file1.elecfans.com//web2/M00/A6/F9/wKgZomUMQY-ARUTUAACUlJge3zU807.png)
推薦系統(tǒng)中候選生成和冷啟動(dòng)挑戰(zhàn)的研究
應(yīng)用于任意預(yù)訓(xùn)練模型的prompt learning模型—LM-BFF
![應(yīng)用于任意預(yù)<b class='flag-5'>訓(xùn)練</b>模型的<b class='flag-5'>prompt</b> learning模型—LM-BFF](https://file.elecfans.com/web2/M00/10/06/pYYBAGEZ2lyACo8QAAAkc1SWDlQ148.png)
揭秘Prompt的前世今生
![揭秘<b class='flag-5'>Prompt</b>的前世今生](https://file.elecfans.com/web2/M00/12/EE/pYYBAGEu5hmAfz4NAAAICMhIyY0588.png)
Prompt范式你們了解多少
![<b class='flag-5'>Prompt</b>范式你們了解多少](https://file.elecfans.com/web2/M00/14/25/poYBAGE6wwGAcSuyAAAQv5qRNrc801.jpg)
NLP中Prompt的產(chǎn)生和興起
![NLP中<b class='flag-5'>Prompt</b>的產(chǎn)生和興起](https://file.elecfans.com/web2/M00/14/5B/poYBAGE9pu6ABBSZAAAICMhIyY0781.png)
基于預(yù)訓(xùn)練視覺-語(yǔ)言模型的跨模態(tài)Prompt-Tuning
![基于預(yù)<b class='flag-5'>訓(xùn)練</b>視覺-語(yǔ)言模型的跨模態(tài)<b class='flag-5'>Prompt</b>-Tuning](https://file.elecfans.com/web2/M00/17/2A/pYYBAGFhQdOAfQ2OAABzjOJX97U865.png)
萬(wàn)能的prompt還能做可控文本生成
關(guān)于Prompt在NER場(chǎng)景的應(yīng)用總結(jié)
一種基于prompt和對(duì)比學(xué)習(xí)的句子表征學(xué)習(xí)模型
從評(píng)論中生成藝術(shù)的開源項(xiàng)目
![<b class='flag-5'>從</b>評(píng)論<b class='flag-5'>中生成</b>藝術(shù)的開源項(xiàng)目](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論