题目:Structural Deep Network Embedding
作者:Daixin Wang, Peng Cui, Wenwu Zhu
来源:KDD 2016
SDNE是第一个将深度学习应用于网络表示学习中的方法。SDNE使用一个自动编码器结构来同时优化1阶和2阶相似度(LINE是分别优化的),学习得到的向量表示能够保留局部和全局结构,并且对稀疏网络具有鲁棒性。
和之前使用浅层神经网络的方法(deepwalk)不同, SDNE使用深层神经网络对节点表示间的非线性进行建模。整个模型可以被分为两个部分: 一个是由 Laplace 矩阵监督的建模第一级相似度的模块, 另一 个是由无监督的深层自编码器对第二级相似度关系进行建模. 最终 SDNE 算法将深层自编码器的中间层作为节点的网络表示。
模型
相似度定义
SDNE可以看做是基于LINE的扩展,相似度定义和LINE是一样的。1阶相似度衡量的是相邻的两个顶点对之间相似性(本地网络结构)。2阶相似度衡量的是,两个顶点他们的邻居集合的相似程度(全局网络结构)。
SDNE是一个半监督模型,其中无监督的部分通过重建每个节点的邻居结构保留图的二阶相似度;对于小部分节点对,利用其一阶相似度作为监督信息进行优化。
二阶相似度优化目标
L = ∑ i = 1 n ∥ x ^ i − x i ∥ 2 2 \mathcal{L}=\sum_{i=1}^{n}\left\|\hat{\mathbf{x}}_{i}-\mathbf{x}_{i}\right\|_{2}^{2} L=i=1∑n∥x^i−xi∥22
这里我们使用图的邻接矩阵进行输入,对于第 i i i 个顶点,有 x i = s i x_i = s_i xi=si,每一个 s i s_i si 都包含了顶点 i i i 的邻居结构信息,所以这样的重构过程能够使得结构相似的顶点具有相似的embedding。
这里存在的一个问题是由于图的稀疏性,邻接矩阵 S S S中的非零元素是远远少于零元素的,那么对于神经网络来说只要全部输出0也能取得一个不错的效果,这不是我们想要的。
文章给出的一个方法是使用带权损失函数,对于非零元素具有更高的惩罚系数。 修正后的损失函数为
L 2 n d = ∑ i = 1 n ∥ ( x ^ i − x i ) ⊙ b i ∥ 2 2 = ∥ ( X ^ − X ) ⊙ B ∥ F 2 \begin{aligned} \mathcal{L}_{2 n d} &=\sum_{i=1}^{n}\left\|\left(\hat{\mathbf{x}}_{i}-\mathbf{x}_{i}\right) \odot \mathbf{b}_{\mathbf{i}}\right\|_{2}^{2} \\ &=\|(\hat{X}-X) \odot B\|_{F}^{2} \end{aligned} L2nd=i=1∑n∥(x^i−xi)⊙bi∥22=∥(