Zero-Shot Text Classification with Self-Training

1. 论文介绍

介绍
论文录取EMNLP2022
发布单位IBM
论文链接2210.17541.pdf
论文源码github地址

2. 摘要及背景介绍

2.1 摘要

zero-shot text classification(zero-shot TC)已经逐渐成为研究的重点,并且,自然语言推理数据集上微调的模型已被广泛用作zeroshot TC任务。但是NLI模型可能会因为不熟悉target task而导致不稳定和性能问题,作者提出一个即插即用(plug-and-play)的方法,使用self-training方法来弥合这一差距,只需要类名以及未标记的数据集,而不需要领域专业知识或反复试验。我们证明,根据最有信心的预测对零射击分类器进行微调可以在各种文本分类任务中获得显着的性能提升,大概是因为self-training使zero-shot模型适应了当前的任务。

2.2 背景介绍

pretraining-finetuning范式已经取得了很大的成功,但是为了适配下游任务,往往需要大量的标签数据集作为训练集,但是,为每个目标任务收集标记示例的需求仍然是一个障碍,限制了语言模型在实践中的大规模使用。因此,general-purpose zero-shot model 希望解决许多不同的任务而不需要标记数据,这也是最近几年的研究重点之一,并且提出了新的范式,旨在利用大型模型的语言理解能力来实现零镜头场景。

蕴含模型的例子如下图所示,将原句子称为一个premise(前提),并提供一个模板(prompt),称为Hypothesis(假设),并预测不同类别下的蕴含分数,将文本分类问题转化为蕴含模型。

(self-trianing:一种传统的半监督学习方法)
self-training:使用标注数据训练一个teacher模型,然后使用teacher模型未标注数据进行打标签操作,形成伪标注数据,然后选取未标注数据中置信度最高的数据加入标签数据集,并从未标注数据集中去除,使用新的标签集合重新进行训练,构成student模型,不断重复,算法如下所示。

2.3 Self-Training of Zero-Shot Text Classifiers

改小为文中第二章。这一章主要介绍了他文章的动机以及使用self-training进行zero-shot TC的优点。
首先介绍了self-training算法,算法流程如上面图所示,这里就不阐述了。
作者认为:使用self-trainin进行zeroshot TC 的效果比一般的数据增强和向目标域靠拢的效果更好,因为零射击模型从未直接暴露于应执行的任务,泛化性能会更好,更稳定。将self-trainin与蕴含模型相结合有两个优点:
Exposure to class names:
通过self-training获得的伪标记示例可以迫使零射击模型将类名彼此对比,并学习测试一下时间所需的更细微的区别。作为一个简单的例子,“guilt” 和 “shame” 通常被认为是同义词,但在我们的一个数据集中表示两个不同的类。明确暴露于甚至弱标记的数据对于学习这种区别可能是必不可少的。
Exposure to the task and template/prompt:
基于包含的模型最初是在一般的NLI数据集上进行训练的,这些数据集旨在捕获广泛而多样的文本包含实例。利用这些模型进行文本分类意味着它们应该专注于较窄的包含类型集,即那些映射到所考虑的文本分类问题的类型。此外,将这些模型作为零射击分类器的应用涉及使用通用假设模板,这些模板旨在根据文本包含来制定下游分类任务

3.研究方法

对于多类分类任务,我们考虑基于包含的zero-shot M,该模型具有类名名称C,对于每一个c ∈ C,模板预测结果为“This example is c”。(蕴含模型)
在蕴含模型的基础上,我们进一步假设一个未标记的示例U的集合是可用的。遵循蕴含模型方法,我们根据M给出的预测从U生成伪标记示例。首先,对于每个u ∈ u和每个类名c ∈ C,我们获得Suc,u的置信得分为c构造的假设 (图1中的蕴涵得分)。换句话说,Suc代表将u分配给c的置信度。

3.1 Selecting positive examples

Best-versus-Second-Best方法
为此,我们首先考虑U中c获得最高包含分数的所有示例
S uc > S u c ′ ,∀ c ′≠cS_{u c}>S_{u c^{\prime}}, \forall c^{\prime} \neq c Suc>Suc,c=c,接下来,我们将注意力集中在使排名最高的班级和第二高的班级之间的增量最大化的示例上,这样的例子对应于离决策边界最远的点,从而对应于模型最确定的点。假设c和 c′ c^{\prime}c分别是u的排名第一和排名第二的类,
δ uc = S uc − S u c ′ \delta_{u c}=S_{u c}-S_{u c^{\prime}} δuc=SucSuc
接下来,对于给定的c类,我们按照 δ u c \delta_{u c}δuc对U中的所有示例进行排序,其中c是排名最高的类,并选择前n个示例作为c类的正示例。
总结:为了利用这些伪标记的示例作为包含模型M的训练示例,以示例为前提,将类名合并到假设模板中,并将前提-假设对分配了需要伪标签。

3.2 Selecting negative examples

四种负采样的方法:

正例子:The example is c.(c=joy)
***Contrast-random:***对于一个基于C的假设的每一个蕴含对,添加一个矛盾标签的对,与之有相同的前提和假设,其中C被随机替换。
负例子:The example is c.(c=guilt or anger)
Contrast-closest:
对于一个基于C的假设的每一个内因对,添加一个带有矛盾标签的对,它由相同的前提和一个假设组成,在这个假设中,C被这个前提的内因得分第二高的类所取代.
负例子:The example is c.(c=guilt ) guilt的分数第二高
Contrast-furthest:
对于一个基于C的假设的每一个蕴涵对,添加一个带有矛盾标签的对,它由相同的前提组成,以及一个假设,在这个假设中,C被这个前提的蕴涵得分最低的类所代替。
负例子:The example is c.(c=anger ) anger的分数最低
Contrast-all:
对于基于C的假设的每个Entail对,添加带有矛盾标签的C-1对,所有这些对都具有相同的前提和假设,其中C被其他目标类C=C中的每一个替换。请注意,对于具有大量类的数据集,此设置会显著增加训练集的大小,并相应地增加运行时间。
负例子:The example is c.(c=guilt and anger) 会有|C-1|个负例子

完整的训练数据,包括正例子和负例子的伪标记示例,被用来微调一般的包含模型M,产生一个适应目标任务的包含零镜头模型M’。 我们在迭代中继续这个过程:基于M的预测生成一个新的伪标记数据集,然后对其进行微调以生成M’’,以此类推。

3.3 Balancing noise and informativeness with token masking

self-training最终平衡的条件比较苛刻。 一方面,伪标签噪声大。 对噪声数据的训练可能导致过度自信和错误的传播。 因此,一个标准的自我训练实践是采取置信度最高的预测。 但是,挑选置信度最高的就有一个问题,置信度最高例子更可能是简单的、信息量较少的例子,因此对培训的用处较小。(直接决定了训练的效果怎么样)
对于zero-shot TC中,如何进行权衡变得非常重要,一方面,为了减少噪音,要提高置信度;另一方面,要避免获取训练集上简单的,信息量较少的实例。
作者使用了Glove,获取前提t与class c相似度最相似的词,并将其mask,[增加噪声的过程]。如下,c 为joy,词向量最接近的是thrilled,将其进行替换,然后再进行后续操作。

4.实验设置和实验结果

4.1数据集

八个数据集:20 newsgroup, AG’s news, Amazon reviews, DBPedia
, GoEmotions , IMDB reviews, ISEAR and Yahoo! Answers
除GoEmotions外,所有数据集都是平衡的。在每个数据集的测试集上报告结果(由于我们的方法中没有训练,所以没有使用训练集的标签); 在单独的显影装置上进行了初步实验。 由于我们的目标是一个具有较低计算代价的实用集合,我们将我们的未标记集U的大小限制在从每个数据集的完整训练集中采样的最多10k个示例。

4.2实验模型

3个MNLI模型:Roberta-Large-MNLI、Deberta-Large-MNLIZERO-CLS和Bart-Large-MNLI
模板:“This example is[]”
更多的实验细节请看原文。

4.3 实验结果以及分析

我们将每个类的训练样本数N设置为未标记集合U的1%(即,对于大小为10K的U,n=100)。 对于每个数据集和零镜头模型,我们执行两次自我训练迭代。4我们测试了2.2.2节所述的4个添加矛盾示例的设置。
第一个实验:实验结果

第二个实验:四种负例子的结果比较,random和all的效果相当,但是all会产生大量的负例子,从而会增加内存,所以实验使用的是rondom.

实验三:消融实验:mask是否有作用

实验四:Cross-task effects:主题数据集(20个新闻组、AG的新闻、DBPEDIA和Yahoo!answer)似乎对彼此有益; 两个情感分类数据集(GoEmotions和iSear)也是如此。 相比之下,情感数据的自我训练(亚马逊,IMDB)导致情感数据集的结果显著下降。 这可能与评论领域的特殊特征有关,以及积极情绪和消极情绪之间的尖锐二元区分,而不是区分不同类型情绪所必需的细微差别

5.讨论以及思考

使用自我训练作为工具来调整通用零射击模型的概念并不特定于内含模型,也不局限于分类任务。 因此,未来工作的一个主要途径将是在依赖于不同类型的映射函数或“元任务”的模型上探索这种组合,以在通用的跨任务框架内制定下游任务。
这篇文章的工作并不是从头开始训练模型,而是使用利用和构建通用零镜头分类器中包含的知识。探索如何将这些不同的方法结合起来有待于今后的工作。 重要的是,虽然我们的方法假设存在一个未标记的示例集合,但我们的结果表明,10k个示例的顺序足以从自我训练中受益。
总之,本文提出的方法可以提高基于Entailment-Zero-shot文本分类器的性能,所需的工作量很小,所需的领域数据量也很少。 对于从这些模型的实用性和可访问性中受益的许多从业者来说,这可能是有用的。

最近的很多工作都是将弱监督的方法和zero-shot的方法相结合,得好好总结一下,这方面得研究和重点,多看论文多思考。还有就是数据集的处理问题,这是一个大问题,得好好上上心,学习处理一下了。