BERT (language model) — 来自变换器的双向编码器表示

From Systems analysis wiki
Jump to navigation Jump to search

BERT (Bidirectional Encoder Representations from Transformers, 来自变换器的双向编码器表示) 是一款由谷歌研究人员开发并于2018年推出的用于自然语言理解的大型语言模型 (LLM)。BERT 标志着自然语言处理 (NLP) 进入了一个新时代,它在广泛的任务中展现了前所未有的性能,并确立了“预训练+微调” (pre-train & fine-tune) 范式,使其成为行业标准。

BERT 的核心创新在于其深度双向架构,该架构使模型能够在网络的所有层中同时考虑一个词的左右上下文。这是通过一项新的预训练任务——掩码语言建模 (Masked Language Modeling, MLM) 来实现的。

名称与工作原理

缩写词 BERT 的全称是 Bidirectional Encoder Representations from Transformers

  • Bidirectional (双向): 指出模型的主要特点——能够同时处理一个词在两个方向(从左到右和从右到左)的上下文。与单向模型(如 GPT)在处理一个词时只能看到其前面的上下文不同,BERT 可以看到整个序列,这使其能够对词义形成更深刻、更准确的理解。
  • Encoder (编码器): 意味着 BERT 只使用 Transformer 架构的编码器部分。编码器的任务是读取输入的文本序列,并为每个词元(token)创建一个丰富的上下文表示(向量)。BERT 的设计目的不是像解码器模型那样自由生成文本。
  • Representations (表示): 模型通过训练来为单词和句子创建高质量的数值表示(向量或嵌入),这些表示随后可用于解决各种 NLP 任务。
  • from Transformers: 表明该模型的架构完全基于 Transformer。

发展历史

BERT 的开发是 NLP 领域几项关键突破的成果:

  1. 上下文嵌入: 像 Word2vec 和 GloVe 这样的模型为单词创建静态向量,不考虑上下文。ELMo 模型 (2018) 向前迈出了一步,通过双向 LSTM 网络生成依赖于上下文的表示,但这种双向性是“浅层”的(拼接了两个单向模型的结果)。
  2. 迁移学习与 GPT: 2018 年年中,OpenAI 推出了 GPT 模型,展示了在无标签数据上预训练一个大型 Transformer 模型,然后在特定任务上进行微调 (fine-tuning) 的有效性。然而,GPT 是严格单向的(从左到右),这限制了其在需要理解完整上下文的任务中的能力。

认识到这些局限性,由 Jacob Devlin 领导的谷歌研究人员开发了 BERT,旨在创建一个真正深度双向的模型。关于 BERT 的论文于2018年10月在 arXiv 上发表,其代码和预训练模型也随之开源,引发了科学界的爆炸性兴趣。BERT 在包括 GLUE 和 SQuAD 在内的11个关键 NLP 基准测试中打破了记录,并被誉为 NLP 领域的“ImageNet 时刻”,因为一个通用的模型可以轻松地适应多种任务。

架构

BERT 完全基于 Transformer 架构的编码器部分。它由多个相同的层堆叠而成。主要有两个版本:

  • BERT-Base: 12层,12个注意力头,隐藏状态大小为768,总参数约1.1亿。
  • BERT-Large: 24层,16个注意力头,隐藏状态大小为1024,总参数约3.4亿。

每一层包含两个主要子层:

  1. 多头自注意力机制 (Multi-Head Self-Attention): 允许输入序列中的每个词元“关注”所有其他词元,通过加权它们的重要性来确定自身的上下文含义。
  2. 前馈神经网络 (Feed-Forward Network): 单独应用于每个词元。

输入数据

为了正常工作,BERT 要求对输入数据进行特殊格式化。输入的词元序列总是以一个特殊的词元 `[CLS]` (classification) 开始,该词元用于整个文本的分类任务。如果输入是一对句子(例如,在问答任务中),它们之间会用 `[SEP]` (separator) 词元分隔。

每个输入词元的最终表示是三个嵌入的总和:

  • 词元嵌入: 对应于词汇表中特定词元的向量(BERT 使用 WordPiece 分词)。
  • 分段嵌入: 指示词元属于哪个句子(第一个或第二个)。
  • 位置嵌入: 指示词元在序列中的位置,因为 Transformer 架构本身不考虑词序。

预训练任务

为了实现深度双向性,BERT 同时在两个独特的任务上进行训练。

Masked Language Modeling (MLM) - 掩码语言建模

这是 BERT 的核心创新。与标准语言模型预测下一个词不同,BERT 预测句子中被随机“掩盖”的词。 过程如下:

  • 从输入序列中随机选择15%的词元。
  • 在这15%中:
    • 80%被替换为特殊的 `[MASK]` 词元。
    • 10%被替换为词汇表中的一个随机词元。
    • 10%保持不变。
  • 模型的任务是根据周围的上下文(左侧和右侧)预测这15%词元的原始值。

这种机制迫使模型学习单词之间深层的语义和句法关系,使其能够实现真正的双向性。

Next Sentence Prediction (NSP) - 下一句预测

