什么是自然言语的预训练?
作者头像
  • 费烨妮
  • 2021-07-07 18:26:16 7

当前,人们所说的预训练模型主要指的是大规模预训练模型,尤其是预训练语言模型,但这种认识实际上存在一定的局限。在自然语言处理领域,预训练模型确实取得了显著进展,通常是指通过无监督或自监督等技术将人类的语言知识预先学习成一个模型,然后再将其应用于具体任务进行微调。然而,从广义上讲,预训练在机器学习中有着悠久的历史,在深度学习的早期发展中也起到了重要作用。如今,大规模预训练模型不仅在自然语言处理领域取得了突破,在其他领域如计算机视觉也取得了许多重要进展。

机器学习主要分为生成式模型和判别式模型两大类。生成式模型通过对数据的联合分布进行建模,可以执行无监督学习、处理缺失数据等任务,在合理假设下,这类模型的训练相对简单;而判别式模型则直接优化任务目标或其近似值(例如在分类任务中使用损失函数及其各种凸替代),在训练数据充足的情况下,这类模型通常能更好地适应任务,但其训练过程一般更为复杂。因此,在机器学习领域,如何将生成式模型与判别式模型相结合成为一个重要研究课题。一种常见的方法是利用生成式模型作为“预训练”模型,再结合判别式目标进行微调。例如,通过先对经典的隐马尔可夫模型进行生成式训练(即最大似然估计),再进行判别式微调,可以提高识别精度。

2006年,深度学习取得了突破性进展,辛顿等人发表了首个成功学习具有多个隐含层的深度模型——深度信念网络(DBN)。其核心思想是通过逐层训练的贪婪算法进行无监督预训练,然后将其结果作为相对更慢的训练算法(即Wake-Sleep算法)的初始值进行微调。这种方法对深度学习的早期发展起到了关键作用。例如,辛顿基于逐层无监督预训练技术,通过最小化重构误差微调一个深度自编码器,取得了比主成分分析(PCA)更好的降维效果。本吉奥等人在此基础上进行了扩展,使其适用于更复杂的场景(如连续值输入数据);雅恩·乐昆等人则基于类似技术训练卷积网络。这些方法的核心假设是:预训练得到的初始权重会落在功能较好的局部极小值附近;在此之前,对于超过两个隐含层的神经网络,随机初始化的梯度下降算法并不能提升性能,甚至可能损害性能。

大规模预训练模型最初在自然语言处理领域取得突破,并逐渐被应用到计算机视觉等领域。在自然语言处理领域,最早的预训练模型主要采用浅层词嵌入方法,学习上下文相关的动态词向量,代表作有NNLM、Word2Vec(包括CBOW和Skip-Gram)、Glove等。尽管这些经过预训练的词向量能在一定程度上捕捉词义,但它们缺乏上下文敏感性,难以解决一词多义的问题,也无法理解更高层次的文本概念,如句法结构、语义角色和指代等。针对这一问题,彼得斯等人提出了基于特征融合的预训练模型ELMo。ELMo首先从大规模语料库中训练一个两层双向长短期记忆网络(LSTM),然后从预训练网络中提取对应词语的各层特征,根据不同任务的需求,学习不同层特征的权重,通过加权求和获得上下文相关的融合特征,进而应用于下游任务。

在此基础上,OpenAI提出了基于微调的预训练模型GPT,使用Transformer解码器代替LSTM作为网络结构,先预训练单向Transformer语言模型,仅依赖于上文预测下一个词,再通过有监督微调方法调整网络参数。GPT的升级版本GPT2采用无监督多任务预训练方法,在多项生成任务上表现出色,无需额外微调。与GPT使用的单向Transformer语言模型和ELMo使用的双向LSTM语言模型不同,BERT基于Transformer编码器,采用掩码语言模型进行预训练,旨在实现深层双向联合训练。此外,BERT还增加了下一句预测的二分类任务,以预测某句是否为真正的下一句。在微调阶段,BERT针对不同任务调整参数,在多项自然语言处理任务中均表现出色。

