XYZNOT

论文 · arXiv 1810.04805

BERT: 用于语言理解的深度双向 Transformer 预训练

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

发表于 cs.CL arXivPDF

用 XYZNOT 阅读(全文翻译与 AI 讲解)

三句话总结

  1. 🎯 标准语言模型预训练受限于单向(自左向右)上下文,这对句子级任务而言并非最优,且对问答等词元级任务具有不利影响。
  2. 🔧 提出了 BERT,利用掩码语言模型(完形填空)目标和下一句预测(Next Sentence Prediction)预训练多层双向 Transformer 编码器。
  3. 📈 在 11 项 NLP 任务上取得了最先进的结果,包括 80.5 的 GLUE 分数(绝对提升 +7.7 分)和 MultiNLI 上 86.7% 的准确率(绝对提升 +4.6%)。

摘要

我们提出了一种新的语言表示模型 BERT,即基于 Transformers 的双向编码器表示(Bidirectional Encoder Representations from Transformers)。与近期的语言表示模型不同,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 分)。

英文原文摘要

We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications. BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).

论文解读

问题与动机

先前的语言表示模型主要依赖基于特征的方法(例如 ELMo)或微调方法(例如 OpenAI GPT)。尽管这些范式卓有成效,但它们都受到单向语言建模目标的限制:标准的自回归模型严格自左向右(或自右向左)处理文本。在单向模型中,词元在自注意力层中只能关注先前的词元,以防止词在多层上下文中微不足道地“看到自身”。ELMo 尝试通过浅层拼接分别训练的自左向右和自右向左的 LSTM 来实现双向性,但这无法在每一层捕捉对双向上下文的深度联合制约。这种单向性限制了句子级表示,尤其对词元级别的下游任务(如问答任务)危害极大,因为在这些任务中,同时理解左右双向上下文是至关重要的。

核心思想

  • 深度双向 Transformer 架构:BERT 采用多层双向 Transformer 编码器,允许自注意力层在所有层中联合利用左右上下文。
  • 掩码语言模型(MLM):受完形填空任务的启发,BERT 随机掩盖输入词元的 15%,并训练模型利用上下文预测这些被掩盖的词元,从而解决了“看到自身”的平凡解问题。
  • 缓解预训练/微调不匹配问题:由于 [MASK] 词元不会出现在微调阶段,被选中的 15% 词元中有 80% 会被替换为 [MASK],10% 替换为随机词元,10% 保持不变。
  • 下一句预测(NSP):为了捕捉对自然语言推理(NLI)和问答(QA)至关重要的句子对关系,BERT 在一个二值化任务上进行预训练,该任务预测句子 是自然跟随句子 ()还是来自语料库的随机句子()。
  • 下游任务的统一架构:下游任务直接复用完全相同的预训练架构,只需添加极少的参数(例如简单的线性分类头或起始/结束跨度指针)。

方法

模型配置

BERT 主要在两种规模上进行评估:

  • : 层, 隐藏单元大小, 注意力头,总参数量 = 。
  • : 层, 隐藏单元大小, 注意力头,总参数量 = 。 前馈网络滤波器大小为 。

输入和输出表示

输入可以表示单个文本序列,也可以表示打包在一起的句子对。嵌入通过以下三者相加构建:

  1. WordPiece 词元嵌入(30,000 个词元的词表)。
  2. 分段嵌入(Segment Embedding,用于区分词元是来自句子 还是句子 的可学习嵌入)。
  3. 可学习的位置嵌入。

每个序列均以 [CLS] 开头。其最终隐藏向量 代表序列的聚合特征。句子对通过 [SEP] 分隔。最终词元隐藏表示记为 。

预训练目标

  1. Masked LM:给定被掩盖的词元 ,将表示 输入到词表上的 softmax 层并计算交叉熵损失:
  2. 下一句预测:聚合向量 被送入二分类器: 总体预训练损失为平均掩码语言模型似然度与平均下一句预测似然度之和。

微调适配

  • 分类任务(GLUE):添加投影矩阵 ,损失计算为 。
  • 跨度抽取(SQuAD v1.1):学习起始向量 和结束向量 。词元 作为答案跨度起始位置的概率为: 跨度 的得分为 ,在 的约束下最大化。
  • 无答案问题(SQuAD v2.0):通过允许 [CLS] 词元作为空答案跨度进行扩展,评分公式为 ,仅当 时才预测非空答案。

实验结果

BERT 在 11 项 NLP 任务上进行了评估:

  • GLUE 榜单: 取得了 80.5% 的平均 GLUE 得分(相比此前最先进技术绝对提升 7.7%),在 MNLI 上的准确率达到了 86.7%(绝对提升 4.6%)。
  • SQuAD v1.1:单个 模型在验证集上取得了 84.1 EM 和 90.9 F1;包含 TriviaQA 预训练的模型集成在测试集上达到了 87.4 EM 和 93.2 F1,超越了人类水平(82.3 EM / 91.2 F1)。
  • SQuAD v2.0: 在测试集上达到了 80.0 EM 和 83.1 F1,相比之前的最佳系统提升了 +5.1 F1。
  • SWAG: 在测试集上取得了 86.3% 的准确率,超越了 OpenAI GPT(78.0%)和人类专家基准(85.0%)。
  • 消融实验发现:移除 NSP 会导致 MNLI(-0.5%)、QNLI(-3.5%)和 SQuAD F1(-0.6%)的性能下降。将 MLM 替换为标准的自左向右(LTR)LM 会导致 SQuAD(-10.7 F1)和 MRPC(-9.2% 准确率)的性能大幅下滑。

局限性与开放问题

  • 预训练与微调的不一致:人为加入的 [MASK] 词元永远不会出现在微调阶段,需要采用启发式的替换规则(80/10/10)来缓解不匹配问题。
  • 预训练效率:由于 BERT 每个批次仅预测 15% 的词元,而不是像标准自回归模型那样预测 100% 的词元,因此需要更多的预训练步数(1,000,000 步,每批 128,000 个词元)才能收敛。
  • 二次方注意力的瓶颈:标准 Transformer 的自注意力计算复杂度随序列长度呈二次方()增长,处理长序列计算成本高昂,因此需要采用两阶段预训练策略(90% 的步数使用序列长度 128,10% 的步数使用 512)。
  • 不适用于文本生成:作为双向编码器,BERT 的结构直接面向表征和判别式下游任务,在不修改架构的情况下无法直接执行自回归的自左向右生成。

关键术语

Masked Language Model (MLM)
一种受完形填空任务启发的预训练目标,其中随机将输入词元替换为掩码,模型通过训练从深度双向上下文中重构原始词元。
Next Sentence Prediction (NSP)
一种二值化预训练任务,模型需要预测给定的第二句片段在逻辑上是紧跟第一句片段,还是从语料库中随机抽取的。
[CLS]
置于每个序列开头的特殊分类词元,其最终隐藏状态在分类任务中用作聚合序列表示。
[SEP]
一种特殊词元,用于在单个打包输入序列中分隔不连续或不同的句子片段。
WordPiece
BERT 使用的一种子词分词算法,拥有 30,000 个词元的词表,用于处理未登录词并将词拆分为子词单元。
Segment Embeddings
添加到输入词元嵌入中的可学习嵌入,用于在打包句子对中区分词元属于句子片段 A 还是句子片段 B。
Fine-tuning
下游训练策略,使用标注数据端到端更新所有预训练 BERT 参数以及极少量的任务特定输出层。
Feature-based approach
一种替代策略,在不更新 BERT 参数的情况下从其各层提取固定的上下文表示,然后将其送入单独的任务特定架构中。

常见问题

为什么 BERT 会用随机词元替换被掩盖的词元或保持其不变,而不是总是使用 [MASK]?

因为 [MASK] 词元永远不会出现在微调阶段,如果将每个目标词元都替换为 [MASK],会导致预训练和微调之间出现不匹配。BERT 通过将选定词元以 80% 的概率替换为 [MASK]、10% 替换为随机词元、10% 保持原始词元不变来缓解此问题,从而迫使模型保持对所有词元的分布式表示。

BERT 和 OpenAI GPT 有什么区别?

尽管两者都是基于 Transformer 的微调模型,但 OpenAI GPT 采用自左向右的 Transformer 解码器,注意力受到限制,使每个词元只能关注前面的词元。BERT 则采用双向 Transformer 编码器,得益于掩码语言模型预训练目标,其注意力可以在所有层中同时关注左右双向上下文。

BERT 可以作为特征提取器使用,而不是进行端到端微调吗?

可以。在 CoNLL-2003 命名实体识别任务中,从 BERT 顶部的四个隐藏层中提取并拼接词元激活值,然后将它们送入 2 层 BiLSTM,取得了 96.1 的验证集 F1,仅比对整个模型进行完全微调(96.4 F1)低 0.3 F1。

为什么 BERT 采用两阶段序列长度预训练计划?

自注意力的计算复杂度随序列长度呈二次方增长。为了减少计算时间,BERT 在前 900,000 步(占训练的 90%)使用 128 的序列长度进行预训练,然后在剩余的 100,000 步中使用 512 的序列长度进行训练以学习位置嵌入。

本页解读由 AI 根据论文生成,可能有错误;细节请以原文为准。

用 XYZNOT 阅读(全文翻译与 AI 讲解)