
Bert Unleashed: 3项关键创新正在改变Nlp和Ai理解
自然语言处理 (NLP) 在过去十年中经历了一系列变革性的突破,其中最重要的里程碑之一是 Google 引入的 BERT (Bidirectional Encoder Representations from Transformers)。自 2018 年问世以来,BERT 不仅重新定义了机器理解人类语言的方式,还为后续大型语言模型的进步奠定了基础。本文探讨了 BERT 的发展历程、其技术创新及其对 NLP 和更广泛的人工智能领域产生的深远影响。
BERT 是 first encoder-only Transformer model
1. BERT 的诞生:NLP 的范式转变
2018 年 10 月,Google 通过一篇题为“BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”的开创性论文介绍了 BERT。从本质上讲,BERT 代表了与之前的语言模型(这些模型要么从左到右,要么从右到左处理文本)的根本性转变。相反,BERT 采用了双向训练方法,使其能够从句子中前后单词中捕获上下文。
1.1 BERT 架构
BERT 的架构完全基于 Transformer Encoder,利用自注意力机制生成上下文相关的词表示。这些机制动态地为句子中的不同单词分配不同程度的重要性,使 BERT 能够有效地解决多义性问题。作为第一个仅编码器的 Transformer 模型,BERT 能够从大量未标记的文本中学习,这使其对于文本分类、情感分析等自然语言理解任务非常有效。
BERT 是 first encoder-only Transformer model
该模型有两种尺寸可供选择:
- BERT-base: 12 层,768 个隐藏单元,12 个注意力头 (110M Parameters)
- BERT-large: 24 层,1024 个隐藏单元,16 个注意力头 (340M Parameters)
2. BERT 预训练目标
训练过程涉及两个主要步骤:预训练和微调。然而,BERT 的关键创新在于它使用掩码语言模型 (MLM) 和下一句预测 (NSP) 以及大量未标记文本的预训练目标。这使得模型能够学习上下文相关的嵌入并捕获句子之间的关系。
2.1 掩码语言模型 (MLM)
在 MLM 中,BERT 会随机掩盖句子中 15% 的 token,并根据周围的上下文预测它们。例如,给定句子:
"Deep [MASK] is very powerful."
- BERT 将根据上下文将掩码词
[MASK]
预测为"Learning"
或"Seek"
。 - 从数学上讲,MLM 的目标函数可以表示为:
其中 wᵢ 是被掩码的 token,w꜀ₒₙₜₑₓₜ 代表周围的 token。
2.2 下一句预测 (NSP):
NSP 训练模型来预测两个句子是连续的还是不相关的。例如:
Sentence A: "I went to the store."
Sentence B: "I bought some apples."
该模型了解到这些句子很可能连续。NSP 损失定义为:
其中 S_A 和 S_B 是两个句子。
总的预训练损失为:
这种联合优化确保了 BERT 学习上下文相关的表示以及句子之间的关系。
2.3 输入表示
为了支持 MLM 和 NSP 预训练目标,BERT 的输入表示被设计为处理单个句子和句子对(例如,问答对)。每个输入 token 都表示为三个嵌入的组合:
- Token Embeddings: 表示实际的单词或子词单元。例如,单词
"playing"
可能会被拆分成子词,如["play", "##ing"]
。 - Segment Embeddings: 区分一对中的两个句子。
- Position Embeddings: 对序列中每个 token 的位置进行编码,以保留顺序信息。
此外,特殊 token(如 [CLS]
(用于分类任务)和 [SEP]
(用于分隔句子))被添加到输入序列中。
通过结合这些目标,BERT 在 11 个基准 NLP 任务上实现了最先进的性能,包括问答 (SQuAD)、自然语言推理 (MNLI) 和情感分析。它的成功标志着范式的转变,证明了预训练语言模型针对下游任务进行微调的强大功能。
3. BERT 微调:调整预训练模型以用于特定任务
一旦 BERT 在大量未标记文本上进行了预训练,就可以针对各种下游 NLP 任务进行微调,只需最少的额外训练。此微调过程涉及通过添加特定于任务的层并在标记数据上进行训练来调整预训练模型以适应特定任务。这种方法的关键优势在于,在预训练期间学习到的 BERT 丰富的上下文相关表示可以用于在相对少量特定于任务的数据的情况下实现最先进的性能。
3.1 特定任务架构
BERT 的灵活性使其能够针对广泛的 NLP 任务进行微调,包括但不限于:
- 文本分类:对于情感分析或垃圾邮件检测等任务,会在 [CLS] 标记的输出之上添加一个分类层。[CLS] 标记充当整个输入序列的固定大小表示。
- 自然语言推理 (NLI):对于需要句子对分类的任务(例如,确定一个句子是否蕴含、矛盾或与另一个句子无关),BERT 会一起处理这两个句子,并在 [CLS] 标记的输出上使用一个分类层。
- 词性 (POS) 标注:对于序列标注任务,BERT 会为输入序列中的每个标记输出一个标签,通常使用在预定义实体类别上的 softmax 层。
- 命名实体识别 (NER):对于序列标注任务,BERT 会为输入序列中的每个标记输出一个标签,通常使用在预定义实体类别上的 softmax 层。
- 问答:在 SQuAD(斯坦福问答数据集)等任务中,BERT 预测给定段落中答案跨度的开始和结束位置。使用两个额外的输出层来预测这些位置。
Question: "What is the capital of France?"
Context: "France is a country in Europe. Its capital is Paris."
Output: Start: 9, End: 10 ("Paris")
3.2 微调过程
微调过程包括以下步骤:
- 特定任务的输入格式:输入数据根据目标任务的要求进行格式化。例如,在问答中,输入由一个问题-段落对组成,而在文本分类中,输入是一个单独的句子或文档。
- 添加特定任务的层:根据任务的不同,会在 BERT 的预训练架构之上添加额外的层(例如,分类头、跨度预测层)。
- 在标记数据上进行训练:使用特定任务的标记数据对模型进行微调。在此阶段,预训练的 BERT 模型的所有参数以及新添加的特定任务的层都会通过反向传播进行更新。
- 超参数调整:微调通常需要调整超参数,例如学习率、批次大小和 epoch 数量,以实现目标任务的最佳性能。
3.3 微调的优势
- 效率:与从头开始训练模型相比,微调 BERT 所需的计算资源明显减少,因为预训练的权重提供了强大的初始化。
- 泛化能力:BERT 对语言结构和上下文的预训练知识使其能够很好地泛化到不同的任务,即使是有限的标记数据。
- 最先进的性能:微调 BERT 一直在众多 NLP 基准测试中取得了最先进的结果,证明了其在捕捉复杂语言模式方面的有效性。
4. 采用、变体和优化
发布后,BERT 迅速在研究界获得了关注。到 2019 年,出现了许多变体,每个变体都解决了特定的限制或优化了性能:
4.1 RoBERTa
由 Facebook AI 开发的 RoBERTa 通过以下方式改进了 BERT:
- 在更大的数据集上进行训练。
- 删除了 NSP 目标,结果发现它会阻碍性能。
- 引入了动态掩码,在每个 epoch 期间会掩盖不同的标记。
例如,考虑以下句子:
"The quick brown fox jumps over the lazy dog."
动态掩码确保在不同的 epoch 中掩盖不同的单词,例如 "fox"
、"lazy"
或 "dog"
,从而提高了鲁棒性。
4.2 DistilBERT
Hugging Face 推出了 DistilBERT,这是一个更小、更快的 BERT 版本,参数减少了 40%,同时保留了 97% 的性能。该模型使用知识蒸馏进行训练,其中一个较小的学生模型从一个较大的教师模型中学习:
其中 L_CE 是交叉熵损失,L_KL 是教师和学生输出之间的 Kullback-Leibler 散度。
4.3 ALBERT
Google 的 ALBERT 通过以下方式减少了内存使用和训练时间:
- 参数共享:跨层共享参数。
- 分解嵌入参数化:将嵌入矩阵分解为较小的矩阵。
这些优化使 ALBERT 更加高效,而不会牺牲性能。
5. 多语言和特定领域的适应
随着 BERT 影响力的增长,研究人员开始针对专业应用对其进行定制:
5.1 多语言 BERT (mBERT)
于 2020 年 3 月发布的 mBERT 将 BERT 的功能扩展到 104 种语言。它在一个多语言语料库上进行了训练,从而实现了跨语言迁移学习。例如,在一个英语数据上训练的模型可以泛化到法语或印地语任务。
5.2 BioBERT 和 SciBERT
这些特定领域的变体分别在生物医学和科学文献上进行了预训练。例如,BioBERT 在从医学文本中提取药物-疾病关系等任务中取得了优异的结果:
Input: "Aspirin reduces the risk of heart attacks."
Output: Relationship: Aspirin → Reduces → Heart Attacks
6. 扩展和效率改进
到 2021 年,工作重点是扩展 BERT 的架构以处理更长的文档并提高效率。
6.1 BigBird
Google 引入了 BigBird,它使用稀疏注意力机制扩展了 BERT 的上下文窗口。这种方法通过关注标记的子集来降低计算复杂度,从而使 BigBird 能够有效地处理更长的序列——最多 4,096 个标记。它对于摘要和基因组学分析等任务特别有效。
6.2 Longformer
Longformer 模型使用滑动窗口注意力机制,并结合了对特定标记的全局注意力。这种设计使其能够有效地处理长文档,在提取摘要和文档分类等任务中表现出色。
6.3 Reformer
Reformer 利用局部敏感哈希 (LSH) 来减少内存和计算需求,从而能够高效处理极长的序列。它非常适合需要跨大型输入保持连贯性的应用,例如生成长篇段落。
结论:BERT 的持久影响
BERT 的引入通过采用双向训练方法并在众多任务中实现了最先进的性能,从而彻底改变了自然语言处理。其创新的预训练目标,即掩码语言建模 (MLM) 和下一句预测 (NSP),使其能够捕捉深层的上下文理解。RoBERTa、DistilBERT 和 ALBERT 等变体进一步提高了效率和可扩展性,而 BioBERT 和 SciBERT 等特定领域的模型则将其应用扩展到专业领域。BigBird、Longformer 和 Reformer 等优化措施解决了处理长文档的挑战,使 BERT 能够适应复杂的实际应用。使用最少的标记数据微调 BERT 在 NLP 中开启了新的可能性,巩固了其作为现代语言模型基石的地位。