本文介绍 Structural Deep Network Embedding ,以下简称 SDNE,以半监督的方式用深度神经网络来做图嵌入。
模型解读
论文指出学习网络表示具有三大难点:
- 高度非线性:网络结构是高度非线性的,使用浅层网络无法捕捉高度非线性的网络结构。
- 结构捕捉:同时捕捉到局部结构与全局结构。
- 稀疏性:大部分真实的网络都是稀疏的,仅仅利用网络中的部分连接关系建模效果还不够好。
SDNE 的目标是设计一个可以学习到一阶相似度与二阶相似度的模型。一阶相似度与二阶相似度的概念与之前博客【图嵌入】Graph Embedding 方法之 LINE 原理解读中描述的相同:
- 一阶相似度:描述边相连的节点对之间具有的相似性。
- 二阶相似度:拥有共同邻居但是不直接向相连的两个节点具有的相似性。
也就是说一阶相似度主要反映了 Graph 的局部特征, 二阶相似度反映了 Graph 的全局特征。
为此,作者设计的模型如下图所示:
二阶相似度学习(无监督学习部分)
先看图中的左半部分:
其输入是 x i x_i xi 输出是 x ^ i \hat x_i x^i ,这实际上是一种自编码器,其目标是学习一种函数映射:
f ( x ) ≈ x f(x) \approx x f(x)≈x
自编码器没有标签数据,所以是一种非监督学习,前半部分为编码器,后半部分为解码器。在实际应用中通常会使用自编码器的前半部分,即输入 x i x_i xi 到得到 y i ( K ) y_i^{(K)} yi(K) 的部分,此部分的公式为:
y i ( 1 ) = σ ( W ( 1 ) x i + b ( 1 ) ) y i ( k ) = σ ( W ( k ) y i ( k − 1 ) + b ( k ) ) , k = 2 , . . . , K y_i^{(1)}=\sigma{(W^{(1)}x_i+b^{(1)})} \\ y_i^{(k)}=\sigma{(W^{(k)}y_i^{(k-1)}+b^{(k)})}, k=2,...,K yi(1)=σ(W(1)xi+b(1))yi(k)=σ(W(k)yi(k−1)+b(k)),k=2,...,K
其中, x i x_i xi 为输入值,本质是节点 i i i 的邻接矩阵(后面会解释)。上面公式中的 y i ( k ) y_i^{(k)} yi(k) 为第 k k k 层的第 i i i 个节点的输出值,而 W ( k ) W^{(k)} W(k) 为第 k 层的参数矩阵, b k b^{k} bk 为第 k 层的偏置项。最终经过编码得到节点的 Embedding 向量 y i ( K ) y_i^{(K)} yi(K)之后,再经过与编码器对称的网络结构得到输出值 x ^ i \hat x_i x^i 。
自编码器的目标是最小化输入与输出的重构误差,所以损失函数为:
L = ∑ i = 1 n ∣ ∣ x i ^ − x i ∣ ∣ 2 2 \mathcal{L}=\sum_{i=1}^n{||\hat{x_i}-x_i||^2_2} L=i=1∑