0%

Universal Language Model Fine-tuning for Text Classification翻译

Universal Language Model Fine-tuning for Text Classification

用于文本分类的微调语言模型

Abstract

迁移学习为计算机视觉带来了巨大改变,但是现有的NLP技术仍需要针对具体任务改进模型,并且从零开始训练。我们提出了一种有效的迁移学习方法,可以应用到NLP领域的任何一种任务上,同时提出的技术对调整语言模型来说非常关键。我们的方法在六种文本分类任务上比现有的技术都要优秀,除此之外,这种方法仅用100个带有标签的样本进行训练,最终的性能就达到了从零开始、拥有上万个训练数据的模型性能。

Introduction

迁移学习对计算机视觉(CV)产生了很大影响。应用CV模型(包括对象检测,分类和分割)很少从头开始训练,而是通过在ImageNet,MS-COCO和其他数据集上预训练的模型进行微调,Sharif Razavian等。(2014); 龙等人。(2015a); 他等人。(2016); 黄等人。(2017)。

文本分类是自然语言处理(NLP)任务的一个类别,具有许多重要的实际应用程序,如垃圾邮件,欺诈和机器人检测Jindal和Liu(2007); Ngai等。(2011); 楚等人。(2012),紧急响应Caragea等。(2011),和商业文件分类,如法律发现Roitblat等。(2010年)。

虽然深度学习模型已经在许多NLP任务中实现了最先进的技术,但这些模型从头开始训练,需要大量数据集,并且需要数天才能收敛。NLP迁移学习的采用率落后于CV。微调预训练词嵌入Mikolov等。(2013); Pennington等。(2014),一种仅针对模型第一层的简单迁移学习技术,在实践中产生了巨大的影响,并在大多数最先进的模型中使用。鉴于预训练Erhan等人的好处。(2010),我们应该能够比随机初始化模型的其余参数做得更好。

最近的方法将来自其他任务(例如语言建模或机器翻译)的嵌入与不同层的输入相连接.Peters等人。(2017); 麦肯等人。(2017); 匿名(2018)。然而,这些方法仍然从头开始训练主要任务模型,并将预训练嵌入作为固定参数处理,限制了它们的实用性。

可以说,成功的NLP迁移学习技术应该满足与CV对应类似的标准:a)该方法应该能够利用大量可用数据; b)它应该利用可以独立优化的任务,从而进一步改善下游; c)它应该依赖于可以按原样用于大多数NLP任务的单个模型; d)在实践中应该易于使用。

我们建议使用微调语言模型(FitLaM)作为满足上述标准的NLP迁移学习的有效形式。我们的方法使用语言建模,这是一项具有几乎无限量数据的任务,以及推动最新技术发展的最新进展。它通过预训练无缝集成了大量外部数据和域内数据。

FitLaM依赖于简单的递归神经网络(RNN)而无需任何额外的修改; 我们只使用一个或多个任务特定的线性层来扩充模型,相对于现有方法占少量参数。我们提出了一种新的微调技术,即区分性微调,它可以在较低层次上对较低层进行微调,以保留通过语言建模获得的知识。我们还介绍了几种技术,这些技术对于良好的微调性能和更快的培训至关重要。

我们在五种广泛研究的不同大小和类型的文本分类任务中评估我们的迁移学习方法,在这些任务上我们明显优于高度任务特定的先前工作和现有的迁移学习方法。

我们的贡献如下:

  1. 我们在CV和NLP中绘制了迁移学习的相似之处,并为NLP提供了一种有效的迁移学习方法。
  2. 我们提出了微调语言模型(FitLaM),这种方法可用于为NLP的任何任务实现类似CV的迁移学习。
  3. 我们建议使用判别性微调来保留先前的知识并避免在微调期间发生灾难性的遗忘。
  4. 我们引入了通过时间进行反向传播的文本分类(BPT3C),这是一种通过线性层将分类器丢失反向传播到任何序列大小的RNN输出的新方法。
  5. 我们介绍了对预训练语言模型进行微调的关键技术。
  6. 我们在五个代表性文本分类数据集上的表现明显优于最新技术,大多数数据集的误差降低了18-24%。
  7. 我们制作预训练模型和代码,以实现更广泛的采用。

