站在BERT肩膀上的NLP新秀们(PART I)

写在前面

去年NLP领域最火的莫过于BERT了,得益于数据规模和计算力的提升,BERT在大会规模语料上预训练(Masked Language Model + Next Sentence Prediction)之后可以很好地从训练语料中捕获丰富的语义信息,对各项任务疯狂屠榜。

我们在对BERT进行微调之后可以很好地适用到自己的任务上,具体可以参考之前一篇BERT简单应用:BERT模型实战之多文本分类(附源码)。

如果想深入了解BERT的运行机制,就需要去仔细地研读一下BERT的源码啦,其实也不是很难理解:BERT源码分析PART I。

在了解了BERT的发展史【NLP大杀器BERT模型解读】之后,今天这篇文章我们来看看在BERT提出大半年之后,又有哪些基于BERT的有趣的研究。

ERNIE from Baidu

ERNIE from THU

1、ERNIE: Enhanced Representation through Knowledge Integration(Baidu/ACL2019)

百度提出的ERNIE模型主要是针对BERT在中文NLP任务中表现不够好提出的改进。我们知道,对于中文,bert使用的基于字的处理,在mask时掩盖的也仅仅是一个单字,举个栗子:

我在上海交通大学玩泥巴-------> 我 在 上 海 [mask] 交 通 【mask】学 玩 【mask】 巴。

作者们认为通过这种方式学习到的模型能很简单地推测出字搭配,但是并不会学习到短语或者实体的语义信息, 比如上述中的【上海交通大学】。于是文章提出一种知识集成的BERT模型,别称ERNIE。ERNIE模型在BERT的基础上,加入了海量语料中的实体、短语等先验语义知识,建模真实世界的语义关系。

在具体模型的构建上,也是使用的Transformer作为特征抽取器。这里如果对于特征抽取不是很熟悉的同学,强烈推荐张俊林老师的"放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较"。

那么怎么样才能使得模型学习到文本中蕴含的潜在知识呢?不是直接将知识向量直接丢进模型,而是在训练时将短语、实体等先验知识进行mask,强迫模型对其进行建模,学习它们的语义表示。

站在BERT肩膀上的NLP新秀们(PART I)
具体来说, ERNIE采用三种masking策略:


  • Basic-Level Masking: 跟bert一样对单字进行mask,很难学习到高层次的语义信息;

  • Phrase-Level Masking: 输入仍然是单字级别的,mask连续短语;

  • Entity-Level Masking: 首先进行实体识别,然后将识别出的实体进行mask。

经过上述mask训练后,短语信息就会融入到word embedding中了

站在BERT肩膀上的NLP新秀们(PART I)
此外,为了更好地建模真实世界的语义关系,ERNIE预训练的语料引入了多源数据知识,包括了中文*,百度百科,百度新闻和百度贴吧(可用于对话训练)。

关于论文后面的试验就不再赘述。

reference:
  • 如何评价百度新发布的NLP预训练模型ERNIE?

  • 中文任务全面超越 BERT:百度正式发布NLP预训练模型ERNIE

  • 官方源码

2、ERNIE: Enhanced Language Representation with Informative Entities(THU/ACL2019)

本文的工作也是属于对BERT锦上添花,将知识图谱的一些结构化信息融入到BERT中,使其更好地对真实世界进行语义建模。也就是说,原始的bert模型只是机械化地去学习语言相关的“合理性”,而并学习不到语言之间的语义联系,打个比喻,就比如掉包xia只会掉包,而不懂每个包里面具体是什么含义。于是,作者们的工作就是如何将这些额外的知识告诉bert模型,而让它更好地适用于NLP任务。

但是要将外部知识融入到模型中,又存在两个问题:

  • Structured Knowledge Encoding:  对于给定的文本,如何高效地抽取并编码对应的知识图谱事实;

  • Heterogeneous Information Fusion: 语言表征的预训练过程和知识表征过程有很大的不同,它们会产生两个独立的向量空间。因此,如何设计一个特殊的预训练目标,以融合词汇、句法和知识信息又是另外一个难题。

