《BERT详解:开创性自然语言处理框架的全面指南.docx》由会员分享,可在线阅读,更多相关《BERT详解:开创性自然语言处理框架的全面指南.docx(26页珍藏版)》请在金锄头文库上搜索。
1、BERT详解:开创性自然语言处理框架的全面指南全文共9095字,预计学习时长18分钟想象一下自己正在进行一个非常好的数据科学项目,还为了获得较好的结果用了最前沿的数据库。然后几天后,新一代前沿框架的出现,导致现有模型已经落后了。这不是一个假设。这就是自然语言处理领域工作者所面对的现实(和挑战)!过去两年取得的突破令人惊叹,接连出现出现各种新框架,可能比目前掌握的框架还要好。谷歌BERT就是这样一个自然语言处理框架。这可能是近几年最有影响力的一次革新。可以毫不夸张地说,BERT已经对自然语言处理进行了显著的变革。比如使用一个在大型无标号数据集上训练的模型,在11个独立的自然语言处理任务中取得佳绩
2、。只需稍加微调就能实现。BERT就能实现这一点!这是自然语言处理模型设计的根本转变。BERT引发了许多新的自然语言处理体系结构、训练方法以及语言模型,如Google TransformerXL、OpenAI的GPT-2、XLNeT、ERNIE2.0、RoBERTa等。本文旨在提供全面的指南,不仅包含BERT的概念,还包含对未来的自然语言处理研究产生的影响。当然,文中还有很多Python代码实例。目录1. BERT是什么?2. 从Word2vec到BERT: 自然语言处理对语言学习表征的探究3. 深入探究BERT的工作原理4. 用BERT进行文本分类(Python代码实例)5. 其他信息: 自然
3、语言处理的学科前沿1. BERT是什么?你已经听说过BERT、它的强大功能,以及它是如何潜在地改变自然语言处理领域的。但是BERT到底是什么呢?BERT的研发团队是这样描述自然语言处理框架的:BERT(Bidirectional Encoder Representations from Transformers)是一种Transformer的双向编码器,旨在通过在左右上下文中共有的条件计算来预先训练来自无标号文本的深度双向表示。因此,经过预先训练的BERT模型只需一个额外的输出层就可以进行微调,从而为各种自然语言处理任务生成最新模型。对于入门者而言,这听起来过于复杂,但确实总结了BERT的优势
4、,接下来进行详细讲解。首先,很容易理解BERT是Bidirectional Encoder Representations from Transformers的缩写,这里的每一个词都有其含义,本文将逐一介绍。目前,关键之处在于BERT是以Transformer结构为基础的。第二,BERT的预训练是在包含整个维基百科的无标签号文本的大语料库中(足足有25亿字!) 和图书语料库(有8亿字)中进行的。在BERT成功的背后,有一半要归功于预训练。这是因为在一个大型文本语料库上训练一个模型时,模型开始获得对语言工作原理的更深入的理解。这些知识是瑞士军刀,几乎对任何自然语言处理任务都有用。第三,BERT是
5、一个“深度双向”的模型。双向意味着BERT在训练阶段从所选文本的左右上下文中汲取信息。模型的双向性对于理解语言的真正意义很重要。来看一个例子,有两句话,都涉及“bank”一词:BERT同时捕获左右上下文如果仅取左上下文或右上下文来预测单词“bank”的性质,那么在两个给定示例中,至少有一个会出错。解决这个问题的一个方法是,在做出预测之前同时考虑左上下文和右上下文。就像BERT一样。本文稍后会介绍如何实现这一点。最后,也是BERT最令人印象深刻的一面。可以通过添加几个额外的输出层来进行微调,从而成为各种自然语言处理任务最顶尖的模型。2. 从Word2vec到BERT: 自然语言处理对学习语言表征
6、的探究“自然语言处理的最大挑战之一是缺乏训练数据。因为自然语言处理是一个具有许多不同任务的多样化领域,大多数任务专用的数据集只包含几千或几十万个人工标记的培训示例。”谷歌AIWord2Vec与GloVe通过对大量无标号文本数据的预训练模型来探究学习语言表征始于Word2Vec与GloVe中词的嵌入。这些嵌入改变了自然语言处理任务的执行方式。现在的嵌入可以捕捉词之间的上下文关系。这些嵌入用于训练自然语言处理下游任务的模型,做出更好的预测。即使使用较少的任务专用的数据,也可以通过利用嵌入本身的附加信息来实现这一点。这些嵌入的局限性在于他们使用了非常浅显的语言模型。这意味着它们能够捕获的信息量有限,
7、这促使人们使用更深入、更复杂的语言模型(LSTM和GRU层)。另一个关键性的制约因素是:这些模式没有考虑到该词的上下文。以上面的“bank”为例,同一个词在不同的语境中有不同的含义。然而,像Word2vec这样的嵌入将在上下文中为“bank”提供相同的向量。这一宝贵信息不应被忽视。输入ELMo与ULMFiT自然语言处理社区用ELMo处理多义词,多义词指一个词由于上下文不同,含义也不同。从训练浅层前馈网络(Word2vec),到逐步使用复杂的双向LSTM体系结构层来训练词嵌入。这意味着同一个单词可以基于其上下文具有多个ELMo嵌入。从那时起,预培训就成为了自然语言处理的一种培训机制。ULMFiT
8、在这一点做得更深入。该框架可以训练可调的语言模型,即使在各种文档分类任务上的数据较少(少于100个示例)的情况下,也可以提供出色的结果。可以肯定地说,ULMFiT破解了自然语言处理中迁移学习的秘密。这就是在自然语言处理中迁移学习的黄金公式:自然语言处理中的迁移学习 = 预训练+微调ULMFiT之后,大多数自然语言处理突破上述公式的要素,并取得了最新的基准。OpenAI的GPTOpenAI的GPT扩展了ULMFiT和ELMo带来的预训练和微调法。GPT本质上是用基于Transformer的体系结构代替了基于LSTM的语言建模体系结构。GPT模型可以微调到超出文档分类的多个自然语言处理任务,例如常
9、识推理、语义相似度和阅读理解。GPT还强调了Transformer框架的重要性,该框架具有更简单的体系结构,其训练速度比基于LSTM的模型更快,还能够通过使用注意机制来学习数据中的复杂模式。OpenAI的GPT通过实现多种先进技术证实了Transformer框架的强大和实用性。这就是Transformer如何促成了BERT的开发,以及自然语言处理中的后续所有突破。现在,还有一些没有提到的重要突破和研究成果,比如半监督序列学习。这是因为它们稍微超出了本文的范围,但可以酌情阅读链接文章以了解更多信息。回到BERT因此,解决自然语言处理任务的新方法可以简化成两步:1. 在大型无标号文本语料库(可以是
10、未监督或半监督)中训练语言模型。2. 根据具体的自然语言处理任务对此大型模型进行微调,以利用此模型获得的大型知识库(有监督)。在这样的背景下,来理解一下BERT是如何开始构建一个模型的,这个模型将在很长一段时间内成为自然语言处理的优秀基准。3. 深入探究BERT的工作原理继续深入了解BERT,看看它为什么在建模语言中如此有效。之前已经介绍了BERT的功能,但它是如何做到的呢?本节将回答这个相关的问题。BERT的结构BERT是以Transformer为基础的,目前有两种变体: BERT Base: 12层(指transformer blocks), 12个attention head, 以及1.
11、1亿个参数 BERT Large: 24层(指transformer blocks), 16个attention head,以及3.4亿个参数来源:http:/jalammar.github.io/illustrated-bert/为了便于比较,基于BERT的体系结构的模型大小与OpenAI的GPT相同。所有这些Transformer层都是编码器专用。既然已经清楚了BERT的全部结构,在构建模型之前,首先需要一些文本处理步骤。文本处理BERT的开发人员加入了一组特定的规则来代表模型的输入文本,其中许多都是有助于优化模型的创造性设计。对于初学者来说,每个输入嵌入都由3个嵌入组成:1. 位置嵌入:
12、BERT学习并使用位置嵌入来表达词在句子中的位置,这些为了克服Transformer的限制而添加的。与RNN不同,Transformer不能捕获“序列”或“顺序”信息。2. 片段嵌入:BERT还可以将句子对作为任务(问答)的输入。这就是为什么它学习了第一个和第二个句子的嵌入,以帮助模型区分二者。在上面的例子中,所有标记为EA的标记都属于句A(EB同理)。3. 标记嵌入:从WordPiece标记词汇表中学习特定标记的嵌入。对于特定的标记,其输入的表示是对应的标记、片段和位置嵌入之和。这样一个综合的嵌入方案包含了很多对模型有用的信息。这些预处理步骤综合起来,使BERT具有很强的通用性。这意味着,如
13、果不对模型的结构进行任何重大更改,就可以轻松地将其训练到多种自然语言处理任务上。预训练任务BERT有两项自然语言处理任务的预训练: Masked Language Modeling Next Sentence Prediction接下来进行详述a. Masked Language Modeling (双向)双向的必要性BERT是一个深度双向模型。网络有效地从标记的右左上下文捕获信息,从第一层一直到最后一层。一般来说,要么训练语言模型来预测句子中的下一个词(GPT使用从右到左的上下文),要么训练语言模型来预测从左到右的上下文。这使得模型容易由于信息的丢失而出错。按顺序预测词ELMo试图在从左到右
14、和从右到左的上下文中训练两个LSTM语言模型,并将它们简单连接起来,解决这个问题。尽管它大大改进了现有技术,但还不够。“直观来说,人们有理由相信,深度双向模型比从左到右模型或从左到右和从右到左模型的简单连接更强大。” BERT这就是BERT超越GPT和ELMo的地方。请看下图:箭头表示从一层到下一层的信息流。顶部的绿色框表示每个输入词的最终上下文化表示。从上面的图像可以看出:BERT是双向的,GPT是单向的(信息只从左到右流动),ELMo是浅双向的。这就是Masked Language Model在图像中的表示。关于Masked Language Model假设有这样一个句子:“我喜欢阅读Analytics Vidhya上的数据科学博客”。想要训练一个双向的语言模型,可以建立一个模型来预测序列中的遗漏单词,而不是试图预测序列中的下一个单词。将“Analytics”替换为“MASK”,表示丢失的标记。然后,以这样的方式训练模型,使其能够预测“Analytics”是本句中遗漏的部分:“我喜欢阅读M