0
点赞
收藏
分享

微信扫一扫

预训练模型介绍:BERT、GPT、XLNet、RoBERTa、ALBERT和ELECTRA

香小蕉 2021-09-19 阅读 75
NLP

预训练

预训练是Transformer模型学习建模语言的过程。换句话说,“Transformer”将学习良好的,取决于上下文的表示文本序列的方式。然后,该知识可以在下游任务中重用,因为模型已经学习了语言功能,并且现在只需要微调其表示以执行特定任务,就可以大大减少所需的特定于任务的,标记数据。对于预训练,在数据方面的唯一要求是许多(希望)干净的数据。无需标签!

BERT

BERT(Bidirectional Encoder Representations from Transformers)是Google Research的研究人员在2018年提出的一种自然语言处理模型。

BERT的关键技术创新是双向的Transformer的训练。这与以前的工作相反,之前的工作是从左到右或从左到右和从右到左的组合训练查看文本序列。与单向语言模型相比,经过双向训练的语言模型可以对语言上下文和流程有更深的了解。在论文中,研究人员详细介绍了一种名为Masked LM(MLM)的新技术,该技术允许在以前不可能的模型中进行双向训练。

已发布的开源代码就带有两个版本的预训练模型BERT BASE和BERT LARGE,它们在大量数据集上进行了训练。BERT还使用了许多以前的NLP算法和体系结构,例如半监督训练,OpenAI Transformer,ELMo嵌入,ULMFit,Transformer。

BERT模型体系结构:

BERT以和两种尺寸发布。BASE模型用于测量与另一种体系结构相当的体系结构性能,而LAR​​GE模型产生的最新结果已在研究论文中进行了报道。


BERT基本上是Transformer架构的编码器堆栈。Transformer体系结构是一种编码器-解码器网络,它在编码器使用self-attention,在解码器使用注意力。在编码器堆栈中具有12层,而在编码器堆栈中具有24层。这些不只是原始论文中描述的Transformer体系结构(6个编码器层)。与原始论文中建议的Transformer体系结构相比,BERT体系结构(BASE和LARGE)还具有更大的前馈网络(分别为768和1024个隐藏单元)和更多的关注点(分别为12和16)。它包含512个隐藏单元和8个attention head。BERT BASE包含110M参数,而BERT LARGE具有340M参数。

半监督学习:

BERT在不同的NLP任务上表现良好的主要原因之一是使用半监督学习。这意味着该模型针对特定任务进行了训练,使其能够理解语言的模式。训练后,模型(BERT)具有语言处理功能,可用于授权我们使用监督学习构建和训练的其他模型。

ELMo Word Embeddings:

ELMo\根据上下文(即上下文化词嵌入)对一个词进行嵌入。为了生成词的嵌入,ELMo会查看整个句子而不是固定的词嵌入。
Elmo使用为特定任务训练的双向LSTM,以便能够创建这些嵌入。该模型在使用我们数据集语言的海量数据集上进行了训练,然后我们可以将其用作执行特定语言任务所需的其他体系结构中的组件。


ELMo受过训练以预测单词序列中的下一个单词,从而获得了对语言的理解-这项任务称为“语言建模”。这很方便,因为我们拥有大量的文本数据,而无需训练标签就可以从这种模型中学习。

ULM-Fit:NLP中的转移学习:

ULM-Fit引入了新的语言模型和过程,可以针对特定任务有效地微调该语言模型。这使NLP体系结构可以在预训练模型上执行转移学习,类似于在许多计算机视觉任务中执行的模型。

Open AI Transformer:预训练:

上面的Transformer架构仅对编码器架构进行了预训练。这种预训练对某些任务(如机器翻译等)很有用,但对于诸如句子分类之类的任务,下一个单词预测则无法使用。在这种架构中,我们仅训练解码器。这种训练解码器的方法将最适合下一个单词预测任务,因为它掩盖了与此任务相似的将来标记(单词)。
该模型具有12个解码器层堆栈。由于没有编码器,因此这些解码器层仅具有self-attention层。
我们可以通过为模型提供大量未标记的数据集(例如书籍等)来训练该模型以进行语言建模(下一个单词预测)任务。

BERT工作

BERT利用Transformer(一种注意机制)来学习文本中单词(或子单词)之间的上下文关系。原始形式的Transformer包含两种独立的机制-读取文本输入的编码器和为任务生成预测的解码器。由于BERT的目标是生成语言模型,因此仅需要编码器机制。