为此,作者们提出了ERNIE模型,同时在大规模语料库和知识图谱上预训练语言模型:

  1. 抽取+编码知识信息: 识别文本中的实体,并将这些实体与知识图谱中已存在的实体进行实体对齐,具体做法是采用知识嵌入算法(如TransE),并将得到的entity embedding作为ERNIE模型的输入。基于文本和知识图谱的对齐,ERNIE 将知识模块的实体表征整合到语义模块的隐藏层中。

  2. 语言模型训练:  在训练语言模型时,除了采用bert的MLM和NSP,另外随机mask掉了一些实体并要求模型从知识图谱中找出正确的实体进行对齐(这一点跟baidu的entity-masking有点像)。

okay,接下来看看模型到底长啥样?

站在BERT肩膀上的NLP新秀们(PART I)
如上图,整个模型主要由两个子模块组成:
  • 底层的textual encoder (T-Encoder),用于提取输入的基础词法和句法信息,N个;

  • 高层的knowledgeable encoder (K-Encoder), 用于将外部的知识图谱的信息融入到模型中,M个。

knowledgeable encoder

这里T-encooder跟bert一样就不再赘述,主要是将文本输入的三个embedding加和后送入双向Transformer提取词法和句法信息:站在BERT肩膀上的NLP新秀们(PART I)

K-encoder中的模型称为aggregator,输入分为两部分:

站在BERT肩膀上的NLP新秀们(PART I)



接着利用multi-head self-attention对文本和实体分别处理:站在BERT肩膀上的NLP新秀们(PART I)然后就是将实体信息和文本信息进行融合,实体对齐函数为站在BERT肩膀上的NLP新秀们(PART I)::


站在BERT肩膀上的NLP新秀们(PART I)

上述过程就是一个aggregator的操作,整个K-encoder会叠加M个这样的block:站在BERT肩膀上的NLP新秀们(PART I)
最终的输出为最顶层的Aggregator的token embedding和entity embedding。

改进的预训练

除了跟bert一样的MLM和NSP预训练任务,本文还提出了另外一种适用于信息融合的预训练方式,denoising entity auto-encoder (dEA). 跟baidu的还是有点不一样,这里是有对齐后的entity sequence输入的,而百度的是直接去学习entity embedding。dEA 的目的就是要求模型能够根据给定的实体序列和文本序列来预测对应的实体:站在BERT肩膀上的NLP新秀们(PART I)

微调

为了使得模型可以更广泛地适用于不同的NLP任务,作者也学习BERT设计了不同的特殊的token:

  • 【CLS】:该token含有句子信息的表示,可适用于一般任务

  • 【HD】和【TL】:该token表示关系分类任务中的头实体和尾实体(类似于传统关系分类模型中的位置向量),然后使用【CLS】来做分类;

    【ENT】:该token表示实体类型,用于entity typing等任务。

    站在BERT肩膀上的NLP新秀们(PART I)


    试验部分也略过了哈~感觉有些部分还不是很清晰,需要看看源码…

reference
  • ACL 2019将会有哪些值得关注的论文?

  • ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT

  • ACL 2019 | 清华等提出ERNIE:知识图谱结合BERT才是「有文化」的语言模型

  • 官方源码

小结

芝麻街恐成最大赢家:

Bert and Ernie live together in an apartment located in the basement of 123 Sesame Street. Despite sleeping in separate beds, they share the same bedroom, which has led to some speculation that they are a representation ofgay lovers.”

抛弃模型重名的巧合,这两个工作都是将外部知识融入到基础BERT模型中,不同的是baidu将知识图谱在第一阶段直接编码进了预训练模型,而THU的模型则是选择在第二阶段将知识图谱的信息融入到预训练好的模型中去,可以更好地利用知识图谱中的实体及其内在关系等信息。


本文由作者授权AINLP原创发布于公众号平台,欢迎投稿,AI、NLP均可。原文链接,点击"阅读原文"直达:


https://blog.csdn.net/Kaiyuan_sjtu/article/details/90757442




关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


站在BERT肩膀上的NLP新秀们(PART I)


上一篇:无法导入tokenization


下一篇:(10)Python函数