GCN & NE

牧云@^-^@ 提交于 2020-01-25 07:55:05

GCN & NE

学科前沿课程任务

前言

在深度学习中,CNN、RNN是我们非常熟悉的面孔,他们在计算机视觉、自然语言处理等领域有着十分出色的表现。但是CNN处理的对象是二维图片,RNN处理的对象是一维序列,(欧氏空间,都是结构规则的数据)。对于社交网络、生物网络等图结构数据(结构十分不规则,没有平移不变性),CNN、RNN就无法处理了。
于是为了处理图结构数据就涌现出一批方法,如GNN、DeepWalk、node2vec等等。其中GNN中的代表是GCN,DeepWalk和Node2Vec属于Network Embedding。下面分别介绍GCN和Network Embedding及两者之间的相同与区别。

GCN介绍

GCN首次提出于ICLR2017

SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
优点:使用切比雪夫多项式的1阶近似高效完成了图卷积架构
缺点:卷积需使用整个图的拉普拉斯矩阵,图不能扩展

GCN用来提取图结构数据的特征,从而使用这些特征去对图数据进行节点分类(node classification)、图分类(graph classification)、边预测(连接预测)(link prediction),还可以得到图的嵌入表示(graph embedding)。

图1 Multi-layer Graph Convolutional Network (GCN) with first-order filters.

图1 Multi-layer Graph Convolutional Network (GCN) with first-order filters.

上图即为一个多层GCN,若规定图G(V,E)G(V,E) 的邻接矩阵为AA,所有 nodenode 的特征向量构成特征矩阵XX,那么我们把每一个隐含层可以看作为一个非线性函数
在这里插入图片描述其中,H(l)H^{(l)} 表示第 ll 层的特征矩阵,H(0)=XH^{(0)} = X. 即上图GCN的输入就是AAX.X. 以此得到最终的特征矩阵ZZ ,即得到各个 nodenode 经Embedding后的特征向量。

从一个简单的例子来看GCN是如何逐层传播的
一个传播规则如下:
在这里插入图片描述
上式即为每层GCN所做的工作就是将图的邻接矩阵AAnodenode 的特征矩阵HH 相乘,再乘以一个参数矩阵WW ,最后再使用一个非线性激活函数激活一下。

但是这个简单模型有几个局限性:

  • 由于AA 的对角线上都是0,所以在和特征矩阵HH 相乘的时候,只会计算一个nodenode 的所有邻居节点的特征的加权和,该nodenode 自己的特征却被忽略了。因此,我们可以做一个小小的改动,给AA 加上一个单位矩阵II,记作A^\hat{A}
  • AA 是没有经过归一化的矩阵,这样与特征矩阵相乘会改变特征原本的分布,产生一些不可预测的问题。所以我们对A做一个标准化处理,即进行傅里叶变换,得到一个对称且归一化的矩阵 。

通过对上面两个局限的改进,我们便得到了最终的层特征传播公式。
在这里插入图片描述

  • 公式中的D^1/2A^D^1/2\hat{D}^{-1/2} \hat{A}\hat{D}^{-1/2} 即用拉普拉斯矩阵来实现傅里叶变换,而在谱图卷积的核心就是使用对称归一化拉普拉斯矩阵,这也是GCN的卷积叫法的来历。

GCN效果展示
选用graph dataset: karate club network
在这里插入图片描述
构造一个三层GCNs,使用随机初始化的参数矩阵WW,以及初始特征矩阵XX选用单位矩阵II.
得到的Embedding 效果如图所示
在这里插入图片描述

  • 可见,尽管没有经过训练,经过GCN的提取出的embedding,已经在空间上自动聚类了。而这种聚类结果,可以和DeepWalk、node2vec这种经过复杂训练得到的node embedding的效果媲美了。

接着按半监督训练,给每一类的节点,仅提供一个标注样本,然后训练,得到的可视化效果如下:
在这里插入图片描述

NE介绍

Network Embedding 就是将网络的节点和向量之间建立一个一一对应的关系,并且保留网络的一些拓扑性质。中心思想就是找到一种映射函数,该函数将网络中的每个节点转换为低维度的潜在表示。 在 Network embedding space中,节点之间的关系由点之间的距离来表示,结构上的特点由向量来表示。

