美文网首页
综述:自然语言处理的预训练模型

综述:自然语言处理的预训练模型

作者: 京漂的小程序媛儿 | 来源:发表于2020-06-02 17:28 被阅读0次

    翻译自Xipeng Qiu*, School of Computer Science, Fudan University的论文,链接:https://arxiv.org/pdf/2003.08271.pdf

    最近,预训练模型(pre-trained models,PTMs)的出现将自然语言处理(NLP)带入了一个新时代。在这项调查中,我们对NLP的PTMs进行了全面审查。首先简要介绍了语言表征学习(language representation learning)及其研究进展。然后,我们系统地从四个不同的角度对现有的PTMs进行分类。接下来,我们将描述如何将PTMs的知识应用于后续任务。最后,我们概述了未来研究的一些潜在方向。本调查旨在为理解、使用和开发用于各种NLP任务的PTMs提供实际指导。

    Deep Learning, Neural Network, Natural Language Processing, Pre-trained Model, Distributed Representation, Word Embedding, Self-Supervised Learning, Language Modelling

    1.介绍

    随着深度学习的发展,各种神经网络被广泛应用于解决自然语言处理(NLP)任务,如卷积神经网络(convolutional neural networks, CNNs)、递归神经网络(neural networks, RNNs)、基于图形的神经网络(graph-based neural networks, GNNs)和注意机制等。这些神经模型的优点之一是能够缓解特征工程问题。非神经NLP方法通常严重依赖于离散的手工特征,而神经方法通常使用低维和密集的向量(又称向量,分布式表示)隐式地表示语言的语法或语义特征。这些表示是在特定的NLP任务中学习的。因此,神经方法使人们更容易开发各种NLP系统。

    尽管神经模型在NLP任务中取得了成功,但与计算机视觉(CV)领域相比,性能改进可能不那么显著。主要原因是当前用于大多数监督的NLP任务的数据集相当小(机器翻译除外)。深度神经网络通常具有大量的参数,这使得它们对这些小的训练数据过拟合,在实际应用中不能很好地推广。因此,许多NLP任务的早期神经模型相对较浅,通常只包含1 ~ 3个神经层。

    最近,大量的工作表明,在大型语料库上,预先训练的模型(PTMs)可以学习通用语言表示,这对于后续的NLP任务是有益的,可以避免从零开始训练新模型。随着计算能力的发展,深层模型(即随着训练技能的不断提高,PTMs的体系结构由浅向深推进。第一代PTMs的目标是学习好的词嵌入。由于这些模型本身不再被下游任务所需要,它们通常对于计算效率来说是非常肤浅的,例如Skip-Gram和GloVe。虽然这些预先训练好的嵌入可以捕获单词的语义含义,但它们是上下文无关的,不能捕获上下文中的高级概念,如多义消歧、句法结构、语义角色、回指等。第二代PTMs主要学习上下文词嵌入,如CoVe, ELMo, OpenAI GPT和BERT。这些学习过的编码器仍然需要在上下文中通过下游任务来表示单词。此外,还提出了各种预训练任务,以学习不同目的的PTMs。

    这项调查的贡献可以总结如下:

    1. 全面回顾。我们提供了对NLP PTMs的全面回顾,包括背景知识、模型架构、预训练任务、各种扩展、适应方法和应用。

    2. 新的分类方法。我们提出了一种NLP的PTMs分类方法,它从四个不同的角度对现有的PTMs进行了分类:1)表示类型;2)模型体系结构;3)预训练任务类型;4)特定类型场景的扩展。

    3.丰富的资源。我们收集了PTMs相关的丰富资源,包括PTMs的开源实现、可视化工具、语料库和论文列表。

    4. 未来的发展方向。我们讨论并分析了现有PTMs的局限性。并提出未来可能的研究方向。

    综述的其余部分组织如下。第2节概述了PTMs的背景概念和常用符号。第3节简要概述了PTMs并澄清了PTMs的分类。第4节提供了PTMs的扩展。第5节讨论如何将PTMs的知识转移到下游任务。第6节给出了关于PTMs的相关资源。第7节展示了跨各种NLP任务的应用集合。第8节讨论了当前的挑战并提出了未来的方向。第9节总结全文。

    2背景

    2.1语言表征学习(Language Representation Learning)

    正如Bengio所建议的,一个好的表示应该表达general-purpose的先验,这些先验不是特定于任务的,但可能对解决AI任务有用。当涉及到语言时,一个好的表现应该捕捉隐藏在文本数据中的隐含的语言规则和常识知识,例如词汇意义(lexical meanings)、句法结构(syntactic structures)、语义角色(semantic roles),甚至语用学(pragmatics)。

    分布式表示的核心思想是通过低维实值向量来描述文本的含义。而向量的每一个维度都没有对应的意义,而整体则代表了一个具体的概念。图1展示了NLP的通用神经架构。词的嵌入有两种:非上下文嵌入和上下文嵌入。它们之间的不同之处在于,单词的嵌入是否会根据其出现的上下文动态变化。

    图1:NLP的通用网络架构

    非上下文嵌入表示。表示语言的第一步是将离散的语言符号映射到分布式嵌入空间中。形式上,对于词汇表V中的每个word(或sub-word)x,我们将其映射到向量ex,查找表E。这些嵌入和其他模型参数一起,根据任务数据进行训练。

    这种嵌入有两个主要限制。第一个问题是嵌入是静态的。无论上下文如何,单词的嵌入始终是相同的。因此,这些非上下文嵌入无法对多义词进行建模。第二个问题是OOV(out-of-vocabulary)的问题。为了解决这个问题,字符级的单词表示或sub-word表示被广泛应用于许多NLP任务中,如CharCNN、FastText和Byte-Pair Encoding(BPE)。

    上下文嵌入表示。为了解决词的多义词性和语境依赖性问题,我们需要区分词在不同语境中的语义。给定一个文本x1、x2、···、xT,其中每个token xt∈V是一个单词或sub-word,xt的上下文表示依赖于整个文本。[h1, h2, · · · , hT ] = fenc(x1, x2, · · · , xT ),其中fenc(.)是一个神经编码器(neural encoder),ht被称为token xt的上下文嵌入(contextual embedding)或动态嵌入(dynamical embedding),因为其中包含上下文信息。

    2.2神经上下文编码器(Neural Contextual Encoders)

    大多数神经环境编码器可以分为两类:序列模型(sequence models)和基于图的模型(graph-based models)。图2说明了这些模型的体系结构。

    图2:神经上下文编码器

    2.2.1序列模型

    序列模型通常按顺序捕获单词的局部上下文(local context)。

    卷积模型(Convolutional Models )。卷积模型将单词嵌入到input sentence中,然后通过卷积运算将相邻的local information聚集起来,从而获得单词的表示。

    个人笔记:卷积模型也是序列模型

    递归模型(Recurrent Models)。递归模型可以捕获短记忆(short memory)单词的上下文表示,如LSTMs和GRUs。在实践中,双向LSTMs或GRUs用于从单词的两边收集信息,但其性能常常受到长时依赖(long-term dependency)问题的影响。

    2.2.2非序列模型

    非序列模型通过预先定义的词与词之间的树或图结构(如句法结构或语义关系)来学习上下文表示。一些流行的非序列模型包括递归神经网络(Recursive NN)、TreeLSTM和GCN。

    虽然具有linguistic-aware的图结构可以提供有用的归纳偏差(inductive bias),但如何构建一个良好的图结构也是一个具有挑战性的问题。此外,该结构严重依赖于专家知识或外部NLP工具,例如dependency parser。

    全连接的自注意力机制模型(Fully-Connected Self-Attention Model)。

    在实践中,更直接的方法是使用全连通图(fully-connected graph)来建模词与词之间的关系,让模型自己学习结构。通常,连接权值由self-attention机制动态计算,该机制隐式地表示单词之间的连接。全连通自注意模型的一个成功实例是Transformer,它还需要其他的补充模块,如位置嵌入(positional embeddings)、层标准化(layer normalization)、残差连接(residual connections)和位置前馈网络(position-wise feed-forward network, FFN)层。

    个人笔记:Transformer是一种 Fully-Connected Self-Attention Model,本质是图模型,从全连通图中自学习图结构,权重由self-attention计算。

    2.2.3分析

    序列模型学习具有局部性偏差(locality bias)的单词的上下文表示,很难捕捉单词之间的长期交互。然而,序列模型通常很容易训练,并且对于各种NLP任务都能得到很好的结果。

    而Transformer作为一个实例化的全连接的self-attention模型,可以直接对序列中每两个单词之间的依赖关系进行建模,这样更强大,更适合对语言的长期依赖关系进行建模。然而,由于其结构较重且模型偏差较小(less model bias),Transformer通常需要较大的训练语料库,并且很容易在较小或中等大小的数据集上过拟合

    目前,Transformer以其强大的性能成为了PTMs的主流架构。

    2.3为什么要用预训练(Pre-training)?

    随着深度学习的发展,模型参数的数量迅速增加。需要更大的数据集来完全训练模型参数并防止过度拟合。但是,对于大多数NLP任务来说,构建大规模的标记数据集是一个巨大的挑战,因为注释成本非常高,特别是对于语法和语义相关的任务。

    相比之下,大规模的未标记语料库相对容易构建。要利用巨大的未标记文本数据,我们可以首先从它们那里学习良好的表示,然后将这些表示用于其他任务。最近的研究表明,借助从大型未注释语料库上的PTM中提取的表示,许多NLP任务的性能都有显著提高。

    预训练的优势可以总结如下:

    1. 对庞大的文本语料库进行预处理,可以学习通用语言表示,并帮助完成后续任务。

    2. 预训练提供了更好的模型初始化,这通常会带来更好的泛化性能并加速目标任务的收敛。

    3.预训练可以看作是一种正则化方法,以避免对小数据的过度拟合。

    2.4 NLP的PTMs简史

    预训练一直是学习深度神经网络参数的有效策略,然后对下游任务(downstream tasks)进行微调(fine-tuned)。早在2006年,深度学习的突破就伴随着贪婪的分层无监督预训练(greedy layer-wise unsupervised pre-training),紧随其后的是监督微调(supervised fine-tuning)。在CV中,在巨大的ImageNet语料库上对模型进行预训练,然后针对不同任务对更小的数据进行进一步的微调,这已经在实践中得到了应用。这比随机初始化要好得多,因为模型可以学习一般的图像特征,然后在各种视觉任务中使用这些特征。

    在NLP中,大型语料库上的PTMs也被证明有利于NLP的下游任务,从浅层的单词嵌入到深层的神经模型。

    2.4.1第一代PTMs:预训练词嵌入(Pre-trained Word Embeddings)

    将单词表示为密集向量有很长的历史。在神经网络语言模型(neural network language model ,NNLM)的开创性工作中,引入了‘现代的’单词嵌入技术(Word Embedding)。Collobert等人表明,在未标注数据上预训练的单词嵌入可以显著改善许多NLP任务。为了解决计算复杂性,他们通过pairwise ranking task来学习词嵌入,而不是语言建模。他们的工作是第一次尝试从未标记的数据中获得对其他任务有用的通用词嵌入。Mikolov等表明不需要深度神经网络来构建良好的词嵌入。他们提出了两个浅层架构:Bag-of-Words (CBOW) 和 Skip-Gram (SG) 。尽管它们很简单,但它们仍然可以学习高质量的词嵌入,以捕捉词之间潜在的语法和语义相似性。Word2vec是这些模型最流行的实现之一,它使预先训练好的word embeddings可用于NLP中的不同任务。此外,GloVe也是一种广泛使用的获取预训练词嵌入的模型,该模型通过从一个大型语料库中获得全局词-词共现统计数据(global word-word cooccurrence statistics )来计算。

    尽管预先训练好的词嵌入在NLP任务中已经被证明是有效的,但是它们是上下文独立的,并且大部分是由浅模型训练的。当用于下游任务时,整个模型的其余部分仍然需要从头开始学习。

    在同一时期,许多研究者也尝试学习段落、句子或文档的嵌入,如段落向量(paragraph vector)、Skip-thought vectors、Context2Vec等。这些句子嵌入模型试图将输入的句子编码为一个固定维的向量表示,而不是每个token的上下文表示。

    2.4.2第二代PTMs:预训练的上下文编码器(Pre-trained Contextual Encoders)

    由于大多数NLP任务都超出了单词级别,所以很自然地要在句子级别或更高的级别对神经编码器进行预训练。神经编码器的输出向量也称为上下文词嵌入,因为它们根据上下文表示词的语义。

    Dai和Le提出了第一个成功的PTM用于NLP的实例。他们使用语言模型(LM)或序列自动编码器对LSTMs进行初始化,发现预处理可以提高LSTMs在许多文本分类任务中的训练和泛化能力。Liu用LM预训练了一个shared LSTM encoder,并在多任务学习(multi-task learning, MTL)框架下对其进行了fine-tune。他们发现,预训练和微调可以进一步提高多任务学习框架下几个文本分类任务中的表现。Ramachandran发现,Seq2Seq模型可以通过无监督预训练(unsupervised pre-training)得到显著改善。编码器和解码器的权值都是用两种语言模型的预训练的权值初始化的,然后用标记的数据进行微调。除了在LM中预训练上下文编码器外,McCann等在机器翻译(MT)任务中的attentional sequence-to-sequence模型中,预训练了一个deep LSTM encoder。通过预训练的编码器输出的上下文向量(context vectors,CoVe)可以提高各种常见NLP任务的性能。

    相比于先前的PTM,现在的PTM通常使用更大的语料库、更强大或更深入的架构(例如Transformer)和新的预训练任务进行训练。

    个人笔记:PTM之间的区别在于:语料库、架构、预训练任务

    Peters等人采用双向语言模型(bidirectional language model,BiLM)预训练2层的LSTM编码器,由前向LM和后向LM组成。预训练后的BiLM输出的上下文表示 ELMo(Embeddings from Language Models),可以在广泛的NLP任务上带来巨大的改进。Akbik等人字符级LM预训练的contextual string embeddings捕获单词含义。然而,这两个PTM通常被用作一个特征提取器(feature extractor)来生成上下文单词嵌入,这些嵌入被输入到主模型中以执行下游任务。它们的参数是固定的,主模型的其余参数仍然从零开始训练。ULMFiT (Universal Language Model Fine-tuning)试图fine-tune预训练好的LM来行文本分类(text classification, TC),并在6个广泛使用的TC数据集上取得了SOTA的结果。ULMFiT包括三个阶段:1)在通用域数据上进行LM预训练;2)在目标数据集上fine-tuning LM;3)在目标任务上进行fine-tuning。ULMFiT还研究了一些有效的fine-tuning策略,包括区分微调(discriminative fine-tuning)、倾斜三角形学习率(slanted triangular learning rates)和逐步解冻(gradual unfreezing)。

    最近,结构非常深的 PTM显示了它们在学习通用语言表示方面的强大能力:例如OpenAI GPT(Generative Pre-training)和BERT (Bidirectional Encoder Representation from Transformer)。除了LM之外,越来越多的自监督任务(self-supervised tasks)被提出,以使PTMs从大规模文本语料库中获取更多的知识。

    自ULMFiT和BERT以来,fine-tuning已经成为使PTMs适应下游任务的主流方法。

    3 PTMs概述

    PTMs之间的主要区别在于上下文编码器的使用、预训练任务任务和目的。

    我们在2.2节中简要介绍了上下文编码器的体系结构。在本节中,我们将重点介绍预训练任务的描述,并给出PTMs的分类。

    3.1预训练任务

    预训练任务对于学习语言的普遍表征是至关重要的。通常,这些预训练任务应该是具有挑战性的,并且有大量的训练数据。在本节中,我们将预训练任务归纳为三类:监督学习(supervised)、无监督学习(unsupervised)和自监督学习(self-supervised)。

    1. 监督学习(Supervised learning, SL)是基于 input-output对组成的训练数据,学习将输入映射到输出的函数。

    2. 无监督学习(UL)是从未标记的数据中发现一些内在的知识,如簇(clusters)、密度(densities)、潜在表示(latent representation)。

    3.自监督学习(SSL)是监督学习和无监督学习的混合。SSL的学习模式与监督学习完全相同,但是训练数据的标签是自动生成的。SSL的关键思想是以某种形式从其他部分输入预测任一部分的输入。例如,掩蔽语言模型(masked language model,MLM)是一个自监督的任务,它尝试通过一个句子中其余词去预测被MASK的词。

    个人笔记:自监督学习的关键思想是以某种形式从其他部分输入预测任一部分的输入,例如masked language model是通过一个句子中其余词去预测被MASK的词。

    在CV中,许多PTM都是在像ImageNet这样的大型监督训练集上进行训练的。然而,在NLP中,大多数监督任务的数据集都不够大,不足以训练一个好的PTM。唯一的例外是机器翻译(MT)。WMT 2017是一个大型的MT数据集,由超过700万对句子组成。此外,MT是NLP中最具挑战性的任务之一,对MT进行预训练的编码器可以使各种下游NLP任务受益。CoVe是一种成功的PTM,它是一种针对MT任务进行预训练的编码器,可以改进各种常见的NLP任务:情感分析分析(SST、IMDb)、问题分类(TREC)、蕴涵(SNLI)和问答(SQuAD)。

    在本节中,我们将介绍一些在现有PTMs中广泛使用的预训练任务。我们可以把这些任务看作是自监督学习。表1总结了它们的损失函数。

    表1:预训练任务的损失函数

    3.1.1语言模型(LM)

    NLP中最常见的无监督任务是概率语言建模(LM),这是一个经典的概率密度估计问题。虽然LM是一个通用概念,但在实践中,LM通常特指自回归LM(auto-regressive LM)或单向LM(unidirectional LM)。

    给定文本序列x1:T = [x1, x2,···,xT],其联合概率p(x1:T)可分解为:

    文本序列的联合概率

    其中x0是表示序列开始的特殊token。

    条件概率p(xt|x0:t−1)可以通过给定语言上下文x0:t−1的词汇上的概率分布来建模。采用神经编码器fenc(·)对上下文x0:t−1建模,条件概率为:

    条件概率

    其中gLM(·)是预测层。

    给定一个巨大的语料库,我们可以用极大似然估计(MLE)训练整个网络。

    单向LM的一个缺点是,每个token的表示只对左边的上下文token和自身进行编码。然而,更好的文本上下文表示应该从两个方向对上下文信息进行编码。一种改进的解决方案是双向LM (BiLM),它由两个单向LM组成:一个向前的从左到右LM和一个向后的从右到左LM。对于BiLM, Baevski提出了一个双塔模型(two-tower model),forward tower操作从左到右的LM,backward tower操作从右到左的LM。

    3.1.2掩码语言建模(MLM)

    掩蔽语言建模(Masked language modeling, MLM)最早是由Taylor在提出,他将其称为完形填空任务。Devlin等人将此任务改编为一种新的预训练任务,以克服标准单向LM的缺点。简单地说,MLM首先从输入语句中屏蔽掉一些token,然后训练模型用其他token来预测被屏蔽的token。但是,这种预训练方法将在预训练阶段和微调阶段之间产生不匹配,因为掩码标记[MASK]在微调阶段没有出现。经验上,Devlin等人使用如下策略来对一个token执行掩蔽:80%的时间用[MASK],10%的时间用随机的token,10%的时间用原始token。

    个人笔记:1、采用80%,10%,10%的掩蔽策略的主要原因是:在后续微调任务中语句中并不会出现 [MASK] 这个token,采用这样的随机策略可以缓解这一不一致问题,只是能缓解,并不能消除。2、采用这种策略的另一个好处是:预测一个词汇时,模型并不知道输入对应位置的词汇是否为正确的词汇( 有10% 概率,80%+10%的概率不是),这就迫使模型更多地依赖于上下文信息去预测词汇,并且赋予了模型一定的纠错能力(10%是随机替换的错词)。但是这种测了有一个缺点:每批次数据中只有 15% 的标记被预测,这意味着模型可能需要更多的预训练步骤来收敛。

    序列到序列掩蔽语言模型(Seq2Seq MLM)。MLM通常作为分类问题来解决。我们将掩蔽序列提供给一个神经编码器,其输出向量被进送入一个softmax分类器来预测被掩蔽的token。或者,我们可以使用编码-解码器(sequence-to-sequence)架构来做MLM,将掩蔽序列送入编码器,解码器以auto-regression的方式序列产生被掩蔽的token。我们把这种sequence-to-sequence MLM(Seq2Seq MLM)用于MASS和T5。Seq2Seq MLM可以使Seq2Seq风格的下游任务受益,例如问答、摘要和机器翻译。

    个人笔记:掩蔽语言模型MLM,可以用两种方式来学习,分别是分类和序列预测。分类是将masked token位置输出的final hidden vectors送入softmax,来预测masked token。序列预测是用encoder-decoder架构,预测被掩蔽的token序列。

    增强的掩蔽语言建模(Enhanced Masked Language Modeling,E-MLM)。有多个研究提出了不同的增强版本的MLM,以进一步改进BERT。RoBERTa通过动态掩蔽改进了BERT,而不是静态掩蔽。

    个人笔记:BERT在整个训练过程,这15%的Tokens一旦被选择就不再改变,也就是说从一开始随机选择了这15%的Tokens,之后的N个epoch里都不再改变了。这就叫做静态Masking。而RoBERTa一开始把预训练的数据复制10份,每一份都随机选择15%的Tokens进行Masking,也就是说,同样的一句话有10种不同的mask方式。然后每份数据都训练N/10个epoch。这就相当于在这N个epoch的训练中,每个序列的被mask的tokens是会变化的。这就叫做动态Masking。

    UniLM将掩码预测任务扩展到三种类型的语言建模任务:单向、双向和序列到序列预测。XLM在平行双语句子对的串联上执行MLM,称为翻译语言建模(TLM)。SpanBERT用随机连续字掩蔽(Random Contiguous Words Masking)和跨边界目标(Span Boundary Objective,SBO)取代了MLM,将结构信息集成到预训练中,这要求系统基于span边界来预测被掩蔽的span。此外,StructBERT还引入了Span Order Recovery task进一步合并语言结构。

    个人笔记:Bert把MLM看作是完形填空任务,分别有分类和序列预测两种方式来完成这一任务。也有人把MLM看作是语言建模任务,还有预测连续字符掩蔽的。

    丰富MLM的另一个方法是吸收外部知识。

    3.1.3 排列语言模型 (Permuted Language Modeling,PLM)

    尽管MLM任务在预训练被广泛使用,但Yang等人声称,当将模型应用于下游任务时,MLM预训练使用的一些特殊token(如[MASK])不存在,导致了预训练前和微调之间的差距。为了克服这个问题,提出用PLM来替代MLM做为一个预训练目标。

    简而言之,PLM是一种基于输入序列随机排列的语言建模任务。从所有可能的排列中随机抽取排列。然后,将排列序列中的一些token选为目标,并训练模型去预根据其余的token和与目标token之间的自然位置,来预测这些目标token。注意,这种排列不影响序列的自然位置,只定义token预测的顺序。在实践中,由于收敛速度慢,只能预测置换序列中的最后几个标记。引入了two-stream self-attention用于target-aware representations。

    3.1.4去噪自编码器(Denoising Autoencoder,DAE)

    去噪自编码器(DAE)部分破坏输入,目的是恢复原始输入。在语言任务上就是,用序列到序列模型(如标准的Transformer)来重构原始文本。有几种方法可以破坏文本:

    (1) Token Masking:从输入中随机抽取token并用[MASK]元素替换它们。

    (2)Token删除:从输入中随机删除Token。与 Token Masking不同,模型需要确定缺失输入的位置。

    (3)文本填充:像SpanBERT一样,对一些文本span进行采样,并用一个[MASK] token替换。每个span的长度服从泊松分布(λ= 3)。模型需要预测一个span中有多少tokens缺失。

    (4)句子排列:依句号将一个文档分成若干个句子,并将这些句子按照随机顺序排列。

    (5)文档旋转:随机均匀地选择一个token,并旋转文档,使其以该token开始。模型需要识别文档的实际开始位置。

    3.1.5对比学习(Contrastive Learning, CTL)

    对比学习假设观察到的文本对的语义相似度高于随机抽样组成的文本对。通过最小化如下的目标函数来学习文本对(x, y)的得分函数s(x, y):

    学习文本对得分函数的损失函数

    其中 (x, y+)代表相似的文本对,(x, y-)代表不相似的文本对。评分函数s(x, y)通常由一个可学习的神经编码器以两种方式计算:

    评分函数计算

    CTL背后的理念是“通过比较来学习”。与LM相比,CTL通常具有较少的计算复杂度因此是PTMs理想的替代训练标准

    Collobert等人提出了pairwise ranking task来区分真假短语(real and fake phrases)。该模型需要使得,预测得到的合法短语的得分高于用随机词替换核心词得到的错误短语的得分。Mnih和Kavukcuoglu使用噪声对比估计(Noise-Contrastive Estimation,NCE)有效地训练单词嵌入,训练一个二元分类器来区分真实样本和虚假样本。在众所周知的word2vec嵌入中也使用了NCE的思想。

    在下面的段落中,我们将简要描述最近提出的一些CTL任务。

    Deep InfoMax (DIM)。Deep InfoMax (DIM)最初是针对图像提出的,它通过最大化整个图像的表示和图像局部区域的互信息来提高表示的质量。Kong等将DIM应用于语言的表征学习。序列x的全局表示被定义为第一个token(句子符号的特殊开始)的隐藏状态,由上下文编码器fenc(x)计算的。DIM的目的是fenc(xi: j) fenc(xˆi: j) 比fenc(x˜i: j) fenc(xˆi: j)得到更高的得分,其中xi: j代表的x中i到j的n-gram span,xˆi: j代表一个位置i到j被mask的句子,x˜i: j代表语料库中随机采样的的n-gram,负样本。

    被替换的token检测(Replaced Token Detection ,RTD)。替换token检测(RTD)与NCE相同,但是根据周围的上下文来预测一个token是否被替换。

    带负采样的CBOW (CBOW with negative sampling,CBOW- ns)可以看作是RTD的一个简单版本,即从词汇表中随机抽取负样本。

    ELECTRA改进RTD,使用生成器替换序列的token。

    RTD也是mismatch问题的一种替代解决方案。网络在训练前就能看到[MASK],但在下游任务中进行微调时就看不到了。

    类似地,WKLM替换了实体级别上的单词,而不是token级别上的单词。具体来说,WKLM用相同类型的其他实体的名称替换实体名,并训练模型来区分实体是否被替换。

    下一句预测(Next Sentence Prediction,NSP)。标点是文本数据的自然分隔符。因此,利用这些方法来构建训练前方法是合理的。NSP就是一个很好的例子。顾名思义,NSP训练模型从训练语料库中区分两个输入句子是否是连续的片段。具体来说,在为每个训练前的例子选择句子对时,50%的时间,第二个句子是第一个句子的实际下一个句子,50%的时间,它是从语料库中随机抽取的一个句子。通过这样做,它能够教会模型理解两个输入句子之间的关系,从而有利于对该信息敏感的后续任务,例如问答和自然语言推理。

    然而,NSP任务的必要性受到后续工作的质疑。Yang等发现NSP任务的影响不稳定,而Joshi等发现没有NSP损失的单句训练优于有NSP损失的句子对训练。此外,Liu等对NSP任务进行了进一步的分析,结果表明,当使用来自单个文档的文本块进行训练时,消除NSP损失匹配或略微提高了下游任务的性能。

    句子顺序预测(Sentence Order Prediction,SOP)。 为了更好地模拟句子间连贯性,ALBERT用SOP损失代替了NSP损失。正如Lan等人所推测的那样,NSP将主题预测(topic prediction)   和相关性预测(coherence prediction)合并到一个任务中。因此,该模型可能只依靠其中较简单的任务-主题预测来进行学习。SOP与NSP不同,SOP使用同一文档中的两个连续段作为正例,相同的两个连续段但顺序互换作为反例。因此,ALBERT在各种下游任务上的表现一直都比BERT好。StructBERT和BERTje也将SOP作为他们的自主学习任务。

    个人笔记:下一句预测任务的必要性。下一句预测实际上包含了主题预测和相关性预测,由于主题预测更为简单,所以可能模型只会根据主题预测任务去学习,并没有学习到相关性。句子顺序预测简化了任务,两个样本对用的是同样的连续文本,只是交换了顺序做为正负样本,更好的学习相关性。ALBERT是基于句子顺序预测去学习的。

    3.1.6其他

    除了上述任务外,还有许多其他辅助的预训练任务被用来合并 factual knowledge(参见4.1节)、改进跨语言(cross-lingual )任务(参见4.2节)、多模态(multi-modal)应用(参见4.3节)或其他特定任务(参见4.4节)。

    3.2 PTMs的分类

    为了明确NLP现有PTMs之间的关系,我们构建了PTMs的分类,从四个不同的角度对现有PTMs进行了分类:

    1. 表示类型:根据用于下游任务的表示,我们可以将PTM分为非上下文(non-contextual)和上下文(contextual)模型。

    2. 架构:PTMs使用的主干网络,包括LSTM、Transformer encoder、Transformer decoder和Transformer 架构。“Transformer”指的是标准的encoder-decoder 架构。“Transformer encoder”和“Transformer decoder”分别指标准Transformer 架构的encoder部分和decoder部分。它们的不同之处在于,decoder部分使用带三角矩阵的masked self-attention来防止tokens出现在它们未来的(right)位置。

    3.预训练任务类型:PTMs使用的预训练任务类型。我们已经在3.1节中讨论了它们。

    4. 扩展:为各种场景设计的PTM,包括knowledge-enriched PTM、多语言或特定某种语言(multilingual或language-specific)的PTM、multi-model的PTM、领域特定的PTM和压缩的(compressed)PTM。我们将在第4节中特别介绍这些扩展。

    图3显示了分类以及一些相应的有代表性的PTMs。此外,表2对一些有代表性的PTMs做了更详细的区分。

    图3:PTMs的分类和有代表性的例子 表2:有代表性的PTMS

    3.3模型分析

    由于PTMs的巨大成功,了解PTMs捕捉到了哪些知识以及如何从知识中归纳知识是非常重要的。有大量的literature analyzing linguistic knowledge和world knowledge存储在预训练的non-contextual  embeddings和contextual embeddings中。

    3.3.1无上下文嵌入

    首先探讨静态词嵌入的各种知识。Mikolov等发现,通过神经网络语言模型学习的单词表示能够捕捉语言中的语言规律,单词之间的关系可以用关系特定的向量偏移量来表征。进一步的类比实验表明,skip-gram模型生成的词向量可以同时捕捉句法和语义的词之间的关系,如vec(“中国”) - vec(“北京”) ≈ vec(“日本”) - vec(“东京”)。此外,他们还发现了词向量的构成属性,例如vec(“德国”) + vec(“首都”)与vec(“柏林”)接近。Rubinstein等人受到这些研究的启发,发现distributional word representations能够很好地预测分类学属性(例如,狗是一种动物),但却无法学习自身属性(例如,天鹅是白色的)。类似地,Gupta等人表明word2vec嵌入会隐式地编码实体之间的引用属性(referential attributes)。distributed word vectors和一个简单的监督模型可以学习预测实体的数字和二进制属性(numeric and binary attributes),具有一定的准确性。

    个人笔记:无上下文的静态词嵌入,擅长学习实体的某些属性,如分类属性(狗是一种动物)、数字和二进制属性(numeric and binary attributes)等,但是不擅长学习实体的另一些属性,如自身属性(天鹅是白色的)等。

    3.3.2上下文嵌入

    大量的研究证明,上下文嵌入中包含不同类型的知识。一般来说,有两种类型的知识:linguistic knowledge和world knowledge。

    linguistic knowledge:Tenney、Liu发现BERT在词性标注(part-of-speech tagging,POS)和成分标注(constituent labeling)等句法任务上表现良好。然而,与简单的语法任务相比,BERT在语义和细粒度的语法任务方面做得还不够好

    此外,Tenney等分析了BERT的层在不同任务中的作用,发现BERT处理任务的顺序与NLP pipelines中类似。此外,还证实了BERT中包含主谓一致和语义角色的知识。此外,Hewitt等提出了几种从BERT中提取依赖树和依存树(dependency trees and constituency)的方法,证明了BERT对句法结构进行编码的能力。Reif等探究了BERT的内部表示的几何结构,并发现了一些证据:1)linguistic features似乎是在单独的语义(semantic)和句法(syntactic)子空间中表示的;2) attention矩阵包含语法(grammatical)表征;3)BERT能很好地辨别词义(word senses)。

    World Knowledge:除了linguistic knowledge,PTMs还可以存储训练数据中呈现的world Knowledge。探究world Knowledge的一个简单方法是用‘完形填空’来询问Bert,例如,“但丁出生在[MASK]”。Petroni等人从多个知识来源,手工创建了single-token完形填空,构建了LAMA(Language Model Analysis)任务。他们的实验表明,BERT包含了与传统信息提取方法相媲美的world Knowledge。由于LAMA的查询生成过程非常简单,Jiang等认为LAMA只是测量了语言模型所知道的下限,并提出了更高级的方法来生成更高效的查询。尽管LAMA有惊人发现,但它也受到了后续工作的质疑。类似地,一些研究将BERT的相关知识(relational knowledge)和常识知识(commonsense knowledge)引入到下游任务中。

    4 PTMs的扩展

    4.1Knowledge-Enriched PTMs

    PTMs通常从通用的大型文本语料库中学习通用语言表示,但缺乏领域特定的知识。将来自外部知识库的领域知识合并到PTM中已被证明是有效的。外部知识包括语言( linguistic),语义(semantic),常识(commonsense),事实(factual ),到领域特定知识(domain-specific knowledge)。

    一方面,外部知识可以在预训练时注入。早期的研究主要集中在knowledge graph embeddings和word embedding的学习上。自BERT以来,一些辅助的预训练任务被设计用于将外部知识融入到深度PTMs中。LIBERT(linguistically-informed BERT)通过一个额外的语言约束任务(linguistic constraint task)整合了语言知识(linguistic knowledge)。Ke等人将每个词的情感极性综合起来,将MLM扩展到Label-Aware MLM (LA-MLM)。因此,他们提出的模型SentiLR,在sentence-level和aspect-level的情感分类任务都得到了SOTA的表现。Levine等人提出了SenseBERT算法,该算法经过预训练,不仅可以预测masked tokens,还可以预测它们在WordNet中的supersenses。ERNIE(THU)将预置在knowledge graph上的实体嵌入与文本中相应的实体相集成,以增强文本表示。类似地,KnowBERT联合训练BERT和一个entity linking model,以端到端方式合并实体表示。Wang等提出了KEPLER,它联合优化了知识嵌入和语言建模目标(language modeling)。这些工作通过实体嵌入注入知识图的结构信息。相反,K-BERT显式地将从KG中提取的相关三元组注入到句子中,以获得extended tree-form  input 作为BERT的输入。此外,Xiong等采用实体替代识别来鼓励模型更多地意识到事实知识。然而,这些方法大多在注入知识时更新了PTMs的参数,注入多种知识时可能会出现灾难性遗忘(catastrophic forgetting)。为了解决这个问题,K-Adapter通过针对不同的预训练任务分别训练不同的适配器来注入多种知识,从而实现知识的持续灌输。

    另一方面,可以将外部知识合并到预训练的模型中,而无需从头开始对其进行重新训练。例如,K-BERT允许在下游任务的fine-tuning过程中注入事实知识。Guan等人使用常识知识库、ConceptNet和ATOMIC,来增强GPT-2,完成故事生成任务。Yang等提出了一种知识-文本融合模型(knowledge-text fusion model),用于机器阅读理解中获取相关的语言和事实知识。

    此外,Logan IV等和Hayashi等人将语言模型分别扩展到知识图语言模型(knowledge graph language model,KGLM)和潜在关系语言模型(latent relation language model,LRLM),两者都允许以知识图为条件进行预测。这些新的kg条件语言模型显示出了预训练的潜力。

    个人笔记:知识融合的三种方式。1、设计预训练任务,联合学习。通过实体嵌入注入知识图的结构信息,和Bert联合训练;2、显式地将从KG中提取的相关三元组注入到句子中,bert的输入结构会变成extended tree-form  input;3、在下游任务的fine-tuning过程中注入事实知识。

    前2种都要更新PTMs的参数,注入多种知识时可能会出现灾难性遗忘,尝试用K-Adapter通过针对不同的预训练任务分别训练不同的适配器来注入多种知识,从而实现知识的持续灌输。

    4.2多语种和特定语种的PTMs

    4.2.1多语种PTMs

    学习跨语种共享的多语种文本表示在跨语种NLP任务中发挥着重要作用。

    Cross-Lingual Language Understanding (XLU) 早期大部分工作集中在学习多语种(multilingua)单词嵌入,在一个语义空间中表示来自多种语种的文本。然而,这些方法语种间的对齐。

    多语种的BERT3 (mBERT)是以MLM为预训练任务,基于维基百科前104种语言,共享词表和权重训练的。每个训练样本都是单语文档,没有专门设计跨语种目标,也没有跨语种数据。即便如此,mBERT的跨语言综合能力也惊人地好。K等表明,不同语种之间的词汇重叠在跨语种任务的成功中的作用可以忽略不计。

    XLM通过合并跨语种任务、翻译语言建模(TLM)来改进mBERT, TLM在成对的双语句子对的连接上执行MLM。Unicoder进一步提出了三种新的跨语种预训练任务,包括跨语种单词恢复(word recovery)、跨语言释义分类(paraphrase classification)和跨语言掩蔽语言模型(cross-lingual classification, XMLM)。

    XLM-RoBERTa (XLM-R)是一个scaled的多语种编码器,预训练使用的数据量显著增加,在100种不同的语言,2.5TB,干净的 CommonCrawl 数据。XLM RoBERTa的预训练任务是单语的MLM。XLM-R在多种跨语种任务上取得了SOTA的效果,包括XNLI、MLQA和NER。

    Cross-Lingual Language Generation (XLG) 跨语种生成是从输入语言生成不同语种文本的一种任务,如机器翻译和跨语言摘要。

    与多语言分类的PTM不同,跨域种生成的PTM需要对编码器和解码器进行联合预训练,而不是只专注于编码器。

    MASS在多语种上用单语Seq2Seq MLM对Seq2Seq模型进行了预训练,并对无监督的NMT进行了显著改进。XNLG为跨语种自然语言生成设计了两个阶段的预训练。第一阶段用单语种MLM和跨语言MLM(XMLM)任务预训练编码器。第二阶段,固定编码器,用单语种DAE和跨语自动编码(XAE)训练解码器。实验表明,XNLG在跨语种问题生成和跨语种摘要方面具有优势。mBART是BART的跨语种扩展,它在25种语言的大型单语语料库上,在Seq2Seq去噪自动编码器(DAE)任务上,对编码器和解码器进行联合预训练。实验表明,在各种机器翻译(MT)任务中,mBART可以显著提高性能。

    4.2.2 Language-Specific PTMs

    虽然多语种PTMs在许多语言上表现良好,但最近的研究表明,在单一语种上训练的PTMs的性能显著优于多语种。

    中文,没有明确单词边界,建模更大的粒度和多粒度的单词表示取得了成功。Kuratov和Arkhipov使用迁移学习技术将多语种PTM转换为俄语单语PTM。此外,还为不同的语言发布了一些单语PTM,例如CamemBERT和FlauBERT用于法语,FinBERT用于芬兰语,BERTje和RobBERT用于荷兰语,AraBERT用于阿拉伯语。

    4.3 多模态(Multi-Modal) PTMs

    通过观察PTMs在许多NLP任务中的成功,一些研究已经集中于获得一个PTMs的跨模态版本。这些模型中的绝大多数都是为视觉和语言的通用特征编码而设计的。这些模型是在一些巨大的跨模态数据语料库上进行预训练的,如带有spoken words的视频或带有字幕的图像,结合扩展的预训练任务,充分利用多模态特征。通常情况下,基于视觉的MLM(visual-based MLM)、掩蔽视觉特征建模(masked visual-feature modeling)和视觉语言匹配(visual-linguistic matching MLM)等任务在多模态预训练中得到了广泛应用,如VideoBERT、VisualBERT、ViLBERT。

    4.3.1Video-Text PTMs

    VideoBERT和CBT是视频和文本的联合模型。为了获得用于预训练的视觉和语言token序列,视频分别由基于cnn的编码器和现成的语音识别技术进行预处理。单独一个Transformer encoder对处理后的数据进行训练,以学习后续任务(如视频字幕)的视觉语言表示。此外,UniViLM建议引入生成任务,进一步预训练下游任务中要使用的解码器。

    4.3.2Image-Text PTMs

    除了视频语言预训练的方法外,一些作品还介绍了图像-文本对上的PTMs,旨在适用于后续任务,如视觉问题回答(VQA)和视觉常识推理(VCR)。一些模型采用两个单独的编码器分别进行图像和文本表示,如ViLBERT和LXMERT。而VisualBERT、B2T2、VLBERT、Unicoder-VL、UNITER等方法则提出了single-stream unified Transformer。虽然这些模型架构不同,但这些方法中都引入了类似的预训练任务,例如MLM和image-text matching。为了更好地利用视觉元素,在用预训练好的Transformer编码之前,先采用RoI或bounding box检索技术将图像转换成sequences of regions。

    4.3.3 Audio-Text PTMs

    此外,还有几种方法探索了在音频-文本对上使用PTMs的可能性,如SpeechBERT。试图通过一个单独的Transformer encoder对语音和文本进行编码,建立一个端到端的语音问题回答(Speech Question Answering,SQA)模型,其中Transformer encoder利用MLM对语音和文本语料库进行预训练得到,并在问答中进行微调。

    4.4 Domain-Specific and Task-Specific PTMs

    大多数公开可用的PTM都是在通用领域语料库(如Wikipedia)上训练的,该语料库将其应用限制在特定领域或任务上。最近,一些研究提出了以专业语料库为训练对象的PTMs,如BioBERT用于生物医学文本,SciBERT用于科学文本,ClinicalBERT用于临床文本。

    除了对特定领域的PTM进行预训练外,还有一些工作尝试将现有的预训练模型应用于目标应用,如生物医学实体规范化(biomedical entity normalization)、专利分类(patent classification)、进展说明分类(progress notes classification)和关键字提取(keyword extraction)。

    还提出了一些面向任务的预训练任务,如用于情感分析的SentiLR中的sentiment Label-Aware MLM,用于文本摘要的间隙句生成(Gap Sentence Generation, GSG),以及用于语句不流畅检测的嘈杂词检测(disfluency detection)。

    4.5 Model Compression

    由于PTMs通常至少包含数亿个参数,因此很难在在线服务和资源受限的设备上部署它们。模型压缩是一种减小模型尺寸、提高计算效率的潜在方法。

    有五种方法来压缩PTMs:(1)模型修剪(model pruning),删除不重要的参数;(2)权重量化(weight quantization),它使用更少的比特位来存储参数;(3)参数共享(parameter sharing),在相似模型单元之间共享参数;(4)知识蒸馏(knowledge distillation),从原始模型的中间输入中学习,训练一个较小的学生模型(student model);(5)模块替换(module replacing),用更简单的模块替代原始PTM模块。

    表3给出了一些有代表性的压缩PTMs的比较。

    PTMs压缩

    4.5.1模型修剪

    模型剪枝是指去除部分神经网络(如权值、神经元、layers、channels、attention heads),从而达到减小模型大小、加快推理时间的效果。

    Gordon等人研究了模型修剪的时机(例如,在预训练时修剪,在下游微调后剪枝),以及剪枝的方法。Michel和Voita试图修剪transformer中的整个self-attention heads。

    4.5.2Quantization

    量化是指将精度较高的参数压缩到精度较低的参数。Shen和Zafrir的工作只关注这一领域。请注意,量化通常需要兼容的硬件。

    4.5.3参数共享

    另一种众所周知的减少参数数量的方法是参数共享,它广泛应用于CNNs、RNNs和Transformer。ALBERT采用跨层参数共享和factorized embedding parameterization来减少PTMs的参数。ALBERT虽大大减少了参数的数量,但训练和推理时间比标准BERT还要长通常情况下,参数共享并不能提高推理阶段的计算效率

    4.5.4知识蒸馏

    知识蒸馏(KD)是一种压缩技术,通过训练一个称为student model的小模型来重现一个称为teacher model的大模型。在这里,教师模型可以是许多模型的集合,通常都经过了良好的预训练。与模型压缩(compression)不同,精馏技术通过一些优化目标从一个fixed教师模型学习一个小的学生模型,而压缩技术的目标是搜索一个更稀疏的体系结构(searching a sparser architecture)。

    一般来说,蒸馏的机制可以分为三种:(1)从soft target probabilities中蒸馏;(2)从其他知识中蒸馏;(3)蒸馏成其他结构:

    (1)从soft target probabilities中蒸馏。Bucilua等人的研究表明,当学生模型与教师模型相似,可以将知识从教师传递给学生。通常的方法是近似教师模型的对数(logits)。DistilBERT用基于教师模型的soft target probabilities作为蒸馏目标,训练学生模型:

    蒸馏损失

    其中ti和si分别是教师模型和学生模型估计的概率。

    从soft target probabilities中提取的信息也可以用于特定任务模型中,如信息检索和序列标记。

    (2)从其他知识中提炼。从soft target probabilities中蒸馏模型将教师模型视为黑盒,只关注其输出。除此之外,分解教师模型,提取更多的知识,可以改善学生模型。

    TinyBERT利用embedding outputs、hidden states和self-attention distributions进行分层蒸馏。MobileBERT对soft target probabilities、hidden states和self-attention distributions进行分层蒸馏。MiniLM从教师模型中提取出self-attention distributions和self-attention之间的value relation。

    此外,其他模型通过许多方法提取知识。Sun介绍了一种“patient”师生机制,Liu利用KD改进了预训练的多任务深度神经网络。

    (3)蒸馏成其他结构。一般来说,学生模型的结构和教师模型是一样的,只是层的尺寸更小,隐藏的尺寸也更小。然而,从Transformer到RNN或CNN,不仅可以减少参数,还可以简化模型结构,降低计算复杂度。

    4.5.5 Module Replacing

    模块替换是一种有趣而简单的减小模型大小的方法,它用更简洁的模块代替了原来PTMs的大模块。Xu提出了Theseus Compression,这是由著名的思维实验“忒修斯之船”(Ship of Theseus)所启发的,该实验用参数较少的模块逐步替代源模型中的模块。与KD不同,Theseus压缩只需要一个 task-specific的损失函数。压缩后的模型BERT-of-Theseus,比原是模型快1.94倍,同时保留超过98%的性能。

    4.5.6其他

    除了减小模型大小之外,还有其他方法可以在资源有限的实际场景中提高PTMs的计算效率。Liu提出了一种实用的速调BERT(speed-tunable BERT),即FastBERT,它可以通过样本自适应机制动态减少计算步骤。

    5 PTMs适应下游任务

    虽然PTMs从一个大型语料库中获取通用的语言知识,但是如何有效地使他们的适应下游任务仍然是一个关键问题。

    5.1 迁移学习

    迁移学习是将知识从源任务(或领域)转化到目标任务(或领域)。图4给出了迁移学习的一个例子。

    迁移学习

    自然语言处理中的迁移学习有许多类型,如领域适应(domain adaptation)、跨语种学习(cross-lingual learning)、多任务学习(multi-task learning)等。PTMs适应下游任务是一种序列迁移学习的任务(sequential transfer learning task),序列话学习任务,目标任务有标签数据。

    5.2 如何迁移?

    为了将PTM的知识转移到下游的NLP任务中,我们需要考虑以下问题:

    5.2.1选择合适的预训练任务、模型架构和语料库

    不同的PTM通常对相同的下游任务有不同的效果,因为这些PTM是使用各种不同的预训练任务、模型体系结构和语料库进行训练的。

    (1)目前,语言模型是最受欢迎的预训练任务,能更有效地解决各种NLP问题。然而,不同的预训练任务有自己的bias,对不同的任务有不同的效果。例如,NSP任务使PTM理解两个句子之间的关系。因此,PTM可以为后续任务带来好处,比如问答(QA)和自然语言推理(NLI)。

    (2)PTM的架构对于下游任务也很重要。例如,尽管BERT帮助完成大多数自然语言理解任务,但是自然语言生成是困难的。

    (3)下游任务的数据分布应近似于PTMs。目前,有大量现成的PTM,它们可以方便地用于各种特定于领域或特定于语言的下游任务。

    因此,对于给定的目标任务,应选择经过适当的预训练任务、体系结构和语料库训练的PTMs。

    5.2.2选择合适的层

    给定一个预训练好的深度模型,不同的层应该捕获不同种类的信息,例如词性标记(POS tagging)、解析(parsing)、长期依赖(long-term dependencies)、语义角色(semantic roles)、指代关系(coreference)。对于基于RNN的模型,Belinkov和Melamud表明,从多层LSTM编码器的不同层学习的表示有益于不同的任务(例如,预测POS标记和理解word sense)。Tenney发现,对于基于transformer-based PTMs, BERT代表了传统NLP pipeline的步骤:基本的语法信息在网络中出现得更早,而高级语义信息则出现在更高层。

    设H(l)(1<=l<= l)表示含有L层的预训练模型的第l层表示,g(·)表示用于目标任务的task-specific model。

    三种方式选择representation:

    a) 只要Embedding。一种方法是只选择预训练好的静态Embedding,而模型的其余部分仍然需要为新的目标任务从零开始进行训练。

    它们不能捕获可能更有用的高级信息。词嵌入仅用于捕获词的语义含义,但我们还需要理解更高级的概念,如word sense。

    b) Top Layer。最简单和有效的方法是将顶层的representation提供给task-specific model g(H(L))。

    c) 所有层。一个更灵活的方法是自动选择最好的层,像ELMo:

    自动选择最好的层

    其中,αl是l层的softmax-normalized weight,γ是一个scalar,用来scale预训练模型的输出向量。混合表示形式被输入到task-specific model g(r(t))。

    5.2.3 微调或不微调?

    目前,模型迁移有两种常见的方法:特征提取(FE,feature extraction,预训练的参数被冻结)、微调(FT, fine-tuning,不冻结预训练的参数,可微调)。

    在特征提取的方法中,预训练好的模型被认为是现成的特征提取器。此外,公开internal layers很重要,因为它们通常编码最可转移的表示(most transferable representations)。

    尽管这两种方法都能显著地使大多数NLP任务受益,但针对特定任务,特征提取方法需要更复杂的体系结构。因此,微调方法通常比特征提取方法更通用,更便于处理许多不同的下游任务。

    表4给出了一些常见adapting PTMs的组合。

    常见adapting PTMs的组合

    5.3 Fine-Tuning策略

    随着PTMs深度的增加,它们所捕获的representation使下游任务更加容易。因此,真个模型的task-specific层比较简单。自ULMFit和BERT以来,微调已成为PTMs的主要适应方法。然而,微调的过程往往是脆弱的:即使有相同的超参数值,不同的随机种子可以导致实质上不同的结果

    除了标准微调之外,还有一些有用的微调策略。

    Two-stage fine-tuning。另一种解决方案是两阶段迁移( two-stage transfer),它引入了一个介于预训练和微调之间的中间阶段。在第一个阶段,PTM被迁移到一个由中间任务或语料库微调的模型中。在第二阶段,将迁移的模型微调到目标任务。Sun等表明,对相关域(related-domain)语料进行“进一步的预训练”可以进一步提高BERT的能力,并在8个被广泛研究的文本分类数据集上取得了SOTA的性能。Phang等和Garg等人引入了与目标任务相关的中间监督任务,这给BERT、GPT和ELMo带来了很大的改进。Li等也在故事结局预测任务上采用了两阶段迁移。提出的TransBERT(transferable BERT)不仅可以从大规模的未标记数据中迁移学习通用的语言知识,还可以从各种语义相关的监督任务中迁移学习到特定种类的知识。

    Multi-task fine-tuning。Liu等在多任务学习框架下对BERT进行了微调,证明了多任务学习和预训练是互补的技术。

    Fine-tuning with extra adaptation modules。fine-tuning的主要缺点是其参数效率低下:每个下游任务都有自己的fine-tuning参数。因此,更好的解决方案是在原始参数不变的情况下,向PTMs注入一些可fine-tuning的自适应模块。Stickland和Murray为单个可共享的BERT模型配备了额外的小的task-specific适应模块,即映射注意力层(projected attention layers,PALs)。与PALs共享的BERT比单独fine-tuned的模型少了7倍参数,但在GLUE在GLUE benchmark上表现相当。类似地,Houlsby等人通过添加适配器模块修改了预训练BERT的架构。适配器模块提供了一个紧凑且可扩展的模型;它们只为每个任务添加几个可训练的参数,并且可以添加新任务,而不需要重新访问以前的任务。原始网络的参数保持不变,实现了高度的参数共享。

    Others。在广泛使用的集成模型成功的激励下,Xu等人利用自集成(self-ensemble)和自蒸馏(self-distillation)两种有效机制改进了BERT的fine-tuning,在不利用外部资源或显著降低训练效率的情况下,提高了BERT在下游任务中的表现。他们把集成和蒸馏整合在一个单独的训练过程中。教师模型是一种集成模型,它的参数是以前的时间步中几个学生模型的参数的平均。

    渐进式解冻(gradual unfreezing)不是同时对所有层进行微调,而是从顶层开始逐渐解冻预训练层的一种有效方法。Chronopoulou等人提出了一种更简单的解冻方法——顺序解冻( sequential unfreezing),先对task-specific layers随机初始化的参数进行微调,然后对PTM的hidden layers 进行解冻,最后对embedding layer进行解冻。

    Li和Eisner使用variational information bottleneck,在保留有利于目标任务的信息的同时,压缩ELMo embeddings。

    总的来说,上述工作表明,更好的微调策略可以进一步激发PTMs的效用。

    6 PTMs资源

    网上有很多关于PTMs的相关资源。表5提供了一些流行的存储库,包括第三方实现、论文列表、可视化工具和PTMs的其他相关资源。

    PTMs资源

    7 应用

    在本节中,我们将总结PTMs在几个经典NLP任务中的一些应用。

    7.1一般评价基准

    对于NLP社区来说,一个重要的问题是我们如何用一个可比较的度量来评估PTMs。因此,large scale的benchmark是必要的。

    通用语言理解评价(General Language Understanding Evaluation,GLUE)基准是9个自然语言理解任务的集合,包括单句分类任务(CoLA和SST-2)、成对文本分类任务(MNLI、RTE、WNLI、QQP和MRPC)、文本相似性任务(STSB)和相关性排序任务(QNLI)。GLUE基准用于评估模型的鲁棒性和泛化性。GLUE不为测试集提供标签,而是设置一个评估服务器。

    然而,由于近年来技术的进步大大削弱了在GLUE基准上的进步空间,提出了一种新的基准,称为SuperGLUE。与GLUE相比,SuperGLUE具有更具挑战性的任务和更多样化的任务格式(例如,指代消解coreference resolution和问答question answer)。

    最先进的PTMs被列在相应的排行榜上。

    https://gluebenchmark.com/

    https://super.gluebenchmark.com/

    7.2 问答Question Answering

    问答(QA)或更窄的概念机器阅读理解(machine reading comprehension, MRC)是NLP社区中的一个重要应用。从简单到困难,有三种类型的QA任务:单轮抽取QA (SQuAD)、多轮生成QA (CoQA)和multi-hop QA (HotpotQA)。

    BERT创造性地将抽取式QA任务转换为范围预测任务(spans prediction task),预测答案的起始span和结束span。在此之后,PTM作为spans预测的编码器已经成为一个具有竞争力的baseline。对于抽取式QA, Zhang等人提出了回溯式阅读器框架(retrospective reader architecture),并使用PTM(如ALBERT)对编码器进行初始化。对于多轮生成式QA, Ju等提出了“PTM+对抗训练+基本原理标记+知识蒸馏”的模型(PTM+Adversarial Training+Rationale Tagging+Knowledge Distillation)。对于multi-hopQA, Tu等提出了一种可解释的“选择、回答和解释”(Select, Answer, Explain,SAE)系统,PTM作为选择模块中的编码器。

    通常,所提到的QA模型中的编码器参数是通过PTM初始化的,其他参数是随机初始化的。

    7.3 情感分析Sentiment Analysis

    BERT在情感分析数据集SST-2上进行微调,超越了之前的SOTA模型。Bataa和Wu利用BERT的迁移学习技术,在日语情感分析中达到了SOTA。

    尽管他们在简单的情绪分析上取得了成功,但是直接将BERT应用到aspect-based的情绪分析(aspect-based sentiment analysis,ABSA,这是一项细粒度的SA任务)上,却没有显著的改善。为了更好地利用BERT的强大表示,Sun等将ABSA从单一的句子分类任务转化为句子对分类任务,构造了一个辅助句。Xu等提出post-training,使得BERT从其原始域和原始任务适应到ABSA域和任务。Karimi等研究表明,通过对抗训练可以进一步提高BERT的post-training表现。Song等增加了一个额外的pooling 模块(可以用LSTM或注意机制实现),以利用BERT中间层进行ABSA。此外,Li等联合学习了aspect detection和sentiment classification,端到端完成ABSA。SentiLR从SentiWordNet中获取词性标签(POS)和先前的情感极性,采用标签感知MLM(Label-Aware)    来利用引入的语言知识,捕捉句子级情感标签与词级情感转移之间的关系。在多句子级别和aspect级别的情感分类任务中,SentiLR实现了SOTA。

    For sentiment transfer,Wu基于BERT提出了“Mask and Infill”。在Mask步骤,模型通过mask情感标记将情感从内容中分离出来。在Infill步骤中,它使用BERT和目标情绪嵌入(target sentiment embedding)来填充被mask的位置。

    7.4 命名实体识别 Named Entity Recognition

    命名实体识别(NER)在信息提取中起着重要作用,在许多NLP下游任务中起着重要作用。在深度学习中,大部分的NER方法都是在序列标注(sequence-labeling)框架中。句子中的实体信息将被转换成标签序列,一个标签对应一个单词。该模型用于预测每个单词的标签。由于ELMo和BERT已经在NLP中展示了他们的力量,关于NER的预训练模型有很多工作要做。

    Akbik等人使用预训练的character-level语言模型为NER生成word-level嵌入。TagLM和ELMo使用预训练语言模型的最后一层输出和每一层输出的加权和作为单词嵌入的一部分。Liu等利用layer-wise pruning和dense connection加速了ELMo对NER的推理。Devlin等人使用第一个BPE(Byte-Pair Encoding)的BERT表示来预测没有CRF的每个单词的标签。Pires等通过多语言BERT实现了zero-shot NER。Tsai等人利用知识蒸馏在单个CPU上为NER运行一个小BERT。此外,BERT也用于领域特定的NER,如生物医学领域等。

    7.5 Machine Translation

    机器翻译(MT)是自然语言处理领域的一项重要工作,吸引了众多研究者的关注。几乎所有的神经机器翻译(NMT)模型都共享encoder-decoder框架,该框架首先将输入标记编码到编码器的隐藏表示中,然后将目标语言中的输出标记从解码器解码。Ramachandran等发现,通过使用两种语言模型预训练的权重来初始化encoder和decoder,可以显著改进encoder-decoder模型。Edunov等人使用ELMo在NMT模型中设置word embedding层,通过使用预训练的语言模型来初始化source word embedding,在English-Turkish和English-German 机器翻译模型上获得性能提升。

    鉴于BERT在其他NLP任务上的卓越性能,研究如何将BERT合并到NMT模型中是很自然的事情。Conneau试图用多语种预训练Bert模型来初始化整个encoder和decoder,可以在无监督的MT和有监督的English-Romanian翻译任务上取得极大提升。同样,Clinchant设计了一系列不同的实验,来测试在MT的encoder上使用Bert的最佳策略,使用BERT初始化encoder实现了一些改进。此外,他们发现这些模型可以在out-of-domain数据集上获得更好的性能。Imamura提出了一种两阶段BERT微调NMT的方法。在第一阶段,encoder由预训练的BERT模型初始化,只训练decoder。在第二个阶段,对的整个NMT模型进行fine-tuned。通过实验,他们认为这种方法优于one stage fine-tuning。除此之外,Zhu等人建议使用预训练好的BERT作为extra memory来促进NMT模型。具体来说,它们首先用一个预训练好的BERT对input tokens进行编码,然后将最后一层的输出作为extra memory。然后,NMT模型可以通过encoder和decoder每层中的一个extra attention module来访问memory。它们发现这种策略在监督、半监督和非监督的MT方面都有显著的改善。

    MASS (Masked Sequence-to-Sequence pre-training)利用Seq2Seq MLM对encoder和decoder进行联合预训练,而不是仅仅对encoder进行预训练。在实验中,这种方法在无监督的MT和English-Romanian有监督MT上,可以超越Conneau提出的BERT-style预训练。与MASS不同的是,mBART(bert的多语言扩展)在大规模的跨25种语言的单语语料库上,通过Seq2Seq去噪编码任务(Seq2Seq denoising auto-encoder ),联合预训练了encoder和decoder。实验表明,mBART可以在sentence level 和document level上,显著提高有监督和无监督机器翻译的表现。

    7.6 摘要Summarization

    摘要是近年来自然语言处理界关注的一个问题,其目的是产生一个更短的文本,以最大限度的保留长文本的意思。自从PTM的广泛使用以来,这项任务得到了显著的改进。Zhong等引入可转移知识(如BERT)进行文本摘要,并超越了以往的模型。Zhang等人试图预训练一个document-level模型,该模型预测句子而不是单词,然后将其应用于后续任务,如摘要。更详细地说,Zhang设计了一个用于预训练的间隙句生成任务(Gap Sentence Generation, GSG),其目标包括从输入生成类似摘要的文本。此外,Liu和Lapata提出了BERTSUM。BERTSUM包括一个新的document-level encoder,以及一个可用于抽取式摘要(extractive summarization)和抽象式摘要(abstractive summarization)的通用框架。在编码框架中,BERTSUM通过插入多个[CLS]标记来扩展BERT,以学习句子表示。对于抽取式摘要,BERTSUM stack了几个inter-sentence Transformer层。对于抽象式摘要,BERTSUM提出了two-staged fine-tuning。Zhong提出了一种新的summary-level框架MATCHSUM,并将抽取式摘要概念化为一个语义文本匹配问题。他们提出了一个Siamese-BERT架构来计算源文档和候选摘要之间的相似性,仅使用base BERT,就在CNN/DailyMail数据集上获得了SOTA。

    7.7 对抗检测和防御 Adversarial Attacks and Defenses

    深层神经模型易受对抗样本的攻击,这些样本可能会误导模型,使其在原始输入中产生难以察觉的扰动,从而产生特定的错误预测。在CV中,对抗攻击和防御被广泛研究。然而,由于语言的离散性,文本仍然具有挑战性。为文本生成对抗性样本需要具备以下特征:(1)不易被human judge 察觉,但对神经模型有误导作用;(2)语法流利,语义与原输入一致。Jin等人用对抗样本成功攻击了基于BERT实现的文本分类和文本蕴涵。Wallace等人定义了通用的adversarial triggers ,当连接到任何输入时,它可以诱导模型产生specific-purpose的预测。有些triggers甚至会导致GPT-2模型生成种族主义文本。Sun等人表明,BERT对拼写错误并不鲁棒。

    PTMs还可以生成对抗样本。Li等提出了BERT-Attack,在成功率和扰动百分比上都超过了SOTA的攻击策略,而生成的对抗性样本则是流畅且语义保留的。

    此外,PTMs的对抗防御也很有前途,它提高了PTMs的鲁棒性,使其对对抗攻击免疫。

    对抗训练的目的是通过最小化embedding空间中label-preserving扰动的最大风险来提高泛化能力(minimizes the maximal risk for label-preserving perturbations in embedding space)。最近的研究表明,对抗预训练或fine-tuning可以提高NLP PTMs的泛化能力和鲁棒性。

    8 Future Directions

    尽管PTMs已经证明了它在各种NLP任务中的强大功能,但是由于语言的复杂性,它仍然存在挑战。在本节中,我们提出了未来PTMs的五个方向。

    (1) Upper Bound of PTMs

    目前,PTMs还没有达到其上限。目前大多数的PTMs可以通过更多的训练步骤和更大的语料库来进一步改进。增加模型模型深度可以在NLP上达到SOTA的效果,如Megatron-LM(8.3 billion parameters, 72 Transformer layers with a hidden size of 3072 and 32 attention heads)和Turing-NLG9)(17 billion parameters, 78 Transformer layers with a hidden size of 4256 and 28 attention heads )。

    通用型PTMs一直是我们学习语言固有的普遍知识(甚至是世界知识)的追求。然而,这类PTMs通常需要更深入的体系结构、更大的语料库以及具有挑战性的预训练任务,这进一步导致了更高的训练成本。然而,训练大模型也是一个具有挑战性的问题,需要更复杂、更高效的训练技术,如分布式训练、混合精度、梯度累积等。因此,更实际的方向是使用现有的硬件和软件设计更有效的模型架构、自监督的预训练任务、优化器和训练技能。ELECTRA是这个方向的一个很好的解决方案。

    (2) Architecture of PTMs

    Transformer已被证明是一种有效的用于预训练的体系结构。然而,Transformer的主要限制是其计算复杂度,是输入长度的2倍。由于受到gpu内存的限制,大多数当前的PTM不能处理长度超过512个token的序列。打破这一限制需要改进Transformer的架构,比如Transformer-XL。因此,为PTMs搜索更有效的模型体系结构对于捕获更长期的上下文信息非常重要。

    深度架构的设计具有挑战性,我们可以从一些自动化方法中寻求帮助,如神经架构搜索(neural architecture search,NAS)。

    (3) Task-oriented Pre-training and Model Compression 面向任务的预训练和模型压缩

    在实践中,不同的下游任务需要不同的PTMs能力。PTMs和下游任务之间的差异通常存在于两个方面:模型体系结构和数据分布。更大的差异可能导致PTMs的好处可能是微不足道的。例如,文本生成通常需要一个特定的任务来预训练编码器和解码器,而文本匹配则需要为句子对设计预训练任务。

    此外,尽管较大的PTM通常可以带来更好的性能,但一个实际问题是如何在特殊场景(如low-capacity devices和low-latency应用)中利用这些大PTM。因此,我们可以为下游任务精心设计具体的模型架构和预训练任务,或者从现有的任务中提取部分特定于任务的知识。

    与从零开始训练面向任务的PTM不同,我们可以通过使用模型压缩等技术,用现有的通用PTM来教授它们。虽然在CV中对CNNs的模型压缩进行了广泛的研究,但对NLP的PTMs的压缩才刚刚开始。Transformer 的全连接结构也使模型压缩更具挑战性。

    (4) Knowledge Transfer Beyond Fine-tuning   Fine-tuning之外的知识转移

    目前,将PTMs的知识转移到下游任务的主要方法是fine-tuning,但其缺点是参数效率低下:每个下游任务都有自己的fine-tuning参数。一种改进的解决方案是固定PTMs的原始参数,并通过为特定任务添加小型可调自适应模块。因此,我们可以使用一个共享的PTM来服务多个下游任务。事实上,从PTMs中挖掘知识可以更加灵活,如特征提取、知识提取、数据扩充等,利用PTMs作为外部知识。

    (5) Interpretability and Reliability of PTMs  PTMs的可解释性和可靠性

    虽然PTMs的性能令人印象深刻,但其深度非线性的体系结构使得决策过程高度不透明。

    近年来,可解释人工智能(explainable artificial intelligence,XAI)已成为人工智能领域的一个研究热点。与图像的CNNs不同,由于类似Transformer的体系结构和语言的复杂性,对PTMs的解释更加困难。已经进行了大量的工作来分析PTMs中包含的语言和世界知识,这有助于我们以某种程度的透明性理解这些PMTs。然而,大量的模型分析工作依赖于注意机制,但是注意力机制有效性的可解释性有效性仍存在争议。

    此外,PTMs也容易受到对抗攻击。随着PTMs在生产系统中的广泛应用,PTMs的可靠性也成为一个备受关注的问题。对PTM的对抗攻击的研究通过完全暴露它们的弱点来帮助我们了解它们的能力。PTMs的对抗防御也很有前途,它可以提高PTMs的健壮性并使其对对抗攻击免疫。

    总的来说,作为许多NLP应用中的关键组件,PTMs的可解释性和可靠性在许多方面还有待进一步探索,这有助于我们理解PTMs是如何工作的,并为更好地使用和进一步改进提供指导。

    9 Conclusion

    在本次调查中,我们对NLP的PTMs进行了全面的概述,包括背景知识、模型架构、培训前任务、各种扩展、适应方法、相关资源和应用程序。基于现有的PTMs,我们从四个不同的角度提出了一种新的PTMs分类。并对今后的研究方向提出了一些建议。

    相关文章

      网友评论

          本文标题:综述:自然语言处理的预训练模型

          本文链接:https://www.haomeiwen.com/subject/irgqohtx.html