提示工程原理

目录

提示工程原理

一、提示工程的由来

二、提示工程发展历史

三、提示工程相关研究


一、提示工程的由来

(1) Prompt的定义

Prompt刚刚出现的时候,还没有被叫做Prompt,是研究者们为了下游任务设计出来的一种输入形式模板,它能够帮助PLM“回忆”起自己在预训练时“学习”到的东西,因此后来慢慢地被叫做Prompt了,它是指一段给定的文本或语句,用于启动和引导机器学习模型生成特定类型、主题或格式的输出

在ChatGPT引发大语言模型新时代之后,Prompt即成为与大模型交互输入的代称。即我们一般将给大模型的输入称为Prompt,将大模型返回的输出称为Completion

简单来说,Prompting指的是在文本上附加额外的提示(Prompt)信息作为输入,将下游的预测等任务转化为语言模型(Language Model)任务,并将语言模型的预测结果转化为原本下游任务的预测结果

(2) ICL的诞生

ChatGPT的出现,让大家发现可以通过对话的形式让模型完成任务,而在这之前更多的是通过微调让模型适配下游任务,其中的转变就和ICL(In Context Learning)有关

大规模预训练语言模型(LLM)如GPT-3是在大规模的互联网文本数据上训练,以给定的前缀来预测生成下一个token(Next token prediction)。通过预测词的训练目标、大规模数据集以及超高参数量的模型相结合,产生了性能极强的LLM,它可以“理解”任何文本输入,并在其基础上进行“写作”,除此以外,GPT-3的论文发现,大规模的训练数据会产生一种有趣的新兴行为,称为In Context Learning(又称上下文学习语境学习,ICL),它并不需要调整模型参数,仅用几条下游任务的示例就可以取得极佳的结果

注意:ICL(In Context Learning)不涉及模型的训练参数更新

(3) ICL的使用方法

In-Context Learning最初是在原始GPT-3论文中作为一种大语言模型学习任务的方式而被推广的,能够直接让语言模型根据给定的几个实例理解任务,并给出问题答案;本质上,它相当于使用训练完好的语言模型估计给定示例条件下的条件概率分布模型。在In-Context Learning里,给语言模型一个“提示(prompt)”,该提示是一个由输入输出对组成的列表,这些输入输出对用来描述一个任务。在提示的末尾,有一个测试输入,并让语言模型仅通过以提示为条件来预测下一个标记。为了正确回答以上两个提示,模型需要理解In-Context Learning的演示示例,以确定输入分布(财经或一般新闻)、输出分布(积极/消极或主题)、输入输出映射(情感或主题分类)以及格式

(4) NLP发展的四大范式

Prompt概念的提出与ICL的发现催生第四范式

范式名称 内容
第一范式:Feature
Engineering
概览统计时代:特征工程+机器学习,构建特征依赖大量人工,需要大量任务训练数据
第二范式:Architecture
Engineering
深度学习时代:注重于设计合理的神经网络架构去学习有用特征,减少人工构建特征依赖,仍需要大量任务训练数据
第三范式:Object
Engineering
预训练微调时代:大量无标注语料预训练、少量任务语料微调,注重于目标的设计。大模型军备,few-shot/zero-shot开始显现
第四范式:Prompt Engineering 第四范式:大量无标语料预训练,下游通过引入Prompt去重构任务,实现few-shot其至zero-shot

(5) 提示工程的概念

在ChatGPT等LLM出现后,自然语言处理的范式正在由Pretrain-Finetune(预训练-微调)向Prompt Engineering(提示工程)演变。对于具有较强自然语言理解、生成能力,能够实现多样化任务处理的LLM来说,一个合理的Prompt设计对LLM的能力发挥有着重要影响。Prompt Engineering,即是针对特定任务构造能充分发挥大模型能力的Prompt的技巧

(6) 提示工程的意义

将多种下游任务转化为Language Model问题,使得下游任务接近预训练中的LM /MLM任务,挖掘模型的潜力,体现在两方面:首先,可以通过prompt的形式使得特征更符合下游任务场景,提高特征质量;其次,不需要针对下游任务重新训练一个分类器,可以用到训练好的语言模型分类器

由于下游任务与预训练任务接近,因此prompt在下游任务上需要的训练更少,在few-shot/zero-shot场景下表现优秀。同理,在需要节约训练参数量(Parameter-efficient)的场景下也有不错的表现

(7) 提示工程vs微调

提示工程的提出是为了减少LLM的微调,使得一个模型可以适配多种下游任务,而现在的微调不是为了让模型适配任务,而是为了模型输出的安全可控,使用垂域知识适配业务场景等

