[翻译原论文/paper translation] ULMFiT for Text Classification

近期正在做一个文本分类的相关问题,无意中发现了fastai这个非常好用的库,于是从上个月开始看课程进行学习,虽然看完了Part1的教程视频以及去年的lesson10,但仍然对fastai底层工作概念比较模糊,于是打算精读发表在2018 ACL的ULMFiT原论文,同时尝试做一篇中文翻译。
欢迎大家指正和一起探讨~
Recently I was struggled with a text classification related work, and accidentally came across fastai which is a very useful library, so I started to study the courses. Although I have finished Part1’s videos and lesson10 of 2018 courses, I still only have a vague idea about the fastai underlying work, so I plan to intensively read the original ULMFiT paper published in 2018 ACL and try to do a Chinese translation.
Welcome everyone to correct and discuss!


原论文地址:https://arxiv.org/abs/1801.06146

翻译中不确定的地方用 :question: 标记

1 Like

Universal Language Model Fine-tuning for Text Classification

abstract

归纳迁移学习在计算机视觉领域有着极大的影响力。但在 NLP 领域中,现有的方法仍然需要对特定任务进行修改,并且从头开始训练。我们提出了通用语言模型微调的方法(ULMFiT),它是一种有效的、能够被应用于任何 NLP 任务的迁移学习方法。同时,我们将介绍微调语言模型的关键技术。 我们的方法在六个文本分类任务上明显超越了最先进的技术水平,将大多数数据集上的分类误差降低了18~24%。 此外,在仅仅训练 100 个带标记的数据样本后,就能够达到在 100 倍以上的数据从头开始训练所能达到的性能表现。我们提供了开源的预训练模型和代码

1. introduction

归纳迁移学习(inductive transfer learning)对计算机视觉(CV)已经产生了很大的影响。其应用模型(包括对象检测、图片分类和图像分割)很少从头开始训练,而是通过在 ImageNet、MS-COCO 或其他数据集上预训练的模型经过微调得到。

文本分类是一类自然语言处理(NLP)任务,它有许多现实世界的应用,如:垃圾邮件、诈骗和人机检测,应急响应,以及商业文档分类,例如法律发现(legal discovery)。

虽然深度学习模型已经在许多 NLP 任务中达到了最先进水平,但由于这些模型从头开始训练,需要大量数据集,并且数天才能收敛。 NLP 的研究主要集中在直推式迁移学习(transductive transfer)。对于归纳式迁移学习(inductive transfer),有一种仅针对于模型第一层的简单迁移技术,也即微调预训练的词嵌入。这一方法在实践中有着重大影响,并且被用于大多数最先进的模型中。最近的研究是将来自其他任务的嵌入(embedding)与不同层的输入相结合,仍然从头开始训练主要任务,并将预训练的嵌入作为固定参数处理,这使它的作用受限。

鉴于预训练所带来的好处,我们应该能够做到更好,而不是随机初始化模型中剩余的参数。 然而,经过微调的归纳式迁移在 NLP 任务中尚未成功。 Dai和Le首先提出微调语言模型(LM)的方法,但需要数百万个领域内文档(in-domain documents)才能获得良好的性能,这严重影响了它的实用性。

我们发现,并不是微调 LM 的想法阻碍了它的广泛应用,而是我们缺乏如何有效地训练它们的知识。 LM 会对小数据集过拟合,并且在微调分类器时会产生灾难性的信息遗忘。与CV相比,NLP 模型通常比较浅,因此需要不同的微调方法。

为此,我们提出了一种新方法,即通用语言模型微调(ULMFiT)。它不仅能够解决这些问题,并且对于任何NLP任务都能实现鲁棒的归纳式迁移学习,类似于微调 ImageNet。模型由 3 层相同的LSTM 架构组成,它们具有相同的超参数,且除了经过调参的 dropout 超参数此外没有任何修改,仅仅如此就在六个广为研究的文本分类任务中的表现优于高度工程化的模型(highly engineered models)和现有迁移学习方法。 仅使用100 条 IMDb 数据集的标记样本,ULMFiT 就能达到在 10 倍以上的数据从头开始训练所得到的性能表现,若使用 5 万条无标记的数据样本,它能够达到在 100 倍以上的数据从头开始训练所得到的性能表现。

Contributions