TRANSFER LEARNING IN CV 计算机视觉中的迁移学习

已经观察到CV中的深度神经网络中的特征从任务特定性迁移一般性从第一层到最后一层递减Yosinski等人。(2014年)。出于这个原因,CV中的大部分工作都集中在转移模型Long等人的最后几层。(2015b)。sharif2014cnn使用ImageNet模型的特征作为简单分类器的输入来实现最先进的结果。近年来,这种方法已被最后Donahue等人的微调所取代。(2014年)或预训练模型的最后几层,并留下其余层冻结Long等。(2015a)。

Hypercolumns 超级列

在NLP中,最近才提出的方法不仅仅是迁移字嵌入。流行的方法是预先嵌入通过其他任务捕获额外上下文的嵌入。然后将嵌入与单词嵌入或中间层的输入连接起来。这种方法在CV Hariharan等人中被称为超级列。(2015)并由 peters2017semi, deepcontext2017和 Mccann2017分别使用语言建模和机器翻译(MT)进行预训练。使用类似的方法Conneau2017用于学习句子表示。在CV中,超级列几乎完全被端到端的微调Long等人所取代。(2015a)。

MULTI-TASK LEARNING 多任务学习

一个相关的方向是多任务学习(MTL)(Caruana,1993)。这个方法被 Rei,2017 和 Liu 2018 所采用,他们把语言模型的目标添加到主任务模型目标中联合训练。多任务学习要求每次都从头开始训练,所以它比较低效。而且多任务学习需要仔细权衡任务模型目标的权重。

Fine-tuning 微调

微调已经在相似任务之间的迁移学习中获得了成功,比如 (Min 等,2017)在问答任务中,远程监督情感分析(Severyn and Moschitti, 2015),亦或是机器翻译领域((Sennrich et al., 2015)。但是也有在不相关领域迁移失败的例子((Mou et al.,2016)。Dai and Le (2015)也微调了一个语言模型,但是在 10K 标记样本集上过拟合了,而且需要数百万同领域文档来获得更好的表现。相反,ULMFiT 利用通用领域的文档进行预训练,同时提出新的微调技术来阻止过拟合当仅仅只有 100 个标签的样本集,并且取得了最优的效果在小数据集上。

Universal Language Model Fine-tuning

我们对自然语言处理最通用场景下的迁移学习感兴趣:考虑一个静态的原任务 $T_S$ 和任何一个目标任务 $T_T$,其中 $T_S \ne T_T$,并且我们想提高在 $T_T$ 中的表现。语言模型可以被视作一个理想的原任务就像是自然语言处理界的 ImageNet:语言模型可以为下游任务捕获许多语言方面的特征,比如长短期依赖,层次关系,情感等等。不像机器翻译模型,语言模型在大多数领域和语言上有几乎无限的数据。此外,一个预训练的语言模型可以很容易地适应目标任务的特质,我们将在第五小节展示这种语言模型带来的显著提升。同时,语言模型还是现存任务的重要组成成分,比如机器翻译和对话模型。形式上,语言模型引入了一个假设空间 $H$ 可以对其它许多自然语言处理任务有用(Vapnik and Kotz, 1982; Baxter, 2000)。

我们提出的统一微调语言模型(ULMFiT),它先在大规模通用领域语料上预训练然后使用新的技术在目标任务上微调。这个新的方法在某种程度上是通用的,因为它满足以下实践标准:1)它在不同大小、数量和标签类型的任务中都有效;2)它使用单一的结构和简单的训练过程;3)它不需要特征工程和特殊的预处理;4)它不需要额外的任务领域内的文档和标签数据。

在我们的实验中,我们使用最优语言模型 AWD-LSTM (Merity et al.,2017a),一个普通的 LSTM (它没有注意力机制、捷径连接、精致复杂的附加结构),只是含有可以改变 dropout 率。类似于计算机视觉,我们期待未来下游的表现可以显著地提高通过使用表现优异的语言模型。

