Skip to content

Prompt-Tuning 方法入门

目录

  1. 什么是 NLP 四范式

  2. Fine-Tuning 回顾

  3. Prompt-Tuning 技术介绍

  4. 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 的基本思想是采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它。

image-20250507170840307

痛点

  1. 下游任务的目标和预训练的目标差距过大。可能导致过拟合。

  2. 微调过程中需要依赖大量的监督语料等等。

解决方法:Prompt-Tuning, 通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果。

Prompt-Tuning 技术发展介绍

基于 Fine-Tuning 的方法是让预训练模型去迁就下游任务,而基于 Prompt-Tuning 的方法可以让下 游任务去迁就预训练模型,其目的是将 Fine-tuning 的下游任务目标转换为 Pre-training 的任务。

image-20250507170911966

那么具体如何工作呢?我们接下来将以一个二分类的情感分析为例子,进行简单理解:

  • 定一个句子:[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 非常重要的挑战。

image-20250507171058397

Prompt-tunning 技术发展历程

思考总结

  1. NLP 任务四范式?

    答案:1.传统机器学习;2.深度学习模型;3.预训练+fine-tuning; 4.预训练+prompt+预测

  2. 什么是 Fine-Tuning?

    答案:采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它。

  3. Prompt-Tuning 的实现?

    答案:1.构建模版;2.标签词映射;3.训练

Prompt-Tuning 主要方法

Prompt-Tuning 的鼻祖----GPT3

GPT-3 开创性的提出了 In-context Learning 的思想。即无须修改模型即可实现 few-shot、zero-shot 的 learning. 同时引入了 Demonstrate Learning, 即让模型知道与标签相似的语义描述,提升推理能力。

image-20250507171222092

问题

  • 建立在超大规模的预训练语言模型上。模型参数数量通常超过 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)组件训练目标:

p(y|x)=j=1np([mask]j=V(y)|T(x))

目前基于 PVP 框架,最需要关注的问题是如何选择或构建合适的 Pattern 和 Verbalizer . 一种简单的方法是根据特定任务的性质和先验知识人工设计模板。注意:在同样的数据集和训练条件下。选择不同的 Pattern 和 Verbalizer 会产生差异很大的结果。

image-20250507171456951

人工设计方法缺陷

  1. 采用人工构建的方法成本高,需要与领域任务相关的先验知识

  2. 人工设计的 Pattern 和 Verbalizer 不能保证获得最优解,训练不稳定,不同的 PVP 对结果产生的差异明显,方差大。

  3. 在预训练阶段 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 设计:

image-20250507171841742

模板类别

  • 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) 为每一个输入文本假设一个固定前缀提示,该提示由神经网络参数化,并在下游任务微调时进行更新,整个过程中预训练的大模型参数被冻结。

image-20250507172102125

思想

  1. 给定 n 个 tokens, 记作 x1, ...,xn, 通过一个预训练模型对应的 embedding table,可以将 n 个 token 表示为一个向量矩阵 (Xe->Rn\*e).

  2. 将连续模板中的每个伪标记 vi 视为参数,可以通过另一个 embedding table 获得 p 个伪 token 标记为向量矩阵 (Pe->Rp*e).

  3. 将文本和 Prompt 拼接获得新的输入[Pe:Xe]->R(p+n)*e.

  4. 新的输入喂入一个 MLP 获得新的表征。注意,只有 prompt 对应的向量表征参数 (Pe->Rp*e) 会随着训练进行更新。

Prompt Tuning 方法的特点

优点

  1. 大模型的微调新范式。
  2. 模型参数规模大了之后,可以将大模型参数固定,指定附加参数来适配下游任务,而且适配性能基本和全参数微调相当。

缺点

  1. 在小样本学习场景上表现不太行。
  2. 收敛速度比较慢。
  3. 调参比较复杂。

P-Tuning V1 方法(NLU 任务)

P-Tuning 是 2022 年清华在论文《GPT Understands, Too》中提出的微调方法,P-Tuning V1 方法的提出主要是为了解决这样一个问题:大模型的 Prompt 构造方式严重影响下游任务的效果。

image-20250507172332039

解决方法:

P-Tuning 提出将 Prompt 转换为可以学习的 Embedding 层,只是考虑到直接对 Embedding 参数进行优化。

P-Tuning V1 直接对 Embedding 参数进行优化会存在两个挑战:

  • Discretenes(不连续性):对输入正常语料的 Embedding 层已经经过预训练,而如果直接对输入的 prompt embedding 进行随机初始化训练,容易陷入局部最优。

  • Association(关联性分析):没法捕捉到 prompt embedding 之间的相关关系。

    image-20250507172440357

思想:

用 MLP + LSTM 的方式来对 prompt embedding 进行一层处理。

hi=MLP([hi:hi])=MLP([LSTM(h0:i):LSTM(hi:m)])

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".

image-20250507172646202

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 编码之后的向量即可,无需保留编码器