Bert-part2

了解 BERT 第 2 部分:BERT 细节

转载自:https://medium.com/dissecting-bert/dissecting-bert-part2-335ff2ed9c73

在第 2 部分中,我们将深入探讨 BERT 在各种 NLP 任务中特别有效的原因,用作者自己的话说,实现了:

[…] 11 项自然语言处理任务取得了最新的最新成果,包括将 GLUE 基准提升至 80.4%(绝对提升 7.6%)、MultiNLI 准确率提升至 86.7%(绝对提升 5.6%)以及 SQuAD v1.1 1 个问题回答测试 F1 达到 93.2(绝对提高 1.5),比人类表现高出 2.0。

为了避免混淆,让我们在开始之前清楚地区分论文和架构。我们将引用具有三种不同(尽管相关)架构的三篇论文:

  1. **“Transformer”**将是我们在介绍 Transformer 的论文《Attention Is All You Need》中使用的架构的名称。
  2. **“OpenAI GPT”**将参考OpenAI在变压器架构上的工作,他们在语言模型上进行了预训练,然后在许多下游任务中进行了测试。
  3. **“BERT”**将引用Google 的论文,他们在该论文中修改了 OpenAI GPT 的架构,以在大多数 NLP 任务中超越其前身。

介绍

什么是 BERT?

BERT代表Transformers的双向编码器表示。_ 它基本上是一堆堆叠在一起的 Transformer 编码器(不是整个Transformer架构,而只是编码器)。双向性概念是BERT与其前身OpenAI GPT**之间的关键区别。**BERT是双向的,因为它的自注意力层在两个方向上执行自注意力。让我们看一个例子。

假设我们的输入句子是“我喜欢从事 NLP 工作”。在OpenAI GPT中,“love”标记仅与“I”标记及其自身具有自注意力关系(仅向后)。在BERT中,同一个 token 会对句子中的每个其他 token具有自注意力。但是,如果Transformer中的原始编码器使用双向性,为什么OpenAI GPT不使用双向性呢?嗯,这是由他们接受培训的任务来解释的。

架构和双向性

为什么 OpenAI 不预先训练双向模型?

OpenAI GPT在语言模型任务上对其模型进行了预训练。这意味着他们正在训练 Transformer 编码器来预测每个标记,句子中的下一个单词是什么。如果他们要执行双向自注意力,那么模型将了解到句子中的下一个单词是目标,并始终以 100% 的准确率进行预测。在我们的示例中,要预测“love”之后的下一个单词,只需查看下一个单词“to”并将其选择为预测(它很快就会知道下一个单词与目标具有 100% 的相关性) 。通过这种方式,模型将不会学习任何关于语言的语法或句法或标记的含义的有用信息,并且对于下游任务也没有用处。

image-20230905150408146

Transformer如何处理双向性?

首先,它是通过解决另一个问题来训练的,即将英语翻译成德语。同样重要的是要考虑到Transformer架构由编码器和解码器组成,编码器的输出是解码器的输入。因此, Transformer在所有编码器输入标记之间执行自注意力是没有问题的,因为这些都不是预测的一部分(预测是翻译后的德语序列,并且屏蔽,有关更多信息,请参阅我们关于解码器的文章) 。

image-20230905150725979

***BERT*如何处理双向性?

我们开始探讨BERT之所以如此特别的关键所在。请记住,在使用 Transformer Encoder 训练语言模型时添加双向性是不可行的(这是OpenAI GPT)。我们知道BERT确实使用了双向性并保持了原始架构完整,这样就只剩下一个嫌疑人了……你猜对了,他们改变了问题!他们没有在语言模型上预训练模型,而是将其预训练为“掩码语言模型”和“下一句预测”。在我们深入研究这些问题以及它们与OpenAI GPT 的区别之前,让我们花几分钟讨论一下 BERT 的输入嵌入。

输入嵌入

BERT 与Transformer在处理输入序列的方式上存在一些差异,目的是增加模型可以处理的任务数量。

正如您在图 3 中看到的, Transformer的组件仍然存在: 令牌嵌入和位置嵌入。然而,这一次他们使用了预训练的标记嵌入(WordPiece)并学习了位置嵌入(正如《Attention is All You Need》中所指定的那样,它与该论文中使用的位置嵌入函数具有相似的性能)。作者还介绍了一些新技巧:

  • 为了能够解决问答和下一句预测(预训练任务 2)等两个句子问题,他们添加了一个 [SEP] 标记来标记句子的结尾,并添加了一个句子嵌入(这个嵌入对于每个句子都是恒定的)但两个句子不同)。这使得模型能够轻松确定一个句子的结束位置和另一个句子的开始位置,并为不同的句子赋予不同的含义。
  • 为了允许分类任务,作者在输入序列的开头添加了一个 [CLS] 标记,仅在分类时使用

