DyGEM阅读笔记

546 阅读2分钟

DynGEM: Deep Embedding Method for Dynamic Graphs

1、问题描述

问题:以前的动态图方法直接把单个图嵌入方法直接用于每个snapshot,这样的方法缺少稳定性和灵活性,不适用于节点集快速变化的情况。

解决:使用深度自编码器,并配合初始化和网络调整策略,使训练更加稳定和灵活。

2、DyGEM

image.png

image.png

2.0 自编码器框架

带权重的邻接矩阵S的一行sis_i表示了此节点i和邻居的连接信息。因此自编码器先对此信息xi=six_i = s_i进行编码,得到嵌入表示yiy_i;然后对嵌入表示yiy_i进行解码,得到重构后的邻居连接信息x^i\widehat x_i

2.1 根据t-1时刻的模型初始化t时刻的模型

根据t-1时刻的模型初始化t时刻的模型的参数(包括编码参数和解码参数),

Wt(k)=Wt1(k),W^t(k)=W^t1(k),k=1,2,...lW^{(k)}_t = W^{(k)}_{t-1}, \quad \widehat W^{(k)}_t = \widehat W^{(k)}_{t-1}, \quad k=1,2,...l
问题解释
为什么要用t-1时刻的参数初始化t时刻?1)有利于模型在两个相邻时刻的平滑过渡2)加快了t时刻模型的稳定性和收敛速度

2.2 模型PropSize

如果t时刻有新增节点,则需要调整网络的隐藏层维度。

我们希望,网络中相邻两层之间的隐藏层维数满足以下的条件(以编码器为例,解码器刚好反过来,整体上呈现出一个漏斗形网络结构):

dim(l(k))ρ×dim(l(k+1))dim(l^{(k)}) \ge \rho \times dim(l^{(k+1)})

其中ρ是一个(0, 1)之间的超参数,根据这个规则,先初始化模型参数,然后扩充每一层的维数(必要时可以增加一层)。

问题解释
为什么要动态调整隐藏层的维数?1)因为输入为xi=six_i = s_i,假设原来siRds_i \in R^d,那么新增1个节点后,siRd+1s_i \in R^{d+1},输入层的维度增加了。2)隐藏层维数变宽,有利于模型的性能

2.3 前向传播并进行重构

根据自编码器进行前向传播。

编码器:

yt(0)=xi(t)yt(k)=Wt(k1)yt(k1)+bt(k1)yt(K)y^{(0)}_t = x_i(t) \\[2ex] y^{(k)}_t = W^{(k-1)}_t y^{(k-1)}_t + b^{(k-1)}_t \\[2ex] y^{(K)}_t

解码器:

y^t(K)=yt(K)y^t(k1)=W^t(k)y^t(k)+b^t(k)x^i(t)=y^t(0)\widehat y^{(K)}_t = y^{(K)}_t \\[2ex] \widehat y^{(k-1)}_t = \widehat W^{(k)}_t \widehat y^{(k)}_t + \widehat b^{(k)}_t \\[2ex] \widehat x_i(t) = \widehat y^{(0)}_t

2.4 无监督训练/loss

无监督loss包含了一阶近似性,二阶近似性和正则化项,

Loss=ijsijyiyj2+i(xix^i)bi2+v1W1+v2W2bij=1ifsij=0elsebij>1Loss = \sum_{i} \sum_{j} s_{ij}||y_i - y_j||_2 + \sum_{i} ||(x_i - \widehat x_i) \odot b_i ||_2 + v_1 ||W||_1 + v_2 ||W||_2 \\[2ex] b_{ij} = 1\quad if \quad s_{ij} = 0 \quad else\quad b_{ij} \quad \gt 1

其中b为惩罚项,原来没有边但是重构了的惩罚 < 原来有边但是没重构的惩罚。

3、实验

3.1 数据集

离散型动态图数据集:

image.png

3.2 baseline

  • SDNE
  • SDNE/GF
  • GF( Graph Factorization)
  • DynGEM

3.3 评价指标

图重构:

  • MAP(mean average precision)

动态链接预测:

  • MAP

3.4 实验结果

和baseline的比较:

图重构:

image.png

链接预测:

image.png

稳定性分析:

image.png

Srel(F;t)=Ft+1(Vt)Ft(Vt)fFt(Vt)F/St+1(Vt)St(Vt)fSt(Vt)FKS(F)=maxt,tSrel(F;t)Srel(F;t)S_{rel}(F;t) = \frac{||F_{t+1}(V_t) - F_t(V_t)||_f}{||F_t(V_t)||_F} / \frac{||S_{t+1}(V_t) - S_t(V_t)||_f}{||S_t(V_t)||_F} \\[2ex] K_{S}(F) = max_{t, t'}|S_{rel}(F;t) - S_{rel}(F;t')|

DyGEM稳定性常数最低,稳定性最好。