第18篇Bert论文翻译

Posted AI浩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第18篇Bert论文翻译相关的知识,希望对你有一定的参考价值。

摘要

我们引入了一种称为 BERT 的新语言表示模型,它代表来自 Transformers 的双向编码器表示。与最近的语言表示模型(Peters 等人,2018a;Radford 等人,2018 年)不同,BERT 旨在通过联合调节所有层的左右上下文,从未标记的文本中预训练深度双向表示。因此,预训练的 BERT 模型可以仅通过一个额外的输出层进行微调,从而为各种任务(例如问答和语言推理)创建最先进的模型,而无需对特定于任务的架构进行大量修改。 BERT 在概念上很简单,在经验上也很强大。它在 11 项自然语言处理任务上获得了最新的最新成果,包括将 GLUE 分数推至 80.5%(绝对提升 7.7%)、MultiNLI 准确率提升至 86.7%(绝对提升 4.6%)、SQuAD v1.1问答测试 F1 达到 93.2(绝对提高 1.5 分)和 SQuAD v2.0 测试 F1 达到 83.1(提高 5.1 分)。

1 简介

语言模型预训练已被证明可有效改善许多自然语言处理任务(Dai 和 Le,2015;Peters 等,2018a;Radford 等,2018;Howard 和 Ruder,2018)。 这些包括句子级任务,例如自然语言推理(Bowman 等人,2015 年;Williams 等人,2018 年)和释义(Dolan 和 Brockett,2005 年),旨在通过整体分析来预测句子之间的关系,如 以及令牌级别的任务,例如命名实体识别和问答,其中模型需要在令牌级别产生细粒度的输出(Tjong Kim Sang 和 De Meulder,2003 年;Rajpurkar 等人,2016 年)。

将预训练的语言表示应用于下游任务有两种现有策略:基于特征和微调。 基于特征的方法,例如 ELMo(Peters 等人,2018a),使用特定于任务的架构,其中包括预训练的表示作为附加特征。 微调方法,例如生成式预训练变换器 (OpenAI GPT) (Radford et al., 2018),引入了最少的任务特定参数,并通过简单地微调所有预训练参数来对下游任务进行训练。 这两种方法在预训练期间共享相同的目标函数,它们使用单向语言模型来学习通用语言表示。

我们认为当前的技术限制了预训练表示的能力,特别是对于微调方法。 主要限制是标准语言模型是单向的,这限制了可以在预训练期间使用的架构的选择。 例如,在 OpenAI GPT 中,作者使用从左到右的架构,其中每个令牌只能关注 Transformer 的自注意力层中的先前令牌(Vaswani 等,2017)。 这种限制对于句子级任务来说是次优的,并且在将基于微调的方法应用于诸如问答之类的令牌级任务时可能非常有害,在这种情况下,从两个方向合并上下文至关重要。

在本文中,我们通过提出 BERT:来自 Transformers 的双向编码器表示来改进基于微调的方法。 BERT 通过使用“掩码语言模型”(MLM)预训练目标来缓解前面提到的单向性约束,其灵感来自 Cloze 任务(Taylor,1953)。 屏蔽语言模型从输入中随机屏蔽一些标记,目标是仅根据其上下文来预测屏蔽词的原始词汇 id。 与从左到右的语言模型预训练不同,MLM 目标使表示能够融合左右上下文,这使我们能够预训练深度双向 Transformer。 除了掩码语言模型,我们还使用“下一句预测”任务,联合预训练文本对表示。 我们论文的贡献如下:

  • 我们证明了双向预训练对语言表示的重要性。 与 Radford 等人不同。 (2018) 使用单向语言模型进行预训练,BERT 使用掩码语言模型来启用预训练的深度双向表示。 这也与 Peters 等人的观点相反。 (2018a),它使用独立训练的从左到右和从右到左 LM 的浅层级联。
  • 我们表明,预训练的表示减少了对许多精心设计的任务特定架构的需求。 BERT 是第一个基于微调的表示模型,它在大量句子级和令牌级任务上实现了最先进的性能,优于许多特定于任务的架构。
  • BERT 提高了十一项 NLP 任务的最新技术水平。 代码和预训练模型可从 https://github.com/google-research/bert 获得。

2 相关工作

预训练通用语言表示的历史悠久,我们在本节中简要回顾了最广泛使用的方法。

2.1 无监督的基于特征的方法