ULMFiT 含有以下步骤:我们在图 1 中展示:a)通用领域语言模型预训练3.1;b)目标领域语言模型微调3.2;c)目标任务分类任务微调3.3。我们将在下面几个小节中讨论它们。

General-domain LM pretraining

我们在Wikitext-103 Merity等人上预先训练了语言模型。(2017b)由28,595个预处理的维基百科文章组成。预先训练更多和更多样化的数据集可以提高性能。这个阶段是最昂贵的,但因为它只需要执行一次,所以通过改进下游模型的性能和融合,它在以下阶段中受益匪浅。我们使预训练模型的权重可用于促进实验。

Target task LM fine-tuning

无论用于预训练的通用域数据多么多样,目标任务的数据可能来自不同的分布。因此,我们在目标任务的训练示例上微调语言模型。给定一个预训练的通用域LM,这个阶段收敛得更快,因为它只需要适应目标数据的特性,它允许我们训练一个强大的LM,即使对于小数据集。我们提出 discriminative fine-tuning 判别性微调 和 slanted triangular learning rates 斜三角形学习率为微调语言模型, 接下来我们逐一介绍。

Discriminative fine-tuning
因为不同的层捕获不同类型的信息(Yosinski et al., 2014),它们应该被不同程度的微调。为了这个目的,我们提出了一个新的微调方法,判别性微调。

不是对模型所有的层使用相同的学习率,我们为模型每一层使用有区别的微调学习率。通常使用随机梯度下降在时间步 $t$ 来更新模型参数 $\theta$ 就像下面这样(Ruder, 2016):

其中 $\eta$ 是学习率,$\nabla_{\theta}J(\theta)$ 是模型的目标函数对参数的梯度。为了判别式微调我们把模型参数 $\theta$ 分为 $\{\theta^1,…,\theta^L\}$ 其中 $\theta^l$ 包含模型第 $l$ 层的参数。同样我们使用 $\{\eta^1,…,\eta^L\}$,其中 $\eta^l$ 是模型第 $l$ 层的学习率。

这样随机梯度下降更新使用判别式微调之后就像下面这样:

我们经验地发现模型工作地很好当首先为模型最后一层选择 $\eta^L$ 进行微调,然后层与层之间使用 $\eta^{l-1}=\eta^l/2.6$ 的规律计算。

Slanted triangular learning rates
为了让参数适用于特定任务的特征,我们想让模型参数在训练的开始阶段迅速地汇聚到合适的参数空间然后再精调参数。使用相同的学习率或者一个退火学习率在训练模型时不是一个最佳的方式。我们提出一个斜三角形学习率,它首先线性增加然后线性递减根据安排的时间表,就如图 2所示:

Slanted triangular learning rates 计算式子如下:

其中 $T$ 是训练迭代次数(4In other words, the number of epochs times the number of updates per epoch);$cut_frac$ 是我们增加学习率的部占比;$cut$ 是学习率由增到减的转折点,$p$ 是我们分别增加或减少学习率的迭代次数的分数;$ratio$ 指定最小学习率比最大学习率小的比率;$\eta_t$ 是学习率的第 $t$ 次迭代。我们通常的设定是 $cut_frac = 0.1, ratio = 32, \eta_{max} = 0.01$。

Target task classifier fine-tuning

对于目标任务分类器微调,我们使用一个或多个附加线性块来扩充预训练语言模型。就像计算机视觉中的标准实践,每一个块使用批次正则化 normalization 和 dropout ,使用 ReLU 激活函数给中间连接层,并且softmax激活在最后一层的目标任务类上输出概率分布。请注意,这些特定于任务的分类器层中的参数是唯一需要从头学习的参数。第一个线性层将合并的最后隐藏层状态作为输入。

Concat pooling
文本分类任务中的信号通常包含在几个单词中,这些单词可能出现在文档中的任何位置。由于输入文档可能包含数百个单词,如果我们只考虑模型的最后隐藏状态,信息可能会丢失。出于这个原因,我们将文档的最后一个步骤 $H={h_1,..,h_T}$ 的隐藏状态与隐藏状态的 max-pooled 和 mean-pooled 表示相结合,在GPU内存中适合尽可能多的时间步长。

