知识图谱(5)知识表示

基于Node2Vec补全KG

知识图谱属于异质图,图谱包含三个元素:实体(图中的节点),类型(节点的标识),关系(边的标识)。KG就是把所有不同种类的信息连接在一起而得到的一个关系网络。

KG的schame表示图谱的元信息,即有哪些类型的实体,实体之间的关系,例如下面为关于论文的知识图谱schame:
知识图谱(5)知识表示_第1张图片

假设现在有一个规模较大的知识图谱,难免缺少一些关系和实体,比如给定头节点和关系,如何预测缺少的尾节点(知识表示是为了根据已知KG,利用已知的实体集合和关系集合,补全KG):
知识图谱(5)知识表示_第2张图片
一种办法是采用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 lL为关系, h , t ∈ E h,t\in E h,tE为实体,margin值 γ \gamma γ,embedding维度为 k k k,首先初始化:

  • 对于每个 l ∈ L l\in L lL,首先进行采样 l ∼ u n i f o r m ( − 6 k , 6 k ) l\sim uniform(-\frac{6}{\sqrt{k}},\frac{6}{\sqrt{k}}) luniform(k 6,k 6),并归一化 l = l / ∣ ∣ l ∣ ∣ l=l/||l|| l=l/∣∣l∣∣
  • 对于每个实体 e ∈ E e\in E eE,采样 e ∼ u n i f o r m ( − 6 k , 6 k ) e\sim uniform(-\frac{6}{\sqrt{k}},\frac{6}{\sqrt{k}}) euniform(k 6,k 6)

然后进行循环:

  • 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)是否为一个三元组:
知识图谱(5)知识表示_第3张图片
输入是三元组或包括上下文的三元组,BERT的CLS token用于sigmoid打分,判断输入的三元组是否可以构成三元组(KG-BERT需要在KG数据,即三元组数据上微调)

上面的架构不能分类关系,为了预测关系,可以改变KG-BERT的结构:
知识图谱(5)知识表示_第4张图片

基于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操作,比如:
知识图谱(5)知识表示_第5张图片

你可能感兴趣的:(图神经网络,知识图谱,人工智能)