几十年来,学习广泛适用的单词表示一直是一个活跃的研究领域,包括非神经(Brown 等,1992;Ando 和 Zhang,2005;Blitzer 等,2006)和神经(Mikolov 等,2013) ; Pennington et al., 2014) 方法。 预训练的词嵌入是现代 NLP 系统不可或缺的一部分,与从头学习的嵌入相比,具有显着的改进(Turian 等,2010)。 为了预训练词嵌入向量,使用了从左到右的语言建模目标(Mnih 和 Hinton,2009),以及在左右上下文中区分正确和错误单词的目标(Mikolov 等,2013)。

这些方法已被推广到更粗粒度,例如句子嵌入(Kiros 等人,2015 年;Logeswaran 和 Lee,2018 年)或段落嵌入(Le 和 Mikolov,2014 年)。 为了训练句子表示,先前的工作使用目标来对候选下一个句子进行排名(Jernite 等人,2017 年;Logeswaran 和 Lee,2018 年),给定前一个句子的表示,从左到右生成下一个句子单词(Kiros 等人 al., 2015),或去噪自编码器派生的目标 (Hill et al., 2016)。

ELMo 及其前身 (Peters et al., 2017, 2018a) 沿不同的维度概括了传统的词嵌入研究。他们从从左到右和从右到左的语言模型中提取上下文敏感的特征。每个标记的上下文表示是从左到右和从右到左表示的串联。在将上下文词嵌入与现有的特定任务架构相结合时,ELMo 提升了几个主要 NLP 基准(Peters 等人,2018a)的最新技术水平,包括问答(Rajpurkar 等人,2016 年)、情感分析(Socher 等人,2016 年) ., 2013) 和命名实体识别 (Tjong Kim Sang 和 De Meulder, 2003)。梅拉姆德等人。 (2016) 提出通过使用 LSTM 从左右上下文预测单个单词的任务来学习上下文表示。与 ELMo 类似,他们的模型是基于特征的,而不是深度双向的。费杜斯等人。 (2018) 表明完形填空任务可用于提高文本生成模型的鲁棒性。

2.2 无监督微调方法

与基于特征的方法一样,第一个在这个方向上的工作仅从未标记的文本中预训练词嵌入参数(Collobert 和 Weston,2008)。

最近,产生上下文标记表示的句子或文档编码器已经从未标记的文本中进行了预训练,并针对有监督的下游任务进行了微调(Dai 和 Le,2015 年;Howard 和 Ruder,2018 年;Radford 等人,2018 年)。 这些方法的优点是需要从头开始学习的参数很少。 至少部分是由于这一优势,OpenAI GPT(Radford 等人,2018 年)在 GLUE 基准测试(Wang 等人,2018a)的许多句子级任务上取得了先前最先进的结果。 从左到右的语言建模和自动编码器目标已用于预训练此类模型(Howard 和 Ruder,2018 年;Radford 等人,2018 年;Dai 和 Le,2015 年)。

2.3 从监督数据中迁移学习

也有工作显示从具有大型数据集的监督任务进行有效转移,例如自然语言推理(Conneau 等人,2017)和机器翻译(McCann 等人, 2017)。 计算机视觉研究也证明了从大型预训练模型中进行迁移学习的重要性,其中一个有效的方法是微调使用 ImageNet 预训练的模型(Deng 等人,2009 年;Yosinski 等人,2014 年)。

3 Bert

我们将在本节介绍 BERT 及其详细实现。 我们的框架有两个步骤:预训练和微调。 在预训练期间,模型在不同预训练任务上的未标记数据上进行训练。 对于微调,BERT 模型首先使用预训练的参数进行初始化,然后使用来自下游任务的标记数据对所有参数进行微调。 每个下游任务都有单独的微调模型,即使它们使用相同的预训练参数进行初始化。 图 1 中的问答示例将作为本节的运行示例。

BERT 的一个显着特点是其跨不同任务的统一架构。 预训练架构和最终下游架构之间的差异很小。

模型架构 BERT 的模型架构是基于 Vaswani 等人描述的原始实现的多层双向 Transformer 编码器。 (2017) 并在 tensor2tensor 库中发布。1 由于 Transformers 的使用已经变得普遍,而且我们的实现几乎与原始版本相同,我们将省略模型架构的详尽背景描述,并请读者参考 Vaswani 等人。 (2017) 以及优秀的指南,如“The Annotated Transformer”。