其中 [] 表示连接操作。

微调分类模型是迁移学习中最关键的一个部分。过度激进的微调会造成灾难性的遗忘,会消除了语言模型捕捉的信息的好处;太谨慎的微调会收敛的很慢而且会导致过拟合。除了判别性微调和斜三角形学习率,我们提出逐层解冻为分类微调。

Gradual unfreezing
不是一下微调所有的层,它可能导致灾难性遗忘。我们从最后一层到第一层提出逐层解冻,因为最后一层包含最少的一般性知识(Yosinski et al., 2014):我们解冻最后一层然后微调所有解冻的层。我们然后解冻倒数第二层重复开始的过程直到我们微调了所有的层。这和“链式解冻”很相似(Felbo et al.,2017),除了每次我们增加一个已经解冻的层,而不是每次训练一个层。

虽然模型能从 discriminative fine-tuning, slanted triangular learning rates, and gradual unfreezing 单独获益,如第五小节,这些方法会相互补充,联合起来让我们在不同的数据集上获益。

BPTT for Text Classification (BPT3C)
通过时间反向传播(BPTT)训练语言模型,以实现大输入序列的梯度传播。为了使大型文档的分类器微调可行,我们提出了BPTT for Text Classification(BPT3C):我们将文档划分为大小为
b的固定长度批次。在每个批次的开头,模型初始化为前一批次的最终状态; 我们跟踪平均值和最大池的隐藏状态; 梯度被反向传播到批次,其隐藏状态有助于文档末尾的分类器预测。在实践中,我们使用可变长度反向传播序列Merity等。(2017a)。

Bidirectional language model
与Peters等人的现有工作相似。(2017); 匿名(2018),我们不仅限于微调单向语言模型。对于我们所有的实验,我们预先训练前向和后向LM。我们使用BPT3C独立微调每个LM的分类器并平均其预测。

Experiments

虽然我们的方法同样适用于序列标记任务,但由于其重要的实际应用,我们专注于此工作中的文本分类任务。

Experimental setup

Datasets and tasks
我们在五个广泛研究的不同大小的数据集上评估我们的方法,这些数据集由最先进的文本分类和迁移学习方法使用Johnson和Zhang(2017); 麦肯等人。(2017)作为三个常见文本分类任务的实例:情感分析,问题分类和主题分类。我们显示表1中每个数据集和任务的统计数据

Sentiment Analysis
对于情绪分析,我们评估我们对二元电影评论IMDb数据集 Maas等人的方法。(2011)和由 zhang2015character 编译的二进制Yelp审查数据集。

Question Classification
我们使用六类版本的小型TREC数据集 Voorhees和Tice(1999)将开放域,基于事实的问题数据集划分为广泛的语义类别。

Topic classification
对于主题分类,我们评估由 zhang2015character 创建的大型AG-News和DBpedia本体数据集。

Pre-processing
我们使用与早期工作相同的预处理Johnson和Zhang(2017); 麦肯等人。(2017)。此外,为了使语言模型能够捕获可能与分类相关的方面,我们为大写单词,伸长和重复添加了特殊标记。

Hyperparameters
We are interested in a model that performs robustly across a diverse set of tasks. To this end, if not mentioned otherwise, we use the same set of hyperparameters across tasks, which we tune on the IMDb validation set. We use the AWD-LSTM language model (Merity et al., 2017a) with an embedding size of 400, 3 layers, 1150 hidden activations per layer, and a BPTT batch size of 70. We apply dropout of 0.4 to layers, 0.3 to RNN layers, 0.4 to input embed-ding layers, 0.05 to embedding layers, and weight dropout of 0.5 to the RNN hidden-to-hidden ma-trix. The classifier has a hidden layer of size 50. We use Adam with β1 = 0.7 instead of the de-fault β1 = 0.9 and β2 = 0.99, similar to (Dozat and Manning, 2017). We use a batch size of 64, a base learning rate of 0.004 and 0.01 for fine-tuning the LM and the classifier respectively, and tune the number of epochs on the validation set of each task7. We otherwise use the same practices used in (Merity et al., 2017a).

