预训练模型可以分为以下三个大类:
什么是自回归模型(auto-regressive model):经典的语言建模任务,根据已读取文本内容预测下一个单词。比如Transformer的解码器,在训练阶段应用掩码机制,使得注意力计算过程中只能看到某个单词之前的内容,而没有后面的内容。尽管可以对这类预训练好的模型进行微调并在许多下游任务上取得出色的结果,但其最自然的应用是文本生成。这种模型的代表是GPT系列模型。 什么是自编码模型(auto-encoding model):通过某种方式破坏输入文本(比如Bert中对输入文本进行遮盖)并尝试重建原始文本的方式进行预训练。从某种意义上讲,与Transformer的编码器相对应,因为它们无需任何掩码,每一个位置都可访问全部输入的内容。这些模型通常能建立整个句子的双向编码表示,可以对它们进行微调并在许多下游任务上取得出色的结果,其最自然的应用是句子分类或序列标注。此类模型的典型代表是BERT。 注:简单地说,两者的区别在于数据的预训练形式不同。 什么是序列到序列模型(seq2seq model):将Transformer的编码器和解码器用于翻译任务或其它文本到文本问题,可以将它们微调成并适用于多种任务,但最自然的应用是翻译,摘要和问题解答。Transformer、T5是此类模型的一个典型代表(仅用于翻译)。 接下来给大家逐个介绍近些年来,在这三大预训练模型类型下的代表性模型。 自回归模型 这类模型基于Transformer的解码器部分,使用注意力掩码机制使得每个当前位置只能看到之前的输入文本。 GPT Improving Language Understanding by Generative Pre-Training, Alec Radford et al. 在Book Corpus数据集上预训练的第一个基于Transformer解码器的自回归模型,由12层transformer模块组成的,使用最后的隐藏层来做不同的任务。 GPT-2 Language Models are Unsupervised Multitask Learners, Alec Radford et al. 简单来说,GPT-2就是基于Transformer架构的大规模模型。 GPT-2是GPT算法“进化版”,比GPT参数扩大10倍,达到了15亿个,数据量扩大10倍,使用了包含800万个网页的数据集,共有40GB。 GPT-2用于生成文本: GPT-3 GPT-3: Language Models are Few-Shot Learners “GPT-3”是一个拥有 1750 亿个参数的GPT-2 的放大版。 研究者们希望 GPT-3 能够成为更通用化的 NLP 模型,解决当前 BERT 等模型的两个不足之处:对领域内有标记数据的过分依赖,以及对于领域数据分布的过拟合。GPT-3 致力于能够使用更少的特定领域,不做 fine-tuning 解决问题。 CTRL CTRL: A Conditional Transformer Language Model for Controllable Generation, Nitish Shirish Keskar et al. 与GPT模型相同,但增加了控制生成的概念。 CTRL模型可以指定文章的领域、风格、主题、时间、实体,实体间的关系,以及任务相关的行为等等,因此可以将其看成命题作文。它使用140G数据训练,参数规模1.63 billion(16亿,比GPT-2更大)。模型维度1280维,48层EncoderLayer,16头Attention,也是一个体量巨大的模型。 Transformer-XL Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context, Zihang Dai et al. 针对输入为长文本时,一般的预训练模型需要进行切分截断导致语义不连续的问题。处理的方式:将长文本进行分段,一段段地输入模型中进行编码,并且在编码当前段的时候,加入缓存的上一段中的编码信息,使得信息能够在段与段之间传递。另外,此模型对文本的编码也做了一些特殊处理。 Reformer Reformer: The Efficient Transformer, Nikita Kitaev et al . 具有许多技巧的自回归模型,可以减少内存占用和计算时间。这些技巧包括:
XLNet XLNet: Generalized Autoregressive Pretraining for Language Understanding, Zhilin Yang et al. 严格意义上来说,XLNet不是传统的自回归模型,而是使用了基于此训练策略的一种模型。 XLNet作为bert的升级模型,主要在以下三个方面进行了优化
可参考:https://zhuanlan.zhihu.com/p/70257427 自编码模型 这部分模型依赖于原始Transformer的编码器部分,并且不使用任何mask,因此该模型可以查看输入文本的所有内容。对于预训练阶段,目标是原始句子,输入是其损坏的版本。 Bert BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, Jacob Devlin et al. MLM作为训练任务,即通过使用随机屏蔽来破坏输入,让模型预测原来的单词,更准确地说,在预训练期间,15%的内容被以下方式屏蔽:
除了模型必须预测原始句子的目标以外,还存在第二个目标:输入是两个句子A和B(之间有一个分隔标记)。句子对有50%的概率连续,50%的概率不相关。该模型必须预测句子是否连续。 Albert ALBERT: A Lite BERT for Self-supervised Learning of Language Representations, Zhenzhong Lan et al. 该模型提出了两种减少内存的方法,同时提升了训练速度,其次改进了BERT中的NSP的预训练任务:
注:BERT的NSP任务实际上是一个二分类,训练数据的正样本是通过采样同一个文档中的两个连续的句子,而负样本是通过采用两个不同的文档的句子。该任务主要是希望能提高下游任务的效果,例如NLI自然语言推理任务。但是后续的研究发现该任务效果并不好,主要原因是因为其任务过于简单。NSP其实包含了两个子任务,主题预测与关系一致性预测,但是主题预测相比于关系一致性预测简单太多了,并且在MLM任务中其实也有类似的效果,因此也许并不必要。 RoBERTa RoBERTa: A Robustly Optimized BERT Pretraining Approach, Yinhan Liu et al. 从模型上来说,RoBERTa基本没有什么太大创新,主要是在BERT基础上做了几点调整:
DistilBERT DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter, Victor Sanh et al. Bert是12层transformer encode,Distilled BERT是6层transformer encode,Distilled BERT没有进行自己的预训练,而是将bert的部分参数直接加载到Distilled BERT结构中作为初始化,再进行知识蒸馏。 XLM Cross-lingual Language Model Pretraining, Guillaume Lample and Alexis Conneau XLM提出了两个创新点:一个是用BERT训练多语言文本分类、另一个是用BERT初始化机器翻译模型。 尽管BERT的训练语料超过100种语言,它的模型本身并没有针对多语言进行优化——大多数词汇没有在语言间共享,因此能学到的跨语言知识是很有限的。针对这一点,XLM模型在以下方面修正了BERT: 首先,XLM的模型输入用了字节对编码(BPE)而不是用字符或词语。BPE把输入按所有语言中最常见的词片段(sub-words)进行切分,以此来增加跨语言共享的词汇。 其次,XLM以下面两个方式升级了BERT的模型结构: 1、XLM的每个训练样本包含含义相同语言不同的两条句子,而不是像BERT中一条样本仅来自同一语言。BERT的目标是预测被遮住的token。 XLM模型中,我们可以对每组句子,用一个语言的上下文信息去预测另一个语言被遮住的token。因为句子对中不同的随机词语会被遮住,模型可以利用翻译信息去预测token。 2、模型也接受语言ID和不同语言token的顺序信息,也就是位置编码。这些新的元数据能帮模型学习到不同语言的token间关系。 XLM-RoBERTa Unsupervised Cross-lingual Representation Learning at Scale, Alexis Conneau et al. 在XLM方法上使用RoBERTa技巧,但不使用翻译语言建模目标。 ELECTRA ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators, Kevin Clark et al. ELECTRA最主要的贡献是提出了新的预训练任务和框架,把生成式的Masked language model(MLM)预训练任务改成了判别式的Replaced token detection(RTD)任务,判断当前token是否被语言模型替换过。 Funnel Transformer Funnel-Transformer: Filtering out Sequential Redundancy for Efficient Language Processing, Zihang Dai et al. Funnel Transformer提出一种简单但有效的提高Transformer处理长序列效率的方法:随着模型加深,使用池化操作压缩在序列方向上的长度,让模型变窄,从而节约高层的参数量,直到最后得到单个向量(或几个,取决于任务)。于是,这单个向量就可以直接用于句子级别的任务,如文本分类。 但是,这样的模型就不能用于token级别的任务了,比如问答等。为此,本文又在最后加上一个Decoder,将最后得到的单个向量上采样,从而恢复到原来的序列长度。 这样一来,将相当于压缩了整个模型的中间部分,而保持开始和结束层的长度不变,也就可以像原始Transformer一样用于各类任务了。 Longformer Longformer: The Long-Document Transformer, Iz Beltagy et al. Longformer,改进了Transformer的传统attention机制:对于每一个token,只对固定窗口大小的附近token计算local attention,并结合具体任务,计算少量的global attention。该方法的优点包括:
序列到序列模型 如前所述,这些模型保留原始Transformer的编码器和解码器。 BART BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension, Mike Lewis et al. 具有编码器和解码器的序列到序列模型。编码器解析被遮盖掉某些单词的文本,解码器遮盖掉将来的单词。对于编码器,在预训练任务上,将应用以下转换方式的组合:
T5 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, Colin Raffel et al. 使用传统的Transformer,为了能够处理所有NLP任务,使用特定的前缀将它们转换为 text-to-text 的问题:“摘要:”,“问题:”,“将英语翻译为德语:”等等。预训练包括监督训练和自监督训练。 监督训练:对GLUE和SuperGLUE基准测试提供的下游任务进行有监督的训练。 自监督训练:与Bert一样的MLM任务。 MBart Multilingual Denoising Pre-training for Neural Machine Translation by Yinhan Liu, Jiatao Gu, Naman Goyal, Xian Li, Sergey Edunov Marjan Ghazvininejad, Mike Lewis, Luke Zettlemoyer. 模型架构和预训练目标与BART相同,但是MBart受25种语言训练,适用于有监督和无监督的机器翻译。 参考 https:///transformers/model_summary.html#axial-pos-encoding |
|