mobile wallpaper 1
1844 字
5 分钟
BERT
2026-05-19

BERT 论文链接

Keywords: 深层双向表示、MLM、非监督预训练+微调、迁移学习、Encoder-Only

1. Background#

在 BERT 出现之前,将预训练的语言表示应用于下游任务主要有两种策略:

  • 基于特征 (Feature-based):如 ELMo。它使用特定于任务的架构,将预训练的表示作为附加特征输入。
  • 微调 (Fine-tuning):如 OpenAI GPT。它采用统一架构,仅需在预训练模型基础上增加一个极简单的任务特定输出层,无需对架构进行实质性的修改。

当时的预训练模型多为单向。例如 GPT 采用从左到右的架构,每个词只能看到其左侧的上下文,然而语言理解需要双向上下文。这种限制对于句子级任务是次优的,而对于像问答 (Q&A) 这类需要结合双向上下文的词级任务更是极其不利的。

2. Methods#

BERT (Bidirectional Encoder Representations from Transformers) 通过联合调节所有层中的左右上下文,从未标记文本中预训练深层双向表示。

  • 深层双向性:不同于 ELMo 简单拼接独立训练的从左到右和从右到左模型,BERT 使用掩码语言模型 (MLM) 实现了真正的深层双向表示,左右信息在深层不断融合。
  • 统一架构:BERT 在不同下游任务中采用统一架构。预训练架构与最终下游任务架构之间的差异极小。
  • 非监督预训练:可以利用海量的无标签数据,增大训练数据的规模,使得模型能力得到提高。

3. Model Design#

3.1 Architecture#

核心是一个多层双向 Transformer 编码器,直接基于原始 Transformer 编码器,没有改动。 BERT 提供了两种主要模型规模:

  • BERT_BASEL=12,H=768,A=12L=12, H=768, A=12,总参数量 1.1 亿,其规模与 OpenAI GPT 相当,以证明双向性带来的增益。
  • BERT_LARGEL=24,H=1024,A=16L=24, H=1024, A=16,总参数量 3.4 亿。

LL 为 Transformer 块层数,HH 为隐藏层维度,AA 为自注意力头数。

3.2 Input/Output Representations#

为了让 BERT 能够处理多种下游任务,其输入表示可以灵活地表示单个句子或一对句子。

  • Tokenization:使用 WordPiece embeddings,词表规模为 30,000 个词元。
  • Special token
    • [CLS]:每个序列的首个词元,其最终隐藏状态被视作整个序列的聚合表示,用于分类任务。
    • [SEP]:用于分隔句子对。
  • Embedding:输入的最终表示是由 Token&Segment&Position Embedding 三者求和而成。 Image1

3.3 Pre-training Tasks#

BERT 通过两个无监督任务共同训练,学习单词和句子层面的语言特征。

  • Task #1: Masked LM: 随机掩盖输入序列中 15% 的词元,并预测其原始 ID,MLM 允许词元融合左右上下文信息。
    • 80-10-10 策略:为缓解预训练 (存在 [MASK]) 与微调 (不存在 [MASK]) 之间的数据分布不匹配,在选中的词元中:80% 替换为 [MASK],10% 替换为随机词,10% 保持不变,使得其需要在没有 [MASK] 的情况下完成正确的特征编码,并提升模型泛化能力。
  • Task #2: Next Sentence Prediction: 通过二分类任务学习句子间的关系。50% 的样本是真实的下一句,50% 是随机抽取的句子。

3.4 Fine-tuning#

预训练和微调阶段使用几乎相同的模型架构,在微调开始时,BERT 模型的参数直接由预训练好的权重初始化。
对于分类任务,取 [CLS] 的输出;对于词元级任务 (如 NER),则取对应的词元表示。
微调的成本很低,且只需增加一个极简单的输出层即可达到 SOTA 效果。

4. Training#

  • Database:使用了 BooksCorpus (8 亿词) 和 English Wikipedia (25 亿词)。强调必须使用文档级的语料库而非打乱的句子级语料,以获取长连续序列。
  • Optimizer:使用带 Warmup 的 Adam 优化器。
  • Dropout:在所有层上应用率为 0.1 的 Dropout。
  • Activation Function:采用 GELU 激活函数而非传统的 ReLU。

5. Result#

BERT 在 11 项 NLP 任务上刷新了记录,证明了简单的微调就能在极广的任务中取得卓越表现:

  • GLUE:推高至 80.5%,相对于之前的 SOTA 有显著提升。
  • SQuAD v1.1/v2.0:表现优于人类水平及所有现有模型。

论文证明,只要经过充分预训练,即使在极小规模的数据集任务上,将模型扩展到超大规模也能带来持续的精度提升。

6. Reflection#

BERT 的核心贡献不仅是证明了深层双向表示的优势,更重要的是,它首次在 NLP 领域成功验证了“大规模预训练 + 微调”这一统一范式。
在 BERT 出现之前,CV 领域已经广泛采用在 ImageNet 上进行预训练,再迁移到下游任务的方式;而 NLP 领域由于缺少大规模标注数据以及有效的预训练方法,迁移学习的效果始终有限。
BERT 是第一个在大量 NLP 任务上通过简单 fine-tuning 即达到 SOTA 的模型。它与后续的一系列工作共同证明:相比依赖有限的标注数据,利用海量无标注语料进行预训练,可以学习到更强的通用语言表示,并在小规模下游任务上表现出优秀的泛化能力。
BERT 之后,预训练 + 微调逐渐成为 NLP 的标准范式,同时也在一定程度上开启了后续的 Scaling 思想。论文表明,即使下游数据规模较小,只要经过充分的大规模预训练,扩大模型参数规模与训练数据规模依然能够持续带来性能提升。

然而 BERT 因为只保留了 encoder,其训练目标更偏向于学习双向语言表示,因此在语言理解任务上具有明显优势,但并不适合自回归生成任务。
而 GPT 选择的是另一条路径,GPT 仅保留 decoder,并采用基于 next-token prediction 的自回归训练方式。虽然单向建模在语言理解任务上存在一定限制,但这种训练目标具有更强的生成能力与任务统一性。后续研究表明,随着模型规模与训练数据规模的不断扩大,基于 decoder-only 的 GPT 路线展现出了更强的泛化能力与涌现能力,并最终成为现代大语言模型的主流架构。
此外,虽然 BERT 论文使用了 Next Sentence Prediction 任务来学习句子间的关系,但 NSP 在后续研究中被证明对模型性能贡献有限,甚至可能带来负作用。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

BERT
https://kisaragi-irona.top/posts/paper-reading/bert/blog/
作者
Kisaragi
发布于
2026-05-19
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录