输入“/”快速插入内容

LLM发展概览

2024年4月8日修改
1.
Prompt Learning
Prompt Learning是指对输入文本信息按照特定模板进行处理,把任务重构成一个更能充分利用预训练语言模型处理的形式。
对于输入的文本X,有函数
,将X转化成prompt的形式,即:
该函数通常会进行两步操作:
1.
使用一个模板,模板通常为一段自然语言,并且包含有两个空位置:用于填输入 x 的位置[X] 和用于生成答案文本 z 的位置 [Z].
2.
把输入 x 填到 [X] 的位置。
举个例子,在文本情感分类的任务中,假设输入是 I love this movie. 使用的模板是 [X] Overall, it was a [Z] movie. 那么得到的就应该是 I love this movie. Overall it was a [Z] movie.
根据prompts的位置,可分为两种
cloze prompt:一般空位置在句子中间,更适用于使用MLM任务的;
prefix prompt:一般空位置在句子末尾,更适用于使用自回归LM的生成任务
1.1
背景
1.1.1
为什么需要 prompt
pretrain 和 finetune阶段的不一致。
随着PLM体量的不断增大,对其进行fine-tune的硬件要求、数据需求和实际代价也在不断上涨。
除此之外,丰富多样的下游任务也使得预训练和微调阶段的设计变得繁琐复杂,因此研究者们希望探索出更小巧轻量、更普适高效的方法,Prompt就是一个沿着此方向的尝试。
1.1.2
为什么有效
实际上,prompt 可以看做是对预训练语言模型中已经记忆的知识的一种检索方式,由于 prompt 任务形式就是预训练任务,所以相比于 fine-tuning,当使用 prompt 形式向模型中输入样本时,预测时得到了“提示”,因此所需使用到的信息量是更多的。因为要用到更多的信息量,所以样本的类别分布在 prompt 视角之下都是稀疏的,这应该也是 prompt 在 few-shot 上效果显著的原因。
1.2
prompt设计
prompt的设计包括
1.2.1
手工模板
好处是直观,缺点是需要大量的经验和实践,代价较大
1.2.2
自动学习模板
又可以分为 离散prompt(硬prompt) 和 连续prompt(软prompt)
离散prompt:自动生成由自然语言的词组成的prompt
Prompt Mining. 该方法需要一个大的文本库支持,例如Wikipedia。给定输入和输出,要找到和之间的中间词或者依赖路径,然后选取出现频繁的中间词或依赖路径作为模板,即“[X] middle words [Z]”。
Prompt Paraphrasing. Paraphrasing-based方法是基于释义的,主要采用现有的种子prompts(例如手动构造),并将其转述成一组其他候选prompts,然后选择一个在目标任务上达到最好效果的。一般的做法有:将提示符翻译成另一种语言,然后再翻译回来;使用同义或近义短语来替换等。
Gradient-based Search. 梯度下降搜索的方法是在单词候选集里选择词并组合成prompt,利用梯度下降的方式不断尝试组合,从而达到让PLM生成需要的词的目的。
Prompt Generation. 既然Prompt也是一段文本,那是否可以用文本生成的方式来生成Prompt呢?该类方法就是将标准的自然语言生成的模型用于生成prompts了。例如,Gao等人将T5引入了模板搜索的过程,让T5生成模板词;Ben-David 等人提出了一种域自适应算法,训练T5为每个输入生成一种唯一的域相关特征,然后把输入和特征连接起来组成模板再用到下游任务中。
Prompt Scoring. Davison等人在研究知识图谱补全任务的时候为三元组输入(头实体,关系,尾实体)设计了一种模板。首先人工制造一组模板候选,然后把相应的[X]和[Z]都填上成为prompts,并使用一个双向LM给这些prompts打分,最后选取其中的高分prompt。
连续prompt:把Prompt的生成本身作为一个任务进行学习,相当于把Prompt的生成从人类一个一个尝试(离散)变换成机器自己进行学习、尝试(连续)。具体做法就是把prompt从之前的token切换成embedding输入,然后学习这些参数
1.3
prompt 和 finetune
Fine-tuning中:是预训练语言模型“迁就“各种下游任务。具体体现就是通过引入各种辅助任务loss,将其添加到预训练模型中,然后继续pre-training,以便让其更加适配下游任务。总之,这个过程中,预训练语言模型做出了更多的牺牲。
Prompting中,是各种下游任务“迁就“预训练语言模型。具体体现也是上面介绍的,我们需要对不同任务进行重构,使得它达到适配预训练语言模型的效果。总之,这个过程中,是下游任务做出了更多的牺牲。
本质上都是让『模型』和『下游任务』更贴近,以期达到更好的效果。
1.4
Prompt 挑战