K-BERT: Enabling Language Representation with Knowledge Graph
https://github.com/autoliuweijie/K-BERT.
Motivation
弥补语言模型缺乏领域知识的弊端
摘要
预先训练的语言表示模型,如BERT,从大规模语料库中获取一般的语言表示,但缺乏特定领域的知识。阅读一篇领域文本时,专家用相关知识进行推理。为了使机器能够实现这一功能,作者提出了一种基于知识的语言表示模型,其中三元组作为领域知识注入到句子中。然而,过多的知识整合可能会使句子偏离其正确的含义,这就是所谓的知识噪音(KN)问题。为了克服KN,K-BERT引入了soft-position and visible matrix 来限制知识的影响。K-BERT可以通过配备KG轻松地将领域知识注入到模型中,而无需自行预训练,因为它能够从预训练的BERT加载模型参数。
介绍
pre-train刷新了各种NLP任务的SOTA,但是在特定领域(如医药)表现不加,一个方法是重新训练个强调领域知识的pre-train model,但是计算成本太高。此外,作者考虑到将KG融入集成到语言表示模型中,使其具备领域知识。但是,这种集成面临两个挑战:
- Heterogeneous Embedding Space (HES):一般情况下,文本中文字的嵌入向量和KG中实体的嵌入向量是分开获取的,使得它们的向量空间不一致。
- Knowledge Noise (KN):过多的知识融入可能会使句子偏离其正确的意思。
K-BERT由此而生:
Methodology
Notation
对于一个句子: s s s = {
w 0 w_0 w0, w 1 w_1 w1, w 2 w_2 w2, …, w n w_n wn}, n n n为句子的长度。英语句子为word-level,本文针对character-level的中文句子。
其中,每一个token都包含在词表 V V V内。KG表示为 K K K,包含一系列三元组: ε ε ε = {
w i w_i wi, r j r_j rj, w k w_k wk}, w i w_i wi和 w k w_k wk为实体名称, r j r_j rj∈ V V V是他们之间的关系。所有的三元组均在 K K K内,即 ε ε ε∈ K K K。
Model architecture
K-BERT的模型架构由四个模块组成(如下图),即knowledge layer, embedding layer, seeing layer and mask-transformer。对于一个输入句子,knowledge layer首先从一个KG注入相关的三元组,将原始句子转换成一个知识丰富的句子树。然后句子树被同时馈入embedding layer和seeing layer。然后转换成token-level嵌入表示和可见矩阵。可见矩阵用于控制每个token的可见区域,防止因注入过多知识而改变原句的意思。
knowledge layer(KL)
知识层用于句子知识注入和句子树转换。具体地,给定输入句子 s s s = { w 0 w_0 w0, w 1 w_1 w1, w 2 w_2 w2, …, w n w_n wn}和一个KG K K K,KL输出一个句子树 t t t = { w 0 w_0