赞
踩
最近去参会,看到了大量关于Prompt相关的论文,或者说跟NLP NLU相关的新论文或多或少都使用到了Prompt learning的一些思想或者设置。由于本人主业不是是做NLP的,所以对NLP顶会的这一现象觉得很有意思,趁闲暇学习了一下Prompt learning。 网上讲解的帖子很多,我整理了一些帖子的核心内容,也写一下我自己在学习过程中的感悟。
-----手动分割----
这里引入刘鹏飞大佬的的观点,他在论文中提到,语言模型在Deep learning 时代,大致经历了四个阶段:
如图所示,NLP语言模型的四个阶段
对比一般的Fine-tuning 范式,我们有:
• 左边是传统的 Model Tuning 的范式:对于不同的任务,都需要将整个预训练语言模型进行精调,每个任务都有自己的一整套参数。
• 右边是Prompt Tuning,对于不同的任务,仅需要插入不同的prompt 参数,每个任务都单独训练Prompt 参数,不训练预训练语言模型,这样子可以大大缩短训练时间,也极大的提升了模型的使用率
关于预训练模型的前三种情况就不赘述了,Prompt Engineering的核心思想,主要就是将已有的下游NLP任务重构成token级的预测任务,在不改变原有的pre-trained LM的前提下(也就是说不进行fine tuning)直接将LM应用的过程,换言之,是在用下游任务适配LM。融入了 Prompt 的模式大致可以归纳成 “Pre-train, Prompt, and Predict”,在该模式中 下游任务被重新调整成类似预训练任务的形式
Prompt 的工作流包含以下4部分,如图:
根据不同的下游任务,我们需要设计不同的Template形式,如图所示:
对于 prompt template,有两种方法来生成,分别为人工设计模板和自动生成模板。
这里需要额外注意的是自动生成模板的两种情况,因为不同的prompts构建对结果的影响非常大(这也是prompt的一个缺陷,从一个炼丹炉跳到了另一个 \doge)。其中,自动生成模板的过程中,包含了一些可训练的部分。
与 prompt engineering 相同,answer engineering 同样有人工设计与自动获取两种方法。
在根据不同的下游任务选取具体的预训练语言模型时,可以分为如下5类:
• autoregressive-models: 自回归模型,主要代表有 GPT,主要用于生成任务
• autoencoding-models: 自编码模型,主要代表有 BERT,主要用于NLU任务
• seq-to-seq-models:序列到序列任务,包含了an encoder 和 a decoder,主要代表有 BART,主要用于基于条件的生成任务,例如翻译,summary等
• multimodal-models:多模态模型
• retrieval-based-models:基于召回的模型,主要用于开放域问答
整个 prompt 的训练分为两部分,LM 的训练和 prompts 的训练。两者都有不训练和训练两种方式,所以就组合为了4种情况:
prompts 没有参数,LM 也不参与训练。
prompts 需要训练,LM 不参与训练 (毕竟 GPT 不是穷人配用的)。
prompts 没有参数,LM 进行微调。
prompts 需要训练,LM 也要进行微调。
这里需要注意的是,根据我们在下游任务上的数据量的不同,我们选择的训练情况也要有所区分。毕竟GPT3的论文title是LMs are Few Shot Learners, 也就是说,这些我们选用的大语言模型,对于下游任务本身就不是数据敏感型的,这些很powerful的LM在使用prompt策略的时候,更多是由于本地无法做finetuning才选取的妥协之策。那么,在这个基础上,少量的下游数据,对应了更少的下游训练,使用frozen LM+Prompts是更为常见的组合。
• Prompt Learning 可以将所有的任务归一化预训练语言模型的任务
• 避免了预训练和fine-tuning 之间的gap,几乎所有 NLP 任务都可以直接使用,不需要训练数据。
• 在少样本的数据集上,能取得超过fine-tuning的效果。
• 使得所有的任务在方法上变得一致
• Fine-tuning 是使得预训练语言模型适配下游任务
• Prompting 是将下游任务进行任务重定义,使得其利用预训练语言模型的能力,即适配语言模型
过去我们使用BERT的时候,我们先预训练一个模型,然后根据不同的任务,准备不同的数据对预训练的模型进行微调。所以你还是需要收集一些下游任务的数据。而GPT-3想要做的就是拿掉微调部分,它想用来直接解决下游任务。那么这样的背景下,Prompt Learning是无比契合GPT3强大的语言建模能力的。也就是说,从原理上,Prompt Learning更多解决的是小样本问题。能完成few-shot甚至zero-shot 任务。
部分内容搬运自:
【1】 什么是 prompt learning?简单直观理解 prompt learning
【2】【NLP】Prompt Learning 超强入门教程
【3】Prompt Learning-使用模板激发语言模型潜能
【4】OpenAI 官方Instruction
【5】Prompt Learning详解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。