Source-linked AI summary
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova
TL;DR
现有单向语言模型限制了句子级和词元级 NLP 任务中的上下文表示。BERT 采用结合双向上下文的 masked-language-model 预训练,在十一项 NLP 任务上取得 state-of-the-art 性能,其中 GLUE 得分为 80.5,而 OpenAI GPT 为 72.8。
问题
单向语言模型无法同时利用左侧和右侧上下文,从而限制了预训练表示,尤其影响句子级和词元级任务。
方法
BERT 使用 masked language modeling 和 next-sentence prediction 预训练深层双向表示,然后针对下游任务进行 fine-tuning。
结果
GLUE 得分为 80.5,而 OpenAI GPT 为 72.8;BERT 在评估的全部十一项 NLP 任务上均取得 state-of-the-art 性能。
要点与局限
深层双向预训练将 transfer learning 推广到广泛的 NLP 任务,同时减少了对高度定制任务特定架构的需求。
要点与局限
Masked-language-model 预训练会造成与 fine-tuning 的不匹配,因为 [MASK] token 不会在 fine-tuning 期间出现。
Abstract
from arXiv · showhide
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).
1 引言
BERT 通过掩码语言建模解决标准语言模型预训练的单向性问题,从而获得深度双向表示。它减少了对任务特定架构的依赖,并在十一项 NLP 任务上推进了最先进水平。
- 问题与贡献: 不同于 OpenAI GPT 的从左到右模型和 ELMo 对独立方向模型的浅层拼接,BERT 解决了以往语言模型预训练的单向性限制。
- 贡献: BERT 使用掩码语言建模融合左、右上下文,从而能够预训练深度双向 Transformer 表示。该目标随机遮盖输入 token,并根据上下文预测其原始词汇身份。
- 方法: 除掩码语言建模外,BERT 还通过下一句预测任务联合预训练文本对表示。
- 贡献: BERT 通过基于微调的表示模型,减少了对高度工程化任务特定架构的需求。论文称,BERT 在大规模句子级和 token 级任务上取得了最先进性能,同时超过了许多任务特定架构。
- 结果: BERT 推进了十一项 NLP 任务的最先进水平。
2 相关工作
既有研究从预训练词嵌入发展到句子和段落级表示、上下文词元特征,以及针对下游任务进行微调的预训练编码器。这些方法在采用多样的语言建模、去噪和自动编码目标的同时,证明了从无标注数据和有监督数据中进行迁移的价值。
- 词与句子表示: 通过非神经和神经方法训练的预训练词嵌入,逐渐成为 NLP 系统不可或缺的组成部分,其性能优于从头学习的嵌入。代表性方法包括从左到右的语言建模目标,以及更早期仅从无标注文本预训练词嵌入参数的方法。
- 词与句子表示: 句子和段落表示通过下一句排序、从左到右生成以及去噪自动编码器目标,将预训练从词扩展到更高层次。这些方法面向越来越粗粒度的表示,同时保留了从无标注文本进行迁移的能力。
- 上下文表示: ELMo 及其前身通过拼接从左到右和从右到左的语言模型表示,生成上下文词元特征,并提升了多个主要 NLP 基准的表现。其上下文嵌入被整合到已有的特定任务架构中。
- 预训练编码器: 之后,预训练句子或文档编码器生成上下文词元表示,并在有监督下游任务上进行微调,从而减少了需要从头学习的参数。这些模型采用语言建模或自动编码器目标;OpenAI GPT 在许多 GLUE 句子级任务上取得了 state-of-the-art 结果。
- 迁移学习: 从有监督的自然语言推理和机器翻译数据集进行迁移同样证明有效,而计算机视觉则展示了微调 ImageNet 预训练模型的价值。这些结果进一步拓展了跨任务迁移大型预训练模型知识的证据。
3 BERT
BERT 是一种双向 Transformer 编码器,使用 masked language modeling 和 next sentence prediction 进行预训练,然后针对下游任务进行端到端微调。其统一架构将单句和句对表示为一个序列,仅需极少的任务特定改动。
- 微调: 微调时,使用 BERT 的预训练参数初始化独立的下游模型,并在替换任务特定输入和输出层的同时,端到端更新全部参数。Token 表示支持 token-level 任务,而 [CLS] 表示支持分类任务。
- 模型架构: BERT 使用多层双向 Transformer 编码器,不同于 GPT 受限的 self-attention,并报告 BERTBASE 含 110M 个参数、BERTLARGE 含 340M 个参数。BERTBASE 的 L=12、H=768、A=12;BERTLARGE 的 L=24、H=1024、A=16。
- 输入/输出表示: BERT 使用 WordPiece tokens、[CLS] 和 [SEP] 标记、segment embeddings、position embeddings 以及求和后的 token 表示,将一个或两个句子打包为单个序列。[CLS] 状态作为分类任务的聚合表示。
- 预训练任务: Masked language modeling 随机遮盖 15% 的 WordPiece tokens,并根据双向上下文预测这些 tokens;同时采用不同的替换方式,以减小预训练与微调之间的不匹配。该遮盖过程解决了微调期间不存在 [MASK] tokens 的问题。
- 预训练任务: Next sentence prediction 对 BERT 进行预训练,使其建模句对之间的关系,目标是学习问答和自然语言推理等任务所需的关系。该任务是从单语语料库生成的二元分类目标。
- 预训练数据: 预训练使用包含 800M words 的 BooksCorpus 和包含 2,500M words 的 English Wikipedia;保留 Wikipedia 中的文档级文本,同时排除列表、表格和标题。文档级语料库支持抽取较长的连贯序列。
4 实验
BERT 微调在 GLUE、SQuAD 1.1、SQuAD 2.0 和 SWAG 上均取得显著提升。实验采用轻量级任务专用输出层,在不大幅修改架构的情况下保持强劲性能。
- GLUE: BERTBASE 和 BERTLARGE 在所有 GLUE 任务上均超过其他系统,其平均准确率分别比此前的 state of the art 提高 4.5% 和 7.0%。在 MNLI 上,BERT 的绝对准确率提高了 4.6%。
- SQuAD 1.1: 与 SQuAD 1.1 排行榜最高系统相比,采用 ensemble 可提升 +1.5 F1,单一系统可提升 +1.3 F1;单个 BERT 模型的表现超过了该系统的最高 ensemble。不使用 TriviaQA 微调数据时,性能仅下降 0.1–0.4 F1,仍然领先于现有系统。
- SWAG: 在 SWAG 上,BERTLARGE 比 ESIM+ELMo 基线高 +27.1%,比 OpenAI GPT 高 8.3%。SWAG 微调使用应用于 [CLS] 表示的任务专用向量,为四个句对续写选项分别评分。
5 消融实验
消融实验表明,BERT 的深度双向预训练、更大的模型容量和微调策略都能显著提升下游性能。双向模型优于从左到右的替代方案;扩展模型规模即使在小型任务上也有帮助;基于特征的使用方式仍能与微调竞争。
- 预训练任务消融: 移除 NSP 会显著损害 QNLI、MNLI 和 SQuAD 1.1 的性能,而从左到右的预训练在所有评估任务上都不如掩码语言建模。从左到右的模型在 MRPC 和 SQuAD 上的性能下降尤其明显。
- 预训练任务消融: 加入 BiLSTM 能提升从左到右模型在 SQuAD 上的表现,但仍远逊于双向预训练,并会损害 GLUE 性能。从左到右的模型在词元级隐藏状态中缺少右侧上下文信息,因此需要加入 BiLSTM。
- 模型规模消融: 更大的 BERT 模型在选定的四个 GLUE 数据集上都带来严格的准确率提升,其中包括 MRPC,尽管其带标注的训练样本仅有 3,600 个。结果采用五次随机微调重启得到的开发集平均准确率;作者认为,在得到充分预训练的情况下,将模型扩展到极大的规模也能改善非常小的任务。
- 基于特征的方法: BERTLARGE 在 CoNLL-2003 NER 上表现出较强竞争力;拼接顶层四层特征时,仅比完整模型微调低 0.3 F1。这表明该方法在微调和基于特征的设置下都很有效。
6 结论
论文指出,丰富的无监督预训练是语言理解系统不可或缺的组成部分,并将其益处从深层单向架构扩展到深层双向架构,覆盖广泛的 NLP 任务。
- 6 结论: 丰富的无监督预训练已成为许多语言理解系统不可或缺的组成部分。
- 6 结论: 深层单向架构即使在低资源语言理解任务中也能带来迁移学习的益处。
- 6 结论: BERT 将这些发现推广到深层双向架构,使一个预训练模型能够处理广泛的 NLP 任务。
“BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”附录 · A BERT的更多细节
附录分为三节,涵盖BERT实现的更多细节、实验细节和消融研究。消融研究包括训练步数的影响以及不同的掩码过程。
- “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”附录: 附录分为三节。
- A BERT的更多细节: 附录A介绍BERT的更多实现细节。
- “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”附录: 附录B提供实验的更多细节。
- “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”附录: 附录C介绍BERT的更多消融研究。
- “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”附录: 这些额外的消融研究考察训练步数的影响。
- “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”附录: 这些额外的消融研究还比较了不同的掩码过程。
A.1 预训练任务示意
本节示意了 BERT 的 masked language modeling 过程和 next sentence prediction 任务。Masked LM 隐藏或修改选定 token,以促使模型学习上下文表示;其收敛速度略慢于从左到右训练,但所得改进足以抵消额外成本。
- Masked LM 与 masking 过程: 这一 masking 过程迫使 Transformer encoder 为每个输入 token 保持分布式上下文表示,因为模型无法识别哪些位置用于预测、哪些位置被随机替换。随机替换的 token 仅占全部 token 的 1.5%;论文称,这似乎不会损害语言理解能力。
- Masked LM 与 masking 过程: Masked LM 每个 batch 仅预测 15% 的 token,因此可能需要更多预训练步骤,且收敛速度略慢于从左到右模型;但其经验性改进足以抵消增加的训练成本。比较对象是一个预测每个 token 的从左到右模型。
- Next Sentence Prediction: Next sentence prediction 通过包含 [MASK] token 和 [SEP] 句子边界的示例进行说明。所给段落介绍了示例,但未说明该任务的采样过程或目标函数。
A.2 预训练过程 … B 详细实验设置
BERT 预训练通过对成对文本片段进行采样,执行 masked language modeling 和 next sentence prediction,并采用分阶段的序列长度调度与大规模优化。Fine-tuning 通过增加一个输出层,将 BERT 适配到序列级和 token 级任务;与 ELMo 和 GPT 的比较则突出双向性、预训练任务和任务特定适配。
- A.2 预训练过程: BERT 对成对文本片段进行采样,并加入 sentence-A/B embeddings;其中,第二个片段有 50% 的概率是真实后继句,有 50% 的概率是随机句,用于 next sentence prediction。采样成对片段时,二者的总长度不超过模型的序列长度上限。
- A.2 预训练过程: 预训练进行 1,000,000 steps,每个 batch 包含 256 个序列,即每个 batch 共 128,000 tokens;训练数据为一个约含 3.3-billion-word 的语料库,训练约 40 epochs。优化采用 Adam,learning rate 为 1e-4,前 10,000 steps 进行 warmup,随后线性衰减;dropout 为 0.1,激活函数为 GELU,损失结合 masked-LM 和 next-sentence likelihoods。
- B 详细实验设置: 90% 的预训练 steps 使用长度为 128 的序列,其余 10% 使用长度为 512 的序列,从而降低二次 attention 成本,同时学习长序列的位置 embeddings。更长的序列成本显著更高,因为 attention 随序列长度呈二次增长。
- A.3 Fine-tuning 过程: Fine-tuning 通常保留预训练的 hyperparameters,仅调整 batch size、learning rate 和 epochs,并将 dropout 固定为 0.1。在各项任务中,实用范围为 batch size 16 或 32、Adam learning rate 5e-5、3e-5 或 2e-5,以及 2、3 或 4 epochs。
- A.3 Fine-tuning 过程: 在拥有 100k+ labeled examples 的大型数据集上,Fine-tuning 对 hyperparameters 不太敏感,因此可以进行穷举式开发集搜索,因为 Fine-tuning 通常很快。推荐的搜索范围涵盖所列的 batch sizes、learning rates 和 epoch counts。
- A.4 BERT、ELMo 和 OpenAI GPT 的比较: 与 ELMo 的 feature-based approach 和 GPT 的 fine-tuning approach 相比,BERT 同样采用 fine-tuning 方法,但其预训练融入了句子结构和 task-specific learning rates。BERT 使用 BooksCorpus 和 Wikipedia,并在预训练期间学习 [SEP]、[CLS] 以及 sentence A/B embeddings;fine-tuning 的 learning rate 则根据开发集进行选择。
- A.4 BERT、ELMo 和 OpenAI GPT 的比较: BERT 使用 bidirectional representations 和两个 pre-training tasks;论文指出,这些是其相较于 GPT 从左到右语言建模取得改进的主要来源。通过消融实验分别考察双向性和两个预训练任务的作用。
- A.5 不同任务上的 Fine-tuning 示例: Task-specific models 为 BERT 增加 one output layer,支持 sequence-level 和 token-level 任务,同时只需从头学习极少量参数。在所示的 sequence-level 设置中,[CLS] 表示提供分类输出。
B.1 GLUE Benchmark 实验的详细描述 · C 其他消融实验
GLUE 实验涵盖蕴含、等价性、情感、可接受性、相似度和释义等多种任务,但排除了 WNLI,且仅报告单任务微调结果。所提供的段落未描述合并后的消融实验部分。
- B.1 GLUE Benchmark 实验的详细描述。: 报告的 GLUE 结果来自 GLUE 排行榜和 OpenAI 的无监督语言学习博客来源。该段在列出根据 Wang et al. (2018a) 总结的数据集描述之前,先介绍了这些来源。
- B.1 GLUE Benchmark 实验的详细描述。: 该基准包含 MNLI,这是一个三分类蕴含任务,需要根据句子对预测蕴含、矛盾或中立。MNLI 被描述为大规模众包数据集。
- B.1 GLUE Benchmark 实验的详细描述。: QQP 和 MRPC 评估句子对在语义上是否等价,其中 QQP 使用 Quora 问题,MRPC 使用在线新闻句子。QQP 是二分类任务,而 MRPC 使用人工等价性标注。
- B.1 GLUE Benchmark 实验的详细描述。: QNLI 将 SQuAD 转化为二分类任务,用于判断问题–句子对是否包含正确答案。负例来自同一段落,但不包含答案。
- B.1 GLUE Benchmark 实验的详细描述。: SST-2、CoLA 和 STS-B 分别衡量电影评论情感、英语句子的可接受性,以及以 1 到 5 分计的语义相似度。这些任务使用来自评论、语言学例句、新闻标题和其他来源的单句或句子对。
- B.1 GLUE Benchmark 实验的详细描述。: RTE 是与 MNLI 类似的二分类蕴含任务,但其训练数据显著更少。该段将 RTE 确定为 Recognizing Textual Entailment。
- B.1 GLUE Benchmark 实验的详细描述。: 由于 WNLI 的构造存在已知问题,且提交系统的表现低于 65.1 的多数类基线,因此将其排除;该提交始终预测多数类。这一排除旨在确保与 OpenAI GPT 进行公平比较。
- B.1 GLUE Benchmark 实验的详细描述。: 虽然多任务微调可能提升性能(包括观察到的 MNLI 训练对 RTE 带来的显著增益),但这里只报告单任务微调结果。该段指出,多任务改进有望进一步提升性能。
C.1 训练步数的影响
延长预训练能显著提升 BERT 的性能:与 500k 步相比,BERTBASE 在 1M 步时的 MNLI accuracy 几乎提升 1.0%。尽管 MLM 的收敛速度略慢于 LTR,但其绝对 accuracy 几乎立即超过 LTR。
- C.1 训练步数的影响: 与 500k 步预训练相比,BERTBASE 在 1M 步时的 MNLI accuracy 几乎提升 1.0%。Figure 5 报告了预训练 k 步后各 checkpoint 经 fine-tuning 得到的 MNLI Dev accuracy。
- C.1 训练步数的影响: MLM 的收敛速度略慢于 LTR,但其绝对 accuracy 几乎立即开始优于 LTR。这一比较反映出,MLM 在每个 batch 中仅预测 15% 的词,而 LTR 预测每个词。
C.2 不同掩码过程的消融实验
该消融实验评估旨在减少预训练与微调不匹配的掩码策略,报告微调和基于特征方法在 MNLI 与 NER Dev 上的结果。微调对不同策略均较为稳健,但基于特征的 NER 仅使用 MASK 时表现较差,而仅使用 RND 也不如 BERT 的混合策略。
- C.2 不同掩码过程的消融实验: 掩码消融实验将混合 MLM 策略与其他过程进行比较,以减少不匹配,因为 [MASK] 在微调期间从未出现。NER 同时包含微调和基于特征的评估;对于无法在微调期间调整的基于特征表示,预计这种不匹配会被进一步放大。
- C.2 不同掩码过程的消融实验: 微调对不同掩码策略均较为稳健,而基于特征的 NER 在仅使用 MASK 时表现较差,仅使用 RND 的表现也不如 BERT 的混合策略。该比较使用 Table 8 中 MNLI 和 NER 的 Dev 结果;基于特征的 NER 表示拼接了 BERT 最后四层。
- C.2 不同掩码过程的消融实验: 在 MLM 预训练期间,MASK 将目标替换为 [MASK],SAME 保持目标不变,而 RND 将其替换为另一个随机 token。BERT 的混合策略使用 80% MASK、10% SAME 和 10% RND 的概率。