我们的贡献如下:1)我们提出了通用语言模型微调(ULMFiT),这种方法可以对于任意 NLP 任务实现类似于 CV的迁移学习。 2)我们提出了差异化微调(discriminative fine-tuning),斜三角学习率(slanted triangular learning rates),以及逐层解冻(gradual unfreezing)几种新技术,以保留先前获取的知识并避免在微调期间发生灾难性的遗忘。 3)我们在六个代表性文本分类数据集上的表现明显优于最新技术,在大多数数据集上的误差降低了18~24%。 4)我们的方法使得极少样本的迁移学习成为可能,并能够进行大规模的消融分析。 5)我们公开了预训练模型和代码,以便被更广泛地使用。

2. Related work

Transfer learning in CV

研究者已经观察到,CV 深度神经网络的第一层到最后一层所体现出的特征是从一般到特殊的。 为此,CV的大部分工作都集中在迁移模型的第一层。Sharif Razavian 等人将 ImageNet 模型的特征作为简单分类器的输入,取得了当时最先进的结果。 近年来,这种方法已被替换为微调预训练模型的最后一层或最后几层,其余层保持冻结。

Hypercolumns

在NLP中,直到最近才提出了除了迁移词嵌入以外的方法。 目前流行的方法是通过其他任务捕获额外的上下文,然后将不同级别的嵌入用作特征,跟词嵌入或中间层的输入连接(concatenate)在一起。该方法在CV中称为超列(hypercolumns),并且被 Peters 等人、Wieting 和 Gimpel、Conneau 等人和 McCann 等人用过。他们分别使用了语言建模(language modeling)、意译(paraphrasing)、蕴含(entailment)和机器翻译(MT)进行预训练。特别地,Peters等人需要工程化定制的模型架构,而我们的方法使用与之相同的基础架构,就已在一系列任务中展示出最先进的性能。在CV中,超列现已几乎完全被端到端的微调所取代。

Multi-task learning

一个相关的研究方向是多任务学习(MTL)。这是 Rei 和 Liu 等人采用的方法,他们将语言模型与主要任务模型联合训练(trained jointly)。但 MTL要求每次都从头开始训练,这使得效率很低,并且通常需要仔细权衡特定任务的目标函数。

Fine-tuning

微调已被成功地用于在相似任务之间进行迁移,例如 QA、远程监控的情感分析、和机器翻译领域,但在任务不相关的情况下会导致失败。 Dai 和 Le 也对一个语言模型进行过微调,但在 1 万条标记样本时过拟合,它需要数百万个领域内文档才能获得良好的性能。相比之下,ULMFiT利用通用领域预训练和新的微调技术来防止过拟合,即使只有100个标记样本,也能在小数据集上取得最先进的结果。

3. Universal Language Model Fine-tuning

我们感兴趣的是对于 NLP 最普适的归纳式迁移的设置:给定静态源任务 \mathcal{T}_{S} 和任何目标任务 \mathcal{T}_{T} 并且 \mathcal{T}_{S} \neq \mathcal{T}_{T} ,我们希望改善 \mathcal{T}_{T} 的性能表现。语言模型可以被视为理想的源任务和在 NLP 中对应于 ImageNet 的部分:它为下游任务捕获了许多的语言相关方面特征,例如长期依赖(long-term dependency)、层次关系(hierarchical relation)和情感(sentiment)。与机器翻译和蕴含关系相比,它为大多数领域和语言提供了近乎无限量的数据。同时,预训练的 LM 可以轻松地适应目标任务的特性,显著地提高了性能(见第5节)。此外,语言模型已经是许多现有任务的关键组成部分,如 MT 和对话建模。形式上来说,语言模型引入了一个假设空间 \mathcal{H} ,这对其他许多 NLP 任务十分有用。

我们提出了通用语言模型微调(ULMFiT),它是在大型的通用领域语料库中预训练的语言模型(LM)并使用新技术对目标任务进行微调的方法。该方法的通用性体现在:1)对不同文档大小、数量和标签类型的任务都能使用;2)使用单一架构和训练过程; 3)不需要自定义特征工程或预处理; 4)不需要额外的领域内文档或标签。

在我们的实验中,我们使用目前最先进的语言模型 AWD-LSTM,它是一个常规的 LSTM,即没有注意力(attention)、短路连接(short-cut connection)或其他复杂内容,而只有多个经过调整的 dropout。与CV类似,我们希望在未来可以通过使用更高性能的语言模型来提高下游性能。

