预训练模型综述

Pre-trained Models for Natural Language Processing: A Survey(预训练模型综述)

update: 2020.6.28

经常听说BERT的大名,于是决定找一篇较新的综述文章初步认识下预训练模型。这篇文章是复旦大学的丘锡鹏教授编写(2020.4发表的文章)。

使用神经网络的好处是可以缓解特征工程问题,使用非神经元的NLP方法经常依赖于离散的人工特征,因此神经网络的方法可以更好的解决NLP问题。与CV问题相比,因为数据集的规模较小,NLP的发展并不如CV。深度神经网络经常会有大量的参数,在小规模的数据集上会产生过拟合的问题,因此许多NLP任务的网络层数都不会太深。

预训练模型(PTMs)在大量的语料库上学习通用语言表示(universal language representations),让下游的NLP任务不需要从零训练模型。最初的PTMs是为了学习好的词嵌入,通常具有较低的计算效率,例如Skip-Gram和GloVe。尽管这些预训练词嵌入可以获取词语的语义,但是他们是上下文无关的并且不能获取上下文更高层次的概念,比如多义消歧、语法结构、语义角色、首语重复。第二代的PTMs聚焦于学习上下文的词嵌入,比如CoVe、ELMo、OpenAI GPT和BERT。这些学习完的编码器在下游任务中仍有重要作用。除此之外,PTMs也被用于不同的目的。

背景

语言表示学习

一个好的表示模型应该表达通用的先验知识,而不是解决特定任务,它们应该对于解决AI任务是有用的。

一个语言表示的核心观点是用一组低维实值向量来表示一则语料,并且向量的每一维并不具有实际意义,整个向量才代表一个具体的概念。

两种embedding方法

如图,对于NLP的词嵌入有两种方法,非上下文(non-contextual)和上下文(contextual)。它们的不同是词嵌入是否根据不同的上下文而动态的改变。

Non-contextual Embeddings

将语言从离散的语言符号映射到嵌入空间。对于出现在词汇\(\mathcal V\)中的词语\(x\),将它映射到向量\(\textbf e_x\in \mathbb R^{D_e}\)中,并使用一个查询表\(\textbf E\in\mathbb R^{D_e\times \vert\mathcal V \vert}\),其中$D_e$是一个表示token embeddings维数的超参数。这些嵌入在任务数据和其他模型参数上进行训练。

对于这种词嵌入,有两个主要的限制。1. 词嵌入是静态的,并不会考虑上下文,因此上下文无关的词嵌入无法解决一词多义的问题。2. 会遇到未登入词(out-of-vocabulary,OOV)问题,为例解决这个问题,字符级和子单词的表示大量的在NLP任务中应用(CharCNN,FastText,Byte-Pair Encoding)。

Contextual Embeddings

为了解决一词多义和词语自然的上下文依赖问题,需要对不同上下文中的词语的语义进行区分。给定一个文本\(x_1,x_2,\cdots,x_T\),其中每个token\(x_t\in\mathcal V\)是词或子词,每个上下文表示\(x_t\)依赖于整个文本。

\[[\textbf h_1,\textbf h_2,\cdots,\textbf h_T]=f_{enc}(x_1,x_2,\cdots,x_T)\]

其中\(f_{enc}(\cdot)\)是一个神经编码器,\(\textbf h_t\)是\(x_t\)包含上下文信息的上下文嵌入或者动态嵌入。

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

大部分的神经上下文编码器可以被分为两类,序列模型(sequence model)和图模型(graph-based models)。

模型分类

序列模型

序列模型一般按序列获取词语的局部上下文信息。

卷积模型(Convolutional Models)

卷积模型将单词嵌入到输入句子中,通过卷积运算将邻近单词的局部信息聚合到一起,从而获取单词的意思。

循环模型(Recurrent Models)

循环模型使用短时记忆获取词的上下文表示,例如LSTMs和GRUs。在实际中,双向LSTMs和GRUs被用来收集词两边的知识,但是它的表现往往受到长期依赖问题的影响。

非序列模型

