动态图嵌入研究现状,方向(综述研读)

文章A Survey on Embedding Dynamic Graphs 2021

上来直奔最关键的地方,嵌入方法,不是纯翻译,只讲重要的地方,需要有一些基础,遇到某些我认为重要的概念会进行解释。

  1. 嵌入类型

针对动态图的嵌入实际上是有两种分类,时序嵌入Temporal Embedding 和拓扑结构嵌入Topological Embedding

1.1时序嵌入

1.1.1 沿时间嵌入

讲人话就是每个点/边/子图都映射为一个低维向量

如下图,每一个节点的每一个时间戳都被映射

1.1.2时间分组嵌入

很明显,就是把时间戳长度扩大并没有本质差别,将t0,t1整合为一个T1......,如此这般这样做的好处大概是可以减小计算量?还有个整体时间嵌入 each node/edge/substructure/graph at every time t ∈ T is represented as a single vector in 如图d。本质没差别,一起说了。

1.2拓扑嵌入

就是按边,按节点,子图结构沿时间嵌入。

  1. 嵌入技术

此部分主要分几类:矩阵分解方法、机器学习方法、基于随机游走的方法、基于边重建优化的方法、图核方法(自己翻译的具体见下面)、

2.1 矩阵/张量分解方法

先介绍一下,主要有两种思路,一种是沿时间顺序,去对去接近度矩阵进行分解,另一种是采取三维的张量,前两维是关于节点接近度的,最后一维是关于时间的。由此就存在了矩阵分解和张量分解两种方式。

2.1.1矩阵分解

优化损失函数:

使用Laplacian Eigenmaps 算法可以用来降维

算法思想大致如上,通过优化这个损失函数,来得到嵌入y。而对于时序图嵌入需要做一些改动如下,

这个公式的意思是,利用∆t来限制时间戳长度,是两个连续时间戳所贡献的损失函数值,是对于某一个时间戳上,它的损失函数值(例如在t1时刻,某个节点\边\子图的嵌入,通过对应目标函数计算的损失值),即对于你想要嵌入的目标,会考虑它在所有时间尺度上的嵌入+连续时间上的影响,同时优化到最优。

另有一种损失优化方案:

与上面的优化限制方式不同,此方案通过初始图得到一个接近度矩阵S(0),然后随着时间戳进行优化,每次去优化计算限制如下

通过矩阵的模的大小来保证,我的理解是,将每次迭代更新保证在一个小范围内,综述上说跟据矩阵扰动理论来的,本人不了解。大概综合思想也是想保证嵌入向量跟原来的图差异尽可能小。

时序矩阵分解:

这个方法是分解一个时间依赖的接近度矩阵S(t),如下,其中h为一个element-wise非线性操作,U是常量矩阵,代表着节点的属性之类的信息,V(t)是一个时间依赖矩阵(我理解是一个自变量是时间,映射到矩阵的一个函数)。模式有了,接下来的问题就是如何设计U与V。都是|V|*k维矩阵,K维需要嵌入维度

存在一种名为DBMM的方式来设计V,用一个转置矩阵T来限制,如下条件,保证

后面沿着这个思路探索,又提出将V(t)作为一个多项式函数:

其中的W是V|*k维矩阵,是通过学习得到的。这样就实际上可以得到了两个嵌入向量,一个是U的行为代表的常量项嵌入,一个是V的行代表的时间变化嵌入向量。

两者结合起来,就是一个完整的嵌入思路。

2.1.2张量分解

所谓张量就是高阶的向量(二维向量就是矩阵,三维可以想象成魔方),动态的图嵌入通常是用三维的来表示,目前以及有很多张量的提取结构信息的方法了,这个动态图嵌入通常是用CANDECOMP/PARAFAC (CP)族的方法进行分解,也有用Tucker分解方法的。基本原理就很简单,分解就完事了,但是第一种算的快,有效率,第二种就不太行了,费时间。

3.1 基于深度学习的方法

深度学习方法,在很多领域都大有用武之地,对于静态图的深度学习方式很多,如GCN,SDNE之类。在动态图学习领域大致可以分为两大类:编码-解码结构和生成模型。编码-解码比较好理解,生成模型我理解是从样本出现的概率训练一个模型,如果这个模型能让样本出现的概率最大,那么用这个模型去生成的embedding就相当可信。

3.1 Encoder-Decoder Architecture

这种模式的方法,主要是针对于重建原始数据,或者针对性解决问题会采用,例如分类问题。

首先是传统autoencoder:这种基本上就是对图的每一个快照都使用一次类似于对静态图的那种嵌入,例如对每个快照都使用SDNE算法。

3.1.1 传统方式

对于DynGEM他对于每一个时间戳的快照都有一个对应的编码器,并且,两个连续时间戳的编码器会共享参数(说是这样可以处理节点数量增加的情况)。LDANE,在上面方法的基础上,它在损失函数上加一项,边缘排序损失项(margin-based ranking loss term)用于保证两个相似的节点的嵌入在嵌入空间中,会比两个不相似的节点更接近。他们都是依靠RNN进行优化。DyGGNN用到的是GGNN去捕获拓扑结构并用LSTM去编码。

