前言node
在大型图中,节点的低维向量embedding被证实了做为各类各样的预测和图分析任务的特征输入是很是有用的。顶点embedding最基本的基本思想是使用降维技术从高维信息中提炼一个顶点的邻居信息,存到低维向量中。这些顶点嵌入以后会做为后续的机器学习系统的输入,解决像顶点分类、聚类、连接预测这样的问题
GCN基本思想:把一个节点在图中的高纬度邻接信息降维到一个低维的向量表示.算法
GCN的优势: 能够捕捉graph的全局信息,从而很好地表示node的特征.网络
GCN的缺点: Transductive learning的方式,须要把全部节点都参与训练才能获得node embedding,没法快速获得新node的embedding。框架
transductive learning机器学习
GCN的方法 本质上是transductive learning (直推式的),图中的因此顶点都在训练embedding时参与.函数
前人的工做专一于从一个固定的图中对顶点进行表示,不少现实中的应用须要很快的对未见过的顶点或是全新的图(子图)生成embedding。这种推断的能力对于高吞吐的机器学习系统来讲很重要,这些系统都运做在不断演化的图上,并且时刻都会遇到未见过的顶点(好比Reddit上的帖子(posts),Youtube上的用户或视频)。所以,一种inductive的学习方法比transductive的更重要。
Transductive learning 获得新节点的难处:post
要想获得新节点的表示,须要让新的graph或者subgraph去和已经优化好的node embedding去“对齐(align)”。然而每一个节点的表示都是受到其余节点的影响,所以添加一个节点,意味着许许多多与之相关的节点的表示都应该调整。这会带来极大的计算开销,即便增长几个节点,也要彻底从新训练全部的节点。学习
节点embedding优化
Grarep: Learning graph representations with global structural information. In KDD, 2015
node2vec: Scalable feature learning for networks. In KDD, 2016
Deepwalk: Online learning of social representations. In KDD, 2014
Line: Large-scale information network embedding. In WWW, 2015
Structural deep network embedding. In KDD, 2016
以上论文 embedding算法直接训练单个节点的节点embedding,本质上是transductive.并且须要大量的额外训练(如随机梯度降低)使他们能预测新的顶点。spa
图卷积网络
Spectral networks and locally connected networks on graphs. In ICLR, 2014
Convolutional neural networks on graphs with fast localized spectral filtering. In NIPS, 2016
Convolutional networks on graphs for learning molecular fingerprints. In NIPS,2015
Semi-supervised classification with graph convolutional networks. In ICLR, 2016
Learning convolutional neural networks for graphs. In ICML, 2016
这些方法中的大多数不能扩展到大型图,或者设计用于全图分类(或者二者都是)
GraphSAGE能够看做是对transductive的GCN框架对inductive下的扩展。
详细介绍GCN:
GCN为何出现?
当前的CNN RNN不可以处理图结构的数据, 图的结构不规则, 可认为为无线维的数据, 没有平移不变性,
出现了 GNN, DeepWalk, node2vec等方法.
GNN 概述
GCN,图卷积神经网络,实际上跟CNN的做用同样,就是一个特征提取器,只不过它的对象是图数据。GCN精妙地设计了一种从图数据中提取特征的方法,从而让咱们可使用这些特征去对图数据进行节点分类(node classification)、图分类(graph classification)、边预测(link prediction),还能够顺便获得图的嵌入表示(graph embedding),可见用途普遍。所以如今人们脑洞大开,让GCN到各个领域中发光发热。
GCN的定义
设 图中数据是 N个节点, 这些节点的特征组成一个N*D维的矩阵$X$做为特征矩阵, 造成一个N*N的邻接矩阵$A$,
通常在初始化时候:
$H_{v}^{0}=X_{v}^{0} \quad v\in NodeSet$
层以前的传播方式:
$H^{l+1}=\sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}W^{(l)})$ (1)
$\tilde{A}=A+I$, I是一个单位矩阵,$\tilde{A}$是对称矩阵
$\tilde{D}$是度量矩阵,D在实数域是正定对称的,在复数域是hemite正定,$(\alpha,\beta)=x^{T}Ay$表示
$H^{l}$是每一层的特征, 对于输入层的话$H=x$
$\sigma$是非线性激活函数
$\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}$ 知道邻接矩阵,能够求得他的在线性空间中的一组基,
进行初等行变换,且A加上了单位矩阵且是对称的,极易求解.整个部分能够获得.
Eqn. (1) 很好的提取了图的特征
经过若干层的 node的特征由x变为了z, node以前的链接关系 均可由邻接矩阵 线性表述, 始终保持着
node之间的关系.
两层 GCN, 激活函数为Relu 和 Softmax 总体的forward:
$Z=f(X,A)= softmax(\hat{A}ReLU(\hat{A}XW^{0})W^{1})$,
where $\hat{A}=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}$
若是任务是有监督的, 经过label计算crossentropy loss:
$L=- \sum \sum Y_{lf}lnZ_{lf}$
不多有节点有label, 因此称为semi-supervised.
每层 输入都包含了邻接矩阵A和node的特征H, 直接作一个内积,再乘一个可学习的参数矩阵, 并进行
非线性激活,可简单表示为:
$f(H^{l},A)=\sigma(AH^{(l)}W^{(l)})$
这个简单模型有一些局限性:
1.因为A为对称矩阵,且主对角线是0, 加上单位矩阵,便可引入本身的特征,避免只计算neighbor特征的加权和.
2.A是没有通过归一化的矩阵,这样与特征矩阵相乘会改变特征本来的分布,产生一些不可预测的问题。因此咱们对A作一个标准化处理。首先让A的每一行加起来为1,咱们能够乘以一个$D^{-1}$, 进一步的将
$D^{-1}$拆开与A相乘,获得对称归一化矩阵,与对称归一化拉普拉斯矩阵十分相似,而在谱图卷积的核心就是使用对称归一化拉普拉斯矩阵,这也是GCN的卷积叫法的来历
实验结果:
由于即便不训练,彻底使用随机初始化的参数W,GCN提取出来的特征就以及十分优秀了!这跟CNN不训练是彻底不同的,后者不训练是根本得不到什么有效特征的。
GCN网络的层数多少比较好?论文的做者作过GCN网络深度的对比研究,在他们的实验中发现,GCN层数不宜多,2-3层的效果就很好了。