非序列化模型学习预先定义的词语之间的树或图结构中的上下文表示(例如语法结构或语义联系),目前流行的非非序列化模型有Recursive NN,TreeLSTM和GCN。

尽管这些模型可以提供有用的推导偏置(bias),但这些模型的构建比较复杂并且依赖于专家知识或额外的NLP工具(依存分析等)。

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

在实践中,更直接的方法是使用全连通图来建模每两个单词之间的关系,并让模型自己学习结构。连接权值通常是通过自注意机制动态计算的,自注意机制隐含着单词之间的联系。Transformer是一个优秀的模型,但也需要其他的模块,比如位置嵌入(positional embeddings),层标准化(layer normalization),剩余连接(residual connections)和前置位置反馈网络层(position-wise feed-forward network,FNN)。

分析

序列模型通过局部信息学习词的上下文表示,但很难去获取词之间的长范围交互。序列化模型易于训练,在不同的NLP任务中也取得不错的效果。

相反的是,非序列模型可以直接对序列中两个词的依赖关系进行建模,对于长期依赖问题的解决比较合适。但是该模型结构复杂且缺乏偏置,需要大型的语料库训练并且在小规模模型上容易过拟合。

目前,Transformer模型因其强大的容量已成为PTMs的主流结构。

采用预训练方式的理由

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

相比之下,大规模的未标记语料库相对容易构建。为了利用数量巨大的未标记文本数据,可以首先从它们中学习一种好的表示,然后将这些表示用于其他任务。最近的研究表明,在大量未注释的语料库上提取PTMs的帮助下,许多NLP任务的性能显著提高。

预训练的优势可以被概括为以下几点:

  1. 预训练可以在大规模数据中学习到通用的表示,为下游的任务服务。
  2. 预训练提供了一个更好的模型初始化条件,这通常会带来更好的泛化性能,并加速对目标任务的收敛。
  3. 预训练被认为是一种在小规模数据上避免过拟合的正则化方法。

PTMs在NLP的历史

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

Collobert使用成对排名(pairwise ranking)的方式而不是语言建模的方法来学习词嵌入,这是第一次尝试用未标注数据来获取通过的词嵌入。

Mikolov表示不需要使用深度神经网络来构造词嵌入。他们提出两种浅层结构:连续词袋(Continuous Bag-of-Words,CBOW)和跳跃语法(Skip-Gram,SG)模型。Word2vec是其中很有影响力的模型,GloVe也是一个广泛使用的获取预训练词嵌入的模型。

虽然预先训练过的单词嵌入在NLP任务中被证明是有效的,但它们是与上下文无关的,而且大多是通过浅层模型训练的。当在下游任务使用时,模型的其他部分又需要重新训练。

在同时期,段落(paragraph)、句子(sentence)、文章(document)的嵌入也在被研究,比如段落向量(paragraph vector),Skip-thought向量,Context2Vec等。与它们的当今继任者不同,这些句子嵌入模型试图将输入的句子编码为固定维向量表示,而不是每个token的上下文表示。

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

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

Dai和Le首先成功地提出了第一个NLP的PTM实例。他们通过语言模型(LM)或者序列化自动编码器(sequence autoencoder)对LSTMs初始化,并且发现在许多文本分类任务中,预训练可以提高LSTMs的训练和泛化能力。

由于这些先前的PTMs影响,现代PTMs通常使用更大规模的语料库、更强大或更深入的架构(例如Transformer)和新的预训练任务进行训练。

最近,深度PTMs在学习通用语言表征方面显示出了强大的能力:例如OpenAI GPT(生成预训练)和BERT(来自Transformer的双向编码器表示)。除了LM,越来越多的自监督任务的目的是使PTMs获取更多的知识,形成大规模的文本语料库。

PTMs概述

PTMs之间的主要区别是上下文编码器、预训练任务和目的的不同。

预训练任务

