您的位置  > 互联网

BERT是什么?如何进行预训练语言理解模型的?

了解自然语言处理的学生不应该不知道BERT; 甚至很多自然语言处理圈外的开发者同学也知道这个模型有多强大。 不得不佩服的影响力和营销水平。 当然,它确实如此有效。

我不会告诉你 BERT 当年如何横扫各大 NLP 任务清单的故事。 毕竟现在有XLnet,各方面都比他好一点; 而且,一些论文已经开始弥补 BERT 的缺点。

那么让我们回到正题吧。 现在我们来看看BERT到底是什么,它有什么样的结构,如何进行预训练等。

BERT,全称是Pre-of Deep for。 请注意,每个单词都说明了 BERT 的一个特征。

预先说明,BERT是一种预训练模型,通过前期大量语料的无监督训练,学习大量先验语言、语法、词义等信息,为下游任务提供帮助。

表明BERT采用双向语言模型,可以更好地整合上下文知识。

说明BERT用作特征提取器。

Deep表示模型非常深。 基本版本有 12 层,大型版本有 24 层。

综上所述,BERT 是一种用作特征提取器的深度双向预训练语言理解模型。

2 BERT的结构

上图是BERT的模型结构。 它由多层双向连接组成,有12层和24层两个版本。 BERT 中的实现与上一期提到的实现相同。

要理解BERT,最重要的是它在预训练时采取的方法。 下面我们来详细解释一下。

3 BERT预训练模式

(1) 输入

我们首先看一下 BERT 网络接受哪些输入。 如上图所示,BERT接受的输入包括三部分:

1)词嵌入后的Token,每个输入总是以符号[CLS]开头。 如果是两个句子,句子之间用[SEP]分隔。

2)句子类别的符号

3) ,这与 中的一致。

将以上三个向量相加,就形成了BERT的输入。

(2) 型号

那么,BERT 训练什么样的任务呢? 其中之一是模型。 BERT在训练时会覆盖训练语料中15%的单词(实际的MASK机制还有一些调整),并用符号[MASK]替换。 通过预测所涵盖的内容,网络将学习常见的单词含义。 句法和语义信息。

那么,如何理解Model呢? 我们不妨回想一下我们高中时做过的英语完形填空。 我们在做完形填空题的时候,为了填空处的单词,往往需要不断的看空处单词的上下文,甚至了解整个段落的信息。 。 有时,有些问题甚至需要一些英语常识才能得到答案。 通过做完形填空,我们可以学到很多英语的词义、语法和语义信息。 BERT的训练过程类似。 该模型通过预测[MASK]替换的单词并不断“比较”上下文的语义、句法和词义信息,学习了大量相关知识。

哈哈,不知道BERT的创始人是不是受到了中国英语试卷中完形填空题的启发呢?

(3) 下一步

BERT的预训练过程还有预测下一句话的任务。 就是输入两个句子,判断第二个句子是否是第一个句子的下一个句子的任务。 该任务是为 QA​​ 和 NLI 等需要考虑句子之间关系的下游任务准备的。

通过这个任务,BERT获得了句子级表示的能力。 通常,BERT的第一个输出,即[CLS]对应的输出,可以作为输入句子的句子向量。

4.BERT 学到了什么?

(1)在预训练过程中,BERT学习到了丰富的语言信息。

在低层网络结构中学习短语语法信息; BERT的中层网络学习丰富的语言特征; BERT的高层网络学习丰富的语义信息特征。

上述观点来自以下论文。 团队通过一系列的探针实验来支持上述观点,对于我们进一步了解BERT、更有效地使用BERT具有一定的指导意义。

Benoˆıt Sagot Djam´e (2019)。 BERT 从 的 中学到了什么?

(2)BERT实际上并没有学到深层语义信息,而只是学到了一些关于浅层语义和语言概率的线索?

最近有一篇论文《of》讨论了BERT是否实际上在Task(ARCT)任务中只学到了数据集中的一些错误统计线索,并没有真正理解语言中的推理和常识。

事情大概是这样的。 为了扼杀BERT的威望,论文作者选择了自然语言处理中相对困难的任务ARCT,并在测试数据中做了一些“手脚”,以尝试BERT的技能。 所谓ARCT是一个推理和理解任务。 如下图所示,显示了 ARCT 数据集的示例。 ARCT 数据中有结论主张、理由、论证和错误论证。

如上图所示,是ARCT任务的一般模型结构,就是同时输入,Claim,两个,预测哪个是正确的。

论文作者首先使用BERT在原始ARCT数据集上预测ARCT任务,发现BERT的效果确实非常好,达到了71.6±0.04,接近没有接受过训练的人的结果。

随后,研究人员对测试数据集进行了研究,发现数据集中其实隐藏着一些统计线索。 简单地说,数据集中正确的单词包含某些单词的概率高于错误的单词。 例如,只要看到一个包含 not 的单词并预测它是正确的,就可以达到 60% 的准确率。

同时,研究人员还进行了实验,将only和claim和sum作为输入来训练模型。 实验发现BERT的效果也可以达到70+。 就好像老师还没回答完问题,学生们就已经把答案写下来了。 这显然是不合理的。 要么学生作弊,要么他们提前记住了答案。

最后,研究人员想出了一个技巧,就是对数据集中的数据进行倒置,并对某些单词的概率进行平均,如下图:

实验结果令人惊讶。 BERT 的最佳效果仅为 53%,仅比猜测好一点点。

那么,BERT 在预训练过程中到底学到了什么?

准确回答这个问题并不容易。 但通过上面两篇论文对BERT在二维上的分析,我们应该能够给BERT一个清晰的定位。 BERT 是一个强大的预训练。 由于其参数量大、特征提取能力强,可以从海量语料库中学习到一些语言学和一定程度的语义信息。 但作者认为,与之前所有的NLP模型一样,它还远远没有学习到语言中包含的大量常识和推理。 例如,使用BERT也许能够推断出“正在下雨”和“需要带雨伞”。 但更深层次来说,学习这些BERT是有难度的,“我们需要带伞,因为我们怕淋湿,淋湿了就会感冒”。

NLP 的难点在于语言是高度精炼和情境化的。 一个简单的陈述可能需要丰富的知识才能理解。 现在看来,预训练模型是一条充满希望但漫长的道路。

总结

BERT是目前最流行的NLP预训练模型。 它基于MLM和双向语言模型作为特征提取器,这是其成功的两个主要原因。