半监督学习是综合利用标注数据与未标注数据的学习方法。香侬科技研究了如何更有效地结合半监督自训练和预训练,即如何在大规模通用领域预训练的前提下,更好地利用大规模领域内无标注语料与标注语料,从而最大限度地提升模型效果。
- 论文:Neural Semi-supervised Learning for Text Classification Under Large-Scale Pretraining
- 链接:https://arxiv.org/pdf/2011.08626.pdf
- 源码:https://github.com/ShannonAI/Neural-Semi-Supervised-Learning-for-Text-Classification
这涉及到一系列问题:
- 在大规模通用语料下训练的模型是否仍然需要在上训练?
- 如何利用?是像BERT一样预训练,还是用伪标签的自训练方法?
- 在不同的和条件下,不同的训练方式会有怎样的结果差异?
通过在文本分类任务上的实验,我们发现:
- 如果有领域内语料,那么模型就不需要再在通用领域语料上预训练;
- 无论是采用预训练的方式还是自训练的方式,都可以显著提升模型效果;
- 当领域内标注数据较小的时候,在伪平行数据上训练、再在上微调的方法可以提升更多的效果;当更大的时候,在和上联合训练取得的效果更好。
但无论如何,不管以怎样的方式去预训练自训练,我们都能取得显著更好的文本分类效果,尤其是在小样本的条件下,如在IMDB数据集上,通过有效结合预训练和自训练,仅使用50个标注样本就可以达到93.8%的准确率。
更重要的是,本文对大规模通用预训练下的半监督自训练与预训练进行的探索,有助于启发之后在自然语言处理其他领域上,在不同数据条件下、领域条件下设计更高效的半监督学习方法。
不同的预训练/自训练模型
首先,我们将介绍不同的模型训练策略,以研究它们在不同条件下的表现。记是领域内的标注数据,是数据集大小。是领域内的无标注数据,大小为。下面考虑如何利用数据集。
领域内预训练(In-domain Pretraining)
由于是无标注数据,所以一个直接的想法是像BERT那样用掩码预测的方式去做预训练。在上预训练之后,就可以在上微调,用得到的模型进行推理即可。
在用预训练的时候,可以基于一个随机初始化的模型,也可以基于已经在通用语料上预训练的模型,如BERT、RoBERTa等等。我们将在实验部分探究它们的影响。
伪标签自训练(Pseudo-label Self-Training)
除了直接像BERT一样预训练之外,还可以用自训练的方式去使用。首先在上训练一个Teacher模型,然后用它去标注(的一部分),得到一个伪平行数据集,其大小记为,最后再用一个Student模型,在和/或上训练。同领域内预训练,Student模型可以是随机初始化的,也可以是已经预训练的。
现在要考虑的问题是:(1)如何构建;(2)如何用和训练Student模型。
构建
我们采取两种方法构建:
- ,即把中的所有数据都当成训练数据去做标注,然而这种方法容易引入过多噪音;
- Top-K:只选取对每一类所得概率最高top-K个样本作为,这样就只考虑Teacher模型最有信心的数据。
训练Student模型
在得到了后,将与原有的一起参与训练Student模型。我们有下述训练方法:
- Training on ,记为:Student直接在上训练,然后用于推理。这种方法的缺点在于中的干净数据可能会被稀释。
- Training on and Fine-tuning on ,记为:Student首先在上训练,然后在上微调,从而避免第一种方法的稀释问题。
- Training on and Fine-tuning on ,记为:Student先在上训练,然后再在上微调,这可以在训练阶段更多地利用。
- Iterative Training:上述过程可以迭代进行,即在训练好Student之后,把它当成新的Teacher,然后构建新的,训练新的Student。这个过程重复次。
实验
在本节中我们将探究上述构建方法、Student训练方法会有怎样的表现差异。我们考虑两个不同的领域:
- 电影:领域内标注数据集是IMDB Dataset,领域内未标注数据集是3.4M个来自IMDB的影评。为了探究不同数据量情况下的模型效果,我们分别用的10, 20, 50, 100, 1K, 5K, 25K进行实验。
- 垃圾邮件分类:领域内标注数据集包含800个训练样本与800个测试样本,领域内未标注包含1M个样本。
模型使用RoBERTa_small和RoBERTa_large两种,作为比较,我们还使用了BiLSTM模型。其他实验设置详见原文。
Teacher模型的表现与领域内预训练结果
下图是不同的Teacher训练方法在IMDB和Spam上的结果。Open-domain是在大规模通用语料上预训练(也就是已经预训练好的RoBERTa),In-domain是在上预训练,所有的模型最后都要在上微调。
从结果可以看到,BiLSTM效果最差是在意料之中,其实是只用Open-domain的RoBERTa。令人惊讶的是,In-domain的效果几乎和Open-domain In-domain完全一致,这说明:当有足够量的领域内未标注数据时,通用领域预训练是没有必要的。
从上图中我们还可以观察到一个有趣的现象:当领域内标注数据很小的时候,领域内预训练可以显著提升最终的结果。换句话说:领域内预训练可以取得更好的小样本学习效果。
领域内预训练的影响
但是,上述结论有一个前提:领域内未标注数据足够大。那么,不同的对最终结果有怎样的影响呢?
如下图所示,当的时候,领域内预训练和呈现出明显的正相关关系。
很小的时候,效果差于开放领域预训练,当足够大的时候,领域内预训练就超过了开放领域预训练。这说明:领域内未标注数据的大小对最终结果影响极大,总的趋势是越多越好。
自训练结果
上面我们探究了在不同模型、数据情况下领域内预训练的结果,下面我们继续来探究自训练方法的效果。结果如下表所示,从表中我们可以观察到:
- 几乎在所有的与下,和始终优于;
- 模型效果随着的增加而增大,当到一定的大小时,增长趋于缓慢;
- 当较小的时候,表现更好,当较大的时候,表现更好。这是因为当小的时候,模型在上的稀释问题更加严重,需要再用上的微调“矫正”;而大的时候,Teacher模型的预测大部分都是正确的,也即中的噪音减少,如果再在上微调,就会稀释中的“干净样本”。
那么,的大小、的大小会对最终结果有怎样的影响呢?下图是不同的(第一行)与不同的(第二行)对结果的影响。
从第一行可以看到,当比较小的时候,和会有比较好的效果;而当比较大的时候,四个方法的结果都差不多。
从第二行可以看到,当比较小的时候,表现最好,并且随着的增大效果先提升后降低。
这是因为此时当持续增大到一定程度之后,Teacher模型得到的不确定样本就会更多,引入了更多噪声,Student模型的效果就会受到影响。
相反,当足够大的时候,的影响就占据主导,此时增大就不会有损效果。
迭代训练结果
下图是不同的迭代训练的结果。显然,无论迭代多少次,的大小直接决定了模型的效果。从趋势来讲,都是随着迭代次数的增加效果变好,但当超过一定迭代次数后(N=2),效果就不再变化了。
结合领域内预训练和自训练
上面我们分别考察了领域内预训练和自训练的结果,这二者是否可以结合起来进一步提升效果呢?答案是肯定的,而且我们已经在论文自训练 预训练 = 更好的自然语言理解模型讲解中阐述了这一点。
下表是结合二者的得到结果。无论是RoBERTa_small还是RoBERTa_large,在领域内预训练的基础上再次使用自训练,就可以显著提升效果,分别提升了 0.5与 0.4,相比Open-domain pretraining提升了 1.1和 1.0。
小结
在这篇文章中,我们综合分析了文本分类任务下不同预训练和自训练方法对结果的影响,通过大量的实验得到了下面三个主要结论:
- 足量的领域内语料使模型不需要再在通用领域语料上预训练;
- 无论是采用预训练的方式还是自训练的方式,都可以显著提升模型效果,二者结合可以得到最佳结果;
- 当领域内标注数据较小的时候,在伪平行数据上训练、再在上微调的方法可以提升更多的效果;当更大的时候,在和上联合训练取得的效果更好。
我们发现,预训练和自训练相结合尤其可以在小样本场景下取得突出效果,在IMDB数据集上,仅用50个标注样本就可以实现93.8%的准确率。我们希望本文可以为今后NLP领域更高效的半监督学习方法提供启发。