ULMFiT包括以下步骤,如图1所示:1)通用域 LM 预训练;2)目标任务 LM 微调;3)目标任务分类器微调。我们将在之后的章节讨论这些内容。

图1:ULMFiT 包括三个阶段:1)在一般领域语料库上训练 LM,在不同层次捕获语言的一般特征。 2)使用差异化微调(‘Discr’)和斜三角学习率(STLR)对目标任务数据进行微调,以学习特定任务特征。 3)使用逐层解冻、“Discr”和STLR对目标任务进行微调,以保留低阶表示并适应高阶表示(阴影表示解冻阶段,黑色表示冻结部分)

3.1 General-domain LM pretraining

类似于 ImageNet,一个语言的语料库应该是大规模的,并且可以捕获语言的一般性属性。我们在 Wikitext-103 语料库上预训练语言模型,它包含了 28,595个预处理的维基百科文章和 1.03 亿个单词。预训练是对于小数据集任务最有益的方法,即使只有 100 个标记样本就能泛化。 我们将更多不同的预训练语料库的探索留给未来工作,但预计能够提高性能。虽然这个阶段是最昂贵的,但它只需要执行一次就能够改善下游模型的性能表现和收敛性。

3.2 Target task LM fine-tuning

无论预训练的通用领域数据多么地多样,目标任务的数据都可能来自不同的分布。 因此,我们在目标任务的数据上微调 LM 。在有了预训练的通用域 LM 的情况下,这个阶段的收敛速度会更快,因为它只需要适应目标数据的特性,并且即使对于小数据集,它也能训练出一个鲁棒的 LM。我们提出了“差异化微调”和“斜三角学习率”以便对 LM 进行微调,这将在下面进行介绍。

Discriminative fine-tuning

由于模型中不同的层捕获了不同类型的信息,应该对它们进行不同程度的微调。 为此,我们提出了一种新颖的微调方法,即差异化微调。不同于对模型的所有层都使用相同的学习率,差异化微调使我们能够在微调每一层时使用不同的学习率。在以往,常规的随机梯度下降(SGD)每次更新模型参数 \theta 时像是这样:

\theta_{t}=\theta_{t-1}-\eta \cdot \nabla_{\theta} J(\theta)

其中, \eta 是学习率, \nabla_{\theta} 是模型目标函数的梯度。
为了进行差异化微调,我们将参数 \theta 划分为 \left\{\theta^{1}, \ldots, \theta^{L}\right\} ,其中 \theta^{l} 是模型第 l 层的参数, L 是模型的层数。类似的,将 \eta 划分为 \left\{\eta^{1}, \ldots, \eta^{L}\right\} ,其中 \eta^{l} 是第 l 层的学习率。
具有差异化微调的SGD更新如下:

\theta_{t}^{l}=\theta_{t-1}^{l}-\eta^{l} \cdot \nabla_{\theta^{l}} J(\theta)

我们凭经验发现了一种有效的方式是:先选择最后一层的学习率 \eta^{L} 只微调最后一层,然后将其他低层的学习率设为 \eta^{l-1}=\eta^{l} / 2.6

Slanted triangular learning rates

为使参数适应特定任务的特征,我们希望模型在训练开始时快速收敛到参数空间中的适当区域,然后再对参数进行优化。在整个训练过程中使用相同的学习率或退火学习率(annealed learning rate)都并不是达到此目的的最佳方法。相反,我们提出了斜三角学习率(STLR):首先线性增加,然后根据下面的公式线性衰减,如图2所示。