预训练任务对于通用的语言表示很重要。将预训练任务分为三类:

  1. 有监督学习(Supervised learning,SL),基于输入-输出对组成的训练数据,学习一个将输入映射到输出的函数。
  2. 无监督学习(Unsupervised learning,UL)是从未标记数据中寻找一些内在知识,如聚类、密度、潜在表示等。
  3. 自监督学习(Self-Supervised learning,SSL)是前两类的混合产物,自监督学习的目的与有监督完全一致,但是标签数据是自动生成的。SSL的关键思想是以某种形式预测来自其他部分的输入。例如,masked language model(掩盖语言模型,MLM)是一项自监督的任务,它尝试在给出句子中的其余单词的情况下预测masked单词。

在CV领域大量的PTMs使用大规模有监督数据集(如ImageNet),但是,NLP中大部分有监督数据集没有足够大到可以训练好的PTM。唯一的例外是机器翻译(MT)领域,WMT2017是一个包含7百万句子对的大规模NLP数据集。

不同预训练模型的损失函数

不同预训练模型的损失函数

语言模型(Language Modeling,LM)

LM可能是NLP中最普遍的无监督任务了,这是一个经典的概率密度估计问题。

给定一个文本序列\(\mathbb x_{1:T}=[x_1,x_2,\cdots,x_T]\),它的联合概率\(p(x_{1:T})\)可以被分解为\(p(\mathbb x_{1:T})=\prod_\limits{t=1}^Tp(x_t\vert\mathbb x_{0:t-1})\),其中\(x_0\)是一个特殊的token来预测序列的开头。条件概率\(p(x_t\vert\mathbb x_{0:t-1})\)可以用一个给定的语言环境\(\mathbb x_{0_t-1}\)词汇上的概率分布来建模。上下文\(\mathbb x_{0:t-1}\)通过神经编码器\(f_{enc}(\cdot)\)来建模并且条件概率为\(p(x_t\vert\mathbb x_{0:t-1})=g_{LM}(f_{enc}(\mathbb x_{0:t-1}))\),其中\(g_{LM}\)是预测层。

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

单向LM的一个缺点是,每个token的表示只编码左侧上下文标记和本身。然而,更好的文本上下文表示应该从两个方向编码上下文信息。一个改进的LM是双向LM(BiLM),包含两个单向LMs:一个从左向右的LM,一个从右向左的LM。

掩盖语言模型(Masked Language Modeling,MLM)

MLM的提出是为了克服单向LM的缺陷,MLM首先从输入的句子中屏蔽掉一些token,然后训练模型用剩下的token来预测屏蔽的token。但是,这种预训练方法将在预训练阶段和调优阶段之间造成不匹配,因为在调优阶段没有出现掩盖token。根据经验,为了解决这个问题,80%使用特殊的掩盖token,10%使用随机token,10%使用原始token。

Sequence-to-Sequence MLM(Seq2Seq MLM)

MLM常用来解决分类问题。将掩盖序列输入神经编码器,神经编码器的输出向量进一步输入softmax分类器来预测掩盖token。或者,可以使用编码器-解码器(encoder-decoder,比如seq2seq)MLM结构,其中编码器被提供一个掩盖序列,解码器按顺序以自回归的方式产生掩盖token。Seq2Seq MLM可以改进Seq2Seq风格的下游任务,比如问题回答、概括和机器翻译。

强化掩盖语言模型(Enhanced Masked Language Modeling,E-MLM)

目前,有很多研究提出了不同的MLM强化版本去改进BERT,RoBERTa使用动态掩盖来改进BERT。

UniLM在三种类型的语言模型任务中拓展了掩盖预测的任务:单向预测、双向预测和sequence-to-sequence预测。XLM在平行的双语句子对中使用MLM,称作Translation Language Modeling(TLM)。Span-BERT使用随机句子掩盖(Random Contiguous Words Masking)和跨越边界目标(Span Boundary Objective,SBO)来为预训练整合结构信息。除此之外,StructBERT介绍了跨度秩序恢复(Span Order Recovery)任务进一步整合语言结构。

另一种丰富MLM的方式是使用外部知识。

交换语言模型(Permuted Language Modeling,PLM)

