如今,计算机视觉的常见做法是使用迁移学习,即在一项任务上训练像ResNet这样的卷积神经网络,然后在新任务上对其进行适配或微调。迁移学习允许网络利用从原始任务中学到的知识。在架构上,这是指将模型拆分为主体和头,其中头是指针对任务的网络。在训练期间,主体学习来源于领域的广泛特征,并将学习到的权重用于初始化新任务的新模型 [8] 。与传统的监督学习相比,这种方法通常会产生高质量的模型,这些模型在各种下游任务中效果更佳,并且使用的标注数据更少。这两种方法的组合如图1-7所示。
图1-7:传统监督学习(左)和迁移学习(右)的比较
在计算机视觉中,模型首先在包含数百万张图像的ImageNet( https://image-net.org )等大规模数据集上进行训练。这个过程称为预训练,其主要目的是向模型传授图像的基本特征,例如边或颜色。然后,这些预训练模型可以在下游任务上进行微调,例如使用相对较少的标注示例(通常每个类几百个)对花种进行分类。微调模型通常比在相同数量的标注数据上从头开始训练的监督模型具有更高的准确率。
尽管迁移学习成为计算机视觉的标准方法,但多年来,人们并不清楚NLP的类似预训练过程是怎么样的。从而导致NLP应用程序通常需要大量的标注数据才能实现高性能。即便如此,这种性能也无法与视觉领域的成就相提并论。
在2017年和2018年,几个研究小组提出了新的方法,最终令迁移学习也能成功应用到NLP领域。这种方法始于OpenAI研究人员的研究,他们通过使用从无监督预训练中汲取的特征在情感分类任务上获得了出色的性能 [9] 。紧随其后的是ULMFiT,它使用预训练LSTM模型构建了一个可以适用于各种任务的通用框架 [10] 。
如图1-8所示,ULMFiT包括以下三个主要步骤:
预训练
最初的训练目标非常简单:根据前面的单词预测下一个单词。这类任务称为语言建模,所生成的模型称为语言模型。这种方法的优雅之处在于不需要标注数据,并且可以使用来自Wikipedia等来源的大量可用文本 [11] 。
领域适配
在大规模语料库上进行预训练得出语言模型之后,下一步就是将其适配于业务领域语料库(例如,从Wikipedia迁移到电影评论的IMDb语料库,如图1-8所示)。这一阶段仍然使用语言建模方法,但现在模型必须预测目标语料库中的下一个单词。
微调
这一步使用目标任务的分类层对语言模型进行微调(例如,对图1-8中的电影评论的情感进行分类)。
图1-8:ULMFiT工作流程(由Jeremy Howard提供)
通过引入一个可行的NLP预训练和迁移学习框架,ULMFiT填补了令Transformer起飞的缺失部分。2018年,发布了两类将自注意力与迁移学习相结合的Transformer模型:
GPT
仅使用Transformer架构的解码器部分,以及与ULMFiT相同的语言建模方法。GPT在BookCorpus 1 [12] 上进行预训练,该语料库由7000本来自冒险、幻想和浪漫等各种流派的图书组成。
BERT
仅使用Transformer架构的编码器部分,以及一种称为掩码语言建模的特殊形式的语言建模。掩码语言建模的目的是预测文本中随机掩码的单词。如,给定一个句子,如“I looked at my[MASK]and saw that[MASK]was late.”,该模型需要预测[MASK]所掩码的单词最有可能的候选者。BERT在BookCorpus和英语Wikipedia上进行预训练。
GPT和BERT在各种NLP基准测试中创下新高,从而开创了Transformer时代。
但是由于各个研究实验室在不同的框架(PyTorch或TensorFlow)上发布模型,而这些模型无法兼容于其他框架,NLP从业者将这些模型移植到他们自己的应用程序中经常会遇到困难。于是Hugging FaceTransformers库( https://oreil.ly/Z79jF )这个能够跨50多个架构的统一API应运而生。该库催化了Transformer研究的爆炸式增长,并迅速渗透到NLP从业者中,从而可以轻松地将Transformer模型集成到当今的许多实际应用中。接下来我们看看这个库吧!