Bootstrap

BERT论文关键点解读与常见疑问

BERT主要贡献点:

1. 双向编码器(Bidirectional Encoding)

核心贡献:BERT 是第一个基于 Transformer 编码器的真正双向预训练模型,即在处理某个词时,模型可以同时利用该词的左右上下文信息。传统的语言模型(如 GPT)是单向的,即只能从左到右或从右到左考虑上下文,BERT 的双向性让模型能够更深刻地理解句子中每个词的含义。

意义:双向编码使 BERT 在处理需要理解复杂上下文关系的任务时,表现出色,如问答系统、命名实体识别、情感分析等。

2. 预训练 + 微调的范式(Pre-training and Fine-tuning Paradigm)

核心贡献:BERT 引入了预训练和微调的架构。模型首先在大规模的无标注文本上进行预训练,学会语言的通用表示;然后可以通过微调在各种下游任务上(如分类、命名实体识别等)取得良好的效果。这种方式极大地提升了 NLP 模型的通用性和迁移能力。

意义:通过这种架构,研究者可以在各种 NLP 任务上复用 BERT 的预训练模型,不需要为每个任务从头开始训练模型,大大减少了时间和资源的消耗。

3. Masked Language Model (MLM) 和 Next Sentence Prediction (NSP) 训练机制

MLM(遮盖语言模型):BERT 在训练时,会随机遮盖输入中的部分单词,然后通过上下文信息预测这些被遮盖的单词。与传统的自回归模型不同,MLM 通过双向信息学习上下文,提升了对词与上下文关系的理解。

NSP(下一句预测):通过让模型预测两个句子是否相邻,BERT 学会了句子之间的关系。这一机制帮助模型在处理诸如问答系统等任务时,能够更好地理解多句子之间的语义关联。

意义:MLM 和 NSP 的结合使 BERT 能够学习到句子内及句子间的复杂语义关系,这大大提高了模型对上下文的理解能力。

1. BERT 分为哪两种任务,各自的作用是什么?

BERT 的预训练分为两个主要任务:

 Masked Language Model (MLM):

   作用:MLM 任务是为了让模型能够捕捉到双向上下文信息。在 MLM 中,输入句子中的 15% 的词会被随机替换为 [MASK],模型需要根据上下文来预测这些被屏蔽的词。

   目标:让模型学习到上下文的双向关系,能够更好地理解句子中每个词与整个句子的关系。

 Next Sentence Prediction (NSP):

   作用:NSP 任务是为了让模型能够理解句子之间的关系。模型会接收两个句子对,并判断第二个句子是否是第一个句子的真实后续句子。

   目标:帮助模型在处理诸如问答系统和文本相似度等任务时,更好地理解句子之间的逻辑关系。

 2. 在计算 MLM 预训练任务的损失函数的时候,参与计算的 Tokens 有哪些?是全部的 15% 的词汇还是 15% 词汇中真正被 Mask 的那些 Tokens

在 MLM 任务中,只有被实际替换为 [MASK] 或其他替换的 tokens 参与损失计算。BERT 随机选择 15% 的 tokens 进行掩码,但其中:

 80% 被替换为 [MASK]。

 10% 被替换为随机的其他 token。

 10% 保持原样(没有被更改)。

损失函数只计算那些实际被改变(无论是被替换成 [MASK] 还是其他 token)的 tokens,而不会对保持原样的 tokens 计算损失。

 3. 在实现损失函数的时候,怎么确保没有被 Mask tokens 不参与到损失计算中去?

为了确保没有被 Mask 的 tokens 不参与损失计算,BERT 使用了一个掩码矩阵来只计算那些被掩码的 tokens。具体实现方式:

 通过一个二值掩码矩阵标记哪些 tokens 是被 Mask 的,哪些不是。

 在计算交叉熵损失时,仅对那些被标记为 Mask 的 tokens 进行计算,不参与的 tokens 损失会被设置为零。

具体步骤:

1. 创建与输入 tokens 长度相同的掩码矩阵,标记那些被 Mask 或替换的 tokens。

2. 使用该掩码矩阵在损失函数中忽略没有被 Mask 的 tokens(设置损失为零)。

 4. BERT 的三个 Embedding 为什么直接相加?

BERT 的输入包含三个 Embedding(词嵌入、位置嵌入、分段嵌入),它们被直接相加,因为:

 词嵌入(Token Embeddings):表示每个单词的具体含义。

 位置嵌入(Position Embeddings):提供每个单词在句子中的位置信息,弥补 Transformer 不能显式建模序列顺序的缺点。

 分段嵌入(Segment Embeddings):区分输入中的第一个句子和第二个句子,帮助 NSP 任务。

这三个嵌入的维度相同(都为 768 维),它们各自表达了不同的信息。通过将它们直接相加,可以将这三种信息统一在一个共同的嵌入空间中,让模型同时考虑词的语义、位置以及句子间的关系。

 5. BERT 的优缺点分别是什么?

优点:

 双向上下文建模:BERT 通过 MLM 任务能够有效捕捉上下文的双向信息,从而更好地理解文本中的语义。

 迁移学习的能力:通过预训练 + 微调的范式,BERT 在多个下游任务上取得了显著的性能提升。

 广泛的适用性:BERT 可以应用于广泛的 NLP 任务,如文本分类、命名实体识别、问答、文本相似度等。

缺点:

 计算量大:BERT 模型非常庞大,预训练需要大量计算资源,推理时间也相对较长,限制了其在实时应用中的效率。

 生成能力差:BERT 的设计主要是为了解决自然语言理解任务,而不适合自然语言生成任务(如文本生成、翻译等),这是由于它的双向性编码和 MLM 任务无法进行自回归生成。

 不适用于长文本:BERT 的输入序列长度限制为 512 个 token,对于超长文本处理存在不足。

 6. 你知道有哪些针对 BERT 缺点做优化的模型?

许多模型对 BERT 的缺点进行了优化,包括以下几种:

 RoBERTa:

   主要优化了 BERT 的训练过程,去掉了 NSP 任务,并且在更多的数据上训练了更长时间。

   在多个任务上比 BERT 表现更好。

ALBERT:

   通过参数共享和词嵌入因子分解,减少了 BERT 的模型大小,同时在多个任务上取得了相近的性能。

 DistilBERT:

   是 BERT 的轻量级版本,通过蒸馏技术,将 BERT 模型压缩到更小的规模,减少了计算量和内存占用,但性能相对接近 BERT。

 XLNet:

   结合了自回归模型和自编码模型的优点,XLNet 通过一种双向感知的自回归训练方法,解决了 BERT 不能用于生成任务的问题。

 Longformer:

   针对 BERT 不能处理长文本的缺点进行了优化,通过稀疏注意力机制,使其能够处理比 BERT 更长的文本。

 7. BERT 怎么用在生成模型中?

尽管 BERT 本身是一个双向的编码器模型,不适合生成任务,但可以通过与生成模型相结合来实现生成任务。以下是一些常见的方法:

 EncoderDecoder 架构:

   BERT 可以作为生成模型的编码器,编码输入序列的信息。然后将编码后的表示传递给一个解码器(如 GPT)进行生成。这种方法使用 BERT 来编码上下文,而解码器来生成文本。

 BART(Bidirectional and AutoRegressive Transformers):

   BART 是 Facebook 开发的一种模型,它结合了 BERT 的双向编码器和 GPT 的自回归解码器。BART 在训练时通过对输入文本进行随机噪声扰动(如删除、替换、遮盖等)进行自监督训练,最后通过生成完整的句子来实现。

 T5(TextToText Transfer Transformer):

   T5 将所有 NLP 任务都视为文本到文本的生成任务(包括分类、翻译、问答等)。它使用 BERT 作为编码器,用生成解码器来生成文本。因此,BERT 作为生成模型的一部分,可以进行自然语言生成。

;