BERT详解:开创性自然语言处理框架的全面指南

BERT是谷歌推出的自然语言处理框架,基于Transformer结构,通过预训练和微调,实现了深度双向语言模型,对自然语言处理领域产生了深远影响。预训练在大规模无标号文本上,BERT能理解词的上下文,解决了多义词问题。通过Masked Language Modeling和Next Sentence Prediction任务,BERT学会了语言和句子间的关系。此外,文章提供了Python代码实例,展示了如何使用BERT进行文本分类。
摘要由CSDN通过智能技术生成


640?wx_fmt=jpeg


全文共9095字,预计学习时长18分钟


想象一下自己正在进行一个非常好的数据科学项目,还为了获得较好的结果用了最前沿的数据库。然后几天后,新一代前沿框架的出现,导致现有模型已经落后了。 


这不是一个假设。这就是自然语言处理领域工作者所面对的现实(和挑战)!过去两年取得的突破令人惊叹,接连出现出现各种新框架,可能比目前掌握的框架还要好。


谷歌BERT就是这样一个自然语言处理框架。这可能是近几年最有影响力的一次革新。


可以毫不夸张地说,BERT已经对自然语言处理进行了显著的变革。比如使用一个在大型无标号数据集上训练的模型,在11个独立的自然语言处理任务中取得佳绩。只需稍加微调就能实现。BERT就能实现这一点!这是自然语言处理模型设计的根本转变。 


BERT引发了许多新的自然语言处理体系结构、训练方法以及语言模型,如Google TransformerXL、OpenAI的GPT-2、XLNeT、ERNIE2.0、RoBERTa等。


本文旨在提供全面的指南,不仅包含BERT的概念,还包含对未来的自然语言处理研究产生的影响。当然,文中还有很多Python代码实例。 


640?wx_fmt=jpeg

目录


1. BERT是什么?


2. 从Word2vec到BERT: 自然语言处理对语言学习表征的探究


3. 深入探究BERT的工作原理


4. 用BERT进行文本分类(Python代码实例)


5. 其他信息: 自然语言处理的学科前沿


640?wx_fmt=jpeg

1. BERT是什么?


你已经听说过BERT、它的强大功能,以及它是如何潜在地改变自然语言处理领域的。但是BERT到底是什么呢? 


BERT的研发团队是这样描述自然语言处理框架的: 


BERT(Bidirectional Encoder Representations from Transformers)是一种Transformer的双向编码器,旨在通过在左右上下文中共有的条件计算来预先训练来自无标号文本的深度双向表示。因此,经过预先训练的BERT模型只需一个额外的输出层就可以进行微调,从而为各种自然语言处理任务生成最新模型。


对于入门者而言,这听起来过于复杂,但确实总结了BERT的优势,接下来进行详细讲解。 


首先,很容易理解BERT是Bidirectional Encoder Representations from Transformers的缩写,这里的每一个词都有其含义,本文将逐一介绍。目前,关键之处在于——BERT是以Transformer结构为基础的。 


第二,BERT的预训练是在包含整个维基百科的无标签号文本的大语料库中(足足有25亿字!) 和图书语料库(有8亿字)中进行的。


在BERT成功的背后,有一半要归功于预训练。这是因为在一个大型文本语料库上训练一个模型时,模型开始获得对语言工作原理的更深入的理解。这些知识是瑞士军刀,几乎对任何自然语言处理任务都有用。 


第三,BERT是一个“深度双向”的模型。双向意味着BERT在训练阶段从所选文本的左右上下文中汲取信息。 


模型的双向性对于理解语言的真正意义很重要。来看一个例子,有两句话,都涉及“bank”一词: 


640?wx_fmt=png
BERT同时捕获左右上下文


如果仅取左上下文或右上下文来预测单词“bank”的性质,那么在两个给定示例中,至少有一个会出错。 


解决这个问题的一个方法是,在做出预测之前同时考虑左上下文和右上下文。就像BERT一样。本文稍后会介绍如何实现这一点。 


最后,也是BERT最令人印象深刻的一面。可以通过添加几个额外的输出层来进行微调,从而成为各种自然语言处理任务最顶尖的模型。 


640?wx_fmt=jpeg

2. 从Word2vec到BERT: 自然语言处理对学习语言表征的探究


“自然语言处理的最大挑战之一是缺乏训练数据。因为自然语言处理是一个具有许多不同任务的多样化领域,大多数任务专用的数据集只包含几千或几十万个人工标记的培训示例。”——谷歌AI


Word2Vec与GloVe


通过对大量无标号文本数据的预训练模型来探究学习语言表征始于Word2Vec与GloVe中词的嵌入。这些嵌入改变了自然语言处理任务的执行方式。现在的嵌入可以捕捉词之间的上下文关系。 


640?wx_fmt=png


这些嵌入用于训练自然语言处理下游任务的模型,做出更好的预测。即使使用较少的任务专用的数据,也可以通过利用嵌入本身的附加信息来实现这一点。


这些嵌入的局限性在于他们使用了非常浅显的语言模型。这意味着它们能够捕获的信息量有限,这促使人们使用更深入、更复杂的语言模型(LSTM和GRU层)。

 

另一个关键性的制约因素是:这些模式没有考虑到该词的上下文。以上面的“bank”为例,同一个词在不同的语境中有不同的含义。然而,像Word2vec这样的嵌入将在上下文中为“bank”提供相同的向量。 


这一宝贵信息不应被忽视。 

 

输入ELMo与U

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值