ERNIE: Enhanced Language Representation with Informative Entities论文阅读笔记

论文地址:https://arxiv.org/pdf/1905.07129

github地址:https://github.com/thunlp/ERNIE

1. Abstract

自然语言表征模型最近受到非常多的关注,很多研究者将其视为 NLP 最重要的研究方向之一。例如在大规模语料库上预训练的 BERT,它可以从纯文本中很好地捕捉丰富的语义模式,经过微调后可以持续改善不同 NLP 任务的性能。因此,我们获取 BERT 隐藏层表征后,可用于提升自己任务的性能。

但是,已有的预训练语言模型很少考虑知识信息,具体而言即知识图谱(knowledge graphs,KG),知识图谱能够提供丰富的结构化知识事实,以便进行更好的知识理解。简而言之,预训练语言模型只知道语言相关的「合理性」,它并不知道语言到底描述了什么,里面是不是有什么特殊的东西。

本文通过外部知识增强语言表达,同时利用大规模语料库和知识图谱,充分利用词汇、句法和知识信息,构建了新了预训练模型。

2. Challenge

  1. Structured Knowledge Encoding(结构化的信息编码问题)

对于给定的文本,如何高效地抽取并编码对应的知识图谱事实是非常重要的,这些 KG 事实需要能用于语言表征模型。

  1. Heterogeneous InformationFusion(异构信息融合问题)

语言表征的预训练过程和知识表征过程有很大的不同,它们会产生两个独立的向量空间。因此,如何设计一个特殊的预训练目标,以融合词汇、句法和知识信息就显得非常重要了。

3. Methodology

图 2:左部分是 ERNIE 的架构。右部分是用于 token 和实体的互相融合的聚合器。信息融合层的输入有两类:一是 token 嵌入,二是 token 嵌入和实体嵌入连接起来的结果。信息融合完成后,它会为下一层输出新的 token 嵌入和实体嵌入。

首先定义token sequence为 ${w_1, w_2,…,w_n}$,n是其长度。

定义entity sequence为 ${e_1, e_2,…,e_m}$,其中m是其长度。注意很多情况下n与m并不相等。

定义token vocabulary 为 $\mathcal{V}$,定义entity list 为$\mathcal{E}$

ERNIE模型包括两个堆叠的model,the underlying textual encoder(T-Encoder)和the upper knowledgeable encoder(K-Encoder)

  • T-Encoder:负责从文本中捕获基本的词法和语法信息
  • K-Encoder:负责将知识图谱集成到底层的文本信息中

有了T-Encoder和K-Encoder,我们就可以在一个统一的特征空间中表征 token 和实体的异构信息。

我们用 N 表示 T-Encoder 的层数,用 M 表示 K-Encoder 的层数。

T-Encoder

T-Encoder 是一个多头双向Transformer,给定token sequence和entity sequence,首先将token embedding,segment embedding,position embedding 进行合并,作为T-Encoder的输入,然后计算词法和句法特征

K-Encoder

首先抽取文本中对应的实体$\{e_1,e_2,…e_m\}$,通过TransE将实体转为对应的向量表示$\{\textbf{e}_1,…,\textbf{e}_m\}$,然后将$\{\textbf{e}_1,…,\textbf{e}_m\}$和$\{\textbf{w}_1,…,\textbf{w}_n\}$喂进K-Encoder

其中$\{\textbf{w}_1^o,…,\textbf{w}_n^o\},\{\textbf{e}_1^o,…,\textbf{e}_m^o\}$会被作为其他任务的输入特征。

Knowledgeable Encoder

K-Encoder由堆叠的aggregators组成,这些aggregators是设计用来encode tokens 和 entities和他们的融合其异构功能的。

在K-Encoder中,词嵌入和实体嵌入都通过一个多头自注意力机制(MA-ATTs)

in the i-th aggregator:

之后经过一个information fusion layer:

其中$\boldsymbol{h}_{j}$是inner hidden state,采用GELU激活函数

Pre-training for Injecting Knowledge

为了通过实体将知识图谱注入语言表征模型,做了一个随机遮挡对齐的token-entity的操作,然后让模型根据对齐的token预测所有对应的实体。因为知识图谱中的实体量很大,因此,本文只预测文本出现过的实体。

首先,定义对齐实体分布:

其中linear(.)是一个线性层。上式用于计算dEA(denoising entity auto-encode)的交叉熵loss。

  1. 5%,随机替换对齐的实体,用于训练模型识别文本token对齐错误实体的情况;

  2. 15%,遮挡对齐的token-entity,用于训练模型识别实体对齐系统没有抽取所有的对齐信息;

  3. 其他,不改变,用于训练模型融合实体信息到实体表征中以更好的理解文本。

和BERT一样,ERNIE选用MLM(masked language model )模型和NSP( ext sentence prediction)作为预训练任务来让ERNIE捕获text中token的词法和语法信息。

Fine-tuning

图 3:针对具体任务修改输入句子。为了对齐不同类型输入的 token,这里使用了点线构成的矩形作为占位符。彩色矩形表示具体的标记(mark)token。

对于不同类型的常见 NLP 任务,ERNIE 可以采用类似于 BERT 的精调过程。研究者提出可将第一个 token 的最终输出嵌入(其对应于特有的 [CLS] token)用作特定任务的输入序列的表征。针对某些知识驱动型任务(比如关系分类和实体分型),可以设计出针对性的精调过程:

关系分类任务需要系统基于上下文分类给定实体对的关系标签。要针对关系分类任务精调 ERNIE,最直接的方法是将池化层应用于给定实体提及的最终输出嵌入,并将它们的提及嵌入的连接结果用于表征给定的实体对,以便进行分类。

这篇论文设计了另一种方法,即通过添加两个标记(mark)token 来凸显实体提及,从而修改输入 token 序列。这些额外的标记 token 的作用类似于传统的关系分类模型中的位置嵌入。然后,也取其 [CLS] token 嵌入以便分类。注意,研究者分别为头部实体和尾部实体设计了不同的 token [HD] 和 [TL]。

针对实体分型的特定精调过程是关系分类的一种简化版本。因为之前的分型模型对上下文嵌入和实体提及嵌入都进行了充分的利用,所以研究者认为经过提及标记 token [ENT] 修改过的输入序列可以引导 ERNIE 关注将上下文信息与实体提及信息两者结合起来。

说白了就是对于一般任务,输入为token。对于entity typing,加入了实体的标记信息。对于relation classification,加入了实体和其位置信息。

Experiments

  1. Entity typing

  1. Relation Classification

Future

  • 将知识图谱引入基于特征的预训练模型,如ELMo
  • 将多种结构的知识引入语言表示模型
  • 标注更多真实语料进行更大规模的预训练

参考链接

http://nysdy.com/post/ERNIE_Enhanced_Language_Representation_with_Informative_Entities/

https://blog.csdn.net/shine19930820/article/details/91478037

https://blog.csdn.net/summerhmh/article/details/91042273

https://www.jiqizhixin.com/articles/2019-05-26-4