与定向模型(顺序读取文本输入(从左到右或从右到左))相反,Transformer编码器一次读取整个单词序列。因此,尽管说它是非定向的更为准确,但它被认为是双向的。此特征使模型可以基于单词的所有周围环境(单词的左右)来学习单词的上下文。

训练语言模型时,定义预测目标存在挑战。许多模型预测序列中的下一个单词(例如“孩子从___回家”),这是一种定向方法,固有地限制了情境学习。为了克服这一挑战,BERT使用了两种训练策略:Masked LM(MLM)Next Sentence Prediction(NSP)

Masked LM(MLM)

在将单词序列馈入BERT之前,每个序列中15%的单词被替换为[MASK]标记。然后,该模型将根据序列中其他未屏蔽单词提供的上下文,尝试预测被屏蔽单词的原始值。用技术术语来说,输出单词的预测需要:

  • 1、在编码器输出的顶部添加分类层。
  • 2、将输出向量与嵌入矩阵相乘,将其转换为词汇量。
  • 3、用softmax计算词汇中每个单词的概率。

BERT损失函数仅考虑Mask值的预测,而忽略非Mask的预测。结果,该模型的收敛速度比定向模型慢,这一特征被上下文感知能力的提高所抵消。

Next Sentence Prediction(NSP)

在BERT训练过程中,模型接收成对的句子作为输入,并学习预测成对的第二句话是否是原始文档中的后续句子。在训练期间,输入的50%是一对,其中第二个句子是原始文档中的后续句子,而在其他50%的输入中,从语料库中选择一个随机句子作为第二个句子。假定随机句子将与第一句断开。

为了帮助模型区分训练中的两个句子,在输入模型之前,将以以下方式处理输入:

  • 1.在第一个句子的开头插入一个[CLS]标记,在每个句子的末尾插入一个[SEP]标记。
  • 2.将指示句子A或句子B的句子嵌入添加到每个标记。句子嵌入在概念上与词汇量为2的标记嵌入相似。
  • 3.将位置嵌入添加到每个标记以指示其在序列中的位置。

要预测第二句话是否确实与第一句话相关,请执行以下步骤:

  • 整个输入序列通过Transformer模型。
  • [CLS]标记的输出使用简单的分类层(权重和偏差的学习矩阵)转换为2×1形状的矢量。
  • 用softmax计算IsNextSequence的概率。
  • 在训练BERT模型时,将同时屏蔽Masked LM和Next Sentence Prediction,目的是最小化这两种策略的组合损失函数。

GPT

GPT-1

使用未标记的数据学习生成语言模型,然后通过提供特定的下游任务示例(例如分类,情感分析,文本蕴含等)来对模型进行微调。

学习目标和概念:这种针对NLP任务的半监督学习(无监督的预训练,然后进行有监督的微调)具有以下三个组成部分:

  • a.无监督语言建模(预训练):对于无监督学习,使用标准语言模型目标。

    其中是无监督数据中的标记集,是上下文窗口的大小,是使用随机梯度下降训练的神经网络的参数。

  • b.有监督的微调:这部分旨在最大程度地观察给定特征或标记的标签。

    其中是由训练示例组成的标记数据集
    另外添加了用于有监督的微调的辅助学习目标,以实现更好的泛化和更快的收敛。修改后的培训目标如下:

    其中是学习语言模型的辅助目标,而是赋予该次要学习目标的权重。设定为0.5。
    通过在Transformer模型上添加线性层和softmax层以获得下游任务的任务标签,可以实现有监督的微调。

  • C.任务特定的输入转换:为了在微调期间对模型的体系结构进行最小的更改,将特定下游任务的输入转换为有序序列。标记以以下方式重新排列:
    —开始标记和结束标记已添加到输入序列中。
    —在示例的不同部分之间添加了定界符标记,以便可以按有序序列发送输入。对于诸如问答,多项选择题等任务,每个示例均发送了多个序列。例如,一个训练示例,包括情境,问题和回答问题任务的答案序列。

GPT-1证明语言模型是有效的预训练目标,可以帮助模型很好地推广。该体系结构促进了转移学习,并且只需很少的调整就可以执行各种NLP任务。该模型显示了生成式预训练的强大功能,并为其他模型开辟了道路,可以通过更大的数据集和更多的参数更好地释放这种潜力。

