跳到主要内容BERT 精读笔记:双向编码器表示预训练模型详解 | 极客日志编程语言AI算法
BERT 精读笔记:双向编码器表示预训练模型详解
BERT 是一种基于 Transformer 的双向编码器表示预训练模型,通过在未标记文本上进行深度双向预训练,利用掩码语言模型和下一个句子预测任务学习语言表示。模型采用多层双向 Transformer Encoder,支持 Token、Segment 和 Position Embedding。在 GLUE 基准和 SQuAD 等 11 个 NLP 任务上,BERT 取得了最先进的结果,证明了双向上下文理解的优势。虽然存在计算成本高和推理慢的局限,但其启发了后续 RoBERTa、DistilBERT 等高效模型的演进,成为自然语言处理领域的里程碑式工作。
- 论文标题: 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。
对比试验
GLUE 基准数据集
文章先使用 GLUE 基准的 8 个数据集进行测试,这些数据集涵盖了多种 NLP 任务类型:
- MNLI (Multi-Genre Natural Language Inference): 蕴涵分类任务,给定一对句子,预测第二个句子相对于第一个句子是蕴涵、矛盾还是中立。
- QQP (Quora Question Pairs): 二元分类任务,确定两个问题在语义上是否等效。
- QNLI (Question Natural Language Inference): 斯坦福问答数据集的二元分类版本,判断问题与段落是否包含答案。
- SST-2 (The Stanford Sentiment Treebank): 二元单句情感分类任务,分析电影评论的情感倾向。
- CoLA (The Corpus of Linguistic Acceptability): 二元单句可接受性分类任务,预测英语句子是否符合语法规范。
- STS-B (The Semantic Textual Similarity Benchmark): 句子对相似度评分任务,标注分数从 1 到 5。
- MRPC (Microsoft Research Paraphrase Corpus): 句子对语义等效性分类任务。
- RTE (Recognizing Textual Entailment): 二元蕴涵任务,类似于 MNLI 但规模较小。
从实验结果来看,BERT 在所有任务上的表现都大大超过了所有的预训练模型,证明了双向预训练的有效性。
SQuAD v1.1 数据集
SQuAD v1.1 为斯坦福问答数据集。BERT 在该任务上取得了 93.2 的 F1 分数,比现有最佳系统高出 1.5 F1 分数。这表明 BERT 在阅读理解任务中具有极强的定位和理解能力。
SQuAD v2.0 数据集
SQuAD v2.0 数据集引入了新的问题定义,允许在所提供的段落中不存在简短答案的可能性,从而使问题更加现实。这里文章微调了 2 个 epoch,学习率为 5e-5,批大小为 48。从下表可知,BERT 在 SQuAD v2.0 任务上取得了 83.1 的 F1 分数,比之前最佳系统高出 5.1 F1 分数。
SWAG 数据集
SWAG(Situation With Adversarial Generations)是对抗世代情境数据集,用于测试模型对物理常识的理解。批量大小为 16。从实验结果可以看出,BERT 在 SWAG 数据集上取得了 86.3 的 F1 分数,比基线 ESIM+ELMo 系统高出 27.1,比 OpenAI GPT 高出 8.3。
消融实验
文章通过使用完全相同的预训练数据、微调方案和超参数来评估两个预训练目标,从而证明了 BERT 深度双向性的重要性。
模块消融
从实验结果可以看出,BERT 在四项消融实验中的效果都达到了第一。使用 MLM 架构的 BERT 在 5 个 NLP 任务上都要优于使用 LTR 架构的 BERT。
- No NSP: 只有 MLM 一种预训练方法,去除了下一个句子预测任务。
- LTR: 替代了 MLM,使用从左到右的训练架构,类似于 GPT。
- BiLSTM: 为了提高仅使用 LTR 架构的 BERT 的性能,为其添加了一个随机初始化的 BiLSTM,虽然在 SQuAD 上任务有提高,但是却损害了 GLUE 任务的性能。
这证明了双向性对于通用语言理解的重要性,单纯的单向增强无法达到同等效果。
超参数消融
在这组消融实验中,文章通过调整不同的超参数以获取最佳的超参数组合,其中 L 为 Transformer Encoder 的层数、H 为隐藏层大小和 A 为 Attention 的头数量。下表中的 LM 指的是被遮挡的训练数据的 LM 困惑度。模型参数越多,预测能力就越强,LM 越小则是模型对被遮挡的数据预测难度就更小。
基于特征的 BERT 方法
在这组实验中,文章使用了 CoNLL-2003 命名实体识别数据集进行实验。这里文章是这样说的,性能最好的方法将来自预训练的 Transformer 的前四个隐藏层的 token 表示连接起来,这只比微调整个模型落后 0.3 F1。这表明 BERT 对于微调和基于特征的方法都是有效的,可以作为强大的特征提取器。
局限性与后续发展
尽管 BERT 取得了巨大成功,但也存在一些局限性。首先是计算成本较高,由于双向注意力机制,预训练过程需要大量的 GPU 资源。其次是推理速度较慢,相比单向模型,BERT 在处理长序列时延迟较高。此外,BERT 的预训练任务(如 NSP)被认为可能不是最优的,后续研究提出了 RoBERTa 等改进版本,去除了 NSP 任务并增加了训练数据量。
为了优化效率,DistilBERT 通过知识蒸馏技术减小了模型体积,保留了大部分性能。ALBERT 则通过参数共享减少了参数量。这些后续工作进一步推动了 BERT 在实际生产环境中的应用。
结论
本文提出的 BERT 模型通过深度双向预训练显著提升了多种自然语言处理任务的性能。BERT 的核心贡献在于进一步推广了迁移学习的发现,使得相同的预训练模型能够成功应对广泛的 NLP 任务。BERT 的成功表明,深度双向预训练在语言表示方面具有显著优势,并且可以有效地应用于各种下游任务。它开启了大模型时代的新篇章,为后续的 GPT 系列、T5 等模型奠定了基础。
BERT 的出现标志着自然语言处理从手工特征工程转向了端到端的深度学习表示学习。随着算力的提升和算法的优化,基于 Transformer 的预训练模型将继续在人工智能领域发挥核心作用,推动机器理解人类语言的能力不断向前发展。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online