基于Node2Vec补全KG
知识图谱属于异质图,图谱包含三个元素:实体(图中的节点),类型(节点的标识),关系(边的标识)。KG就是把所有不同种类的信息连接在一起而得到的一个关系网络。
KG的schame表示图谱的元信息,即有哪些类型的实体,实体之间的关系,例如下面为关于论文的知识图谱schame:
假设现在有一个规模较大的知识图谱,难免缺少一些关系和实体,比如给定头节点和关系,如何预测缺少的尾节点(知识表示是为了根据已知KG,利用已知的实体集合和关系集合,补全KG):
一种办法是采用Node2Vec,将每个节点转换为embedding,然后通过GNN做节点分类。
在KG中,采用三元组表示知识:(h,r,t)
即头实体,关系,尾实体。首先,把头实体和关系转为embedding,目标是希望embedding(h,r)
接近embedding(t)
。因此有两个问题:
- 如何设计embedding;
- 如何让两者接近;
在图谱中,关系通常有不同的模式,比如:
- 对称关系:同学,同事(互为同学,互为同事)
- 逆向关系:昆凌是周杰伦的老婆,周杰伦是昆凌的老公
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,首先初始化:
- 对于每个 l ∈ L l\in L l∈L,首先进行采样 l ∼ u n i f o r m ( − 6 k , 6 k ) l\sim uniform(-\frac{6}{\sqrt{k}},\frac{6}{\sqrt{k}}) l∼uniform(−k6,k6),并归一化 l = l / ∣ ∣ l ∣ ∣ l=l/||l|| l=l/∣∣l∣∣
- 对于每个实体 e ∈ E e\in E e∈E,采样 e ∼ u n i f o r m ( − 6 k , 6 k ) e\sim uniform(-\frac{6}{\sqrt{k}},\frac{6}{\sqrt{k}}) e∼uniform(−k6,k6)
然后进行循环:
- e = e / ∣ ∣ e ∣ ∣ e=e/||e|| e=e/∣∣e∣∣,从 S S S中采样batch size为 b b b的子集 S b a t c h S_{batch} Sbatch, T b a t c h T_{batch} Tbatch为空集;
- 对于子集中的每个样本 ( h , l , t ) ∈ S b a t c h (h,l,t)\in S_{batch} (h,l,t)∈Sbatch,从另一个子集采样一个样本 ( h ′ , l , t ′ ) ∈ S b a t c h ′ (h',l,t')\in S'_{batch} (h′,l,t′)∈Sbatch′,将样本加入 T b a t c h = T b a t c h ∪ { ( ( h , l , t ) , ( h ′ , l , t ′ ) ) } T_{batch}=T_{batch}\cup\left\{((h,l,t),(h',l,t'))\right\} Tbatch=Tbatch∪{((h,l,t),(h′,l,t′))}
- 更新embedding使得: m i n ∑ [ γ + d ( h + l , t ) − d ( h ′ + l , t ′ ) ] min\sum[\gamma+d(h+l,t)-d(h'+l,t')] min∑[γ+d(h+l,t)−d(h′+l,t′)]
基于BERT,知识表示得到了进一步加强。KG-BERT用于预测一个样本(h,r,t)
是否为一个三元组:
输入是三元组或包括上下文的三元组,BERT的CLS token用于sigmoid打分,判断输入的三元组是否可以构成三元组(KG-BERT需要在KG数据,即三元组数据上微调)
上面的架构不能分类关系,为了预测关系,可以改变KG-BERT的结构:
基于GNN补全KG
Node2Vec的方式比较固定,如果新加入节点,这些节点的embedding还是不好表示,因此用GNN的消息传递可以更方便扩展到这些新节点。
对于用随机游走获得Node2Vec的embedding matrix,如果有1B个节点,每个节点的embedding为64维度,则matrix就要变成[1B,64]
,这明显是不能接受的。因此,GNN被应用到KG的知识表示中,并且使用GNN,可以解决下面的问题:
- 节点分类,边预测,节点聚类(GNN的pooling),图相似度(判断两个图的相似度)
GNN的种类繁多,比如GraphSAGE,这是一个无监督inductive learning的GNN(见可变图结构下的归纳式学习&图注意力)。
图级别的分类涉及到图上的pooling操作,比如: