prompt的本质
使用和调试prompt,必须理解prompt的本质。
•Prompting中,是各种下游任务“迁就“预训练语言模型
将所有下游任务统一成预训练任务。以特定的模板,将下游任务的数据转成自然语言的形式,挖掘出上游预训练模型的潜力。前提条件是:预训练任务做的足够好。
•Fine-tuning中:是预训练语言模型“迁就“各种下游任务;本质上任务预训练模型做的不够好。
①语言模型(Language Models)越来越大,Fine-tune的成本也越来越高:预训练模型在原域上已经有非常好的性能了,域的迁移会受到原域的阻力,因为使用fine-tune改变的weight是原域上的weight ->想要在新域上获得较好的性能,预训练模型越大,fine-tune需要的数据也越多
①大的LM有基于大量训练数据的天然的迁移学习能力,设计大LM的时候一般都想要让模型同时完成较多的任务。如果使用Fine-tuning,就要求重新多次训练预训练模型,导致使用非常大的内存
一句话总结:Prompting工程就是坚定的认为:预训练模型很好,我要使用各种“勾引”的方法,让大模型一吐为快。
prompt的创新突破
来自于阿拉伯联合酋长国阿布扎比的大学的学者[1],在LLaMA-1/2(7B、13B和70B)、GPT-3.5/4上进行了大量实验,提出26条prompt军规,旨在简化查询和提示大型语言模型的过程。(LLaMA2,GPT-3.5/4使用场景,基本覆盖90%以上的应用了)
话不多数,先看提升效果,ATLS数据集,每个军规提升效果都是杠杠的。
大模型的涌现能力毋庸置疑,但是大模型的应用,尤其是prompt提示工程对普通用户来说还是有学习成本。论文的目标是为开发者和普通用户,解开查询和使用大型语言模型交互的神秘面纱,并通过简单地设计prompt,提高预训练大型语言模型的回应质量。
<fontcolor=FF0000> 特别注意:prompt是模型训练不充分或者大模型没有来到智能时代的中间产物,每个模型用到的prompt可能都不一样;宣称10万月薪还招不到人的广告可以不用看了,认认真真学一下,初中学历也是完全胜任的。prompt工程师迟早也要被淘汰。 </font>
1、26条军规
1、 无需对LLM客气和礼貌,所以不需要添加“请”、“如果你不介意”、“谢谢”、“我想要”等短语,直接切入主题即可。
2、 将目标受众整合到提示中,例如,受众是该领域的专家。
3、 将复杂任务分解为一系列简单提示的互动式对话。
4、 使用肯定的指令,如“做什么”,同时避免使用负面语言,如“不要做什么”。
5、 当你需要更清晰或更深入地了解一个主题、观点或任何信息时,请使用以下提示:
用简单的术语解释[插入特定主题]。
像给11岁的孩子解释一样解释给我听。
就像我是[领域]的初学者一样向我解释。
用简单的英语编写[文章/文本/段落],就像你在给一个5岁的孩子解释东西一
6、 “我将给予$xxx的小费以获得更好的解决方案!”貌似英文语料或者母语有这样的习俗,中文环境貌似不合适。
7、 在prompt中添加样例,也就是少样本学习。
8、 对prompt格式化的时候,请从“###Instruction###”开始,然后是“###Example###”或“###Question###”(如果相关)。随后,呈现问题的内容。使用一个或多个换行符来分隔说明、示例、问题、上下文和输入数据。
9、 包括以下短语:“Your task is” and “You MUST”
10、包含以下短语:““You will be penalized”.
11、请在你的提示中使用这个短语:“以自然、类似人类的方式回答一个给定的问题”。
12、请使用引导词,例如写作时使用“逐步思考”。
13、在你的提示中添加以下短语:“确保你的回答没有偏见,不依赖刻板印象。”
14、通过向你提问,让模型从你那里获取精确的细节和要求,直到它获得足够的信息来提供所需的输出(例如,“从现在开始,我希望你向我提问以...”)。
15、如果你想询问关于特定主题、观点或任何信息,并希望测试你的理解,可以使用以下短语:“教我[任何定理/主题/规则名称],并在最后附上一个测试,但不要给我答案,然后在我回答时告诉我是否回答正确。”
16、为大型语言模型分配角色。
17、使用分隔符。
18、在提示中多次重复特定的单词或短语。
19、将思维链(CoT)与少量提示结合使用。
20、使用输出引导,即在提示结束时加上期望输出的开头。通过在提示结束时加上预期回答的开头来利用输出引导。
21、要编写一篇详细的文章/文本/段落/文章或任何类型的文本:“为我详细地写一篇关于[主题]的[文章/文本/段落],添加所有必要的信息。”
22、在不改变文本风格的情况下对特定文本进行更正/更改:“尝试修改用户发送的每个段落。你应该只改进用户的语法和词汇,确保听起来自然。你不应该改变写作风格,比如将正式段落变得随意。”
23、当你有一个可能在不同文件中的复杂编码提示时:“从现在开始,每当你生成跨多个文件的代码时,生成一个[编程语言]脚本,可以运行该脚本以自动创建指定文件或对现有文件进行更改以插入生成的代码。[你的问题]。”
24、当你想使用特定的单词、短语或句子开始或继续一段文本时,使用以下提示:o 我为你提供了开头[歌词/故事/段落/文章...]: [插入歌词/单词/句子]’。根据提供的词汇完成它。保持连贯性。
25、以关键词、规定、提示或指示的形式明确说明模型必须遵循的要求,以便生成内容。
26、要编写任何文本,如文章或段落,使其与提供的样本相似,请包括以下说明:o 请根据提供的段落[/标题/文本/文章/答案]使用相同的语言。
2、这些军规是怎么分类的?
26条prompt军规,其实可以划分为5个层次:
(1)提示结构和清晰度,例如,在提示中整合目标受众,使其成为该领域的专家;
(2)具体性和信息,例如,在您的提示中添加以下短语:“确保您的回答没有偏见且不依赖刻板印象。”;(3)用户互动和参与度,例如,允许模型通过向您提问来获取精确的细节和要求,直到它具有足够的信息来提供所需的输出:“从现在开始,我希望您向我提问以...”。
(4)内容和语言风格,例如,与LLM交流无需客气,因此无需添加“请”、“如果您不介意”、“谢谢”、“我想要”等短语,直接切入主题;
(5)复杂任务和编码提示,例如,将复杂任务分解为一系列简单提示,以进行互动式对话。
3、Prompt工程的指导性原则
简洁与清晰:通常,过于冗长或模糊的提示可能会使模型混淆或导致无关的回应。因此,提示应简洁明了,避免不必要的信息,同时足够具体以引导模型。这是提示工程的基本原则。
语境相关性:提示必须提供与任务背景和领域相关的语境,以帮助模型理解任务。包括关键词、特定领域术语或情境描述可以将模型的回应锚定在正确的语境中。我们在所提出的原则中强调了这一设计理念。
任务对齐:提示应与手头任务紧密对齐,使用清晰表明任务性质的语言和结构。这可能涉及将提示构造为问题、命令或符合任务预期输入和输出格式的填空陈述。 示例演示:对于更复杂的任务,在提示中包含示例可以展示所需的格式或回应类型。这通常涉及展示输入-输出对,特别是在“少样本”或“零样本”学习场景中。
避免偏见:提示应设计为尽量减少模型由于训练数据而固有的偏见激活。使用中立语言,并注意潜在的道德影响,特别是对于敏感话题。
逐步提示:对于需要一系列步骤的任务,提示可以分步引导模型完成过程。将任务分解为一系列相互建立的提示,逐步引导模型。此外,提示应根据模型的表现和迭代反馈进行调整,即需要准备好根据初始输出和模型行为来优化提示。以及提示应根据模型的表现和回应以及迭代的人类反馈和偏好进行调整。
最后,更高级的提示可能包含类似编程的逻辑以完成复杂任务。例如,在提示中使用条件语句、逻辑运算符或甚至伪代码来引导模型的推理过程。 提示设计是一个不断发展的领域,特别是随着大型语言模型变得越来越复杂。随着研究人员继续探索通过提示工程可以实现的极限,这些原则可能会得到改进和扩展。
prompt的重要性在哪里?
如果输入(prompt)设置得当,模型就能给出更为准确或有深度的答案。
[1]Bsharat S M, Myrzakhan A, Shen Z. Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4[J]. arXiv preprint arXiv:2312.16171, 2023.
[2]Almazrouei E, Alobeidli H, Alshamsi A, et al. The Falcon Series of Open Language Models[J]. arXiv preprint arXiv:2311.16867, 2023.
出自:https://zhuanlan.zhihu.com/p/674899590?utm_psn=1725069041801179136