尽管在预训练中广泛使用了MLM,但是MLM中某些特殊的token的使用(像【MASK】)会在下游任务中缺失,导致预训练和调参之间出现鸿沟。简而言之,PLM是一种对输入序列进行随机排列的语言建模任务。从所有可能的排列中随机抽取一个排列。然后选择排列序列中的一些token作为目标,然后根据剩余的token和目标的自然位置,训练模型来预测这些目标。注意,这种排列不考虑序列的自然位置,只定义token预测的顺序。在实践中,由于收敛速度慢,只有最后的几个token被预测。在目标感知表示中引入了一种特殊的双流自注意方式。

降噪自动编码器(DAE)

DAE使用部分损坏的输入信号,来恢复原始的未失真输入信号。在语言系统中,一个sequence-to-sequence模型(例如标准Transformer)被用来重造原始文本。有以下几种方式可以损坏文本:

  1. Token Masking:随机从输入中对token取样并且用【MASK】来代替。
  2. Token Deletion:随机从输入中删除token,需要确定输入缺失的部分。
  3. Text Infilling:与SpanBERT类似,一组文本span被取样并且用一个【MASK】token替代。每个跨度的长度都是从泊松分布中得出。模型需要预测span中有多少的token缺失。
  4. Sequence Permutation:将一个文本分解为句子,通过句号来将句子随机排序。
  5. Document Rotation:均匀随机地选择一个token并旋转文档,使其以该token开始。模型需要确定文档的真正起始位置。

对比学习(Contrastive Learning,CTL)

对比学习假设某些观测到的文本对比对随机取样的文本语义相近度更高。与LM相比,CTL通常会使用更少的计算复杂度所以有望成为PTMs一个训练标准。下面为损失函数:

\[\mathcal L_{CTL}=\mathbb E_{x,y^+,y^-}\left[-\log\frac{\exp(s(x,y^+))}{\exp (s(x,y^+))+\exp(s(x,y^-))}\right]\]

其中\((x,y^+)\)是近似对并且\(y^-\)是\(x\)可能的不近似情况。\(y^+\)和\(y^-\)是pos和neg取样。通常损失函数通过以下两种方式学习:\(s(x,y)=f_{enc(x)}^Tf_{enc(y)}\)或者\(s(x,y)=f_{enc}(x + y)\)(此处加号为外积)

Deep InfoMax(DIM)

DIM最初是针对图像提出的,它通过最大化图像表示与图像局部区域之间的互信息来提高表示质量。

Replaced Token Detection(RTD)

RTD通过给定token的上下文来预测token是否被替换。

Next Sentence Prediction(NSP)

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

但是如今的研究表明NSP任务对于下游任务是否有效受到怀疑,在很多模型中,去除NSP后效果反而变好了。

Sentence Order Prediction(SOP)

为了取得更好的效果,ALBERT使用SOP损失代替NSP损失。NSP将主题预测和一致性预测杂糅在同一个任务中,SOP只依赖主题预测。与NSP不同的是,SOP使用来自同一文档的两个连续段作为正示例,使用相同的两个连续段作为负示例,但是它们的顺序交换了。ALBERT的结果比BERT对于不同下游任务的处理更好。

PTMs的分类

PTMs可以从四个方面分类。

  1. 表示类型(Representation Type):通过对下游任务的用法,PTMs可以分为非上下文模型和上下文模型。
  2. 结构(Architectures):PTMs使用的主要网络,包括LSTM,Transformer encoder,Transformer decoder和full Transformer encoder。“Transformer”指标准的编码器-解码器结构。
  3. 预训练任务类型(Pre-Training Task Types):PTMs预训练的类型。
  4. 拓展(Extensions):为各种场景设计的PTMs,包括knowledge-enriched PTMs,多语言或语言特定的PTMs,多模型的PTMs,领域特定的PTMsPTMs和压缩PTMs。

PTMs分类

PTMs分类

PTMs的代表

PTMs的代表

模型分析

非上下文嵌入

通过神经网络语言模型学习的词表示能够获取语言中的语言规律,词与词之间的关系可以用关系特定向量补偿(offset)来表征。

