NLP第四范式:连续性Prompt

2022-11-04 11:38:03 浏览数 (1)

前面一篇文章主要讲到NLP领域上的四种演变范式,同时引入了第四范式“Prompt”的概念。具体可以会看这里:

Prompt不仅仅使用特定的模板构建输入,同时也能够使用连续性Prompt进行输入。下面介绍两篇连续性领域的Prompt论文。

《GPT Understands, Too》

1

摘要

在自然语言理解(NLU)任务上,GPT模型一般来说效果不怎么好。但本文使用了新提出的P-tuning方法后,在GPT模型效果能够媲美BERT模型效果。同时也发现,P-tuning也能够在few-shot上提升BERT模型的效果。

2

Introduction

PLM预训练模型有三种不同的类别: (1)无方向语言模型:GPT (2)双向语言模型:BERT (3)混合语言模型:XLNET

在很长一段时间,研究者观察到GPT模型相比其他两种类别模型,在自然语言理解(NLU)任务上表现比较差,因此不太适合进行fine-tuning任务。一些研究者在GPT-3模型上使用Prompt方法,few-shot和zero-shot任务都得到了巨大的提升。

但是传统的Prompt方法有很明显的缺点:

  • 需要人工制定Prompt模板,因此需要大量的验证集数据进行验证。
  • 近期的Prompt方法聚焦在自动寻找离散prompts(discrete prompts),但是神经网络是内在连续型的,离散的prompts只能找到局部最优解。

这篇论文中,主要提出P-tuning去自动搜索prompts模板。使用P-tuning在两个NLU任务上: (1)LAMA:固定模型参数后,GPT能够提升26.2%~41.1% (2)SuperGLUE:GPT模型比BERT模型效果要好。

论文贡献: (1)GPT在使用了P-tuning下,在自然语言理解中效果要比BERT好。这证明了,GPT结构在自然语言理解上具有较大的潜在能力 (2)提出来的P-tuning 能够在few-shot和监督学习中提升GPT和BERT模型效果。

3

Method:P-tuning

  • 给定一个句子:“The capital of Britain is [Mask]”,其中主要内容"Britain",目标词语为"[MASK]"。然后让模型填空,预测[MASK]词语。
  • 左图:传统的离散搜索prompt,主要更新输入词语的embedding
  • 右图:这篇文章提出的P-tuning方法,没有直接更新embedding,而是利用Prompt Encoder生成虚假标签 ,用来代替真实词语
  • 实际上公式就变成这样:

在优化方法上,论文认为存在两个挑战:

1) 离散性:经过预训练后,原来的单词embedding已经变得高度离散。如果用随机分布进行初始化,然后用随机梯度下降(SGD)寻找prompt模板,那么优化器很容易陷入局部极小。

2)关联性:另一个问题是,embedding 应该相互依赖,而不是相互独立。需要一些机制来将提示embedding相互关联。

为了解决上面两个问题,论文中使用了LSTM模型更新embedding 参数。同时添加一些额外的词语作为提示,比如句子“The capital of Britain is [Mask]”,“capital”也是一个关键词语,因此保留下来。

4

Experiments

  • MP:手工prompt
  • MP FT:手工prompt fine-tuning
  • PT:P-tuning
  • 从实验结果上,使用了P-tuning方法都比MP方法效果要好,在Bert模型上,P@1能够提升14.

也对比了一些手工Prompt模板,P-tuning方法表现得更好:

《P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》

1

摘要

Prompt tuning,是一种在固定语言模型上进行连续性模板微调的方法,它能够减少训练时每项任务的存储和内存使用。但是以前的工作认为,在正常大小的预训练模型(模型比较大的情况下)上,prompt方法不能够起到很好的作用。

同时该论文认为,目前存在的prompt方法上,在序列标注任务上缺乏有效性和全局性。因此本论文在Prompt tuning基础上提出了V2版本。

在新的方法上,发现适当优化prompt能够在模型规模和NLU任务中达到平衡,而这种方法仅仅需要调整0.1%~3%的参数,就能够媲美fine-tuning的效果。

2

Introduction

对于NLU任务来说,fine-tuning训练更新大量的模型参数。虽然它能够获得很好的效果,但是在训练的过程中需要耗费内存,这是因为fine-tuning方法需要计算梯度和保存更新模型时需要的参数。

近期新起的Promp方法,会冻结所有的预训练任务,同时使用自然语言模版来调整语言模型。例如,对于一个情感分类任务来说,预测词语[MASK]为:"Amazing movie!",手工模版为"The movie is [MASK]",这样做的目的可以提示预训练模型去预测该电影的情感倾向。

Prompt不需要训练和保存所有的参数,只需要加入手工模板就可以。然而,现有的离散型prompt比目前的fine-tuning要差。

Prompt tuning是一种在连续性prompts进行微调的算法。只有连续性的prompts才需要进行参数更新。但是prompt tuning只能在大模型下起作用,如果模型参数小于1千万,则模型效果还是会比fine-tuning要差。如下图所示:

从图上可以看出,该论文提出的P-tuning v2版本,在小模型和大模型下都能够媲美fine-tuning。

论文主要贡献:

  • 改进了P-tuning方法,提出了v2版本,在每一层神经网络下嵌入连续性prompt
  • P-tuning v2版本在小模型下,效果能够达到和fine-tuning一样

3

模型

现有的prompt有一定缺点:

(1)不能有效使用在小模型上:超过1千万的参数模型,使用prompt能够达到fine-tuning的水准。但是如果在100M或1B的模型上使用,则会变得较差。

(2)在一些任务上没有提升效果:比如在序列标注任务上

如上图所示,P-tuning只用在输入层的embedding中,这会有两个问题:首先,由于序列长度的限制,可调参数的数量受到限制。其次,输入embedding对模型预测有相对间接的影响

为了解决上面的问题,v2版本主要在每一层增加前缀tokens。这样,在可调参数上增加到0.1%~3%,而且可以在每一层直接影响模型

4

实验数据

使用数据集SuperGLUE,来验证P-tuning v2在NLU任务上的能力。

同时还使用了其他的序列标注任务,来验证v2版本在这些任务上的能力:

(1)命名实体识别

(2)QA

(3)语义角色标记

从图上可以看到,在小模型下(参数量在335M左右),PT(prompt tuning)方法效果要比fine-tuning差很多,但是PT2方法明显能够接近fine-tuning方法,而这仅仅使用了少量参数进行微调。

同时还验证了两种微调方法:一种是自顶层到底层开始,加入prompt,另一种则是从底层开始到顶层加入prompt。从上图可以发现,自顶层到底层的方法效果要更好。

本期具体介绍了连续性Prompt,相信大家都对其有具体的概念了。下一期可能再介绍一下离散型Prompt,尽请期待。

我是leo,我们下期再见~

0 人点赞