这项任务旨在教会 BERT 理解句子之间的关系,这对于问答系统或文本蕴含分析 (NLI) 等任务至关重要。 模型接收一对句子(A 和 B)作为输入,并需要预测句子 B 是否是句子 A 的逻辑后续。

  • 在50%的情况下,B 确实是原文中的下一句。
  • 在50%的情况下,B 是从语料库其他地方随机抽取的一个句子。

后来的研究(例如在 RoBERTa 模型中)表明,NSP 任务的重要性低于 MLM,并且可以为了更高效的训练方案而放弃它,但在原始的 BERT 中,它扮演了重要角色。

应用与微调 (Fine-Tuning)

BERT 的强大之处在于迁移学习范式。在一个庞大的语料库(维基百科 + BooksCorpus)上进行大规模且昂贵的预训练后,这个预训练好的模型可以轻松快速地进行微调 (fine-tune),以解决特定的应用任务。

微调过程通常如下: 1. 在预训练的 BERT 架构之上,添加一个针对特定任务的小型、未经训练的层(例如,用于情感分析的分类器)。 2. 整个模型(包括 BERT 的权重和新层)在这个特定任务的小型、有标签的数据集上进行训练。

BERT 适用的任务示例:

  • 文本分类(情感分析、垃圾邮件过滤):在 `[CLS]` 词元的输出上添加一个分类器。
  • 问答系统(例如 SQuAD):模型被训练来预测给定文本中答案的起始和结束词元。
  • 命名实体识别 (NER):在每个词元的输出上添加一个分类器,以确定该词元是否是人名、组织、日期等的一部分。

变体与衍生模型

BERT 的成功催生了基于其思想的一系列模型:

  • RoBERTa (来自 Facebook AI):“稳健优化的 BERT”。它不是一种新架构,而是对 BERT 进行更彻底、更长时间训练的结果:使用更多数据、取消 NSP 任务并采用动态掩码。RoBERTa 表明原始的 BERT “训练不足”,并在所有主要基准测试中超越了它。
  • DistilBERT (来自 Hugging Face):通过知识蒸馏技术创建的 BERT 的缩小版。DistilBERT 体积小40%,速度快60%,并保留了 BERT 97%的性能,使其成为在生产环境和资源受限设备上使用的理想选择。
  • ALBERT (A Lite BERT,来自谷歌):一个为减少参数数量而优化的版本。它使用了两个关键技术:嵌入分解跨层参数共享。这使得可以用更少的参数构建更大的模型。
  • mBERT (Multilingual BERT): 一个在104种语言上同时进行预训练的 BERT 版本。它展示了惊人的跨语言知识迁移能力。
  • 领域特定模型: 许多在特定领域数据上进行微调的模型,例如 BioBERT (生物医学)、SciBERT (科学文本) 和 FinBERT (金融)。
  • ModernBERT (2024-2025): 来自 Answer.AI 和 LightOn 公司的新一代类 BERT 模型,融合了现代架构改进,如 RoPE (旋转位置嵌入),并支持更长的上下文(最多8192个词元),同时保留了 BERT 的基本原则。

与其他模型的比较

BERT 与其他关键架构的比较
模型 开发者 架构 上下文方向 主要任务
BERT 谷歌 编码器 双向 文本理解、分类、信息提取
GPT OpenAI 解码器 单向 (从左到右) 文本生成、序列续写
XLNet 谷歌 / CMU 自回归 (基于排列) 双向 (理论上) 文本理解 (MLM 的替代方案)
T5 谷歌 编码器-解码器 双向 (编码器) + 单向 (解码器) 通用的“文本到文本”转换

影响

BERT 在 NLP 领域引发了一场真正的革命,并为许多后续发展奠定了基础:

  1. 确立了“预训练+微调”范式,使其成为 NLP 的主流方法。
  2. 证明了深度双向上下文对于语言理解的重要性。
  3. 降低了创建高性能 NLP 系统的门槛,因为研究人员和开发者不再需要为每个任务从头开始构建复杂的架构。
  4. 被集成到谷歌搜索中,这是该搜索引擎历史上最大的一次更新之一,直观地展示了该模型的实用价值。
  5. 催生了一个完整的生态系统,包括衍生模型、工具和研究(“BERTology”),成为人工智能领域被引用最多的著作之一。

尽管更新、更大的模型(如 GPT-3 和 GPT-4)在许多基准测试中(尤其是在生成任务上)已经超越了 BERT,但 BERT 及其变体至今仍是解决需要深度文本理解任务的强大且广泛使用的工具。

链接

参考文献

  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Peters, M. E. et al. (2018). Deep Contextualized Word Representations. arXiv:1802.05365.
  • Liu, Y. et al. (2019). RoBERTa: A Robustly Optimized BERT Pretraining Approach. arXiv:1907.11692.
  • Lan, Z. et al. (2020). ALBERT: A Lite BERT for Self-supervised Learning of Language Representations. arXiv:1909.11942.
  • Sanh, V. et al. (2020). DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter. arXiv:1910.01108.
  • Yang, Z. et al. (2019). XLNet: Generalized Autoregressive Pretraining for Language Understanding. arXiv:1906.08237.
  • Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
  • Lee, J. et al. (2020). BioBERT: a pre-trained biomedical language representation model for biomedical text mining. arXiv:1901.08746.
  • Warner, B. et al. (2024). Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference. arXiv:2412.13663.