Making Pre-trained Language Models Better Few-shot Learners

  陈丹琦团队提出的一种改进GPT-3的模型,其可以扩展到任意的预训练模型上,并可以在小样本情景下更好的进行微调。

简要信息:

序号

属性


1

模型名称

LM-BFF

2

所属领域

自然语言处理;文本分类

3

研究内容

预训练语言模型;Prompt框架

4

核心内容

Prompt-based Fine-tuning

5

GitHub源码

​https://github.com/princeton-nlp/LM-BFF​

6

论文PDF

​https://arxiv.org/pdf/2012.15723v2.pdf​

核心要点:

  • Template的构建:基于T5模型生成和排序方法生成离散template;
  • Verbalizer的构建:基于排序搜索方法;
  • 通过交叉验证方法获得最优的template和verbalizer;

1、动机

  • GPT-3在小样本上进行微调获得了很大的效果,但其参数太多,不适用于真实场景,因此受到GPT-3的启发,我们提出一种LM-BFF(小样本微调预训练模型),主要包括:(1)基于提示(prompt)的微调方法,且提出自动生成提示模板的方法;(2)动态选择样本示例。
  • 根据GPT-3的思想,我们使用prompt-based微调方法。prompt-based方法将下游的任务视为一种mask language model。因此其需要为这些prompt生成mask标签,GPT-3提供的是人工标注方法,可能会由于一定的baise导致陷入局部最优问题,因此我们选择使用T5模型来自动创建prompt模板
  • 另外,我们也采用in-context的微调方法,即随机从语料中选择32个样本,直接拼接到输入的句子上。然而,可能存在两个问题:句子长度可能会超过一定的限制;从不同类中随机混合的样本可能会导致很难训练。为了解决这个问题,我们提出一种refined策略,对于每一个输入句子,随机从每一个类中随机挑选一个样本,为了避免第二个问题,则事先计算好句子相似度,只在相似度高的样本中挑选。

2、prompt-based fine-tuning

  在标准的微调方案中,通常输入句子为 [CLS]sentence1[SEP]或者成对的句子 [CLS]sentence1[SEP]sentence2[SEP],然后在[CLS]部分添加一个额外的分类器(线性层+softmax)。这种方法会引入新的参数,且在训练过程中会导致局部最优。

  一种缓解的方法是,采用prompt-based fine-tuning,将下游任务视为一种mask language model的auto-completion任务。例如输入的句子是:

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_搜索

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_预训练模型_02

  当作为分类任务时:

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_搜索_03

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_预训练模型_04 时,其提示prompt中[MASK]为对应标签 论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_搜索_05 的标签词 论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_搜索_06 时的概率。其中预测 论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_搜索_05 的概率转化为预测其映射的标签词 论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_搜索_06

  作者发现,生成不同的模板或不同的标签词,都会对预测的结果产生很大的影响,如图所示:

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_sed_09


  例如。对于同一个标签词,如果prompt的模板不同(删除某一个标点符号),会产生较大的影响;或者当选择不同的标签词时,对预测的结果也会产生影响。作者归结于这是人工设计模板和标签词的缺陷。因此作者提出一种自动创建模板的方法。

3、Automatic Prompt Generation

自动选择label words

  通过验证集的方法,对所有候选的标签词进行验证,挑选输出概率最高的:

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_搜索_10

自动生成模板

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_预训练模型_11

  模板生成方法步骤(如下图所示):
(1)给定获得的候选标签词(例如great或terrible等可以作为二分类任务中代表的词);
(2)并在标签词前后添加填充位或(作者列出了三种填充位的方法,如上图),然后将其喂入T5模型中,自动为和生成序列。
(3)最后将标签词(great或terrible)转换为[MASK]标签,形成多个模板
(4)采用集束搜索来解码生成多个候选模板,然后对每一个候选模板利用dev集微调、选择其中一个最佳模板。

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_相似度_12

4、Fine-tuning with demonstrations

  除了引入prompt外,作者还加入了一些in-context信息。这里也是参考GPT-3模型。GPT-3采用添加上下文样本示例进行微调,其随机挑选32个训练样本,以上下文的形式直接拼接到输入样本句子上,其存在两个问题:

  • 样本示例的数量会受到模型最大输入长度的限制;
  • 不同类型的大量随机示例混杂在一起,会产生很长的上下文,不利于模型学习。
    boke

in-context demonstration方法:
  对于每一个输入句子 论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_预训练模型_04,从训练样本中的每一类随机采样一个样本,并得到该类的代表性的标签词,然后通过T5为其生成一个模板,并与该样本拼接形成prompt。每个类都会得到这样的prompt,全部与输入样本拼接,拼接后如下图所示。

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_相似度_14

  在挑选时,作者发现只需要对每一个类挑选一个样本即可,而挑选多个发现效果没有提升。另外为了保证挑选出来的句子与输入句子更加相似,作者事先对输入句子与每个样本计算了余弦相似度,并取前50%的样本中随机挑选。

实验效果

作者在诸多个数据集上进行了测试,数据集如图所示:

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_sed_15


实验结果如下:

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_预训练模型_16

论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_sed_17

作者进行了大量的实验,此处只列出一个针对小样本场景下的,基于prompt和in-context的微调方法(LM-BFF)与标准的微调方法对比,可知,在只有少量样本(数量 论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)_预训练模型_18


5、总结

优点:
(1)提出prompt-based微调策略,并自动化生成prompt模板;
(2)动态选择样本示例,用于in-context训练。
缺点:
(1)LM-BFF仍落后基于全量标注数据的标准微调方法
(2)仅适用少量类别,句子模板长度受限等

相关文献:How many Data Points is a Prompt Worth?

参考博客:​​【NAACL21】老板让我用少量样本 finetune 模型,我还有救吗?急急急,在线等!…​​