网络嵌入(Network Embedding)旨在学习网络中节点的低维度潜在表示,所学习到的特征表示可以用作基于图的各种任务的特征,例如分类,聚类,链路预测和可视化。其数学表达可理解为:找到一个映射函数 f f f 将节点(NN维矩阵)表示为低维的矩阵(NK维)表示,其中每一行表示一个节点,可用如下形式表示:
f : R N ∗ N ↦ R N ∗ K f: R^{N*N} \mapsto R^{N*K} f:RN∗N↦RN∗K其中, K < < N K<
本文将通过对发表在AAAI 2019年的文献“Outlier Aware Network Embedding for Attributed Networks”进行研读分享,以补充和说明属性网络嵌入的相关知识。如下:
论文链接: https://www.aaai.org/ojs/index.php/AAAI/article/view/3763.
———————————————————————————
为什么会选择这篇文章进行分享呢?主要有一下三个原因:
———————————————————————————
网络嵌入(Network Embedding)的方法类似于NLP领域中word embedding这一方法。而word embedding可以视作是神经语言模型(NNLM)中的一个副产品,可以理解为单词的编码*参数矩阵的结果。这有助于我们理解本论文提出的方法。
结合关于网络嵌入的综述论文1可以发现,network embedding方法整体可分为以下4个类别:矩阵分解,随机游走,深度学习(端到端的模型),其他。
表格引用自参考文献1,表格中标号与参考文献中一一对应。
表格中所引用的方法仅为该类别下具有代表性的方法,不包含一些变种等方法在内。
属性网络,即网络中的节点或边含有属性信息的网络,是一种包含更加丰富信息的网络。可表示为 G = ( V , E , Λ ) G=(V, E,Λ) G=(V,E,Λ),其中 V V V是顶点的集合, E E E是边的集合, Λ = a 1 , … , a m Λ={a_1,…,a_m} Λ=a1,…,am与顶点关联的 m m m个属性的集合, Λ Λ Λ用来描述顶点的性质(属性)。每个顶点 v i ∈ V v_i∈V vi∈V与一个属性向量 [ a 1 ( v i ) , … , a m ( v i ) ] [a_1(vi),…, a_m(vi)] [a1(vi),…,am(vi)]关联,其中 a j ( v i ) a_j(vi) aj(vi)是定点 v i v_i vi在属性 a j a_j aj分量的属性值。
属性网络的嵌入方案思路:分别对网络结果以及网络属性两个矩阵进行embedding学习,再将其合并,以实现属性网络的嵌入学习表示。如下图所示,设网络结构矩阵 A A A为为 R N ∗ N R^{N*N} RN∗N维矩阵,属性信息矩阵 C C C为 R N ∗ D R^{N*D} RN∗D维矩阵,两者embedding的结果均为 R N ∗ K R^{N*K} RN∗K维矩阵,其中 K < < N K<
属性网络嵌入,目前的相关工作可分为如表所示的两个类别。
**类别** | **方法** | **备注** |
只考虑网络结构 | DeepWalk | 第一个被提出来使用表示学习(深度学习)的网络嵌入方法 |
node2vec | DeepWalk 的扩展,结合了 BFS 风格和 DFS 风格的邻域探索 | |
Line | 采用广度优先搜索策略来生成上下文节点,负采样来优化 Skip-gram 模型(替换softmax层) | |
其他 | Walklets, GraRep, GraphAttention, SNDE, DNGR | |
网络结构&属性信息 | TADW | 研究节点与文本特征相关联的情况。首先证明DeepWalk 实质上是将转移概率矩阵分解为两个低维矩阵 |
AANE | 采用对称矩阵因式分解从属性的相似矩阵中得到嵌入 | |
GraphSage | — | |
SEANO | 考虑了异常节点在网络嵌入时的影响,但需要有标签的数据集进行学习(半监督学习) |
———————————————————————————
本部分主要阐述本论文中所提出的方法。结合文献内容,将从属性网络中的异常定义、整体方案、以及参数更新三部分讲述。
如图所示,其中圆表示网络节点,节点之间的连接为网络的边。正方形表示节点的属性,属性之间的连接表示属性之间的相似度。一个节点(圆)对应一个属性(正方形)表示,即节点-属性对。不同颜色表示不同的类别的节点和属性,同时较大的圆表示的是异常节点,其较大的正方形为异常节点的属性。
论文中定义的三种异常如下:
Type1: 结构异常,即不同类别之间的节点存在连接,对应的属性未与其他类别的节点属性相似;
Type2: 属性异常,即不同类别的节点之间不存在连接,对应的属性与其他类别的节点属性相似;
Type3: 混合异常,即不同类别的节点之间存在连接,同时该异常节点对应的属性与另一类别(不同与结构异常的类别)节点相似;
Outlier is a node that can be defined as follows:
Type 1 : Structurally inconsistent, Semantically consistent
Type 2 : Semantically inconsistent, Structurally consistent
Type 3 : Structurally and Semantically consistent, but inconsistent across structure and semantics
结合上文提到的属性网络嵌入思路,以及考虑异常节点在嵌入时的影响,本论文提出的方法将分为3部分对方法进行解释说明。分别为Structure embedding, Attribute embedding, Combined embedding,详细内容如下所示。
对于网络结构的嵌入,本文选择使用邻接矩阵 A ∈ R N ∗ N A \in R^{N*N} A∈RN∗N描述网络结构信息。
引入矩阵 H ∈ R K ∗ N H \in R^{K*N} H∈RK∗N作为网络嵌入的权重矩阵(这个概念的理解类似前文提到的word embedding中的权值矩阵类似),矩阵 G ∈ R N ∗ K G \in R^{N*K} G∈RN∗K为embedding之后的结果,因此可以得到重构损失函数2(这里采用平方损失函数),如下:
∑ i = 1 N ∑ j = 1 N ( A i j − G i . ⋅ H . j ) 2 \sum_{i=1}^{N}\sum_{j=1}^{N}(A_{ij}-G_{i.} \cdot H_{.j})^2 i=1∑Nj=1∑N(Aij−Gi.⋅H.j)2其中, A i j A_{ij} Aij表示邻接矩阵 A A A中的元素, G i . G_{i.} Gi.和 H . j H_{.j} H.j同理。
选择使用平方损失函数的原因:在参考文献2中被证明,该损失函数可以在映射之后的低维空间中保持原始空间中的距离。
在对网络结构进行嵌入的过程中,只需要考虑结构异常(Type 1)。因此,设定节点的异常性为 O 1 i O_{1i} O1i,且 0 < O 1 i ≤ 1 0 < O_{1i} \leq 1 0<O1i≤1,同时为了使异常节点在整个损失函数中的贡献变小,即 O 1 i O_{1i} O1i越大(接近1),则损失越小。结合交叉熵损失函数的定义,可得到如下式子:
L s t r = ∑ i = 1 N ∑ j = 1 N l o g ( 1 O 1 i ) ( A i j − G i . ⋅ H . j ) 2 L_{str} = \sum_{i=1}^{N}\sum_{j=1}^{N}log(\frac{1}{O_{1i}})(A_{ij}-G_{i.} \cdot H_{.j})^2 Lstr=i=1∑Nj=1∑Nlog(O1i1)(Aij−Gi.⋅H.j)2
此式子即为网络结构嵌入时的损失函数。
同理,在进行属性嵌入时,对于属性信息矩阵 C ∈ R N ∗ D C \in R^{N*D} C∈RN∗D进行同样方式的考虑,因此可得损失函数如下:
L a t t r = ∑ i = 1 N ∑ d = 1 C l o g ( 1 O 2 i ) ( C i d − U i . ⋅ V . d ) 2 L_{attr} = \sum_{i=1}^{N}\sum_{d=1}^{C}log(\frac{1}{O_{2i}})(C_{id}-U_{i.} \cdot V_{.d})^2 Lattr=i=1∑Nd=1∑Clog(O2i1)(Cid−Ui.⋅V.d)2值得注意的是,该式子与网络结构的嵌入式子没有任何相交变量。其中参数分别对应属性信息嵌入的结果。
为了将前两者提到的嵌入结果进行合并,同时也是基于前文定义的第三种混合异常的考虑,本论文通过正交变换将属性嵌入的结果映射至结构嵌入所在的特征空间之中,因此,可得到如下式子:
L c o m b i n e d = ∑ i = 1 N ∑ k = 1 K l o g ( 1 O 3 i ) ( G i k − U i . ⋅ ( W T ) . k ) 2 L_{combined} = \sum_{i=1}^{N}\sum_{k=1}^{K}log(\frac{1}{O_{3i}})(G_{ik}-U_{i.} \cdot (W^T)_{.k})^2 Lcombined=i=1∑Nk=1∑Klog(O3i1)(Gik−Ui.⋅(WT).k)2其中, W T W^T WT表示正交矩阵 W W W的转置矩阵, O 3 i O_{3i} O3i表示disagreement anomaly score,即节点 v i v_i vi既不属于结构异常,也不属于属性异常。
在对上述式子进行理解的时候,笔者建议首先对SVD奇异值分解有一定的了解(可证明得到矩阵 W W W为正交矩阵)。同时,始终记得作者是希望让异常节点(混合异常)对损失函数的贡献最小,因此在已经得到了结构嵌入 G G G与属性嵌入 U U U结果前提下,直接计算 ∑ i = 1 N ∑ k = 1 K ( G i k − U i k ) 2 \sum_{i=1}^{N}\sum_{k=1}^{K}(G_{ik}-U_{ik})^2 ∑i=1N∑k=1K(Gik−Uik)2,即可实现这个目的。
而在此基础上考虑 O 3 i O_{3i} O3i不一致异常分数到式子中,则与前两种构造方式相同。
同时,最终的损失函数表达可以表示为三个损失函数的线性混合结果,即:
L = L s t r + α L a t t r + β L c o m b i n e d L = L_{str} + \alpha L_{attr} + \beta L_{combined} L=Lstr+αLattr+βLcombined其中,参数 α \alpha α与 β \beta β分别表示不同类型的异常在数据集中的比例(最终贡献的大小)。
在得到损失函数式子之后,可以发现最终的参数有矩阵 G , H , U , V , W G, H, U, V, W G,H,U,V,W,以及三种异常分数 O 1 O_1 O1, O 2 O_2 O2, O 3 O_3 O3。除了通过矩阵分解可以直接得到的矩阵 W W W外,其他参数均可以通过拉格朗日求偏导计算得到迭代的式子(规则)。
在此不详细展开此部分公式推导,仅将结果展示出来。详细式子如下图所示:
———————————————————————————
在实验环节,本论文选用前文相关工作提到的7个方法作为Baseline,并且在异常检测、节点分类、节点聚类三个任务上进行了实验比较。从整体结果了可以看出,该方法的结果远超同类方法。
Goyal P, Ferrara E. Graph embedding techniques, applications, and performance: A survey[J]. Knowledge-Based Systems, 2018, 151: 78-94. ↩︎
Cunningham J P, Ghahramani Z. Linear dimensionality reduction: Survey, insights, and generalizations[J]. The Journal of Machine Learning Research, 2015, 16(1): 2859-2900 ↩︎