在这项工作中,我们将层数(即 Transformer 块)表示为 L,将隐藏大小表示为 H,将自注意力头的数量表示为 A我们主要报告两种模型大小的结果: B E R T B A S E BERT_{BASE} BERTBASE (L= 12,H=768,A=12,总参数=110M)和 B E R T L A R G E BERT_{LARGE} BERTLARGE(L=24,H=1024,A=16,总参数=340M)。

B E R T B A S E BERT_{BASE} BERTBASE 被选为与 OpenAI GPT 具有相同的模型大小以进行比较。 然而,至关重要的是,BERT Transformer 使用双向自注意力,而 GPT Transformer 使用受约束的自注意力,其中每个令牌只能注意其左侧的上下文。

输入/输出表示 为了让 BERT 处理各种下游任务,我们的输入表示能够在一个标记序列中明确表示单个句子和一对句子(例如,h Question,Answer i)。 在整个工作中,“句子”可以是任意范围的连续文本,而不是实际的语言句子。 “序列”是指输入到 BERT 的 token 序列,可以是单个句子,也可以是两个句子打包在一起。

我们使用 WordPiece 嵌入(Wu 等人,2016 年)和 30,000 个标记词汇。 每个序列的第一个标记总是一个特殊的分类标记([CLS])。 与此标记对应的最终隐藏状态用作分类任务的聚合序列表示。 句子对被打包成一个序列。 我们以两种方式区分句子。 首先,我们用一个特殊的标记 ([SEP]) 将它们分开。 其次,我们向每个标记添加一个学习嵌入,指示它属于句子 A 还是句子 B。 如图 1 所示,我们将输入嵌入表示为 E,将特殊 [CLS] 标记的最终隐藏向量表示为 C ∈ R H C \\in \\mathbb{R}^{H} CRH, 以及第 i 个输入标记的最终隐藏向量为 T i ∈ R H T_{i} \\in \\mathbb{R}^{H} TiRH

对于给定的标记,其输入表示是通过对相应的标记、段和位置嵌入求和来构建的。 这种结构的可视化可以在图 2 中看到。

3.1 预训练BERT

与 Peters 等人(2018a)和 Radford 等人不同。 (2018),我们不使用传统的从左到右或从右到左的语言模型来预训练 BERT。 相反,我们使用本节中描述的两个无监督任务来预训练 BERT。 此步骤显示在图 1 的左侧部分

任务 #1:Masked LM 直觉上,有理由相信深度双向模型是 严格来说比从左到右模型或从左到右和从右到左模型的浅层级联更强大。 不幸的是,标准的条件语言模型只能从左到右或从右到左进行训练,因为双向条件会允许每个词间接“看到自己”,并且模型可以在多层中轻松预测目标词 语境。

为了训练深度双向表示,我们简单地随机屏蔽一定比例的输入标记,然后预测那些被屏蔽的标记。 我们将此过程称为“Masked LM”(MLM),尽管它在文献中经常被称为完形填空任务(Taylor,1953)。 在这种情况下,与掩码标记相对应的最终隐藏向量被馈送到词汇表上的输出 softmax,就像在标准 LM 中一样。 在我们所有的实验中,我们随机屏蔽了每个序列中所有 WordPiece 标记的 15%。 与去噪自动编码器(Vincent et al., 2008)相比,我们只预测被屏蔽的词,而不是重建整个输入

虽然这允许我们获得双向预训练模型,但缺点是我们在预训练和微调之间造成了不匹配,因为 [MASK] 令牌在微调期间不会出现。 为了缓解这种情况,我们并不总是用实际的 [MASK] 标记替换“屏蔽”词。 训练数据生成器随机选择 15% 的标记位置进行预测。 如果选择了第 i 个令牌,我们将第 i 个令牌替换为 (1) 80% 的时间 [MASK] 令牌 (2) 10% 的随机令牌 (3) 未更改的第 i 个令牌 10%的时间。 然后,Ti 将用于预测具有交叉熵损失的原始令牌。 我们在附录 C.2 中比较了此程序的变体。

任务 #2:下一句预测 (NSP) 许多重要的下游任务,例如问答 (QA) 和自然语言推理 (NLI),都是基于理解两个句子之间的关系,而这不是语言建模直接捕获的。为了训练一个理解句子关系的模型,我们预训练了一个二值化的下一句预测任务,该任务可以从任何单语语料库中轻松生成。具体来说,当为每个预训练示例选择句子 A 和 B 时,50% 的时间 B 是 A 之后的实际下一个句子(标记为 IsNext),50% 的时间它是来自语料库的随机句子(标记为作为 NotNext)。如图 1 所示,C 用于下一句预测 (NSP)。5 尽管它很简单,但我们在 5.1 节中证明了针对此任务的预训练对 QA 和 NLI 都非常有益。 NSP 任务密切相关到 Jernite 等人使用的表示学习目标。 (2017) 和 Logeswaran 和 Lee (2018)。然而,在之前的工作中,只有句子嵌入被转移到下游任务,其中 BERT 转移所有参数来初始化结束任务模型参数。