cut=\left\lfloor T \cdot cut_{-}frac\right\rfloor
p=\left\{\begin{array}{ll}{t/cut,} & {\text {if } t<cut} \\ {1-\frac{t-cut}{cut \cdot(1/cut-frac-1)},} & {\text{otherwise}}\end{array}\right.
\eta_{t}=\eta_{\max} \cdot \frac{1+p \cdot(\text {ratio}-1)}{\text {ratio}}

其中, T 是训练迭代次数,也即 epoch 的次数乘以每个 epoch 的更新数, cut_{-}frac 是增加 LR 的迭代次数占总迭代次数的比例, cut 是当从增加 LR 切换到减少 LR 时的迭代数, p 的两个式子分别是已增加和将减少的 LR 的迭代次数比例, ratio 表明最小 LR 与最大 LR 相比小多少, \eta_{t} 是第 t 次迭代时的学习率。我们通常使用 cut_{-}frac=0.1, ratio=32 以及 \eta_{\max}=0.01

STLR 以增长期短、衰减期长的方式更改三角学习率,我们发现这是取得良好性能表现的关键。在第 5 章中,我们将与过激的余弦退火相比较,那是一个类似的方法,并且已在 CV 中取得了最佳性能表现。

figure2

图2:斜三角学习率,ULMFiT 中训练迭代次数的函数。

3.3 Target task classifier fine-tuning

最后,为了微调分类器,我们给预训练语言模型增加两个额外的线性模块。按照 CV 分类器的实践标准,每个模块使用批量归一化(batch normalization)和随机失活(dropout),并使用 ReLU 作为中间层的激活函数,以及在最后一层使用 softmax 激活函数,输出目标类的概率分布。请注意,这些特定任务的分类器每层中的参数是唯一从头开始学起的参数。第一个线性层将最后一个隐藏层池化状态作为输入。

Concat pooling

文本分类的关键点通常包含在几个单词中,这些单词可能出现在文档的任何位置。由于输入的文档可能包含数百个单词,如果我们只考虑模型中最后一个隐藏状态(hidden state),可能会造成信息丢失。出于这个原因,我们将文档最后一个时间步骤 h_{T} 的隐藏状态与 GPU 内存中所能容纳的尽可能多的时间步骤中的隐藏状态 \mathbf{H}=\left\{\mathbf{h}_{1}, \dots, \mathbf{h}_{T}\right\} 的最大值池化和均值池化相连接:

\mathbf{h}_{c}=\left[\mathbf{h}_{T}, \operatorname{maxpool}(\mathbf{H}), \operatorname{meanpool}(\mathbf{H})\right]

其中[]表示连接。

微调目标分类器是迁移学习方法中最关键的部分。过激的微调将导致灾难性的遗忘,消除语言模型获取的信息所带来的好处,而过于谨慎的微调将导致收敛缓慢(并且造成过拟合)。除了差异化微调和斜三角学习率之外,我们提出了逐步解冻的方法微调分类器。

Gradual unfreezing

一次性微调所有层会有灾难性的遗忘风险,因此我们建议从最后一层开始逐步解冻模型,因为它包含最少的一般性知识。我们首先解冻最后一层,然后微调所有的未冻结层一个 epoch。接着我们解冻下一个低层的冻结层,重复这个过程直到对所有层进行微调,直到最后一次迭代时收敛为止。这类似于“链解冻(chain-thaw)”,只是我们一次添加一层到解冻层集合,而不是每次只训练一层。

虽然差异化微调、斜三角形学习率以及逐步解冻都有它们自身的好处,在第 5 节中我们将展示它们之间如何相互补充,并使我们的方法在不同的数据集中表现良好。

BPTT for Text Classification (BPT3C)

语言模型通过时序反向传播(BPTT)进行训练,以实现大规模输入序列的梯度传播。为能够对大型文档的分类器进行微调,我们提出了用于文本分类的 BPTT(BPT3C):我们将文档划分为多个固定长度为 b 的批次(batches)。 在每个批次的开始,用前一批次的最终状态初始化模型,然后跟踪记录隐藏状态的平均值池化和最大值池化,反向传播梯度到隐藏层状态(hidden state)对最终预测结果有贡献的那些批次。在实践中,我们使用了可变长度的反向传播序列。

Bidirectional language model

与现有工作类似,我们没有局限于微调单向语言模型,在所有实验中我们都预训练了前向和反向LM。我们使用 BPT3C 分别对每个LM的分类器进行微调,然后将分类器预测结果取平均。

4. Experiments

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

4.1 Experimental setup

Datasets and tasks

我们在六个广泛研究的数据集上评估我们的方法,这些数据集具有不同的文档数和不同的文档长度,并且被最先进的文本分类和迁移学习方法用作三种常见文本分类任务的实例:情感分析,问题分类和主题分类。我们在表 1 中展示了对每个数据集和任务的统计信息。

table1

表 1:文本分类数据集和任务的类别和训练样本数量。

Sentiment Analysis

对于情感分析,我们在二分类电影评论 IMDb 数据集、以及由 Zhang 等人编辑的二分类和五分类 Yelp 评论数据集上评估我们的方法。

Question Classification

我们使用小型 TREC 数据集的六分类版本,这是一个将开发域的、基于事实的问题划分成广义语义类别的数据集。

Topic classification

对于主题分类,我们使用 Zhang 等人创建的大规模 AG 新闻和 DBpedia 本体数据集(ontology datasets)进行评估。

Pre-processing

我们使用与早期工作相同的预处理方法。此外,为了使语言模型能够捕获可能与分类结果相关的内容部分,我们为大写单词、延伸和重复添加了特殊的标记。

Hyperparameters

我们所感兴趣的是一个在各种任务中都能表现鲁棒的模型。为此,如果没有另外提及,我们在所有不同任务中都使用同一套超参数,也即在微调 IMDb 验证集时得到的超参数集。我们使用 AWD-LSTM 语言模型,其中嵌入尺寸(embedding size)为 400,层数为 3,每层有 1150 个隐藏激活(hidden activation),BPTT 的批量大小(batch size)为 70。 我们设置每层的 dropout 为 0.4,RNN 层的为 0.3,输入嵌入层的为 0.4,嵌入层的为 0.05,以及对 RNN 隐藏层到隐藏层矩阵设置权重随机失活(weight dropout)为 0.5。分类器有一个大小为 50 的隐藏层。类似于 Dozat 和 Manning 那样,我们使用 β1= 0.7 的 Adam,而不是默认值 β1= 0.9 和 β2= 0.99 。我们设置批量大小为 64,设置基准学习率为 0.004 和 0.01 分别用于对 LM 和分类器进行微调,并在每个任务的验证集上调整 epoch(在像 TREC-6 这样的小型数据集上,我们只用 15 次 epoch 微调 LM 没有过拟合,而在较大的数据集上则可以进行更久的微调。我们发现 50 epoch 是微调分类器时一个较好的默认值)。否则,我们使用与 Merity 等人相同的做法。

Baselines and comparison models

在每个任务中,我们都将它与当前最先进技术进行比较。对于 IMDb 和 TREC-6 数据集,我们与CoVe 进行了比较,这是一种当前最先进的用于 NLP 的迁移学习方法。 对于 Forthe AG,Yelp 和DBpedia 数据集,我们与由 Johnson 和 Zhang 提出的、目前最好的文本分类方法进行了比较。

4.2 Results

为保持一致性,我们所有结果都使用错误率进行衡量(越低越好)。表 2 中展示了 McCann 等人使用过的 IMDb 和 TREC-6 数据集的错误率,我们的方法优于 CoVe(一种基于超列的最先进的迁移学习方法)以及两个数据集上的当前最佳表现。在 IMDb 上,对比 CoVe 和当前最佳技术,我们将误差显着降低了 43.9% 和 22% 。这是前景开阔的,因为现有的最佳技术需要复杂的架构、多种形式的注意力机制和复杂的嵌入方案,而我们的方法仅采用了带有 dropout 的常规 LSTM。我们注意到,在 IMDb 数据集上,Dai 和 Le 的语言模型微调方法仅达到了 7.64 的误差,而由我们的方法则达到了 4.6。这证明了运用我们的微调技巧从类似 ImageNet 的大型语料库中迁移知识确实是有益的。IMDb 数据集尤其能够反映在真实世界的情况,因为它的文档通常只有几段长,这类似于电子邮件(例如法律发现)和在线评论(例如社区管理),且情感分析类似于许多商业应用,例如产品反响跟踪以及支持电子邮件路由。

在 TREC-6 上,我们的表现与最先进技术类似,在统计意义上并不显著,这是因为只有 500 个测试集样本太少了。 尽管如此,在 TREC-6 上能得到与其他方法相似的性能表现说明了我们的模型对不同大小的数据集都表现良好,并且从单个句子(TREC-6)到几个段落(IMDb)都能很好地处理。请注意,尽管预训的数据量比 McCann 等人使用的 700 万个句子对少两个数量级,但我们在两个数据集上的表现始终优于他们的方法。

我们在表 3 中展示了在较大的数据集 AG,DBpedia,Yelp-bi 和 Yelp-full 上的测试集错误率。我们的方法再次显著优于当前最先进技术。在 AG 上,我们观察到与现有技术相比,同样显著地以23.7% 降低了误差。在 DBpedia、Yelp-bi 和 YES-full 上,我们分别将误差减少了4.8%,18.2%,2.0%。

5. Analysis

为了评估每项贡献所产生的影响,我们进行了一系列的分析和消融。我们对 IMDb、TREC-6 和 AG 这些语料库进行实验,它们在不同的任务、流派和大小上具有典型代表性。在所有实验中,我们将 10% 的训练集划分出来,并使用单向 LM 在此验证集上展示错误率。我们微调分类器 50 轮(epoch),采用早停法训练除了 ULMFiT 以外的所有方法。

Low-shot learning

迁移学习的主要好处之一,是能够为只有少量标签的任务训练模型。我们采用两种设置中对不同数量的标记样本进行 ULMFiT 的评估:只有标记样本可用于微调 LM(“监督”)以及所有数据都能获取到并可用于微调 LM(“半监督”)。我们将 ULMFiT 与从头开始的训练进行比较(对于基于超列的方法从头训练是必要的)。我们拆分出训练数据的平衡部分(balanced fractions :question:),保持验证集固定不变,并使用与之前相同的超参数。图3中展示了结果。

图 3: 监督和半监督的 ULMFiT vs. 从头开始训练不同数量的IMDb,TREC-6和AG训练样本(从左到右)的验证错误率。

在 IMDb 和 AG 上,受监督的 ULMFiT 仅用100个标记样本就分别能达到用 10 倍以上和 20 倍以上的数据从头开始训练的性能表现,这清楚地表明了通用领域 LM 预训练的好处。 如果我们允许ULMFiT 也使用未标记的样本( IMDb 为 50k,AG 为 100k),在 100 个示例样本时,分别能与在 AG 上以 50 倍以上和 IMDb 上以 100 倍以上的数据从头开始训练得到的性能相同。 在 TREC-6 上,ULMFiT 比从头开始训练有显著提高,但因为样本更短更少,所以监督和半监督的 ULMFiT 结果相似。

Impact of pretraining

我们在表 4 中展示了没有用预训练和用了在 WikiText-103 的预训练的比较结果。预训练对于中小型数据集是最有用的,这种数据集在商业应用中最常见。但即使对于大型数据集,预训练也可以提高性能。

table4

表 4: ULMFiT 有预训练和无预训练时的验证错误率。

Impact of LM quality

为了说明选择合适的 LM 的重要性,我们在表 5 中将普通 LM 与没有任何 dropout 但有相同超参数的 LM 、使用精调的 dropout 参数的 AWD-LSTMLM 进行比较。使用我们的微调技术,即使是常规的 LM 在更大规模的数据集上都达到了惊人的良好性能。在规模较小的 TREC-6 上,没有dropout 的普通 LM 存在过度拟合的风险,这会使性能降低。

table5

表 5: ULMFiT 使用普通的 LM 和 AED-LSTM LM 的验证错误率。

Impact of LM fine-tuning

我们在表 6 中将没有微调的模型与微调整个模型(‘Full’),以及有或没有差异化微调(‘Discr’)和斜三角学习率(‘Stlr’)相比较。微调 LM 对较大的数据集是最有利的。‘Discr’ 和 ‘Stlr’ 在所有三个数据集上都提高了性能,并且对于较小的 TREC-6 是十分必要的,此时常规的微调没有益处。

table6

表 6: ULMFiT 使用不同变种的 LM 微调方法的验证错误率 。

Impact of classifier fine-tuning

我们对比了从头开始训练、微调整个模型(‘Full’)、只微调最后一层(‘Last’)、链解冻(‘Chain-thaw)'和逐渐解冻(‘Freez’)。并进一步评估了差异化微调(‘Discr’)和斜三角学习率(‘Stlr’)的重要性。我们将后者用激进的余弦退火方案(‘Cos’)作为替代并进行比较。对于 ‘Discr’ 我们设置学习率 \eta^{L}=0.01 。对于 ‘Chain-thaw’ 设置最后一层的学习率为 0.001,所有其他层为 0.0001。其他的学习率设为 0.001。表 7 中展示了结果。

table7

表 7: ULMFiT 使用不同方法微调分类器的验证错误率。

微调分类器的方法比从头开始训练有显著的改善,特别是在小型数据集 TREC-6 上。 CV 中的标准微调方法 “Last” 严重欠拟合,完全不能将训练误差降低到 0。‘Chain-thaw’ 在较小的数据集上的表现与其他相似,但在大型的 AG 上的表现很出色。 ‘Freez’ 与 ‘Full’ 的表现相类似。除了大型的 AG 外,‘Discr’ 一直都比 ‘Full’ 和 ‘Freez’ 的性能更优。余弦退火比起斜三角学习率在数据集大的时候表现相似,但在较小的数据集上表现不佳。最后,完整的 ULMFiT 分类器微调(最后一行)在 IMDB 和 TREC-6 上性能表现最佳,在 AG 上表现与其他相似。值得一提的是,ULMFiT 是唯一全面表现出色的方法,因此也是唯一的通用方法(universal method)。

Classifier fine-tuning behavior

虽然我们的结果表明,如何微调分类器会产生显着的差异,但目前 NLP 中对归纳式迁移的微调还未被进一步探索,因为这被普遍认为是没用的。为了更好地理解我们模型的微调行为,我们在图 4 中比较了训练期间用 ULMFiT 和 ‘Full’ 微调分类器的验证误差。

图 4: 在IMDb,TREC-6和AG(从上到下)数据集上,使用ULMFiT和“Full”微调分类器的验证错误率曲线。

在所有数据集上,对整个模型进行微调可以在训练中较早地得到最低误差,例如在 IMDb 上的第一个 epoch 之后。但随着模型开始过拟合并且预训练捕获的知识开始丢失,错误也随之增加。相比之下,ULMFiT 更加稳定并且没有遭遇这种灾难性的遗忘。直到最后的 epoch,性能表现也依然保持稳定或继续提高,这展现了学习率方案(schedule)的优势。

Impact of bidirectionality

以需要训练第二个模型的代价,对正向和反向 LM 分类器的预测进行融合(ensemble),能使性能提升约为0.5~0.7。在 IMDb 上,我们将测试误差从单个模型的 5.30 降低到双向模型的 4.58。

6. Discussion and future directions

虽然我们已经证明 ULMFiT 在广泛使用的文本分类任务中都能达到最先进的性能,但我们相信,与现有的迁移学习方法相比,语言模型微调在以下情况中特别有用:1)非英语语言的 NLP 任务,并且可用于有监督的预训练任务的训练数据很少; 2)新的 NLP 任务,并且仍不存在最先进的架构; 3)标记数据数量有限(且有一些未标记数据)的任务。

