0 提出背景
SDNE:Structural Deep Network Embedding
之前的DeepWalk、LINE、node2vec、struc2vec都使用了浅层结构,浅层模型往往不能捕获高度非线性的网络结构。
SDNE方法使用了多个非线性层来捕获节点的embedding。
1 预备知识
1阶相似度衡量的是:相邻的两个顶点对之间相似性。
2阶相似度衡量的是:两个顶点他们的邻居集合的相似程度。
2 主要思想
解释: V e r t e x i 和 V e r t e x i 分别表示图 i , j 的邻接矩阵; x i 表示 V e r t e x i 第 i 行邻接矩阵值(节点 i 的连接关系),经过多层 e n c o d e r 编码 y i ( 1 ) . . . y i ( K − 1 ) ,得到压缩表示 y i ( K ) , 经过多层 d e n c o d e r 解码 y i ^ ( K − 1 ) . . . y i ^ ( 1 ) ,得到最终预测输出 x ^ i \begin{aligned} & 解释:\\ & Vertex \ i和Vertex \ i分别表示图i,j的邻接矩阵;\\ & x_i 表示Vertex \ i \ 第\ i\ 行邻接矩阵值(节点i的连接关系),经过多层encoder编码y_i^{(1)}...y_i^{(K-1)},得到压缩表示y_i^{(K)},经过多层dencoder解码\hat{y_i}^{(K-1)}...\hat{y_i}^{(1)},得到最终预测输出\hat{x}_i \end{aligned} 解释:Vertex i和Vertex i分别表示图i,j的邻接矩阵;xi表示Vertex i 第 i 行邻接矩阵值(节点i的连接关系),经过多层encoder编码yi(1)...yi(K−1),得到压缩表示yi(K),经过多层dencoder解码yi^(K−1)...yi^(1),得到最终预测输出x^i
3 结构误差
3.1 1阶相似度
1阶相似度,可以让图中相邻两个结点之间对应的embedding vector在隐藏空间更接近。定义如下:
L 1 s t = ∑ i , j = 1 n s i , j ∣ ∣ y i ( K ) − y j ( K ) ∣ ∣ 2 2 = ∑ i , j = 1 n s i , j ∣ ∣ y i − y j ∣ ∣ 2 2 L_{1st} = \sum_{i,j=1}^n s_{i,j}||y_i^{(K)} - y_j^{(K)}||_2^2 = \sum_{i,j=1}^n s_{i,j}||y_i-y_j||_2^2 L1st=i,j=1∑nsi,j∣∣yi(K)−yj(K)∣∣22=i,j=1∑nsi,j∣∣yi−yj∣∣22
3.2 2阶相似度
二阶相似度,可以让结构相似的节点的embedding vector在隐藏空间更接近。定义如下:
L 2 n d = ∑ i = 1 n ∣ ∣ x ^ i − x i ∣ ∣ 2 2 L_{2nd} = \sum_{i=1}^n ||\hat{x}_i-x_i||_2^2 L2nd=i=1∑n∣∣x^i−xi∣∣22
上述定义存在的问题是:由于图的稀疏性(邻接矩阵中的0元素远多于非0元素),所以神经网络全部输出0也能取得一个不错的效果,但这不是我们想要的。
改进方法:带权损失函数,对非0元素具有更高的乘法系数(提高对非0元素的关注度)。修正后的损失函数为:
L 2 n d = ∑ i = 1 n ∣ ∣ ( x ^ i − x i ) ⊙ b i ∣ ∣ 2 2 = ∣ ∣ ( X ^ − X ) ⊙ B ∣ ∣ F 2 L_{2nd} = \sum_{i=1}^n||(\hat{x}_i-x_i)\odot b_i||_2^2 = ||(\hat{X}-X)\odot B||_F^2 L2nd=i=1∑n∣∣(x^i−xi)⊙bi∣∣22=∣∣(X^−X)⊙B∣∣F2
其中:
⊙ 表示逐元素积, b i = { b i , j } j = 1 n ,若 s i , j = 0 , 则 b i , j = 1 ,否则 b i , j = β > 1 \odot表示逐元素积,b_i=\{b_{i,j}\}_{j=1}^n,若s_{i,j}=0,则b_{i,j}=1,否则b_{i,j}=\beta>1 ⊙表示逐元素积,bi={bi,j}j=1n,若si,j=0,则bi,j=1,否则bi,j=β>1
3.3 整体优化目标
联合优化损失函数为:
L m i x = L 2 n d + α L 1 s t + μ L r e g L r e g = 1 2 ∑ ( ∣ ∣ W ( k ) ∣ ∣ F 2 + ∣ ∣ W ^ ( k ) ∣ ∣ F 2 ) \begin{aligned} & L_{mix} = L_{2nd} + \alpha L_{1st} + \mu L_{reg} \\ & L_{reg} = \frac{1}{2} \sum(||W^{(k)}||_F^2+||\hat{W}^{(k)}||_F^2) \end{aligned} Lmix=L2nd+αL1st+μLregLreg=21∑(∣∣W(k)∣∣F2+∣∣W^(k)∣∣F2)
L m i x 是联合损失,其中: α 为控制 1 阶损失的参数, μ 为控制正则化项的参数; L r e g 是正则化项,是对 k 层 e n c o d e r 和 d e c o d e r 的 L 2 正则化。 \begin{aligned} & L_{mix}是联合损失,其中:\alpha为控制1阶损失的参数,\mu为控制正则化项的参数;\\ & L_{reg}是正则化项,是对k层encoder和decoder的L_2正则化。\\ \end{aligned} Lmix是联合损失,其中:α为控制1阶损失的参数,μ为控制正则化项的参数;Lreg是正则化项,是对k层encoder和decoder的L2正则化。
模型通过反向传播,不断减小L_mix,优化模型参数,求得节点的embedding。
4. 图嵌入算法小结
- DeepWalk:采用随机游走形成序列,采用skip-gram方式生成节点embedding;
- node2vec:不同的随机游走策略形成序列,类似skip-gram方式生成节点embedding;
- LINE:捕获节点的一阶、二阶相似度分别求解、拼接,作为节点embedding;
- struc2vec:对图的结构信息进行捕获,在结构标识大于邻居标识时效果好;
- SDNE:采用多个非线性层捕获节点一阶、二阶相似性。