预训练数据 预训练过程很大程度上遵循了关于语言模型预训练的现有文献。 对于预训练语料库,我们使用 BooksCorpus(800M 字)(Zhu et al.,2015)和英文维基百科(2500M 字)。 对于维基百科,我们只提取文本段落而忽略列表、表格和标题。 为了提取长的连续序列,使用文档级语料库而不是像 Billion Word Benchmark (Chelba et al., 2013) 这样的打乱句子级语料库是至关重要的。

3.2 微调BERT

微调很简单,因为 Transformer 中的 self-attention 机制允许 BERT 通过交换适当的输入和输出来对许多下游任务进行建模——无论它们涉及单个文本还是文本对。 对于涉及文本对的应用程序,一个常见的模式是在应用双向交叉注意力之前对文本对进行独立编码,例如 Parikh et al.(2016); Seo 等人(2017 年)。 相反,BERT 使用自注意力机制来统一这两个阶段,因为编码具有自注意力的连接文本对有效地包括两个句子之间的双向交叉注意力。

对于每个任务,我们只需将特定于任务的输入和输出插入 BERT 并端到端地微调所有参数。 在输入端,预训练中的句子 A 和句子 B 类似于(1)释义中的句子对,(2)蕴涵中的假设-前提对,(3)问答中的问题-段落对,以及(4)a 退化文本-? 在文本分类或序列标记中配对。 在输出端,token 表示被输入到输出层用于标记级任务,例如序列标记或问答,而 [CLS] 表示被输入到输出层进行分类,例如蕴含或情感分析。

与预训练相比,微调相对便宜。 从完全相同的预训练模型开始,论文中的所有结果最多可以在单个 Cloud TPU 上复制 1 小时,或在 GPU 上复制几个小时。7 我们在相应的任务特定细节中描述 第 4 节的小节。更多详细信息可在附录 A.5 中找到。

4 实验

在本节中,我们展示了 11 个 NLP 任务的 BERT 微调结果

4.1 GLUE

通用语言理解评估 (GLUE) 基准(Wang 等人,2018a)是各种自然语言理解任务的集合。 GLUE 数据集的详细描述包含在附录 B.1 中。

为了微调 GLUE,我们如第 3 节所述表示输入序列(对于单个句子或句子对),并使用与第一个输入标记([CLS])对应的最终隐藏向量 C ∈ R H C \\in \\mathbb{R}^{H} CRH 作为聚合表示 . 微调期间引入的唯一新参数是分类层权重 W ∈ R K × H W \\in \\mathbb{R}^{K×H} WRK×H,其中 K 是标签的数量。 我们用 C 和 W 计算标准分类损失,即 log(softmax( C W T CW^{T} CWT))。

我们使用 32 的批量大小并对所有 GLUE 任务的数据进行 3 个时期的微调。 对于每个任务,我们在开发集上选择了最佳的微调学习率(在 5e-5、4e-5、3e-5 和 2e-5 中)。 此外,对于 B E R T L A R G E BERT_{LARGE} BERTLARGE,我们发现微调有时在小数据集上不稳定,因此我们运行了几次随机重启并在开发集上选择了最佳模型。 对于随机重启,我们使用相同的预训练检查点,但执行不同的微调数据混洗和分类器层初始化。

结果如表 1 所示。 B E R T B A S E BERT_{BASE} BERTBASE B E R T L A R G E BERT_{LARGE} BERTLARGE 在所有任务上的表现都大大优于所有系统,与现有技术相比,平均准确度分别提高了 4.5% 和 7.0%。 请注意,除了注意屏蔽之外, B E R T B A S E BERT_{BASE} BERTBASE 和 OpenAI GPT 在模型架构方面几乎相同。 对于最大和最广泛报道的 GLUE 任务 MNLI,BERT 获得了 4.6% 的绝对准确度提升。在官方 GLUE 排行榜上, B E R T L A R G E BERT_{LARGE} BERTLARGE 获得了 80.5 分,而 OpenAI GPT 在撰写本文时获得了 72.8 分。