GPT-2

学习目标和概念:以下是在NLP上下文中本文讨论的两个重要概念。

  • 任务条件:我们已经看到语言模型的训练目标被表述为P(输出|输入)。但是,GPT-2旨在使用相同的无监督模型学习多个任务。为此,应将学习目标修改为P(输入,任务)。这种修改称为任务调节,其中期望模型为不同任务的相同输入产生不同的输出。一些模型在架构级别上实现任务调节,在该级别上将模型(输入和任务)都馈入模型。对于语言模型,输出,输入和任务都是自然语言的序列。因此,对于语言模型任务调理执行通过向模型提供示例或自然语言指令来执行任务。
  • Zero Shot Learning(ZSL) 和 Zero Short Task Transfer:GPT 2的一项有趣功能是Zero Short Task Transfer。ZSL是ZSL传输的一种特殊情况,其中根本不提供任何示例,并且模型根据给定的指令理解任务。无需像对GPT-1进行微调那样重新排列顺序,而是以一种期望模型能够理解任务性质并提供答案的格式提供给GPT-2的输入。这样做是为了模拟Zero Short Task Transfer行为。例如,对于英语到法语的翻译任务,给模型提供英语句子,后跟单词French和提示(:)。该模型应该理解为翻译任务,并为法语提供英语句子。

GPT-2表明,在更大的数据集上进行训练并具有更多的参数可以提高语言模型理解任务的能力,并超越零射击设置下许多任务的最新技术水平。该论文指出,随着模型容量的增加,性能以对数线性方式增加。而且,语言模型的困惑性下降并未显示出饱和,并且随着参数数量的增加而持续下降。实际上,GPT-2在不适合WebText数据集的情况下进行训练并花费更多时间可以进一步减少困惑。这表明GPT-2的模型大小不是限制,并且建立更大的语言模型可以减少困惑,并使语言模型更易于理解自然语言。

GPT-3

为了寻求建立非常强大的语言模型,而无需进行微调,并且只需进行少量演示即可理解任务并执行它们,Open AI构建了具有1,750亿个参数的GPT-3模型。该模型的参数比Microsoft强大的Turing NLG语言模型多10倍,参数比GPT-2多100倍。由于有大量参数,并且已经对GPT-3进行了广泛的数据集训练,因此它在零触发和少触发设置下的下游NLP任务中表现良好。由于其功能强大,它具有类似于撰写文章的能力,这些文章难以与人类撰写的文章区分开。它还可以执行从未对其进行过明确训练的即时任务,例如,对数字求和,编写SQL查询和代码,对句子中的单词进行加扰。

学习目标和概念:让我们讨论两个概念。

  • 上下文学习:大型语言模型使用他们所训练的文本数据来发展模式识别和其他技能。在学习预测给定上下文单词的下一个单词的主要目的的同时,语言模型还开始识别数据中的模式,这有助于它们将对语言建模任务的损失降到最低。稍后,此功能可在零次任务传输期间帮助模型。语言模型只有很少的示例和/或需要执行的操作的描述时,会将示例的模式与过去为类似数据所学的内容进行匹配,并使用该知识来执行任务。这是大型语言模型的强大功能,随着模型参数数量的增加而增加。
  • Few-shot,One-shot和Zero-shot设置:如前所述,Few-shot,One-shot和Zero-shot设置是Zero-shot任务传输的特殊情况。在Few-shot设置中,为模型提供任务描述和尽可能多的示例,以适应模型的上下文窗口。在One-shot设置中,仅提供了一个示例,在Zero-shot设置中,未提供示例。随着模型容量的增加,模型的少,One-shot和Zero-shot能力也得到改善。

除了评估常规NLP任务上的模型外,还对综合任务(如算术加法,单词加扰,新闻文章生成,学习和使用新颖单词等)进行模型评估。对于这些任务,性能也随着数量的增加而提高。参数和模型在Few-shot设置下的效果要好于One-shot和Zero-shot。

XLNet

OpenAI小组展示了可以使用预训练的语言模型来解决下游任务,而无需进行边界或体系结构修改。他们已经在一个庞大而又不同的数据集上准备了一个主要模型1.5B参数变压器,该数据集包含从4500万个网站页面抓取的文字。该模型产生连贯的文本段落,并在各种各样的任务上实现有希望的,有竞争力的或最前沿的结果。