Network Embedding 的两个目标

  • 1.能够从已经学习到的低维向量空间中重构原始Network.
  • 2.学习到的低维向量空间能够有效支持网络推理(节点分类,连接预测,识别重要节点等)

根据Embedding保留的信息类型划分Embedding methods

  • 1.保留网络结构和性质:
    • 网络结构包括:邻近结构、高阶邻近节点等
    • 网络性质包括:网络传递性、结构平衡性等
  • 2.保留辅助信息(side information):
    • 除了网络拓扑结构,一些类型的网络有很丰富的辅助信息,比如节点和边的内容。
  • 3.保留高级信息
    • 前两种方法基本是无监督学习,而此处保留节点的标签信息,应用监督学习或半监督学习进行节点分类任务。
  • 总的来说,网络结构和性质是基本考虑因素,辅助信息和高级信息能够使得Embedding在某些场景表现得更好。

从Original Space到Embedding Space的映射模型

  • 1.基于矩阵分解的方法
    • 如拉普拉斯特征谱LE、局部线性表示LLE、GraRep、网络降维更新算法。
    • 这类基于矩阵分解的方法考虑了网络全局节点相似度,可以更好地表示网络,但这类方法由于在时间和空间上有较高的复杂度,不适用于大规模网络。
  • 2.基于随机游走的方法
    • DeepWalk:核心思想是,采用随机游走的方式,将网络结构节点之间的关系转化成句子,那么不同节点就代表不同的词,然后用自然语言处理中Word2Vec的方法得到节点的低维度向量表示。那么这种方法其实就是分两步:随机游走,和词向量表示学习。
    • Node2Vec:是DeepWalk的改进版本,DeepWalk采用DFS做随机游走,Node2Vec结合了DFS和BFS两种方式做随机游走,可以更全面的表示网络节点的邻居关系。
  • 3.基于深度学习的方法
    • 如SDNE(Structural Deep Network Embedding)
    • 使用无监督的深度自编器对节点间的二阶近似关系进行建模,并监督式地在目标中间层使用拉普拉斯阵对节点间的一阶近似关系进行建模。

分类引用
方法说明
2和3说明

GCN与NE的相似之处

  • 它们的本质都是将原始网络映射到低维向量空间,以便后续完成各种任务,如节点分类,连接预测,社区发现等。
  • GCN属于NE基于深度学习的方法

GCN与NE的不同之处

从思想上来看

  • GCN核心思想在于利用节点邻居的信息来更新自己,通过迭代来扩大信息收集范围,直至整个图趋于平稳状态。具体来说,GCN就是把图的邻接矩阵进行傅里叶变换,然后与图的特征矩阵相乘,完成卷积操作。
  • NE是一个大类,其每种方法思想不一:
    • 基于矩阵分解的方法:对图的邻接矩阵AA和属性矩阵XX进行特征值分解,从而得到每个节点的嵌入表示。
    • 基于随机游走的方法:首先选取节点进行随机游走得到句子(词序列),再对句子应用词向量表示学习方法,如DeepWalk中的skip-gram(思想类似极大似然概率),不断更新各词的词向量,得到最终的低维向量空间。
    • 基于深度学习的方法:如SDNE,它是一个半监督的深层模型,它具有多层非线性函数,通过将输入数据映射到高度非线性的潜在空间以捕获网络结构,并且通过半监督的深度模型中联合优化一阶相似和二阶相似。

从适应性来看

  • GCN只适用于无向图,而NE中的LINE可适应无向图及有向图

从效果上来看

  • 对于数据集:空手道俱乐部网络
  • 构造一个三层GCNs,使用随机初始化的参数矩阵WW,以及初始特征矩阵XX选用单位矩阵II. 得到的Embedding 效果如图所示 在这里插入图片描述
  • NE经典算法DeepWalk的效果如图所示在这里插入图片描述
  • 可见,没有经过训练的GCN效果与经过训练的DeepWalk效果差别却不大。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!