基于BERT的掩码语言模型思想,后续许多预训练模型在掩码策略上做了改进。例如,RoBERTa改变了BERT静态掩码策略,采用动态掩码进行预训练。SpanBERT为了解决BERT中掩码最小单位为词导致的强相关词被分割的问题,采用片段掩码随机掩盖连续词,并添加边界预测掩码词的任务。百度的ERNIE引入外部知识,采用三种掩码策略,覆盖词语、短语和实体来预测被掩盖部分。微软的MASS及谷歌的T5将掩码语言模型引入生成任务,采用Transformer编解码框架,在编码端掩盖词序列,再在解码端预测被掩盖的词序列。脸书提出的BART同样基于Transformer框架,在编码端对序列采用多种加噪策略,在解码端生成原始序列。此外,为了克服掩码语言模型中“MASK”字符导致的预训练与微调不一致以及人为掩盖词之间的独立性假设问题,XLNet提出排列语言模型,最大化所有可能排列的对数似然,训练时采样一种排列顺序,遮盖一定数量的词,采用双流自注意力机制依次预测被遮盖的词。

近年来,为了应对大模型在移动和物联网设备上的部署挑战,出现了多种基于BERT的模型压缩方法。例如,ALBERT采用词嵌入参数因式分解、隐藏层参数共享等方法减少参数量,并增加句子间顺序预测任务。TinyBERT则采用蒸馏方法,先在大数据集上微调大模型,再通过小模型学习大模型的词嵌入、注意力层和隐藏层输入。此外,为了融合多种模态信息进行内容理解,多模态预训练模型成为近期的研究热点。通常应用图像目标检测技术,将高置信度物体及其位置关系作为图片输入,再将提取到的图像特征与文本特征进行模态间融合处理,使模型学习到图文之间的关联信息。例如,单流的VL-BERT直接将图像和文本特征输入到单个Transformer中进行融合;跨流的ViLBERT和LXMERT则采用双通道输入并进行交叉融合,提取图文特征后基于注意力机制进行模态间交互,最后通过Transformer得到最终特征。

在视觉领域,预训练长期以来都是在ImageNet上进行的。ImageNet预训练结合下游任务微调的方法在许多任务中都取得了良好的效果。2017年,谷歌的研究人员首次将预训练数据扩展到更大规模的数据集上,介绍了一个更大的图像数据集JFT-300M,并发现更大规模的数据集同样可以提升ImageNet分类及其他下游任务的性能。值得注意的是,JFT-300M并未对外开放,因此后续的视觉预训练相关工作主要由谷歌完成。2018年,基于JFT-300M这一超大规模数据集,谷歌提出了BiT预训练模型(即用更大的数据集训练ResNet),详细讨论了BiT在各种下游任务(包括小样本情况)中的泛化能力,在多项任务上刷新了当时的最好结果。此后,谷歌又提出了两种新的训练算法NoisyStudent和MetaPseudoLabels,将EfficientNet在ImageNet上的准确率分别提升至88.4%和90.2%,后者成为首个在ImageNet上准确率达到90%以上的模型。Facebook在预训练模型领域也有所尝试,2018年收集了一个超过35亿张图片的数据集IG-3.5B-17k用于训练模型,但相比于JFT-300M,这个数据集包含更多噪声。此后,Facebook未再发布基于此数据集的工作,也没有公开这一数据集。

最近,Transformer在视觉领域的应用吸引了业界的关注。2020年,谷歌提出了ViT,基于Transformer的骨干网络在许多方面达到了甚至超越传统CNN的效果,展示了用Transformer进行预训练的可能性。在训练过程中,他们同样使用了JFT-300M数据集。随后,出现了许多改进工作,包括CvT、CeiT和SwinTransformer等,它们尝试将卷积的一些特性与Transformer结合,并取得了不错的效果。受限于数据,这些工作都在ImageNet-21k上进行训练。此外,自监督学习也是当前热门方向之一,代表性方法有MoCo和SimCLR。然而,目前的自监督学习大多在ImageNet上进行训练,尚未扩展到更大规模的数据集上,同时现有成果与有监督学习相比仍有差距。

    本文来源:图灵汇
责任编辑: : 费烨妮
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
言语训练自然什么
    下一篇