3.1.2 Dynamic Autoencoders

这种方法的思想是把嵌入问题,看作是一个时序图重建问题。这个怎么理解呢?我认为,就是通过一个encoder去找到一个embedding,然后利用这个embedding去重建时序上的图,然后拿这个重建的图和实际时序上接下来出现的图做对比,如果二者越相近,那么就侧面反映了这个embedding的效果越好。需要注意的一点是,这种方法,输入是一个图,输出是一个重建图。

以上的方法基本都大差不差,要么是用图卷积学习,要么是用各种RNN以及其变体。讲个结构稍微有点改动的EvolveGCN,他是怎么搞的呢?他是先对每一个快照都会用一个GCN去对应,去学拓扑结构嵌入,注意这里除了第一个GCN的参数是设置的,其他都是学习来的,它会用一个GRU或LSTM去学习GCN的参数,输入就是上一个时间戳的参数,输出就是下一个隐藏层的参数。这样一来就建立的不同时间戳上GCN的时序联系。

3.1.2 Discriminator Networks

这种是任务驱动型方法,但是我不知道为什么这篇综述会把他单独分为一类。都是GCN,LSTMs那一套东西,加点注意力机制各种组合,可能我还理解不到位,回头找几篇这个上面的论文看一下,细细研究一下。

3.2 Generative Models

这个思路有两个大类:一、用变分编码的方式,把输入当初在隐藏空间中的分布。二、用GAN的思路去走

3.2.1Based on Variational Autoencoders

这个的思路是,用原始数据点,去生成一个分布(通常是多重高斯分布)。即默认这个原始数据,是遵循一个默认分布的,然后去学习这个分布的参数,然后你需要预测的embedding,就在这个分布里面去采用。总体来说就类似,把一个节点的各种特征作为高维空间的坐标,生成分布之后,就去高维空间里找。

所有的这个思路都是来自于VGAE算法,对每个快照进行处理。基本都是按照VAE过程演化,有的加了一个时间顺滑项,有的把GCN和LSTM组合起来。BurstGraph框架也是基于这个思想,这个框架是研究图中突发性的改变,把邻接矩阵分成标准邻接矩阵和突发邻接矩阵,然后分别处理,GraphSAGE作为编码器,标准与突发分布一个解码器。具体的等我看了论文再把论文内容详细补上。

3.2.1 GAN的方式

GraphGAN就是采用GAN方式,一个生成网络去近似图的分布,一个判别器去识别节点对的链接性。就是一个产生图的边,一个去分辨图的边。DynGraphGAN用GCN去捕获拓扑信息,用CNN去学习时间演化,用两个节点的嵌入的内积,再取sigmoid作为这条边在某个t时刻的出现的概率,从而去评估整个图的概率分布。GCN-GAN算法激素生成网络带一个GCN,LSTM层,一个全连接层。以上所有的GAN方式的方法,都是在一个图上学习的,生成器去生成一个虚假的快照,去骗判别器。这种方式的限制在于,它只擅长生成节点数相同的快照,也就貌似对有新增节点的动态图效果不好。

4.1 基于随机游走的方法

这部分主要还是依赖随机游走结合skip-gram。

4.1.1 对每个快照都进行随机游走

这个思路就是对每个快照都进行随机游走,得到相应的嵌入之后,再统一整合融入时序信息。前两个就是node2vec或deepwalk之后,直接将向量进行简单串联就OK。第三个利用高斯先验初始化,再用动态伯努利嵌入随时间学习embedding。后面两个都是node2vec找静态嵌入,利用 Orthogonal Procrustes优化。

4.1.2Evolving Random Walks

对于每一个快照都随机游走是个很耗时间的任务,这种方法,只对初始图进行静态的embedding。而且都依据一个思想: 只有少数节点会受到网络演化的影响。Dynnode2vec,对于每个时间戳只在演化节点上生成节点序列,然后丢进dynamic Skip-Gram model。EvoNRL会先用NODE2vec,对初始图进行嵌入,并且记住初始图的边,一旦发现有新的边,再更新随机游走,产生新的节点序列,同样丢进dynamic Skip-Gram model

4.1.3Temporal Random Walk Methods

上面的随机游走都是分别处理各个快照,然后使其产生时序上的联系。这种方法是直接的产生时序联系在随机游走产生的序列中。实际应用中采用CTDNE框架,这个框架设计了一种无偏的时序邻居节点选择和有偏的时序邻居节点选择。在此范式基础上发展了T-EDGE,多了一个加权。 STWalk2对时间与空间(对每个快照)提出了游走方式,对利用skip-gram对将两种学习的嵌入向量结合进行训练然后得出最后的node嵌入。LSTM-node2vec训练一个LSTM autoencoder用采集的节点序列,初始node2vec 的输入层权重在时间 t 为每个快照训练的 LSTM 编码器。

另一种扩散问题跟随机游走也很像,但是本人目前还没了解过,也有用这种思维去做的,主要就是生成序列的方式不同,一种类似扩散,一种类似游走。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值