ERNIE: Enhanced Language Representation with Informative Entities
当前的预训练语言模型中没有融入KGs信息。而KGs能够为语言理解提供丰富的结构化信息。因此本文提出一种基于大规模语料和KGs训练的增强语言模型ERNIE。实验证明在knowledge-driven任务上,相比于bert取得显著提升。
bert融合上下文,ernie融合上下文和其对应知识库信息。
例如:周杰伦, bert输出只有语义上的信息。
而本文观点是:不仅有语义信息,还要融入KGs信息,例如周杰伦是歌手的信息。
再例如:Bob Dylan 同时是歌曲作家和书籍作者,语义模型很难学出。
knowledge-driven task: entity typing、Relation Classification
-
什么是结构化的知识信息?

结构化信息:图结构,包含node(实体)、边(实体间关系),如何embedding图结构呢?本文使用TransE,见下文。
如果没有Blowin’ in the Wind=song, Chronicles=book,entity typing很难推断出bob dylan是songwriter、writer。
问题:
- Structured Knowledge Encod-ing:怎么将KG信息编码。
- Heterogeneous Information Fusion:怎么融合词汇、句法和知识信息。
模型结构:

{w1,…,wn}=T-Encoder ({w1,…,wn})
{w1o,…,wno},{e1o,…,eno}=K-Encoder ({w1,…,wn},{e1,…,em})
Textual-Encoder
是一个多层的双向Transformer encoder,输入每个词语{w1,…,wn}的token embedding, segment embedding, positional embedding求和。

“segment embedding”的概念来区分句子。对于句对来说,就用embedding A和embedding B来分别代表左句子和右句子,例如左句都是1, 右句都是0;而单个句子来说,就只有embedding A。
Knowledgeable Encoder
输入各个实体{e1,...,en},通过预训练TransE将实体转化为embedding向量。
TransE伪代码,还是比较容易懂。
目标: f(“Bob Dylan”) + f(“is_a”) = f(“Songwriter”)
其中:h = Bob Dylan, l = is_a, t = Songwriter。同时也要引入负样本,非l两边的节点加入作为h’, t’。(h’, l, t’)构成负样本。

S(h,ℓ,t)′={(h′,ℓ,t)∣h′∈E}∪{(h,ℓ,t′)∣t′∈E}
实体和token的embedding通过多头的attention:
{w~1(i),…,w~n(i)}=MH−ATT({w1(i−1),…,wn(i−1)}
{e~1(i),…,e~m(i)}=MH−ATT({e1(i−1),…,em(i−1)}
i-th information fusion layer:
对于包含实体信息的tokens:
hjwj(i)ek(i)=σ(W~t(i)w~j(i)+W~e(i)e~k(i)+b~(i))=σ(Wt(i)hj+bt(i))=σ(We(i)hj+be(i))
未包含token的实体:
hj=σ(W~t(i)w~j(i)+b~(i))wj(i)=σ(Wt(i)hj+bt(i))
输出w, e怎么使用?
Pre-training for Injecting Knowledge
为了将KGs信息表达,提出了新一个预训练任务。
对于句子,随机掩盖token-entity的entity,让模型来预测,搜索空间是句子中所有出现过的entites,即
p(ej∣wi)=∑k=1mexp(1 i near (wio)⋅ek)exp(1inear(wio)⋅ej)
损失函数使用交叉熵。
模拟随机噪音:
- 5%的概率,将token-entity对的entity随机替换掉。加入噪音,使得模型在少量token的实体信息错误情况下的鲁棒性。
- 15%概率,掩掉token-entity。
- 其余的正常。
另外,和bert一样,使用masked language model (MLM) and next sentence prediction (NSP)作为语言模型。
Fine-tuning

对于一般任务,输入为token。
对于entity typing,加入了实体的标记信息。
对于relation classification,加入了实体和其位置信息。
对于普通任务,使用方法和bert一致。

实验
什么是关系抽取和关系分类。
- 关系抽取: 从一个句子中判断两个entity是否有关系,一般是一个二分类问题,指定某种关系
- 关系分类: 一般是判断一个句子中 两个entity是哪种关系,属于多分类问题。

例如:第一行为sentence,第二行为两个entity的relation
GLUE:

reference
- git: https://github.com/thunlp/ERNIE.
- ERNIE: Enhanced Language Representation with Informative Entities