CS224W摘要10.Knowledge Graph Embeddings

文章目录: KGwithGraph : , , ,
:with
公式输入请参考: 在线Latex公式
主要内容:
1.介绍 异质图 graph的概念和异质图经典: GCN (RGCN) , 这块之前也写过一点 这块之前也写过一点 , 但是这里对于参数的优化讲得细些 。
2.介绍 知识图谱补全 graph任务 。
3.通过图嵌入方式的四种实现方式( ,  ,  , 
)及其对关系表示的限制 。andGCN (RGCN)
Agraph isas
G = ( V , E , R , T ) G=(V,E,R,T) G=(V,E,R,T)
节点 , 边 , 边类型 , 节点类型
例子略
RGCN
先从多类型的边入手 , 将普通的有向图扩展为多类型的边的图结构
这里对于GNN处理有向图的公式、消息汇聚不啰嗦 。
扩展后得到:
要处理不同边 , 那么每个类型边对应一个权重:
第l+1层的表征公式为:
h v ( l + 1 ) = σ ( ∑ r ∈ R ∑ u ∈ N v r 1 c v , r W r ( l ) h u ( l ) + W 0 ( l ) h v ( l ) ) h_v^{(l+1)}=\sigma\left(\sum_{r\in R}\sum_{u\in N_v^r}\cfrac{1}{c_{v,r}}W_r^{(l)}h_u^{(l)}+W_0^{(l)}h_v^{(l)}\right) hv(l+1)?=σ???r∈R∑?u∈Nvr?∑?cv,r?1?Wr(l)?hu(l)?+W0(l)?hv(l)????
其中 W 0 ( l ) h v ( l ) W_0^{(l)}h_v^{(l)} W0(l)?hv(l)?表示当前节点本身self loop
R R R表示当前边类型 r r r的集合
c v , r c_{v,r} cv,r?是归一化项是当前节点 i i i的邻居里面节点类型为 r r r的节点数量 , 针对这一个类型的邻居进行归一化
N v r N_v^r Nvr?是当前节点 v v v的邻居里面节点类型为 r r r的节点集合
W r W_r Wr?表示不同边类型有自己的参数
效率分析这里之前没写 , 这里详细写下 。
RGCN中如果有L层 , 那么就还有L个参数矩阵: W R ( 1 ) , W R ( 2 ) , ? , W R ( L ) W_R^{(1)},W_R^{(2)},\cdots,W_R^{(L)} WR(1)?,WR(2)?,?,WR(L)?
每个矩阵维度大小为: d ( l + 1 ) × d ( l ) d^{(l+1)}\times d^{(l)} d(l+1)×d(l) ,  d ( l ) d^{(l)} d(l)是第 l l l个隐藏层的维度 , 可以看到RGCN中参数数量和关系类型数量成正比 , 知识图谱中关系类型数量很多 , 容易产生过拟合 , 不好训练 。
这里给两个方法来解决:
block
将 W r W_r Wr?弄成block形式 , 使得权重矩阵变稀疏 , 减少非零元素个数:
相当于用小的block在对角线上进行拼接 , 每个block是对应一个关系要学习的参数 , 如有有B个block , 那么参数数量从 d ( l + 1 ) × d ( l ) d^{(l+1)}\times d^{(l)} d(l+1)×d(l)减少到:
B × d ( l + 1 ) B × d ( l ) B B\times \cfrac{d^{(l+1)}}{B}\times \cfrac{d^{(l)}}{B} B×Bd(l+1)?×Bd(l)?
这个法子有一个缺点 , 可以看到各个block在大矩阵里面的关系是正交的 , 因此相互之间没有交互 , 也就是认为关系和关系之间是独立的 , 没有相互的影响 。
Basis/
类似提取公因式的思想 , 将所有的参数矩阵提取一个Share  , 然后乘以一个各个关系的常量参数:
W r = ∑ b = 1 B a r b ? V b W_r=\sum_{b=1}^Ba_{rb}\cdot V_b Wr?=b=1∑B?arb??Vb?
这里只要学习B个常量参数 a r b a_{rb} arb?即可 。
Link
因为这里有多个边类型 , 边预测在划分数据集这里要注意一点 , 节点分类任务还是一样的 。
这里要把不同类型的边都要分别划分成四块 , 因为直接随机划分会造成某种类型的边没有出现在训练集 , 只出现在测试集的情况 , 这样效果肯定扑街 。
然后给出了训练和测试这个任务的例子 , 不展开了 , 里面有提到了负样本的选取原则 , 看论文带读笔记去吧 。