前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【NLP】 深入浅出解析BERT原理及其表征的内容

【NLP】 深入浅出解析BERT原理及其表征的内容

作者头像
用户1508658
发布2019-08-09 15:14:10
3.5K0
发布2019-08-09 15:14:10
举报
文章被收录于专栏:有三AI有三AI

本篇介绍目前NLP领域里影响力最大的预训练模型BERT。首先,大致介绍了BERT里有什么;接着,介绍了BERT的结构和其预训练的方式;最后,再总结BERT的表征的内容和分布。

作者&编辑 | 小Dream哥

1 BERT是什么?

了解自然语言处理的同学,应该没有不知道BERT的;甚至连很多自然语言处理圈外的开发的同学,都知道这个模型的厉害。不得不佩服谷歌的影响力和营销水平,当然,也确实是它的效果有这么棒。

这里就不再说BERT当年是怎么样横扫各大NLP任务榜单的故事了。毕竟现在出了个XLnet,各方面都比他强了一点点;而且,也开始有一些论文开始接BERT的短了。

那我们言归正传,现在来看看BERT究竟是什么,有什么样的结构,如何进行预训练等。

BERT,全称是Pre-training of Deep Bidirectional Transformers for Language Understanding。注意其中的每一个词都说明了BERT的一个特征。

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

Bidirectional说明BERT采用的是双向语言模型的方式,能够更好的融合前后文的知识。

Transformers说明BERT采用Transformers作为特征抽取器。

Deep说明模型很深,base版本有12层,large版本有24层。

总的来说,BERT是一个用Transformers作为特征抽取器的深度双向预训练语言理解模型

2 BERT的结构

上图是BERT的模型结构,它由多层的双向Transformer连接而成,有12层和24层两个版本。BERT中Transformer的实现与上一期讲的Transformer实现别无二致。

要理解BERT,最主要在于它预训练时采取的方法,下面我们做一个详细的讲解。

3 BERT预训练模式

(1) Input Representation

我们先看看,BERT网络接受的输入是什么,如上图所示,BERT接受的输入包括三个部分:

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

2) 句子类别的符号

3) Position Embedding,这个与Transformer中的一致。

上述三个向量相加,组成BERT的输入。

(2) Masked Language Model

那么,BERT是通过什么样的任务进行训练呢?其中一个是Masked Language Model。BERT会在训练时遮住训练语料中15%的词(实际的MASK机制还有一些调整),用符号[MASK]代替,通过预测这部分被遮住的内容,来让网络学习通用的词义、句法和语义信息。

那么,该怎么理解Masked Language Model呢?我们不妨回想一下高中阶段都做过的英语完形填空,我们在做完形填空题目的时候,为了填上空格中的词,常常需要不断的看空格词的上下文,甚至要了解整个段落的信息。有时候,有些空甚至要通过一些英语常识才能得到答案。通过做完形填空,我们能够学习到英语中很多的词义、句法和语义信息。BERT的训练过程也类似,Masked Language Model通过预测[MASK]代替的词,不断的“对比”上下文的语义,句法和词义信息,从而学到了大量相关的知识。

哈哈,不知道BERT的提出者们是不是受中国英语试卷里完形填空题目的启发呢?

(3) Next Sentence Prediction

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

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

4 BERT到底学到了什么?

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

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

上述观点来自如下的论文,该团队用一系列的探针实验,佐证了上述的观点,对我们进一步了解BERT和更有效的使用BERT有一定的指导意义。

Ganesh Jawahar Benoˆıt Sagot Djam´e Seddah (2019). What does BERT learn about the structure of language?.

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

最近有一篇论文"Probing Neural Network Comprehension of Natural Language Arguments",讨论BERT在Argument Reasoning Comprehension Task(ARCT)任务中是不是其实只是学习到了数据集中一些虚假的统计线索,并没有真正理解语言中的推理和常识。

事情大概是这样子,论文作者为了杀杀BERT的威风,挑了自然语言处理中比较难的任务ARCT,并且在测试数据中做了一些“手脚”,想试一试BERT的身手。所谓的ARCT,是一个推理理解的任务。如下图所示,展示了一个ARCT数据集中的例子。ARCT数据中有一个结论Claim,一个原因Reason,一个论据Warrant,还有一个错误论据Alternative。

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

论文作者首先在ARCT原始数据集上用BERT进行ARCT任务的预测,发现BERT的效果确实很好,达到71.6±0.04,跟没有接受过训练的人员成绩接近。

然后,研究人员研究测试数据集发现数据集里面其实隐藏了一些统计线索。简单的说就是,数据集里正确的Warrant里包含某些词的概率比错误的Warrant要高。例如,只要看到Warrant中包含not就预测其为正确的Warrant就能够达到60的正确率。

同时,研究人员还做了只把warrant和claim、warrant和reason作为输入来训练模型的实验。实验发现,BERT的效果也能达到70+。这就好像老师题目都还没有说完,学生就把答案写出来,这显然不太合理的,要么是学生作弊,要么是学生提前把答案背下来了。

最后,研究人员来了一招狠的,就是将数据集中的数据进行反转和一些词概率上的平均处理,如下所示:

实验结果令人惊讶,BERT最好的效果只有53%,只比瞎猜好一点点。

所以,BERT的预训练过程到底学到了什么呢?

要准确回答这个问题并不容易。但通过上述两篇论文在两个维度上对BERT的解析,我们心里应该能够给BERT一个清晰的定位。BERT是一个强大的预训练,因其超大的参数量和较强的特征提取能力,能够从海量的语料中学习到一些语言学和一定程度的语义信息。但是,笔者认为,跟此前的所有NLP模型一样,它还远没有学习到语言中蕴含的大量的常识和推理。例如,利用BERT或许能够从"天下雨了",推断出“要带伞”。但是更深层次的,“要带伞是因为怕淋湿,淋湿了会感冒”这些BERT是很难学到的。

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

总结

BERT是目前最火爆的NLP预训练模型,其基于MLM和双向语言模型和以Transformer作为特征抽取器,是其成功最主要的两个原因。我们先想想,BERT还有哪些地方可以改进的,下周我们介绍XLnet的时候,就可以更好的理解了。

读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"

下期预告:XLnet:BERT和GPT的结合

知识星球主要有以下内容:

(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。

(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。

(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?

转载文章请后台联系

侵权必究

往期精选

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有三AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档