鉴于对 NLP 的迁移学习特别是微调的研究不多,许多未来的方向都是可能的。一个可能的方向是改进语言模型预训练和微调,并使它们更具可扩展性:对于 ImageNet 来说,预测远少的类只会导致稍许的性能下降,而最近的工作表明源和目标任务标签集之间的对齐(alignment)非常重要——专注于预测一个单词的子集,例如最常用的单词,也许能在加速训练速度的同时保持大部分性能。语言模型也可以用在多任务学习形式中的其他任务来增广,或者通过传统的监督来丰富,例如:语法感知的依存关系(syntax-sensitive dependency),以创建一个更通用或更适合特定下游任务的模型,理想情况是以弱监督的方式保留其通用属性。

另一个方向是将该方法应用于新任务和新模型。虽然扩展为序列标记很简单,但其他具有更复杂交互的任务例如蕴含、问答,可能需要新的方法来进行预训练和微调。 最后,虽然我们提供了一系列分析和消融,但还需要更多的研究来更好地理解预训练语言模型究竟捕获了什么知识,微调期间它是如何变化的、以及不同任务需要哪些信息。

7. Conclusion

我们提出了 ULMFiT,这是一种有效且极其节约数据样本的迁移学习方法,它可以应用于任何NLP任务。我们还提出了几种新颖的微调技术,这些技术结合在一起可以防止灾难性遗忘,并且在各种任务中都能鲁棒地学习。我们的方法明显优于现有的迁移学习技术,并胜过六个代表性文本分类任务的最新技术。希望我们的结果能够促进 NLP 迁移学习的新发展。

翻译完成 殷切盼望指正建议~~ :partying_face: :partying_face: :partying_face:
Translation completed. Sincerely hope corrections and suggestions!

@jeremy @Daniel

很棒啊!:+1:
如果是能英文和中文对应放在一起,那就更好了,方便对比查看。
如果真有感觉特别不确定的地方,可以标注出来,方便大家优先查看。

我之前也有想过,但是中英段落竖着摆放的话,段落之间间隔太大不方便阅读。更好的方式是双栏,就只能自己另开一个浏览器对照着看 orz

好的,不确定的地方我用emoji标注出来~

1 Like

Very cool @thousfeet! Hey @sebastianruder have a look :slight_smile:

Thanks! :smile:

https://mathpix.com/ 用这个可以直接截图导出LaTex代码,超级好用,不管是自己画得,视频里的还是手机拍个图,比贴图好看多了

1 Like