Bert简单理解——原理与介绍

时间:2024-04-11 22:40:29

1.BERT的作用

学习参考链接:infoQ infoQ2

因为在NLP任务中我们需要大量的任务专有数据,通常情况下只能将文本分成字段,得到几百或者几十万个人工标注的数据,这远远不够NLP任务中所用的训练数据。

所以开发一系列训练通用得语言模型,使用网上爬虫获取的文本(未注释)作为模型输入,得到大量的专有任务需要的数据集,该过程也成为预训练

Bert就是这样的一个训练通用语言模型的工具。(自己理解意义上的)

2.BERT核心思想

Masked LM 新技术:它随机 mask 句子中的单词,然后尝试预测它们。mask 意味着模型将从两个方向观察,它使用句子的全部上下文,包括左边和右边的环境,来预测被 mask 的词(将某个词盖住,并预测该词)。与之前的语言模型不同,它会同时考虑前一个和下一个标记。现有的基于 LSTM 的从左到右和从右到左的组合模型缺少这个“相同时间的部分”。(更准确地说,BERT 是没有方向性的。)

3.BERT的工作原理

BERT 依附于“Transformer”(一种标注机制,用来学习文本中单词之间的上下文关系)。
Transformer简介:一个基本的 Transformer 包括一个编码器,用来读取文本输入,一个解码器,用来产生关于任务的预测。
BERT中仅需要一个编码器的部分
BERT 是一个用 Transformers 作为特征抽取器的深度双向预训练语言理解模型
word2vec是一个上下文无关的模型,为词汇表中的每个词都找到各自的词向量

Transformer 工作时力求执行一个少的、恒定数量的步骤。在每个步骤中,它应用一个标注机制理解句子中所有单词之间的关系,而不管它们的位置。例如,对于句子“ I arrived at the bank after crossing the river”,需要确定“bank”这个词是指一条河的岸边,而不是一个金融机构,Transformer 可以很快根据“river”这个词进行标注,只用一步就实现了目的。

3.1BERT预训练的输入

Bert简单理解——原理与介绍

**1.**词嵌入后的 Token Embedding,每次输入总以符号 [CLS] 的 embedding 开始,如果是两个句子,则句之间用 [SEP] 隔开。
**2.**句子类别的符号。将表示句子 A 或句子 B 的标记添加到每个 token 中。这可以在不同的句子间区分编码器。
**3.**Position Embedding,同Transformer 中的一致。将positional embedding 添加到每个 token 中,以标示其在句子中的位置

将上述的三个向量相加即为BERT预训练的输入

3.2 Masked Language Model(核心思想)

BERT在训练的时候将遮盖住语料中的15%的词语,用[MASK]代替,通过预测这部分的词语(与true word相比较)学习句子中的语义、句法和语义信息。(这是一个不断迭代的过程,参考word2vec的训练过程)

其指导思想是“简单”:使用( MASK) token 随机 mask 15% 的单词输入,之后运行基于编码器的 BERT 标注,然后基于所提供的上下文中的其他 non-masked 词序列预测被 mask 的单词含义。然而,这种原始的 mask 方法有一个问题——模型只在 [ MASK]token 出现在输入中时才尝试预测,而我们希望模型不管输入中出现了什么 tokens 都能够尝试预测正确的 tokens 。为了解决这个问题,我们选择 mask15% 的 tokens:(如果标记都用[MASK]表示会影响模型,所以在随机mask的时候采用下面的策略。
1.实际上 80% 的 tokens 被替换为 token [MASK].。
eg、my dog is hairy → my dog is [MASK]
2.10% 的 token 被替换为随机 token。
eg、my dog is hairy → my dog is apple
3.10% 的 token 保持不变。
eg、my dog is hairy → my dog is hairy

训练 BERT 损失函数时,只考虑 mask token 的预测,而忽略非 mask token 的预测。这会导致模型的收敛速度比从左到右或从右到左的模型慢得多

3.3 Next Sentence Prediction(一个预训练中的任务)

该任务是指将两个句子作为输入,做一个判断任务,即第二句话是不是第一句话的下一个任务。
该任务可以得到句子的向量(句向量)

正如我们前面看到的,BERT 用一个特殊的(SEP)token 来分隔句子。在训练过程中,模型一次输入两个句子:

1.有 50% 的可能性,第二句话在第一句之后。
2.有 50% 的可能性,它是一个来自完整语料库的随机句子。

之后 BERT 就要预测第二个句子是否是随机的,并假设这个随机的句子与第一个句子是断开的:

Bert简单理解——原理与介绍
预测第二句与第一句是否是连接的,基本上完整的输入序列经过 Transformer 模型,再用一个简单的分类器层将(CLS)token 的输出转换为 2×1 的向量,并使用 softmax 分配 IsNext-Label。

该模型结合了 Masked LM 神经网络和下一句预测进行训练。这是为了最小化两种策略的组合损失函数——所谓的“合作共赢”。(还未理解)

4. BERT的学习内容

语义信息(玄学解释),学习到统计学意义上的信息(个人理解)

5.BERT的优点

BERT 是一个强大的预训练,因其超大的参数量和较强的特征提取能力,能够从海量的语料中学习到一些语言学和一定程度的语义信息。

6.BERT的应用场景

BERT自然语言推理情感分析问题问答意译检测语言可接受性等一般语言理解的各种任务场景。

eg、BERT应用在问答场景时:给定一个问题和一个上下文段落,该模型预测该段落中最有可能回答该问题的开始和结束标记。这意味着我们可以使用 BERT 模型通过学习两个额外的向量来训练我们的应用程序,这两个向量分别表示答案的开头和结尾。