我们发现 B E R T L A R G E BERT_{LARGE} BERTLARGE 在所有任务中都明显优于 B E R T B A S E BERT_{BASE} BERTBASE,尤其是那些训练数据很少的任务。 第 5.2 节更深入地探讨了模型大小的影响。

4.2 SQuAD v1.1

斯坦福问答数据集 (SQuAD v1.1) 是 10 万个众包问答对的集合(Rajpurkar 等,2016)。 给定一个问题和包含答案的维基百科段落,任务是预测段落中的答案文本跨度。

如图 1 所示,在问答任务中,我们将输入问题和段落表示为单个打包序列,问题使用 A 嵌入,段落使用 B 嵌入。 我们仅在微调期间引入起始向量 C ∈ R H C \\in \\mathbb{R}^{H} CRH 和结束向量 E ∈ R H E \\in \\mathbb{R}^{H} ERH。 单词 i 作为答案范围开始的概率计算为 Ti 和 S 之间的点积,然后是段落中所有单词的 softmax: P i = e S ⋅ T i ∑ j e S ⋅ T j P_{i}=\\frac{e^{S \\cdot T_{i}}}{\\sum_{j} e^{S \\cdot T_{j}}} Pi=jeSTjeSTi。 类似的公式用于答案跨度的结束。 从位置i到位置j的候选跨度的得分定义为S·Ti + E·Tj,其中j≥i的最大得分跨度被用作预测。 训练目标是正确开始和结束位置的对数似然之和。 我们以 5e-5 的学习率和 32 的批量大小对 3 个 epoch 进行了微调 。

表 2 显示了顶级排行榜条目以及顶级发布系统的结果(Seo 等,2017;Clark 和 Gardner,2018;Peters 等,2018a;Hu 等,2018)。 SQuAD 排行榜的最佳结果没有可用的最新公共系统描述,11 并且允许在训练其系统时使用任何公共数据。 因此,我们首先在 TriviaQA(Joshi 等,2017)上进行微调,然后在 SQuAD 上进行微调,从而在我们的系统中使用适度的数据增强。

我们表现最好的系统以 +1.5 F1 的集成和 +1.3 F1 作为单个系统的表现优于顶级排行榜系统。 事实上,我们的单一 BERT 模型在 F1 分数方面优于顶级集成系统。 在没有 TriviaQA 微调数据的情况下,我们只损失了 0.1-0.4 F1,仍然远远超过所有现有系统。

4.3 SQuAD v2.0

SQuAD 2.0 任务扩展了 SQuAD 1.1 问题定义,允许提供的段落中不存在简答题的可能性,从而使问题更加现实。

我们使用一种简单的方法来扩展 SQuAD v1.1 BERT 模型来完成这项任务。 我们将没有答案的问题视为具有以 [CLS] 标记开始和结束的答案范围。 开始和结束答案跨度位置的概率空间扩展为包括 [CLS] 标记的位置。 对于预测,我们将无答案范围的得分: s n u l l s_{null} snull =S·C + E·C 与最佳非空范围 s i , j = max ⁡ j ≥ i S ⋅ T i + E ⋅ T j s_{i, j}=\\max _{j \\geq i} S \\cdot T_{i}+E \\cdot T_{j} si,j=maxjiSTi+ETj 的得分进行比较。 我们预测一个非空 当 s i , j > s n u l l + τ s_{i, j}>s_{\\mathrm{null}}+\\tau si,j>snull+τ 时回答,其中在开发集上选择阈值 τ 以最大化 F1。 我们没有为此模型使用 TriviaQA 数据。 我们以 5e-5 的学习率和 48 的批量大小对 2 个 epoch 进行了微调。

与之前的排行榜条目和最热门的发表作品(Sun 等人,2018 年;Wang 等人,2018b)相比的结果如表 3 所示,不包括使用 BERT 作为其组件之一的系统。 我们观察到比之前最好的系统有 +5.1 F1 的改进。

4.4 SWAG

The Situations With Adversarial Generations (SWAG) 数据集包含 113k 句对完成示例,用于评估扎根常识推理(Zellers 等人,2018 年)。 给定一个句子,任务是在四

以上是关于第18篇Bert论文翻译的主要内容,如果未能解决你的问题,请参考以下文章

Sentence-BERT论文阅读笔记

Sentence-BERT论文阅读笔记

Sentence-BERT论文阅读笔记

BERT - 论文解读

从机器学习,深度学习和人工智能领域解密三篇研究论文,这对上个月产生了影响。

BERT论文翻译