深度之眼Paper带读笔记NLP.25:R-GCNs

本文深入探讨了关系图卷积网络(R-GCN)的原理与应用,R-GCN是针对知识图谱等非欧数据设计的深度学习模型,能有效处理多关系数据。文章详细解析了R-GCN的数学表达、正则项策略及其在实体分类和链接预测任务上的实验效果。
部署运行你感兴趣的模型镜像

前言

Modeling Relational Data with GraphConvolutional Networks
使用图卷积神经网络建模关系数据
作者:Michael Schlichtkrull
单位:University of Amsterdam
发表会议及时间:ESWC2018(知识图谱等语义网络的小领域的会议)
在线LaTeX公式编辑器
别人的讲解
a.非欧数据
非欧数据是生活中常见的一类数据,因为其结构化与不确定性,无法之间用grid进行表示。常见的非欧数据包括社交网络、蛋白质结构、电商网络、知识图谱等等。
b. 知识图谱
知识图谱是典型的一类非欧数据,也是目前火热的一个研究方向,熟悉常见的知识图谱,以及知识图谱可以应用到NLP中的哪些任务。

导读

非欧数据

欧式空间Euclidean domains

在这里插入图片描述
卷积神经网络很好,但是它研究的对象还是限制在Euclidean domains的数据。Euclidean data最显著的特征就是有规则的空间结构,比如图片是规则的正方形栅格,比如语音是规则的一维序列。而这些数据结构能够用一维、二维的矩阵表示,卷积神经网络处理起来很高效。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

非欧数据

我们的现实生活中有很多数据并不具备规则的空间结构,称为Non Euclidean data。比如推荐系统、电子交易、计算几何、分子结构等抽象出的图谱。这些图谱结构每个节点连接都不尽相同,有的节点有三个连接,有的节点有两个连接,是不规则的数据结构。
社交网络
在这里插入图片描述
电子商务
在这里插入图片描述
社交网风络
互联网
知识图谱
电信网络
蛋白质网络
下面左边是同质图,右边是异质图
在这里插入图片描述
1.每个节点都有自己的特征信息
2.图谱中的每个节点还具有结构信息