image-20230905151301686

预训练

该模型同时接受两项任务的训练:掩码语言模型下一句预测

任务 1:掩码语言模型

掩码语言模型要求模型预测的不是单词序列的下一个单词,而是序列中的随机单词。

令牌是如何被掩盖的?

在这种特定情况下,作为输入输入的单词中有 15% 被屏蔽。但并非所有令牌都以相同的方式进行屏蔽。为了解释标记是如何被屏蔽的,我们将使用作者在论文中使用的相同示例:“我的狗是毛茸茸的”。让我们假设“毛茸茸”的外观是选择要替换的标记之一。

令牌已按以下方式替换:

  • 80% 被“”标记替换

示例:“我的狗是**** ”

  • 10% 被随机代币取代

示例:“我的狗是*苹果*

  • 10% 完好无损

示例:“我的狗有*毛*

他们为什么不使用“”替换令牌?

如果模型只接受预测“”标记的训练,然后在微调过程中从未看到该标记,那么它会认为不需要预测任何内容,这会影响性能。此外,该模型只会学习“”标记的上下文表示,这会使其学习缓慢(因为只有 15% 的输入标记被屏蔽)。有时要求它预测没有“”标记的位置的单词,模型需要学习输入句子中所有单词的上下文表示,以防万一之后被要求预测它们。

随机令牌还不够吗?为什么他们保留了一些句子?

好吧,理想情况下,我们希望模型对屏蔽标记的表示比随机的更好。通过有时保持句子完整(同时仍然要求模型预测所选标记),作者使模型有偏差,以学习屏蔽标记的有意义的表示。

随机标记会混淆模型吗?

该模型确实会尝试使用随机标记的嵌入来帮助其预测,并且一旦看到目标(正确的标记),它就会知道它实际上没有用。然而,随机替换发生在 1.5% 的代币中(10%*15%),作者声称这不会影响模型的性能。

该模型只能预测 15% 的 token,但语言模型可以预测 100% 的 token,这是否意味着模型需要更多迭代才能达到相同的损失?

是的,该模型确实收敛得更慢,但下游性能的显着改善证明了收敛步骤的增加是合理的。

任务 2:下一句话预测

该任务包括给模型两个句子,并要求它预测第二个句子是否在语料库中的第一个句子之后。

为什么第二项任务是必要的?

作者在下一句预测中对他们的模型进行了预训练,因为他们认为重要的是该模型知道如何将两个不同的句子关联起来以执行问答或自然语言推理等下游任务,而“掩码语言模型”没有捕获这些知识。他们证明,第二个任务的预训练显着提高了问答和自然语言推理的性能。

下一个句子实际占句子的百分比是多少?

50% 的句子与语料库中实际相邻的句子配对,其中 50% 与从语料库中随机挑选的句子配对。

预训练程序

预训练语料库是根据 BookCorpus(8 亿字)和英语维基百科(2,500M 字)构建的。使用 37,000 个 WordPiece 代币对代币进行代币化。

为了生成预训练序列,作者以两个为一组(50% 的时间彼此相邻)获得随机样本,使得两个所选句子的组合长度≤512 个标记。每个序列构建完成后,其 15% 的标记就会被屏蔽。

论文中提出的预训练序列的示例是:

输入 = [CLS] 该男子去了 [MASK] 商店 [SEP] 他买了一加仑 [MASK] 牛奶 [SEP]

在这种情况下,句子是相邻的,因此 [CLS] 中的标签将为“”,如下所示:

输入 = 该男子去了 [MASK] 商店 [SEP] 他买了一加仑 [MASK] 牛奶 [SEP]

损失计算为平均屏蔽 LM 似然度和平均下一句预测似然度之和。

微调

微调程序

微调非常简单,因为前面描述的模型可以处理各种下游任务。与预训练架构的唯一区别在于多标签分类。

由于“[CLS]”标记只能输出一个数字,并且多标签分类问题需要具有等于标签数量的输出维度,因此作者需要转换输出以匹配所需的维度。他们通过将具有 softmax 激活函数的线性层添加到第一个标记的最后一个隐藏状态(对应于“[CLS]”标记位置中的向量)来实现此目的。如果我们将最后一个标记的隐藏向量称为h维度,将权重矩阵W称为维度*(k,h),其中k*是标签数量,则:

s o f t m a x ( C W t ) ∈ R k softmax(CW^t)\in\mathbb{R}^k softmax(CWt)Rk

最后一个隐藏状态(对应于“[CLS]”标记位置中的向量)来实现此目的。如果我们将最后一个标记的隐藏向量称为h维度,将权重矩阵W称为维度*(k,h),其中k*是标签数量,则:

s o f t m a x ( C W t ) ∈ R k softmax(CW^t)\in\mathbb{R}^k softmax(CWt)Rk

它恰好具有我们执行多标签分类所需的维度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值