Subgraph-augmented Path Embedding for Semantic User Search on Heterogeneous Social Network
先上图
ABSTRACT 摘要
在图中找相似用户,以往的工作是建立一个图中用户到用户的路径,此论文的方法是建立用户到用户之间的子图,建立方法:
Subgraph-augmented Path Embedding (SPE) framework
INTRODUCTION 介绍
-
用户间的关系子图
alice和bob中间有三种关系:
user-user;user-college-user;user-college&location-user -
表示子图的方法
-
子图嵌入的方法 rnn
RELATED WORK 相关工作
略
PROBLEM FORMULATION 问题公式描述
-
异构信息网络:
-
子图模式
-
子图实例:就是在异构信息网络中,子图模式的一个实例
-
目标路径
-
子图增强节点
键值对 -
子图增强路径
是将子图增强节点连起来的路径
-
问题的输入和输出
输入:
异构信息网络G;子图模式M;子图实例 I
由以上的到了training tuples D=(q,v,u) 用来进行模型训练
q是query user,v和u都是user,但v离q更近
输出:
subgraph-augmented path embedding vector Z(q,v)也就是子图增强路径嵌入向量,这个向量是user q和v之间的子图增强路径s-path使用embedding方法的到的向量。
由于p和v之间有很多s-path,因此将这些s-path的向量Z(q,v)集合的到新的向量f(q,v)
使用多层神经网络来求z(q,v)和f(q,v)
模型参数
- 为了计算z(q,v)和f(q,v)的神经网络中的参数
- proximity estimation参数 θ \theta θ
在参数学习中,利用
π
\pi
π(q,v)>
π
\pi
π(q,u)来学习
其中
π
\pi
π(q,v)=
θ
T
\theta^T
θTf(q,v)
π
\pi
π是Proximity score,得分
θ
\theta
θ是 proximity estimation参数,需要学习的到
f是向量,也要学习的到
S-PATH CONSTRUCTION 建立s-path
通过已有的两种先验知识来建立s-path
- object path -> s-path
- frequent subgraph patterns M -> s-path
建立s-path的算法,过程在算法右侧总结了:
S-PATH EMBEDDING s-path嵌入成向量
得到了图上的s-path,在这里,要将它们嵌入成向量。
s-path的嵌入分成几个部分和几个步骤,每一个step都可以在下图看到:
- Subgraph Embedding 子图嵌入
采用了「Maximum Common Subgraph (MCS) approach」(最大公共子图就是两个图相同的部分)方法来丈量两个图的相似度,也就是,两个图相同当且仅当他们的结构相同。
衡量两个图的相似度的公式s是:
利用相似度s,使用auto-decoder来学习的到图mi的向量xi
si–>encoder–>xi–>decoder–>si
我们需要的就是中间层的xi,具体的网络中的数学表达式见下图,配合我的红字备注,理解起来很清楚。
- S-Node Embedding
使用Subgraph Embedding的到的向量来表达S-Node:
- S-Path Embedding
在s-node的表之上使用LSTM网络来进行s-path的嵌入
此时在一条s-path上有多个s-node,使用多对多的LSTM网络来的到s-path的向量表达。
LSTM多对多模型我在之前的时间序列博客中写过,可以参考,很简单。
在这里,我给出我之前博客中写的LSTM的基本介绍:
重要的参数在输入门,输出门和遗忘门中。注意此时的输入门和输出门并不是整个网络的输入和输出,而是在每一个子网中的公式表达,请仔细理解图。
在论文中的LSTM的表达如下,下面的表达其实就是各种gate的表达,参数也在gate中。
- Proximity Embedding
在得到s-path embedding的基础之上建立Proximity Embedding。
这里我们得到了节点q,v之间所有的s-path embedding。结合所有的这些s-path embedding,我们建立Proximity Embedding,也就是一个综合的Embedding。
其实s-path embedding就是我们之前说的qv之间的z(q,v),而Proximity Embedding是f(q,v)。
这里的方法和之前由Subgraph Embedding得到s-node embedding的方法一样,也就是一个多了几个参数的softmax。
这样,我们的到了一个完整的网络:
Subgraph Embedding->
s-node embedding->
s-path embedding->
Proximity Embedding
再把图贴一遍:
第一步Subgraph Embedding的参数是我们在auto-encoder中就已经学出来的,因此不会给大网络贡献未知参数,这里的参数主要在s-node embedding的加权表达中,s-path embedding的LSTM网络中和Proximity Embedding的加权表达中。
END-TO-END TRAINING 模型训练
这里是上面整个图的最后一步,也就是我们需要建立一个目标函数,才能使得整个网络进行学习。
在这篇论文中,目标函数的设置为:
也就是我们之前说过利用
π
\pi
π(q,v)>
π
\pi
π(q,u)来学习。其实就是最大化
π
\pi
π(q,v)和
π
\pi
π(q,u)的区别。
这样来说,我们就学习到了一个网络中s-path的向量表达和proximity score的表达式
π
\pi
π。
π
\pi
π(q,v)=
θ
T
\theta^T
θTf(q,v)
对于测试集来说,我们可以使用此网络的到问询节点和目标节点的s-path的向量表达,并且通过proximity score的表达式 π \pi π,我们可以判断问询节点和每个目标节点的proximity score,越大表示越相关。这样,我们就可以找到和问询节点相关的其他节点。
EXPERIMENTS
略
CONCLUSION
略
总结
之前的network embedding 都是把关注点放在了path 例如meta-path上,而这篇论文是使用子图建立了s-path,来进行embedding。
可以这样说,之前的研究知识emdedding了这个网络的语义信息,而此论文可以embedding网络的语义信息和结构信息。