Prompt-Tuning 方法入门
目录
什么是 NLP 四范式
Fine-Tuning 回顾
Prompt-Tuning 技术介绍
Prompt-Tuning 入门方法
NLP 任务四种范式
目前学术界一般将 NLP 任务的发展分为四个阶段,即 NLP 四范式:
第一范式:基于「传统机器学习模型」的范式,如 TF-IDF 特征 + 朴素贝叶斯等机器算法。
第二范式:基于「深度学习模型」的范式,如 word2vec 特征+LSTM 等深度学习算法,相比于第一范式,模型准确有所提高,特征工程的工作也有所减少。
第三范式:基于「预训练模型+fine-tuning」的范式,如 Bert+fine-tuning 的 NLP 任务,相比于第二范式,模型准确度显著提高,模型也随之变得更大,但小数据集就可训练出好模型
第四范式:基于「预训练模型+Prompt+预测」的范式,如 Bert+Prompt 的范式相比于第三范式,模型训练所需的训练数据显著减少
在整个 NLP 领域,整个发展历程是朝着精度更高、少监督,甚至无监督的方向发展的。而 Prompt-Tuning 是目前学术界向这个方向进军最新也是最火的研究成果。
Fine-Tuning 回顾
Fine-Tuning
Fine-Tuning 属于一种迁移学习方式,在自然语言处理(NLP)中,Fine-Tuning 是用于将预训练的语言模型适应于特定任务或领域。Fine-Tuning 的基本思想是采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它。
痛点
下游任务的目标和预训练的目标差距过大。可能导致过拟合。
微调过程中需要依赖大量的监督语料等等。
解决方法:Prompt-Tuning, 通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果。
Prompt-Tuning 技术发展介绍
基于 Fine-Tuning 的方法是让预训练模型去迁就下游任务,而基于 Prompt-Tuning 的方法可以让下 游任务去迁就预训练模型,其目的是将 Fine-tuning 的下游任务目标转换为 Pre-training 的任务。
那么具体如何工作呢?我们接下来将以一个二分类的情感分析为例子,进行简单理解:
定一个句子:
[CLS] I like the Disney films very much. [SEP]
传统的 Fine-tuning 方法:将其通过 BERT 模型获得
[CLS]
表征之后再喂入新增加的 MLP 分类器进行二分类,预测该句子是积极的(positive)还是消极的(negative),因此需要一定量的训练数据来训练。
Prompt-tuning 执行步骤:
- 构建模板 (Template): 生成与给定句子相关的一个含有
[MASK]
标记的模板。例如It was [MASK]
, 并拼接到原始的文本中,获得 Prompt-Tuning 的输入:[CLS] I like the Disney films very much. [SEP] It was [MASK]. [SEP]
. 将其喂入 BERT 模型中,并复用预训练好的 MLM 分类器,即可直接得到[MASK]预测的各个token的概率分布. - 标签词映射 (Verbalizer): 因为[MASK]只对部分词感兴趣,因此需要建立一个映射关系. 例如如果[MASK]预测的词是 “great”,则认为是 positive 类,如果是“terrible”,则认为是 negative 类。
- 训练:根据 Verbalizer,则可以获得指定 label word 的预测概率分布,并采用交叉信息熵进行训练。此时因为只对预训练好的 MLM head 进行微调,所以避免了过拟合问题
- 不同的句子应该有不同的 template 和 label word,因此如何最大化的寻找当前任务更加合适的 template 和 label word 是 Prompt-tuning 非常重要的挑战。
Prompt-tunning 技术发展历程
思考总结
NLP 任务四范式?
答案:1.传统机器学习;2.深度学习模型;3.预训练+fine-tuning; 4.预训练+prompt+预测
什么是 Fine-Tuning?
答案:采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它。
Prompt-Tuning 的实现?
答案:1.构建模版;2.标签词映射;3.训练
Prompt-Tuning 主要方法
Prompt-Tuning 的鼻祖----GPT3
GPT-3 开创性的提出了 In-context Learning 的思想。即无须修改模型即可实现 few-shot、zero-shot 的 learning. 同时引入了 Demonstrate Learning, 即让模型知道与标签相似的语义描述,提升推理能力。
问题
建立在超大规模的预训练语言模型上。模型参数数量通常超过 100 亿,在真实场景中很难应用。
该方法应用于参数规模小的模型,效果会下降很多,因此后续提出 Prompt-Tuning.
GPT3 中提供的 prompt 过于简单,泛化性能低。
PET 模型
PET(Pattern-Exploiting Training)出自《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》(EACL2021),根据论文题目则可以看出,Prompt-Tuning 启发于文本分类任务 ,并且试图将所有的分类任务转换为与 MLM 一致的完形填空。
PET 模型提出两个很重要的组件 (简称 PVP):
Pattern(Templ a te): 记作 T, 即上文提到的 Templ a te,其为额外添加的带有[mask]标记的短文本,通常一个样本只有一个 Pattern, 由于不同的任务、不同的样本可能会有其更加合适的 pattern,因此如何构建合适的 pattern 是 Prompt-Tuning 的研究点之一。
Verbalizer: 记作V, 即标签词的映射,对于具体的分类任务,需要选择指定的标签词(label word).例如情感分析中,我们期望 Verbalizer 可能是(positive 和 negative 是类标签). 同样,不同的任务有其相应的 label word,但需要注意的是,Verbalizer 的构建需要取决于对应的 Pattern, 因此如何构建 Verbalizer 是另一个研究挑战。
基于 Pattern-Verbalizer-Pair(PVP)组件训练目标:
目前基于 PVP 框架,最需要关注的问题是如何选择或构建合适的 Pattern 和 Verbalizer . 一种简单的方法是根据特定任务的性质和先验知识人工设计模板。注意:在同样的数据集和训练条件下。选择不同的 Pattern 和 Verbalizer 会产生差异很大的结果。
人工设计方法缺陷
采用人工构建的方法成本高,需要与领域任务相关的先验知识
人工设计的 Pattern 和 Verbalizer 不能保证获得最优解,训练不稳定,不同的 PVP 对结果产生的差异明显,方差大。
在预训练阶段 MLM 任务并非完全按照 PVP 的模式进行训练的,因此人工构建的 Pattern 和 Verbalizer 使得 Prompt-Tuning 与 MLM 在语义和分布上依然存在差异。
因此如何能够自动地挑选合适的 PVP? 本次课程主要着重介绍构建 Pattern 的方法:Prompt-Tuning. 接下来我们根据使用场景的不同,分别介绍几种成熟的 Prompt-Tuning 方法。
Prompt-Oriented Fine-Tuning
Prompt-Oriented Fine-Tuning 训练方法的本质是将目标任务转换为适应预训练模型的预训练任务,以适应预训练 模型的学习体系。
情感分析任务为例:
BERT Fine-Tuning
Fine-Tuning 流程:将训练文本经过 Bert 编码后,生成向量表征,再利用该向量表征,连接全连接层,实现最终的情感类别识别,这种方式存在一个显式的弊端:预训练任务与下游任务存在 gap.
Prompt-Oriented Fine-Tuning
基本流程:构建 prompt 文本:
It was [MASK].
,将 prompt 文本与输入 text 文本text = The film is attractive.
拼接生成:It was [MASK].The film is attractive.
,输入至预训练模型中,训练任务目标和 MLM 任务的目标一致,即识别被[MASK]
掉的词。
Prompt-Oriented Fine-Tuning 方法中,预训练模型参数是可变的,本质是 Prompt-Tuning+Fine-Tuning 的结合体。该方法在 Bert 类相对较小的模型上表现较好,但是随着模型越来越大,如果每次针对下游任务,都需要更新预训练模型的参数,资源成本及时间成本都会很高,因此后续陆续提出了不更新预训练模型参数,单纯只针对 prompt 进行调优的方法。
针对 Prompt 调优方法的分类:Hard Prompt 和 Soft Prompt
常见下游任务的 Prompt 设计:
模板类别
Hard Prompt
离散提示:是一种固定的提示模板,通过将特定的关键词或短语 (真实的文本字符串) 直接嵌入到文本中,引导模型生成符合要求的文本。
特点:提示模板是固定的,不能根据不同的任务和需求进行调整。
缺陷:依赖人工,改变 prompt 中的单个单词会给实验结果带来巨大的差异。
Soft Prompt
连续提示:是指通过给模型输入一个可参数化的提示模板,从而引导模型生成符合特定要求的文本。
特点:提示模板中的参数可以根据具体任务和需求进行调整,以达到最佳的生成效果。
优点:不需要显式地指定这些模板中各个 token 具体是什么,而只需要在语义空间中表示一个向量即可。
接下来,我们主要针对 Soft Prompt 方式进行讲述
Soft Prompt 理解
基于 Soft Prompt, 不同的任务、数据可以自适应地在语义空间中寻找若干合适的向量,来代表模板中的每一个词,相较于显式的 token,这类 token 称为 伪标记(Pseudo Token) .下面给出基于连续提示的模板定义:
假设针对分类任务,给定一个输入句子 x,连续提示的模板可以定义为
T=[x],[v1],[v2],...,[vn][MASK]
:其中[vn]
则是伪标记,其仅代表一个抽象的 token,并没有实际的含义,本质上是一个向量。
总结来说:Soft Prompt 方法,是将模板变为可训练的参数,不同的样本可以在连续的向量空间中寻找合适的伪标记,同时也增加模型的泛化能力。因此,连续法需要引入少量的参数并在训练时进行参数更新,但预训练模型参数是不变的,变的是 prompt token 对应的词向量(Word Embedding)表征及其他引入的少量参数。
接下来,我们将基于 Prompt-Tuning 讲解三种典型方法:
Prompt Tuning 方法 (NLG 任务)
Prompt Tuning 是 2021 年谷歌在论文《The Power of Scale for Parameter-Efficient Prompt Tuning》中提出的微调方法,该方法基于 T5 模型 (最大参数 11B) 为每一个输入文本假设一个固定前缀提示,该提示由神经网络参数化,并在下游任务微调时进行更新,整个过程中预训练的大模型参数被冻结。
思想
给定 n 个 tokens, 记作
x1, ...,xn
, 通过一个预训练模型对应的 embedding table,可以将 n 个 token 表示为一个向量矩阵(Xe->Rn\*e)
.将连续模板中的每个伪标记 vi 视为参数,可以通过另一个 embedding table 获得 p 个伪 token 标记为向量矩阵 (Pe->Rp*e).
将文本和 Prompt 拼接获得新的输入
[Pe:Xe]->R(p+n)*e
.新的输入喂入一个 MLP 获得新的表征。注意,只有 prompt 对应的向量表征参数
(Pe->Rp*e)
会随着训练进行更新。
Prompt Tuning 方法的特点
优点
- 大模型的微调新范式。
- 模型参数规模大了之后,可以将大模型参数固定,指定附加参数来适配下游任务,而且适配性能基本和全参数微调相当。
缺点
- 在小样本学习场景上表现不太行。
- 收敛速度比较慢。
- 调参比较复杂。
P-Tuning V1 方法(NLU 任务)
P-Tuning 是 2022 年清华在论文《GPT Understands, Too》中提出的微调方法,P-Tuning V1 方法的提出主要是为了解决这样一个问题:大模型的 Prompt 构造方式严重影响下游任务的效果。
解决方法:
P-Tuning 提出将 Prompt 转换为可以学习的 Embedding 层,只是考虑到直接对 Embedding 参数进行优化。
P-Tuning V1 直接对 Embedding 参数进行优化会存在两个挑战:
Discretenes(不连续性):对输入正常语料的 Embedding 层已经经过预训练,而如果直接对输入的 prompt embedding 进行随机初始化训练,容易陷入局部最优。
Association(关联性分析):没法捕捉到 prompt embedding 之间的相关关系。
思想:
用 MLP + LSTM 的方式来对 prompt embedding 进行一层处理。
P-tuning 固定 LLM 参数,利用多层感知机 (MLP) 和 LSTM 对 Prompt 进行编码,编码之后与其他向量进行拼接之后正常输入 LLM.
注意,训练之后只保留 Prompt 编码之后的向量即可,无需保留编码器。
P-Tuning 的特点
与 Prompt-Tuning 的区别
1、Prompt Tuning 是将额外的 embedding 加在开头,看起来更像是模仿 Instruction 指令;而 P-Tuning 的位置则不固定。
2、Prompt Tuning 不需要加入 MLP 来参数初始化;而 P-Tuning 通过 LSTM+MLP 来初始化。
P-Tuning V2
P-Tuning V2 是升级版本,主要解决 P-Tuning V1 在小参数量模型上表现差的问题。详细信息可参考《[P-Tuning v2:Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks".
P-Tuning v2 方法的核心思想:在模型的每一层都应用连续的 prompts, 并对 prompts 参数进行更新优化。同时,该方法也是针对 NLU 任务优化和适配的。
思考总结
1、什么是 Prompt-Tuning?
答案:通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果。
2、PET 模型的主要组件?
答案:Pattern(模板) 与 Verbalizer(标签词映射).
3、P-tuning V1 的核心思想?
答案:P-tuning 固定 LLM 参数,利用多层感知机 (MLP) 和 LSTM 对 Prompt 进行编码,编码之后与其他向量进行拼接之后正常输入 LLM.
注意,训练之后只保留 Prompt 编码之后的向量即可,无需保留编码器