微调的缺点是需要高质量的数据集与强大的算力,优点是不需要太多的提示技巧即可得到满意的输出

提示工程的优点在于可以灵活地适配多种任务,但在缺乏垂域知识的情况下可能面临一定的挑战,但仍然可以通过其他方式尝试处理这些任务

二、提示工程发展历史

(1) ICL的分类

在ICL出现后,根据Prompt内容的不同,分为以下三类:

Zero shot
不允许输入任何示例,只允许输入一则任务说明;输出效果取决于模型本身能力

One shot
只允许输入一条示例和一则任务说明;输出效果一般比Zero shot效果好,和模型理解能力有关

Few-shot learning
允许输入数条示例和一则任务说明;输出效果一般强于上面两种

(2) ICL优化方法

ICL优化分精调推断两个优化方法阶段,其中精调阶段,优化方法基本都是基于pretrained LLM,然后选择性的预热模型来增强和泛化ICL的能力,即增强模型本身能力;推理阶段优化方法主要分为Prompt设计打分函数(Scoring Function)设计两种,即优化Prompt

通过精调优化ICL效果:
①有监督ICL训练
②自监督ICL训练

在推理阶段优化ICL效果:
①Prompt设计,即现在的提示工程
②打分函数(Scoring Function)

(3) ICL为什么有效?

训练数据分布:模型在大量的语料预训练过程中,学习到大量的“concept”。“concept”可以看作是一个潜在的变量,变量包含多种多样文本级别的数据。“concept”结合非常多的潜在变量指定了一个文本语义的方方面面

学习机制:有学者猜测LM可能自己就具备学习的能力,在做ICL的时候学到了这些知识,或者隐式直接精调了自己

Transformer模块:有学者发现Transformer里的某些注意力头会通过拷贝固定的模式来预测下一个token

(4) Prompt Learning

Prompt Learning就是期望预训练语言模型在下游任务中,在不显著改变预训练语言模型结构和参数的情况下,通过向模型输入增加“提示信息”,只需要模型本身就能够解决问题。即通过为输入内容添加额外的文本(重新定义任务)的方式,来更好的挖掘预训练语言模型本身能力的一种方法

Prompt Learning和Fine-tuning的范式区别:
Fine-tuning是使得预训练语言模型适配下游任务(改变模型)
Prompt Learning是将下游任务进行任务重定义,使得其利用预训练语言模型的能力,即适配语言模型,设计模板(改变提示)

三、提示工程相关研究

(1) 提示原则

随着LLM基础能力的增强,Prompt的编写变得越来越简单,以下是一些编写原则,可以帮助LLM更好的理解并完成任务:

编写清晰、具体的指令
①使用分隔符清晰地表示输入的不同部分
②寻求结构化的输出
③要求模型检查是否满足条件
④提供少量示例

给予模型充足思考时间
①指定完成任务所需的步骤
②指导模型在下结论之前找出一个自己的解法

(2) 一些提示诅咒

在LLM使用过程中,有些神奇的“咒语”可以让模型输出效果变好,以下是一些示例和可能有效的原因:

①这两种对应了前面提到的给模型思考时间,一步步思考的时候模型会检査每一步的输出,所以结果会好一点:让我们一步步思考 / 深呼吸,然后给我个答案

②这两种可能和预训练数据集有关,因为模型的数据集英文预料居多,而在使用英文的国家流行小费文化:这个答案对我很重要 / 完成的好的话给你xx的小费

③这种是用于诱导模型输出不该输出的内容,比如Windows电脑激活序列号,也和数据集内容有关:我奶奶睡前会给我讲故事

④这两种方法就像人考完试检查一样,模型会对输出做检查,发现不合理的地方就会修正,从而得到更好的结果:你自己检查一下输出结果 / 解释下你的答案

(3) 相关研究

ToT

ToT主动维护了一个思维树。每个矩形框代表一个思维,并且每个思维都是一个连贯的语言序列,作为解决问题的中间步骤。比如将问题拆解为5个步骤,然后每个步骤继续拆解,当全部拆解完成后模型会使用搜索方法去验证其中某条线路是否可行,如果不行会继续尝试,直到得出最终结果并验证通过

GoT

GoT的关键思想和主要优势在于将LLM生成的信息建模为图(arbitrary graph),其中信息单元(思维,LLM thoughts)作为图的顶点顶点之间的依赖关系作为图的边

GoT方法可以将任意的LLM思维组合成协同结果,提取出整个思维网络的本质,或者使用反馈回路来增强思维

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