XLNet与BERT有何不同?
XLNet将BERT的双向功能与Transformer-XL的自回归技术结合在一起:

  • 像BERT一样,XLNet也使用双向设置,这意味着它会查看给定标记前后的单词以预期它应该是什么。为此,XLNet会针对因分解阶数的所有可能排列放大序列的正常对数概率
  • 作为一种自回归语言模型,XLNet并不依赖于信息破坏,并且由于mask(例如,预训练-微调错误和未掩盖的标记互不相关的假设),因此摆脱了BERT的限制。

为了进一步改进,XLNet整合了TransformerXL的机制:

  • 递归机制:超越当前序列,实现cpature长期依赖关系。
  • 相对位置编码:使递归机制起作用。

RoBERTa(严格优化的BERT方法)

这项研究是由Facebook AI和华盛顿大学的研究人员进行的,他们分析了Google BERT模型的训练,并区分了改进制备方法的一些改进方法。特别是,研究人员利用另一个更大的数据集进行准备,对模型进行了更多的迭代训练,并消除了下一个序列预测训练目标。

RoBERTa与BERT有何不同?
Facebook AI研究团队改进了BERT的训练,以进一步优化它:

  • 他们使用160GB的文本,而不是最初用于训练BERT的16GB数据集。
  • 将迭代次数从100K增加到300K,然后进一步增加到500K。
  • 动态更改应用于训练数据的mask 模式。
  • 从训练过程中删除下一个序列预测目标。

ALBERT(精简版BERT)

BERT存在一个问题,即预训练语言模型的大小持续增长,这会导致内存限制,更长的准备时间以及出乎意料的性能下降。Google学者介绍了A Lite BERT(ALBERT)架构,该架构结合了两种参数减少技术:分解式参数化嵌入和跨层参数共享。另外,改善句子顺序的预测。

ALBERT与BERT有何不同?

  • 分解因子嵌入参数化-在BERT中,嵌入尺寸与隐藏层的大小相关。增加隐藏层的大小变得更加困难,因为它会增加嵌入大小,从而增加参数。
  • 跨层参数共享-ALBERT跨层共享所有参数,以提高参数效率。

通过引入用于句子顺序预测的自我监督损失,可以解决在训练NLP和MLM在一起的NSP任务很容易的情况,从而进一步提高了ALBERT的性能。但是ALBERT使用的任务是模型必须预测句子是否连贯。

ELECTRA

ELECTRA (Efficiently Learning an Encoder that Classifies Token Replacements Accurately) 是一个新的预训练方法以匹配或超过一个的下游性能旨在MLM(Masked Language Modelling)预训练的模型,同时使用显著更少的计算资源的训练前阶段。ELECTRA中的预训练任务基于检测输入序列中被替换的标记。此设置需要两个Transformer模型,一个生成器和一个鉴别器



让我们逐步分解预训练过程。

  • 对于给定的输入序列,用[MASK]标记随机替换一些标记。
  • 该生成器预计所有mask标记的原始记号。
  • 通过使用生成器预测替换[MASK]标记来构建鉴别器的输入序列。
  • 对于序列中的每个令牌,鉴别器预测它是原始标记还是已被生成器替换。

生成器模型被训练去预测被屏蔽掉的原始标记,而鉴别模型被训练以预测哪些标记给定损坏的序列已被替换。这意味着在对每个输入令牌执行预测时,可以在所有输入令牌上计算鉴别器损失。使用MLM时,仅对mask标记计算模型损失。事实证明,这是两种方法之间的主要区别,也是ELECTRA效率更高的主要原因。

此设置类似于GAN(通用对抗网络)的训练设置,不同之处在于,没有训练生成器尝试欺骗鉴别器(因此它本身不是对抗性的)。另外,如果生成器碰巧正确地预测了被masked 标记的初始标记,则将该标记视为原始标记(因为该标记尚未损坏/更改)。

鉴别器模型用于下游任务,并且生成器在预训练后被扔掉了。

参考

Explanation of BERT Model – NLP
BERT Explained : State of the art language model for NLP
The Journey of Open AI GPT models
XLNet, RoBERTa, ALBERT models for Natural Language Processing (NLP)
Understanding ELECTRA and Training an ELECTRA Language Model

举报

相关推荐

0 条评论