Baselines and comparison models
对于每项任务,我们都会与当前最先进的技术进行比较。对于IMDb和TREC-6数据集,我们与CoVe McCann等人进行了比较。(2017),NLP的最先进的迁移学习方法。对于 AG, Yelp 和 DBpeadia 数据集我们与由Johnson and Zhang (2017) 提出的最先进的文本分类方法比较。

Results

我们在表2中的 Mccann2017 使用的IMDb和TREC-6数据集上显示测试准确度分数。我们的方法优于CoVe,这是一种基于超级列的最先进的迁移学习方法,以及两个数据集的最新技术。在IMDb上,我们分别在CoVe和最新技术方面将误差显着降低了43.9%和22%。这是特别有希望的,因为现有的现有技术需要复杂的架构Anonymous(2018),多种形式的关注McCann等人。(2017)和复杂的嵌入方案Johnson和Zhang(2016),而我们的方法采用标准的Bi-LSTM,具有压差。

在TREC-6上,我们的改进 - 与最先进方法的改进类似 - 在统计上并不显着,因为测试的尺寸很小,仅包含500个例子。我们建议停止使用此数据集来评估文本分类算法。然而,小型TREC-6数据集的竞争性表现仍然表明,即使对于小型数据集,微调语言模型和目标任务分类器也是可行的。请注意,尽管预训练的数据比\ newcite Mccann2017 使用的700万个句子对的数据少两个数量级,但我们在两个数据集上的表现始终优于他们的方法。

我们在表3中的 johnson2017deep 使用的较大的AG-News,DBpedia和Yelp-bi数据集上显示测试错误率。我们的方法再次显着优于最先进的技术。在AG-News上,我们观察到与现有技术相比,同样显着的误差减少了23.7%。在DBpedia和Yelp-bi上,我们将误差分别减少了4.8%和18.2%。

Discussion and future directions

虽然我们的方法仍然需要一些技巧和手动调整学习率和辍学权重来实现最佳性能,但我们认为它类似于AlexNet Krizhevsky等人。(2012)作为必将的第一步,将导致创新浪潮。我们相信,随着越来越多的研究专注于改善NLP的迁移学习,微调语言模型将变得更加健壮。在这条道路上迈出的重要一步将是仔细消融研究,以了解这里描述的模型和培训程序的每个组成部分的影响。

鉴于NLP的迁移学习(尤其是微调)未得到充分研究,未来的许多方向都是可能的。一个可能的方向是改进语言模型预训练任务并使其更具可扩展性:对于ImageNet,预测更少的类只会导致性能下降小Huh等。(2016) -专注于预测最频繁的单词可能会保留大部分性能,同时加快培训速度。语言建模还可以通过多任务学习方式Caruana(1993)中的其他任务来增强,或者通过额外的监督来丰富,例如语法敏感的依赖性Linzen等。(2016) 创建一个更通用或更适合某些下游任务的模型。

另一个方向是将该方法应用于新颖的任务和模型。虽然序列标记任务的扩展很简单,但其他任务(例如蕴涵和问答)使用更复杂的交互,这需要新颖的方式来预训练和微调。

最后,虽然微调是迁移学习的一个组成部分,但它很少受到关注,即使在计算机视觉中(至少在学术界 - 它是商业系统如Clarifai的关键基础)。所有常见基准测试仍然评估我们从头开始训练模型的能力,而不是微调预训练模型。创建微调基准将使我们能够开发更复杂的微调方法,这将使我们能够充分挖掘预训练模型的新潜力。

Conclusion

我们已经提出了ULMFiT,一种可以应用到任何 NLP 的有效的迁移学习方法。以及一种有效的微调方法,一种有效的微调方法,可以将不同的层调整到不同的程度,以避免灾难性的遗忘和让模型在不同范围的任务中更加鲁棒性的学习。我们的方法明显优于现有的迁移学习技术和六个具有代表性文本分类任务的最新技术。我们希望我们的结果能够促进 NLP 迁移学习的新发展。

本站所有文章和源码均免费开放,如您喜欢,可以请我喝杯咖啡