知识图谱属于异质图,图谱包含三个元素:实体(图中的节点),类型(节点的标识),关系(边的标识)。KG就是把所有不同种类的信息连接在一起而得到的一个关系网络。
KG的schame表示图谱的元信息,即有哪些类型的实体,实体之间的关系,例如下面为关于论文的知识图谱schame:
假设现在有一个规模较大的知识图谱,难免缺少一些关系和实体,比如给定头节点和关系,如何预测缺少的尾节点(知识表示是为了根据已知KG,利用已知的实体集合和关系集合,补全KG):
一种办法是采用Node2Vec,将每个节点转换为embedding,然后通过GNN做节点分类。
在KG中,采用三元组表示知识:(h,r,t)
即头实体,关系,尾实体。首先,把头实体和关系转为embedding,目标是希望embedding(h,r)
接近embedding(t)
。因此有两个问题:
在图谱中,关系通常有不同的模式,比如:
TransE从关系模式出发,本质目的是补全三元组,即补全知识图谱。首先,进行node2vec操作,将节点转为embedding(具体如何转embedding可选),如果t
和(h,r)
可以组成三元组,则h
+r
的embedding等于t
的embedding。TransE主要是重新训练类似Word2Vec的embedding,使其有利于通过对隐空间向量分类补全三元组。
TransE的算法如下,输入训练集 S = { ( h , l , t ) } S=\left\{(h,l,t)\right\} S={(h,l,t)}, l ∈ L l\in L l∈L为关系, h , t ∈ E h,t\in E h,t∈E为实体,margin值 γ \gamma γ,embedding维度为 k k k,首先初始化:
然后进行循环:
基于BERT,知识表示得到了进一步加强。KG-BERT用于预测一个样本(h,r,t)
是否为一个三元组:
输入是三元组或包括上下文的三元组,BERT的CLS token用于sigmoid打分,判断输入的三元组是否可以构成三元组(KG-BERT需要在KG数据,即三元组数据上微调)
上面的架构不能分类关系,为了预测关系,可以改变KG-BERT的结构:
Node2Vec的方式比较固定,如果新加入节点,这些节点的embedding还是不好表示,因此用GNN的消息传递可以更方便扩展到这些新节点。
对于用随机游走获得Node2Vec的embedding matrix,如果有1B个节点,每个节点的embedding为64维度,则matrix就要变成[1B,64]
,这明显是不能接受的。因此,GNN被应用到KG的知识表示中,并且使用GNN,可以解决下面的问题:
GNN的种类繁多,比如GraphSAGE,这是一个无监督inductive learning的GNN(见可变图结构下的归纳式学习&图注意力)。