论文笔记:Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference

前言

论文:https://arxiv.org/pdf/2001.07676.pdf%EF%BC%89

代码:https://github.com/timoschick/pet

摘要

一些NLP任务通过使用预先训练好的带有“任务描述”的语言模型,可以以完全无监督的方式解决。虽然这种方法的性能不如监督方法,但本篇工作中表明,这两种思想可以结合起来:作者引入了Pattern-Exploiting Training(PET),一种半监督的训练过程,它将输入示例重新定义为完形句式短语,以帮助语言模型理解给定的任务。然后使用这些短语为大量无标签的样本分配软标签。最后,对得到的训练集进行标准监督训练。对于一些任务和语言,PET在低资源环境下的表现远远优于监督训练和强半监督方法。

模型架构

图1 PET for sentiment classification

PET的工作过程分为三个步骤:

首先,针对每个模式,在小训练集T上对单独的PLM进行微调。

然后,使用所有模型的集合对一个大型的无标签数据集D进行软标签标注。

最后,在软标记数据集上训练标准分类器。

作者还设计了iPET,这是PET的迭代变体,该过程随着训练集规模的增加而重复。

Pattern-Exploiting Training

参数概况

M为预训练语言模型,词表为V,mask token包含在V中,任务A的标签集合L,输入序列x包含k个短语或句子。

定义一个模型函数(pattern)P,将x作为输入,输出包含一个mask token的短语或句子P(x),输出可以看作是一个完形填空。

定义一个映射函数(verbalizer)v,L—>V将每个标签映射到M的词汇表中的一个单词。

将(P, v)称为pattern-verbalizer pair(PVP)。

PVP Training and Inference

给定某个输入x,我们定义标签l∈L的分数为:

并使用softmax获得标签上的概率分布:

使用交叉熵作为微调的损失。

Auxiliary Language Modeling

只使用少量样本进行训练,可能发生灾难性遗忘。对于基于PVP的PLM微调,核心仍然是一个语言模型,我们通过使用语言建模作为辅助任务来解决这个问题。LCE表示交叉熵损失,LMLM表示语言建模损失,计算最终损失为:

LMLM通常比LCE大得多,令α = 10−4

Combining PVPs

该方法面临的一个关键挑战是,在缺乏大型验证集的情况下,很难确定哪个PVPs表现良好。为了解决这个问题,使用了类似于知识蒸馏的策略。定义一个PVPs的集合P,直观地理解给定任务A的意义,按如下方法使用这些PVPs:

  1. 为每个p∈P微调一个单独的语言模型Mp
  1. 使用经过优化的模型的集合M = {Mp | p∈P}来标注集合D(未标注数据集合)。将每个样本x∈D的非归一化类分数合并为:

使用softmax将上述分数转换为概率分布q。使用T = 2得到适当的软分布。所有(x, q)对收集在一个(软标记的)训练集TC中。

  1. 在TC上,使用PLM微调得到模型C。经过优化的模型C作为对A的分类器。
图2 Schematic representation of PET (1-3) and iPET (a-c)

Iterative PET (iPET)

将所有单个模型的知识蒸馏到单个分类器中——意味着它们不能相互学习。由于有些模式的性能可能比其他模式差得多,因此最终模型的训练集TC可能包含许多标签错误的示例。为了弥补这个缺点,设计了iPET,它是PET的迭代变体。iPET的核心思想是在不断增大的数据集上训练几代模型。过程如图2所示。

  1. 对于每个模型,其他模型的一个随机子集通过标注D中的样本生成一个新的训练集。
  1. 使用更大的、特定于模型的数据集训练一组新的PET模型。
  1. 前两个步骤重复k次,每次都将生成的训练集的大小增加d倍。

经过训练k代PET模型,我们使用Mk创建TC和训练模型C在基本的PET。

结论

为预训练的语言模型提供任务描述可以与标准的监督训练相结合。PET方法包括定义成对的完形填空问题模式(patterns)和语言表达器(verbalizers),这有助于利用预训练的语言模型中包含的知识来完成下游任务。对所有模式-语言化器对的模型进行微调,并使用它们创建大型的带注释的数据集,标准分类器可以在这些数据集上进行训练。当初始训练数据量有限时,PET比标准监督训练和强半监督方法有很大的改进。

论文笔记:Differentiable Prompt Makes Pre-trained Language Models Better Few-shot Learners

前言

论文:https://arxiv.org/pdf/2108.13161.pdf

代码:https://github.com/zjunlp/DART

动机

优化prompt是提高预训练语言模型在小样本学习中是很有必要的。离散标记的模板可能陷入局部最优,并且不能充分表示特定的类别。为了提高prompt方法在各个领域的适用性,论文提出了可微分提示(DifferentiAble pRompT),简称DART,可以减少提示工程的要求。

模型框架

利用语言模型中的一些参数作为模板和标签标记,并通过反向传播对它们进行优化,而不引入模型之外的其他参数。因为有限样本的微调可能会受到不稳定性的影响。进一步引入了一个辅助流畅性约束对象,以确保prompt嵌入之间的关联。减少提示工程(包括模板和标签)和外部参数优化。此外,该算法可以使用任何预训练的语言模型并可扩展到广泛的分类任务。

模型架构

Differentiable Template Optimization

由于语言token是离散变量,用token搜索找到最优提示并不简单,很容易陷入局部极小值.为了克服这些限制,作者利用伪标记(pseudo tokens)构造模板,然后用反向传播优化它们。可微模板优化可以获得超越原始词汇V的表达模板。将模板映射为如下形式:

DART利用辅助流畅性约束目标将提示嵌入彼此关联起来,从而促进模型专注于上下文表示学习。

Differentiable Label Optimization

暴力强制标签搜索:(1)由于验证集通常非常大,需要进行多轮评估,计算量大且繁琐。(2)可扩展性差,随着类数的增加呈指数型增长,因此很难处理。此外,类别的标签包含丰富而复杂的语义知识,一个离散的标记可能不足以表示这些信息。

DART将Yj映射到一个连续词汇空间,如下所示:

为了避免优化任何外部参数,{h1,…,hm,..,hm+n}替换为未使用的token

Training Objectives

由于提示模板中的伪标记必须彼此相互依赖,作者引入了辅助的流畅性约束训练,而没有优化任何其他参数。总体而言,有两个目标:the class discrimination objective(LC)和the fluency constraint objective(LF)

Class Discrimination Objective

是对句子进行分类的主要目标,CE是交叉熵损失函数。

Fluency Constraint Objective

为了确保模板标记之间的关联,并维护从PLMs继承来的语言理解能力,作者利用MLM的流畅性约束对象,对输入语句中的一个标记进行随机掩码,并进行掩码语言预测。该语言模型可以通过模板标记之间的丰富关联获得更好的上下文表示。

为了小样本微调的不稳定性,作者联合优化模板和标签。

结论

论文介绍了一种简单而有效的优化方法DART,它改进了fast-shot learning预训练语言模型。与传统的优化方法相比,所提出的方法可以在小样本的情况下产生令人满意的改进。该方法还可用于其他语言模型(如BART),并可扩展到其他任务,如意图检测和情感分析。