进一步研究发现,Skip-Gram模型可以同时获取词的语义和句法关系,例如: \(vec(“China”)- vec(“Beijing”)\approx vec(“Japan”)-vec(“Tokyo”)\) 此外,还发现了词向量的构词性特征,例如: \(vec(“Germany”) + vec(“capital”) is \ close\ to\ vec(“Berlin”)\)

上下文嵌入

大量的研究探究和归纳了语境嵌入中不同类型的知识。一般来说,知识有两种类型:语言知识(linguistic knowledge)和世界知识(world knowledge)。

语言知识(Linguistic Knowledge)

BERT在很多句法任务(比如词性标注和成分标签)表现优异,但是BERT在处理语法任务和深入的句法任务时不够优秀。

BERT内部表示的几何意义有:

  1. 语言特征似乎在不同的语义和句法子空间中表现出来。
  2. 注意矩阵包含语法表征。
  3. BERT能很好地辨别词义。

世界知识(World Knowledge)

除了语言知识外,PTMs也可以存储出现在训练数据中的世界知识。探究世界知识的一种直接方法是用填空式完形语句查询BERT。

PTMs的拓展

知识扩展PTMs(Knowledge-Enriched PTMs)

PTMs通常从通用的大型文本语料库中学习通用语言表示,但缺乏专业知识。将来自外部知识库的领域知识纳入PTM已被证明是有效的(比如语言知识,语义知识,常识,专业领域知识)

一方面,外部知识可以在预训练中被注入。早期的研究聚焦于将图嵌入和词嵌入联合处理。自BERT以来,一些辅助的预训练任务被设计成将外部知识纳入深度PTMs。

LIBERT(linguistically-informed BERT)通过使用额外的语言限制任务来将语言知识加入预训练中。LA-MLM在情绪分类的任务中取得了极佳的结果。SenseBERT不仅在WordNet上预测了掩盖的tokens还预测了他们的隐藏含义(supersenses)。ERNIE(THU)将在知识图上预先训练好的实体嵌入与文本中对应的实体提到进行集成,增强文本表示。KnowBERT与实体连接模型一起以端到端的方式连接起来训练。KEPLER联合优化知识嵌入和语言模型,这些工作通过实体嵌入的方式注入知识图的结构信息。与之相反的是,K-BERT直接注入知识图谱的关系三元组信息到句子中来得到拓展的树形式作为BERT的输入。

但这些方法大多在注入知识时对PTMs参数进行更新,这可能导致在注入多种知识时发生严重的遗忘现象。为了解决这个问题,K-Adapter通过训练不同的适应器注入多种知识来应对不同的训练任务。

另一方面,可以将外部知识吸收进预训练模型中而不需要重新训练。K-BERT允许在下游任务调参时输入事实知识。知识图谱语言模型(KGLM)和潜在关系语言模型(LRLM)中也使用了语言模型,都允许基于知识图的预测。

多语言和特定语言的PTMs

多语言PTMs(Multilingual PTMs)

学习跨语言共享的多语言文本表示在许多跨语言神经语言处理任务中扮演着重要的角色。

跨语言理解(Cross-Lingual Language Understanding,XLU)

大部分早期的工作集中在学习多语言的词嵌入,它在单一语义空间中表示来自多种语言的文本。然而,这些方法通常需要语言之间的(弱)对齐。

Multilingual BERT(mBERT)从前104种语言中使用共享词汇和维基数据的权重通过MLM预训练。XLM通过包含了一个跨语言任务来改进XLM。

跨语言生成(Cross-Lingual Language Generation,XLG)

多语言生成是从输入语言中生成不同语言的文本,如机器翻译和跨语言抽象摘要。

特定语言PTMs(Language-Specific PTMs)

尽管多语言PTMs在许多语言上表现良好,但最近的研究表明,在单一语言上训练的PTMs显著优于多语言结果。

多模态PTMs(Multi-Modal PTMs)

观察到PTMs在许多NLP任务中的成功,一些研究集中在获得一个跨模态版本的PTMs。这些模型中的绝大多数是为通用的视觉和语言特性编码而设计的。

视频-文本PTMs(Video-Text PTMs)

