专栏首页Datawhale专栏【NLP】 深入浅出解析BERT原理及其表征的内容

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

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作为特征抽取器,是其成功最主要的两个原因。

本文分享自微信公众号 - Datawhale(Datawhale)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从Transformer到BERT模型

    ELMo是一个语言模型,主要是做给定文本的Context,预测下一个词。ELMo最重要的一个特点是部分解决了一词多义的情况,没有完全解决哟!它为解决一词多义提供...

    Datawhale
  • PyTorch常见的坑汇总

    最近刚开始用pytorch不久,陆陆续续踩了不少坑,记录一下,个人感觉应该都是一些很容易遇到的一些坑,也在此比较感谢帮我排坑的小伙伴,持续更新,也祝愿自己遇到的...

    Datawhale
  • 深度学习在推荐系统中的应用

    2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一时成为轰动全球的重大新闻,被全球多家媒体大肆报道。AlphaGo之所以取得...

    Datawhale
  • 从Transformer到BERT模型

    ELMo是一个语言模型,主要是做给定文本的Context,预测下一个词。ELMo最重要的一个特点是部分解决了一词多义的情况,没有完全解决哟!它为解决一词多义提供...

    Datawhale
  • 内存用量1/20,速度加快80倍,腾讯QQ提出全新BERT蒸馏框架,未来将开源

    BERT 已经被验证是解决口语化短文本语义量化的极为有效的工具,对于口语化人机交互系统如 FAQ、语音助手等产品意义重大。但受限于模型的高复杂度和高计算量,其产...

    机器之心
  • BERT 的演进和应用

    Pre-train language model 风头正盛,以 BERT 为代表的模型也在各个任务上屠榜,有一统天下的趋势。知乎上也有不少文章对 BERT 的原...

    zenRRan
  • 实战 | BERT fine-tune 终极实践教程

    AI科技评论按:从 11 月初开始,google-research 就陆续开源了 BERT 的各个版本。google 此次开源的 BERT 是通过 tensor...

    AI科技评论
  • 论文解读 | BERT详解:开创性自然语言处理框架的全面指南

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

    昱良
  • 所有你要知道的 BERT 模型压缩方法,都在这里!

    模型压缩可减少受训神经网络的冗余,由于几乎没有 BERT 或者 BERT-Large 模型可直接在 GPU 及智能手机上应用,因此模型压缩方法对于 BERT 的...

    AI科技评论
  • 3分钟看懂史上最强NLP模型BERT

    然后,使用少量经过标记的训练数据对模型进行fine-tune,以监督学习的方式,执行多种监督任务。

    昱良

扫码关注云+社区

领取腾讯云代金券