论文发布时间2020年三月
1.在庞大的文本语料库上进行预训练可以学习通用的语言表示形式并帮助完成下游任务。
2.预训练提供了更好的模型初始化,通常可以带来更好的泛化性能并加快目标任务的收敛速度。
3.可以将预训练视为一种正则化,以避免对小数据过度拟合[42]。
第一代PTMs旨在学习良好的单词嵌入。由于下游任务不再需要这些模型本身,因此对于计算效率而言它们通常很浅,例如Skip-Gram和GloVe。尽管这些经过预训练的嵌入可以捕获单词的语义,但它们不受上下文限制,无法捕获上下文中的高级概念,例如多义歧义消除,句法结构,语义角色,回指。
第二代PTMs专注于学习上下文词嵌入,例如CoV e [120],ELMo ,OpenAI GPT 和BERT 。仍然需要这些学习的编码器来表示下游任务在上下文中的单词。此外,还提出了各种预训练任务来学习PTMs,以用于不同的目的。
LM通常特别是指自回归LM或单向LM。缺点是单向,不过可以构建双向的BiLM。
1)完形填空,以克服标准单向LM的缺点。
2)序列到序列MLM(Seq2Seq MLM), Seq2SeqMLM,则是通过将 encoder-decoder (Seq2Seq) 应用到 MLM 上,这种变体有利于 Seq2Seq 类型的下游任务,比如 QA,总结和机器翻译。这一结构主要用在 MASS 和 T5 中。
3)E-MLM:
而在 BERT 之后的很多论文都对 MLM 做了一些改进以增强性能,作者将其总结为 E-MLM (Enhanced Masked Language Modeling)。
其中 RoBERTa 使用动态 masking,UniLM 将对 mask 的预测扩展到三种任务:单向、双向和 Seq2Seq。XLM 通过一种串联并行双语句对叫做 TLM (translation language modeling) 的模型实现 MLM。
而 SpanBERT 和 StructBERT 则是引入了结构化信息。而 ERINE (Baidu) 则是选择 MASK 实体和短语,E-BERT 和 ERINE (THU) 则是利用了实体 embedding 方法,这三者都是借助了外部知识来丰富 MLM。
当模型应用于下游任务时,MLM的预训练中使用的某些特殊标记(如[MASK])将不存在,从而导致预训练和微调之间存在差距。针对 MLM 中使用 MASK 导致的预训练与微调过程的不一致,Permuted Language Modeling (PLM) 对于一个给定序列,生成其所有可能排列进行采样作为训练的目标。值得注意的是,PLM 并不改变原始文本的位置,而是重新定义 token 预测的顺序。
去噪自动编码器(DAE)采用部分损坏的输入,旨在恢复原始的未失真输入。特定语言,序列到序列模型(例如标准Transformer)用于重构原始文本。有几种破坏文本的方法[98]:
(1)令牌屏蔽:从输入中随机采样令牌,并将其替换为[MASK]元素。
(2)令牌删除:从输入中随机删除令牌。与令牌屏蔽不同,该模型需要确定缺失输入的位置。
(3)文本填充:与SpanBERT一样,许多文本跨度也被采样并替换为单个[MASK]标记。每个跨度长度均来自泊松分布(λ= 3)。该模型需要预测跨度中缺少多少个令牌。
(4)句子置换:根据句号将文档分为多个句子,并以随机顺序对这些句子进行改组。
(5)文件轮换:随机地均匀选择一个令牌并旋转文件,以使其从该令牌开始。该模型需要标识文档的实际开始位置。
CTL (Contrastive Learning) 基于一种“learning by comparison”的思路,假设某些观测文本对比随机采样文本在语义上更相似,通过构建正样本和负样本并度量距离来实现学习。CTL 通常比 LM 具有更少的计算复杂度,也因此成为一个值得选择的 PTMs 训练标准。
DIM 最初是在 CV 领域提出的用于最大化图像全局特征与局部特征之间的互信息(Mutual Information)的方法。
InfoWord 将 DIM 引入到语义表达学习中,提出用 DIM objective 以最大化句子的全局表示和一个 N-gram 的具备表示之间的互信息。
噪声对比估计(Noise-Contrastive Estimation,NCE)通过训练一个二元分类器来区分真实样本和假样本,训练词嵌入。NCE 的思想也被用在 word2vec 中。
RTD 和 NCE 大体相同,根据上下文来预测 token 是否替换。
CBOW 的 negetive sampling 就可以看作是一个 RTD 的简单版本,其中采样是根据词汇表中的分布进行采样。
ELECTRA 基于 RTD 提出了一种新的 generator-discriminator 框架。首先用 MLM 任务训练 generator,再用 generator 的权重初始化 discriminator,再用判别任务(判别哪些 token 被 generator 替换过)训练 discriminator。
最在下游任务只需要对 discriminator 进行 fine-tuning。TRD 也是一种很好的解决 MLM 导致的不一致问题的方法。
WKLM 则是通过在实体层面(entity-level)进行词替换,替换为同一个实体类型的实体名。
NSP 训练模型区分两个输入语句是否为训练语料中连续的片段,在选择预训练句对时,第二个句子 50% 是第一个句子实际的连续片段,50% 是语料中的随机段落。NSP 能够教会模型理解两个输入句子之间的联系,从而使得如 QA 和 NLI 这种对此类信息敏感的下游任务受益。
然而,近来 NSP 的必要性也遭到了质疑,XLNet 的作者发现不用 NSP loss 的单句训练优于使用 NSP 的句对训练。RoBERTa 的作者进一步分析表明:在对单个文本中的文本块训练时,去除 NSP 会在下游任务稍微提高性能。
NSP 结合了主题预测相关性预测,而因为主题预测更容易,模型将更依赖于主题预测。为更好建模句子之间的相关性,ALBERT 提出使用 SOP loss 替换 NSP loss,SOP 使用一个文档中的两个连续片段作为正样本,将这两个片段交换顺序作为负样本。
采用了 SOP 的 ALBERT 在多项下游任务中结果都优于 BERT。StructBERT 和 BERTje 也使用 SOP 作为自监督学习任务。
通常 PTMs 都是用大量语料训练通用的语言表示,而将外部的领域知识引入到 PTMs 被证明式有效的。自 BERT 以来,就有很多预训练任务用以将外部知识纳入 PTMs,如:
LIBERT:linguistically-informed BERT ,通过附加语言约束任务纳入了语言知识。
SentiLR:通过对每个单词添加情感极性,将 MLM 拓展至 Label-Aware MLM (LA-MLM),在多个情感分类任务达到 SOTA。
SenseBERT:不仅能预测被 mask 的 token,还能预测 WordNet 中的 supersense。
ERINE (THU):将知识图谱中预训练的实体嵌入与文本中相应的实体提及相结合,以增强文本表示。
KnowBERT:端到端将带实体连接模型与实体表示集成。
KEPLER:将知识嵌入和语言模型对象联合。
K-BERT:不同于以上几个模型通过实体嵌入引入知识图谱中的结构化信息,K-BERT 通过直接将知识图谱中相关三元组引入句子,获得一个 BERT 的拓展的树形输入。
K-Adapter:针对不同预训练任务独立训练不同的适配器以引入多种知识,以解决上述模型在注入多种知识出现的遗忘问题。
随 PTMs 在 NLP 领域的广泛应用,一些多模态 PTMs 也被设计出来,在一些语音、视频、图像数据集上进行了预训练,比如:
视频-语言:VideoBERT、CBT
图像-语言:用于 visual question answering (VQA) and visual commonsense reasoning (VCR),如 ViLBERT、LXMERT、VisualBERT、B2T2、VLBERT、 Unicoder-VL、UNITER
音频-文本:用于端到端 Speech Question Answering (SQA) 任务,如 SpeechBERT
学习多语言文本表示对于跨语言 NLP 任务是很重要的。早期工作着力于学习来自同一语义环境下的多语言词嵌入,这一方法往往缺乏语言间的校准。近期有如下几个多语言 PTMs:
Multilingual-BERT:M-BERT,在 Wikipedia 上 104 种种语言的文本上进行 MLM 训练,每个训练样本都是单语言的,也没有专门设计跨语言目标,但即便如此,M-BERT 在跨语言任务上表现还是非常好。
XLM:通过结合跨语言任务 TLM (translation language modeling),提升了 M-BERT 的性能。
Unicoder:提出三个跨语言预训练任务:1) cross-lingual word recovery; 2) cross-lingual paraphrase classification; 3) cross-lingual masked language model。
除此之外还有一些单语言的 PTMs:BERT-wwm,ZEN,NEZHA,ERNIE (Baidu),BERTje,CamemBERT, FlauBERT ,RobBERT 。
预训练模型往往包含至少几千万个参数,这也使得模型难以部署到生活中的线上服务以及资源有限的设备上,这就使得模型压缩成为一条可能能够压缩模型尺寸并提高计算效率的方法。表 2 展示了一些压缩的 PTMs 的对比。
压缩 PTMs 一般有四个方法:
剪枝(pruning):去除不那么重要的参数(e.g. 权重、层数、通道数、attention heads)
量化(weight quantization):使用占位更少(低精度)的参数
参数共享(parameter sharing):相似模型单元间共享参数
知识蒸馏(knowledge diistillation):用一些优化目标从大型 teacher 模型学习一个小的 student 模型,一些利用知识蒸馏的 PTMs 见表 3。
迁移学习就是将源任务中的知识适应到目标任务,将 PTMs 适应到下游任务是一种顺序迁移学习任务。那么,如何迁移呢?我们需要考虑以下几个问题:
选择合适的预训练任务:近期,LM 是最流行的预训练任务,也有效解决了很多 NLP 问题。但不同的预训练任务在不同的下游任务上有不同的效果,比如 NSP 任务能帮助 PTM 理解句子之间的关系,因此 PTM 对于 QA 和 NLI 这样的下游任务很有帮助。
选择合适的模型架构:比如 BERT 使用的 MLM 和 Transformer 结构使其擅长 NLU 任务,却很难生成语言。
选择合适的语料:下游任务的数据应该接近 PTMs 的预训练任务。
选择合适的layers:在“深”的预训练模型中,不同的 layer 往往描绘不同种类的信息。有三种选择 layers 的方式:1) 只用 Embedding,如 word2vec 和 Glove;2) Top Layer,如 BERT;3) All Layers,如 ELMo。
是否进行fine-tune:模型迁移一般有两种方法:特征提取和 fine-tuning。特征提取的参数是冻结的,且往往需要特定任务的体系结构。fine-tunig 的参数是非冻结的,比特征提取方法更为通用且方便。
自 ULMFit 和 BERT 起,fine-tuning 已经成为 PTMs 主要的适配方法。这里有一些实用的 fine-tunig 策略:
两阶段 fine-tuning:两阶段迁移的方法在预训练和 fine-tuning 阶段引入了一个中间阶段。在第一阶段,通过中间任务或语料来微调模型。在第二阶段,通过目标任务微调模型。
多任务 fine-tuning:liu等人在多任务学习框架下对 BERT 进行了微调,结果显示多任务学习和预训练是互补的方法。
采用额外的适配器 fine-tuning:fine-tuning 的主要缺点是参数效率低,在每一个下游任务上都有各自的 dine-tuning 参数。对此的解决方案是在固定原始参数时引入一些可以 fine-tuning 的适配器。
其他:逐层解冻而非连续 fine-tune 所有层;self-ensemble 和 self-distillation。
机器翻译
机器翻译(Machine Translation, MT)也是 NLP 的一项重要任务。几乎所有 MT 模型都使用了 encoder-decoder 框架。而近期随预训练模型的发展,也有不少尝试将 BERT 之类的预训练模型用于初始化 encoder,取得了一定成效。
问答系统
问答系统(Question answering, QA)或是狭义概念的机器阅读理解(machine reading comprehension, MRC)也是 NLP 的重要任务。
从易到难,有三种类型的 QA 任务:单回合提取 QA (single-round extractive QA, SQuAD)、多回合生成QA (multi-round generative QA, CoQA)、多跳问答 (multi-hop QA, HotpotQA)。
针对提取 QA,有通过 PTM 初始化 encoder 的回溯阅读架构(retrospective reader architecture);针对多回合生成 QA,有“PTM+Adversarial Training+Rationale Tagging+Knowledge Distillation”架构;针对多跳 QA,有“Select, Answer, and Explain” (SAE) 系统。
情感分析
BERT 通过在广泛使用的情感分析数据集 SST-2 上进行微调后,表现超过了先前的 SOTA 模型。而后又有很多将 BERT 进行调整以应用在 aspect 级的情感分析(ABSA)任务上。
文本总结
从长文本中总结出短文本也是近期 NLP 的热点。也有很多尝试将 PTM 应用在总结文本任务上,如将 BERT 通过插入 [CLS] token 来学习句子表示的模型 BERTSUM。
命名实体识别
命名实体识别(Named Entity Recognition, NER)也是知识提取的一个基础任务,在很多 NLP 任务上都有重要作用。TagLM 和 ELMo 利用预训练语言模型的最后一层的输入和各层的加权总和作为词嵌入的一部分。
随 BERT 的出现,我们可以发现,很多模型都可以通过更长的训练步长不在和更大的语料来提升性能,比如去年的 T5 使用的 C4 数据集。而我们也可以通过加深模型来提升性能,比如 Turing-NLG 使用了 72 个 transformer 层。
PTMs 的共同目标都是学习语言的本质通用知识(或者说是世界的知识),然而,随着模型的不断加深,语料的不断增大,训练模型的花销也越来越大。一种更可行的解决方案是设计更有效的模型架构、自监督预训练任务、优化器和软硬件方面的技巧等。ELECTRA 就是这个方向上一个很好的尝试。
在实践中,不同的下游任务要求 PTMs 拥有不同的功能。而 PTMs 与下游目标任务间的差异通常表现在两方面:模型架构与数据分布。较大的 PTMs 通常情况下会有更好的性能,但实际问题是如何在低容量设备和低时延应用上使用如此庞大的 PTM。
除此之外,我们可以通过模型压缩来将通用 PTMs 教给面向对象的 PTM。尽管 CV 中对 CNNs 的压缩已经非常成熟,但 Tansformer 的全连接结构使得模型压缩非常具有挑战性。
Transformer 是 PTMs 的一个高效的框架,但 Transformer 的局限在于计算复杂度。由于 GPU 显存大小的限制,目前大多数 PTM 无法处理序列长度超过 512 个 token 的序列。搭配这一限制需要改进 Transformer 的结构,如 Transformer-XL。因此,寻求更有效的模型架构对于解决长程文本信息也是很重要的。
Fine-tuning 是目前将 PTM 的知识迁移至下游任务的主要方法,但参数效率却很低,每个下游任务都有特定的 fine-tuned 参数。
一个可以改进的解决方案是固定 PTMs 的原始参数,并为特定任务添加小型的可微调的适配器,这样就可以在不同的下游任务使用共享的 PTMs。从 PTM‘s 中挖掘知识也可以更灵活,比如:知识提取、知识蒸馏、数据增加、将 PTMs 作为外部知识等等。
PTMs 的深且非线性的架构使得决策制定的过程非常不透明。近期,可解释人工智能(explainable artificial intelligence, XAI)成为热点。通过对模型词嵌入的研究我们可以分析 PTMs 中的语言和世界知识,但更多有关注意力机制的可解释性的问题还值得探讨。
PTMs 这种深模型很容易受到对抗样本的扰动而产生错误的预测。在 CV 领域,对抗攻击与防御已经被广泛学习,而由于语言的特性,文本的对抗还非常具有挑战性。PTMs 的对抗防御也对于提升 PTMs 的鲁棒性很重要。