定义:
Graph: G = ( ν , ε ) G=(\nu ,\varepsilon ) G=(ν,ε)
ν \nu ν Set of nodes { v i } , ∣ ν ∣ = N \{v_i\},|\nu |= N {vi},ν=N
ε \varepsilon ε Set of edges { v i , v j } \{v_i,v_j\} {vi,vj}
A(adjacency matrix):
A i j = { 1   i f ( v i , v j ) ∈ ε 0   o t h e r w i s e A_{ij}=\left\{\begin{matrix} 1\space if(v_i,v_j)\in \varepsilon\\0 \space otherwise \end{matrix}\right. Aij={1 if(vi,vj)ε0 otherwise
上式中的1也可以替换为权值。

如何利用图结构?

Take adjacency matrix A and feature matrix X ∈ R N × E X \in \mathbb{R}^{N×E} XRN×E
Concatenate them X i n = [ X , A ] ∈ R N × ( N + E ) X_{in}=[X,A]\in \mathbb{R}^{N×(N+E)} Xin=[X,A]RN×(N+E)
Feed them into deep (fully connected) neural net
在这里插入图片描述
Problems:
·Huge number of parameters O(N)
·Needs to be re-trained if number of nodes changes(隐层的结点数量是等于N+E的)
·Does not generalize across graphs

知识图谱

知识就是力量

在这里插入图片描述
上面的非结构化文字可以用下面的结构化知识图谱来表示:
在这里插入图片描述

知识推理

在这里插入图片描述

知识图谱

知识图谱本质上是一种语义网络。其结点代表实体(entity)或者概念(concept),边代表实体/概念之间的各种语义关系。
在这里插入图片描述
知识库是一个有向图
-多关系数据(multi-relational data)
-节点:实体/概念
-边:关系/属性
-关系事实=(head,relation,tail)
,head:头部实体
,relation:关系/属性tail:尾部实体
例如:
在这里插入图片描述
在这里插入图片描述
Node:值(Value)
实体(Entity)
(姚明,出生地,上海市)
字符串(String)
(北京大学,学术传统,兼容并包、思想自由)
-数字(Number)
平方公里:(北京市,面积,1.641万)
公斤:(姚明,体重,140公斤)
米:(姚明,身高,2.29米)

-时间(Date)
(姚明,出生年份,1981年)
-枚举(Enumerate)
(姚明,性别,男)

边:关系
-Subclass
-Type
-Relation
-Property、Atribute
边的例子:
在这里插入图片描述
在这里插入图片描述

前期知识储备

非欧数据:了解实际生活中有哪些非欧数据
知识图谱:掌握知识图谱的基本概念,包括实体和关系
图卷积网络:了解图卷积神经网络

精读

GCN

动机

在第一课泛读中,提到了如果用FC来表述一个图(非欧数据),会有很多缺陷,如何解决呢?就是用到GCN
在这里插入图片描述
h i l + 1 = σ ( ∑ j ∈ N i g ( h i l , h j l ) ) h_i^{l+1}=\sigma\left(\sum_{j\in N_i }g(h_i^l,h_j^l)\right) hil+1=σjNig(hil,hjl)
给定其中 h i l h_i^l hil是顶点 v i v_i vi在第l层的特征表示, σ \sigma σ表示特征激活函数例如relu, N i N_i Ni则是表示传递消息给顶点 v i v_i vi的所有节点,通常是顶点 v i v_i vi的入边节点。g表示聚合特征的函数,有多种表现形式。总的来说,GCN接受顶点的所有入边传递来的上一层的顶点特征消息,做相应的变换,并将其加和起来,最后通过一个激活函数作为本层的输出。实际使用中,会使用下面这种形式:
h i l + 1 = σ ( w 0 l h i l + ∑ j ∈ N i 1 c i , j w 1 l h j l ) (1) h_i^{l+1}=\sigma\left(w_0^lh_i^l+\sum_{j\in N_i }\frac{1}{c_{i,j}}w_1^lh_j^l\right) \tag{1} hil+1=σw0lhil+jNici,j1w1lhjl(1)
下面来看具体步骤:
第一步:发射(send)每一个节点将自身的特征信息经过变换后发送给邻居节点。这一步是在对节点的特征信息进行抽取变换。视频里面是动图,这里没法展示,就是每个结点会把自己的信息发射出去。
在这里插入图片描述
第二步:接收(receive)每个节点将邻居节点的特征信息聚集起来。这一步是在对节点的局部结构信息进行融合。就是上面公式1中的加和操作(对所有的邻居结点)。
第三步:变换(transform)把前面的信息聚集之后做非线性变换,增加模型的表达能力。注意:图结构不变,变的是结点的特征
在这里插入图片描述
GCN具有卷积神经网络的以下性质:
1.局部参数共享,算子是适用于每个节点(圆圈代表算子),处处共享。指的是公式中的 w 0 和 w 1 w_0和w_1 w0w1
2.感受域正比于层数,最开始的时候,每个节点包含了直接邻居的信息,再计算第二层时就能把邻居的邻居的信息包含进来,这样参与运算的信息就更多更充分。层数越多,感受域就更广,参与运算的信息就更多。
在这里插入图片描述
GCN模型同样具备深度学习的三种性质:
1.层级结构(特征一层一层抽取,一层比一层更抽象,更高级)
2.非线性变换(增加模型的表达能力)
3.端对端训练(不需要再去定义任何规则,只需要给图的节点一个标记,让模型自己学习,融合特征信息和结构信息。)

R-GCN

模型

在这里插入图片描述

R-GCN

h i l + 1 = σ ( w 0 l h i l + ∑ r ∈ R ∑ j ∈ N i r 1 c i , j w r l h j l ) (2) h_i^{l+1}=\sigma\left(w_0^lh_i^l+\sum_{r\in R}\sum_{j\in N_i^r }\frac{1}{c_{i,j}}w_r^lh_j^l\right)\tag{2} hil+1=σw0lhil+rRjNirci,j1wrlhjl(2)
和GCN公式1对比,右边部分对于结点本身 w 0 l h i l w_0^lh_i^l w0lhil的计算是一样的。不同是R-GCN对于不同类型的边加入了不同的权重矩阵,换句话说R-GCN把边的权重考虑到计算中来了。但是,为每一条边加上权重矩阵 w r l w_r^l wrl(每一个边代表一种关系,每一个关系加一个权重)会导致巨大的参数量,会导致过拟合。解决方法就是:减少参数量(使用基分解、对角块分解),具体就是正则项
给定其中 h i l h_i^l hil是顶点 v i v_i vi在第l层的特征表示, σ \sigma σ表示特征激活函数例如relu, N i r N_i^r Nir是表示和 v i v_i vi相连且关系为r的所有节点,R是边的关系集合。
总的来说,GCN接受顶点的所有入边传递来的上一层的顶点特征消息并根据边的关系不同做相应的变换,并将其加和起来,最后通过一个激活函数作为本层的输出。

正则项

基分解: W r l = ∑ b = 1 B a r , b l V b l W_r^l=\sum_{b=1}^Ba_{r,b}^lV_b^l Wrl=b=1Bar,blVbl
W r l W_r^l Wrl被认为是基变换(向量) V b l V_b^l Vbl与系数 a r , b l a_{r,b}^l ar,bl的线性组合,且仅和关系r相关。这个东西的思想是权值可以看做是一个基础矩阵(这个部分是共享的)与向量(这个部分是特有的,这个向量有b个数)相乘的结果,这样就把很多复杂参数简化为了很多简单向量。
块对角分解:
W r l = d i a g ( Q 1 , r l , . . . , Q B , r l )   Q B , r l ∈ R d l + 1 B × d l B W_r^l=diag(Q_{1,r}^l,...,Q_{B,r}^l) \space Q_{B,r}^l\in \mathbb{R}^{\frac{d^{l+1}}{B}×\frac{d^l}{B}} Wrl=diag(Q1,rl,...,QB,rl) QB,rlRBdl+1×Bdl
这个方法的思想是把权重矩阵中转换为对角线矩阵,非对角线带的位置都置为0.
基函数分解可以看作是不同关系类型之间权重有效共享的一种形式,而块分解可以看作是每个关系类型的权重矩阵上的稀疏性约束。两种分解都减少了拟合多关系数据所需的参数数量。同时,可以减轻对长尾关系的过度拟合,因为参数的更新在长尾关系和频繁关系之间是共享的。

实体分类

给定结点,得到结点类型
在这里插入图片描述

链接预测

根据实体分类得到s和o,然后判断s和o之间的关系是r的概率,即
(s,r,0)三元组—>f(s,r,o)三元组成立概率
具体上是用s的向量表示的转置乘上关系矩阵乘上o的向量表示,最后得到一个得分
f ( s , r , o ) = e s T R r e o f(s,r,o)=e_s^TR_re_o f(s,r,o)=esTRreo
在这里插入图片描述
然后用下面的损失函数去学习关系的向量矩阵。
l = ∑ ( s , r , o , y ) ∈ ζ y l o g s i g m o i d ( f ( s , r , o ) ) + ( 1 − y ) l o g ( 1 − s i g m o i d ( f ( s , r , o ) ) ) l=\sum_{(s,r,o,y)\in\zeta}ylogsigmoid(f(s,r,o))+(1-y)log(1-sigmoid(f(s,r,o))) l=(s,r,o,y)ζylogsigmoid(f(s,r,o))+(1y)log(1sigmoid(f(s,r,o)))

实验结果

实体分类

有两个数据集结果不是很好,论文里面有讲why
在这里插入图片描述

链接预测

在这里插入图片描述

讨论和总结

A.提出一种面向关系图的图卷积
1.考虑关系类型对特征矩阵的影响
2.使用分解策略减少参数量
B.在实体分类和链接预测任务上验证了有效性
C.对后续工作有很大启发
实验分析十分详尽

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值