背景介绍
论文简介
- 论文标题: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- 论文作者: Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova, Google AI Language
- 发表时间: 2018.11.11
- 发表平台: NAACL
- 阅读时间: 2024.09.06
论文摘要
文章介绍了一种新型的语言表示模型 BERT(Bidirectional Encoder Representations from Transformers,基于 Transformer 的双向编码器表示)。BERT 旨在通过在所有层中同时考虑左右两侧的上下文信息,对未标记的文本进行深度双向预训练表示。因此,预训练的 BERT 模型可以通过一个额外的输出层对特定的任务进行微调,无需对架构进行大量修改就能提高模型性能。结果显示,BERT 在 11 个 NLP 任务上都获得了最先进的结果。
论文引言
文章描述了预训练模型应用于下游任务有两种主要方法,分别是基于特征的方法(如 ELMo)和微调的方法(如 OpenAI GPT Model),并明确目前已有的方法都是使用单向语言模型来学习语言的表示。文章认为单向的语言学习限制了预训练模型的应用能力,特别是基于微调的方法,而 BERT 模型则是基于微调的方法进行改进的。
OpenAI GPT 使用的是从左到右(left to right,LTR)架构的 Transformer;ELMo 使用的是独立训练 LSTM,并从左到右和从右到左进行连接,来生成下游任务的特征;而 BERT 是使用深度双向的 Transformer。这种双向性使得模型能够利用更丰富的上下文信息,从而获得更准确的语义表示。
论文方法
模型架构
BERT 中有两个主要步骤:预训练和微调。在预训练过程中,模型在不同的预训练任务上对未标记数据进行训练。对于微调,首先使用预训练的参数初始化 BERT 模型,然后使用来自下游任务的标记数据对所有参数进行微调。另外,BERT 采用的是多层双向 Transformer Encoder。
Transformer Encoder 由多个相同的层组成,每一层包含两个子层:多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Network)。残差连接和层归一化(Layer Normalization)被用于每个子层的周围,以缓解梯度消失问题并加速收敛。
BERT 的核心在于其双向性。传统的 RNN 或单向 Transformer 只能看到当前时刻之前的信息,而 BERT 的 Encoder 结构允许每个位置同时关注序列中的所有其他位置,无论是左边还是右边。这使得模型能够更好地捕捉长距离依赖关系和复杂的语境信息。
预训练任务
BERT 使用两种无监督任务进行预训练,这两种任务不需要人工标注数据,可以利用海量的互联网文本:
-
掩码语言模型(MLM):随机掩盖输入中的一些 token,然后根据上下文预测被掩盖的单词。具体来说,每个序列中随机掩盖 15% 的 WordPiece token,掩盖方式包括 80% 的时间替换为 [MASK] token,10% 的时间替换为随机 token,10% 的时间保持不变。这种设计是为了让模型学会根据上下文预测缺失的词,而不是简单地记忆词表。保留 10% 不变是为了模拟真实场景中未被掩盖的情况,防止模型过度依赖 [MASK] 标记。
-
下一个句子预测(NSP):从语料库中随机选择两个句子,50% 的时间第二个句子是实际接下来的句子,50% 的时间是随机选择的句子。该任务用于训练模型理解句子关系,例如判断两个句子是否连贯。这对于问答、自然语言推理等需要理解句子间关系的任务至关重要。
输入输出表示
输入表示通过将对应的 token Embeddings、分段 Embeddings 和位置 Embeddings 相加得到。Token Embeddings 将词汇表中的词映射为向量;Segment Embeddings 用于区分句子 A 和句子 B;Position Embeddings 则编码了 token 在序列中的位置信息,因为 Transformer 本身不具备顺序感知能力。
对于分类任务,使用特殊标记 [CLS] 的最终隐藏状态作为聚合序列表示。[CLS] 标记位于序列开头,经过多层 Transformer 处理后,其输出包含了整个序列的语义信息。句子对打包成一个序列,使用特殊标记 [SEP] 分隔句子,并为每个 token 添加一个学习嵌入以指示其属于哪个句子。
实验设置
文章中使用了两种不同尺度的 BERT,并在 11 个 NLP 任务进行了微调实验,分别为 BERTBASE (L=12, H=768, A=12, Total Parameters=110M) 和 BERTLARGE (L=24, H=1024, A=16, Total Parameters=340M)。其中 L、H 和 A 分别为 Transformer Encoder 的层数、隐藏层大小和 self-attention 头的数量。两者参数量分别为 110M 和 340M。