VideoBERT和CBT结合了视频和文本模型,为了获得用于预训练的视觉和语言token序列,分别使用基于cnn的编码器和现成的语音识别技术对视频进行预处理。一个Transformer编码器根据处理过的数据进行训练,以学习用于下游任务(如视频字幕)的视觉语言表示。

图片-文本PTMs(Image-Text PTMs)

除了视频语言预训练的方法外,还有一些模型在图文对上引入了PTMs,旨在适应诸如视觉答疑(VQA)和视觉常识推理(VCR)等下游任务。

音频-文本PTMs(Audio-Text PTMs)

此外,一些方法已经探索了PTMs在音频-文本对上的应用。SpeechBERT通过使用一个Transformer编码音频和文本(用MLM在对话和文本预料库上预训练)尝试建立端到端的SQA模型。

领域特定和任务特定PTMs(Domain-Specific and Task-Specific PTMs)

大多数公开可用的PTMs都是在一般领域文集(如Wikipedia)上进行训练的,后者将它们的应用程序限制在特定的领域或任务上。近期,也有学者提出特定语料库上的PTMs,如生物、临床等。

模型压缩(Model Compression)

由于PTM通常至少包含数亿个参数,因此很难将PTM部署在实际应用程序中的在线服务和资源受限的设备上。 模型压缩是减小模型大小并提高计算效率的潜在方法。

有五种方法去压缩PTMs:

  1. 模型剪枝(model pruning):减少不重要的参数。
  2. 权重数字化(weight quantization):使用更少的比特位数去记录参数。
  3. 参数共享(parameter sharing):交叉使用相似的模型单元。
  4. 知识蒸馏(knowledge distillation):训练从原始模型的中间输出中学习的较小的学生模型。
  5. 模块替代(module replacing):将原来的PTMs模块替换为更紧凑的模型。

模型压缩

模型压缩

PTMs应用于下游任务

尽管PTMs从大型语料库中获取通用语言知识,但如何将其知识分别适应下游任务仍然是一个关键问题。

迁移学习(Tranfer learning)

迁移学习是将知识从源任务(或领域)适应到目标任务(或领域)。

迁移学习

迁移学习

NLP中的迁移学习有很多种,如领域适应、跨语言学习、多任务学习等。将PTMs适应于下游任务是顺序迁移学习任务(sequential transfer learning task),任务是按顺序学习的,目标任务有标注数据的

如何迁移

需要考虑以下因素:

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

(1)目前,语言模型是最流行的预训练任务并且解决了很多NLP问题。例如NSP任务使得PTM模型理解了两个句子之间的关系,就可以应用在下游任务,QA任务和NLI任务中。

(2)PTM的结构对于下游任务也很重要。例如,BERT对于大多数语言理解任务有用,但很难去做语言生成。

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

选择合适的神经层

给定一个预先训练好的深度模型,不同的层应该获取不同种类的信息,如词性标注、解析、长期依赖、语义角色、共指。

对于基于RNN的模型,在多层LSTM编码器不同的神经层学到的表示很有效(例如在词性标注和理解句意方面);对于基于transformer的模型,BERT代表了传统NLP流水线的步骤:基本的句法信息在网络中出现得更早,而高级语义信息出现在更高的层次。

$\mathbf H^{(l)}(1\leq l \leq L)$表示$L$层预训练模型中的第$l$层表示,$g(\cdot)$表示对于特定任务的特定领域的模型。有三种方法来选择表示:

  1. 只使用嵌入:只使用预训练静态嵌入,模型的其他部分仍需要重新训练。它们无法捕获可能更有用的高级信息。词嵌入只在获取单词的语义意义时有用,但是还需要理解更高层次的概念,比如单词的含义。
  2. 顶层:最简单和有效的方法是将顶层的表示输入到特定于任务的模型中。
  3. 所有层:一个更灵活的方法是在软(soft)版本中自动选择最好的图层,像ELMo一样:
\[\mathbb r_t=\gamma\sum_{l=1}^L\alpha_l\mathbf h_t^{(l)}\]

其中$\alpha_l$是$l$层的softmax-normalized权重,$\gamma$是用于缩放预训练模型输出的向量的标量,混合表示被输入到特定于任务的模型$g(\mathbb r_t)$中.

确定是否需要调优

目前,常用的模型转移方式有两种:特征提取(预先训练好的参数被冻结)和调优(预先训练好的参数被解冻和调优)。

在特征提取方面,将预先训练好的模型视为现成的特征提取器。此外,公开内部层也很重要,因为它们通常编码为最可转移的表示。

虽然这两种方法都可以显著地有益于大多数NLP任务,但特征提取方法需要更复杂的特定于任务的架构。因此,对于许多不同的下游任务,调优方式通常比特征提取方式更通用、更方便。

一些常见的适应PTMs

一些常见的适应PTMs

调参策略

随着PTMs深度的增加,它们获取的表示使下游任务变得更容易。因此,整个模型的任务特定层很简单。自ULMFit和BERT之后,调优已经成为PTMs的主要适应方法。然而,调优的过程往往是“脆弱的”:即使具有相同的超参数值,不同的随机种子也可能导致完全不同的结果。除了标准的调优外,还有一些有用的调优策略。

两阶段调优法(Two-stage fine-tuning)

两阶段调优法在预训练和调优之间引入一个中间阶段。第一个阶段中,PTM被转移到由中间任务或语料库进行调优的模型中。第二阶段中,将转移的模型调优到目标任务。

多任务调优(Multi-task fine-tuning)

在多任务框架下调优证明了多任务学习和预训练是互补的。

使用外部模块调优(Fine-tuning with extra adaptation modules)

调优的主要缺点是参数效率低:每个下游任务都有自己的调优参数。 因此,更好的解决方案是在固定原始参数的同时,将一些可调优的适配模块注入PTM。

应用

通用评估标准

The General Language Understanding Evaluation(GLUE)基准是一个包含九种语言的理解任务。GLUE基准是为评估模型的健壮性和泛化性而精心设计的。

应用包含问题回答、情感分析、机器翻译、自动摘要、对抗攻击和防御

未来的方向

  1. PTMs的上界:目前,PTMs尚未达到其上限。目前大部分的PTMs都可以通过增加训练步骤和扩大语料库来进一步提高。
  2. PTMs的结构:Transformer已被证明是一种有效的预训练结构。然而,Transformer的主要限制是它的计算复杂度是输入长度的二次方。由于gpu内存的限制,目前大多数PTMs无法处理超过512个token的序列。要突破这一限制,需要改进Transformer的结构。因此,为PTMs寻找更有效的模型体系结构对于获取更大范围的上下文信息非常重要。可以从一些自动的方法中寻求突破,比如neural architecture search(NAS)。
  3. 面向任务的预训练和模型压缩:在实践中,不同的下游任务需要不同的PTMs能力。PTMs和下游任务之间的差异通常存在于两个方面:模型架构和数据分布。较大的差异可能导致PTMs的优势不显著。例如,文本生成通常需要一个特定的任务来对编码器和解码器进行预训练,而文本匹配则需要为句子对设计预训练任务。此外,尽管较大的PTMs通常可以带来更好的性能,但一个实际问题是如何在特定场景中利用这些巨大的PTMs,例如低容量设备和低延迟应用程序。因此,可以为下游任务精心设计具体的模型架构和预培训任务,或者从现有的PTMs中提取部分与任务相关的知识。在CV领域中,模型压缩已经广泛应用了,而对于NLP领域的应用才刚刚开始。因为Transformer的结构是全连接结构,这对模型压缩又是一项的挑战。
  4. 在调优之外的知识迁移:调优是对于迁移PTMs知识到下游任务的显著有效的方法,但有个缺陷是它的参数效率低下:每个下游任务都有自己的调优参数。一种解决办法是通过为特定任务增加小的可调优模块固定PTMs原始的参数,这样可以对多个任务使用共享的PTMs。
  5. PTMs的可解释性和可靠性:虽然PTMs的性能令人印象深刻,但是其深度非线性结构使决策过程高度不透明。此外PTMs也容易受到对抗性攻击。

补充

Transformer

BERT的核心Transformer到底是个什么东西?参考文章


「欢迎留言」: