这段时间面试连连,几轮下来的感受就是,好点儿的公司对细节抠的很细,希望求职者能够对使用的算法以及这个算法的其它触类旁通的领域都能够有系统的理解。
本文原创作者知乎链接为 https://www.zhihu.com/people/he-he-he-he-77-19-21
GNN 是近年来 AI 领域最热门的话题之一,但很多人都忽视了基础。
本文参照之前的:我们如何通过图算法来帮助提高机器学习算法的性能?以及【图算法:概览(https://zhuanlan.zhihu.com/p/64984300)】以及之前刘教授出的GNN系统介绍的书的基础知识部分进行总结;
图是一种数据结构,它对一组对象(节点)及其关系(边)进行建模。近年来,利用机器学习分析图形的研究越来越多,由于图的巨大表现力,即图可以作为包括社会科学(社会网络)、自然科学(物理系统、蛋白质-蛋白质相互作用网络、知识图谱)在内的各个领域的大量系统的外延。图作为机器学习的一种独特的非欧几里得数据结构,在 nodes 层面的分析中引起了人们的注意——包括了 node prediction、link prediction 和图聚类。图神经网络(GNNs)是一种基于深度学习的在图域上工作的方法,由于其令人信服的性能和高可解释性,GNN 近年来已成为一种广泛应用的图数据分析方法。在下面的段落中,我们将说明 GNN 的基本动机。
首先,GNNs 是由卷积神经网络(CNNs) LeCun 等人驱动的。CNN 能够提取和组合高分辨率特征的多尺度局部空间特征,这导致了几乎所有机器学习领域的突破和深度学习的革命。当我们深入到 CNN 和计算机视觉应用时,我们发现 CNN 的成功之处在于:局部连接、权值共享和多层的使用。这些对于解决图域问题也是非常重要的,因为:
另一个动机来自图嵌入,它学习在低维向量中表示图节点、边或子图。在图分析中,传统的机器学习方法通常依赖于手工设计的特性,受到其不灵活和高成本的限制, 遵循表征学习的思想和词嵌入的成功,deepwalk,被认为是第一种基于表示学习的图形嵌入方法,将SkipGram模型应用于生成的随机游走,类似的方法,如node2vec、LINE和TADW也取得了突破,然而,这些方法有两个严重的缺点:
关于GNN的部分暂时介绍到这边,下面主要总结一下基础知识:
图通常用 G=(V,E) 来表示, 其中 V 是顶点集,E 是边集,边 e 有两个顶点 u 和 v,被称为 u 和 v 通过 e 连接。在这种情况下,u 被称为 v 的邻居,或者换句话说,这两个顶点是相邻的,请注意,边可以是有向的,也可以是无向的, 如果所有边都是有向图,则图称为有向图,如果所有边都是无向图,则称为无向图。V 的度(degree),用 d(v) 表示,是与 v 连接的边数。
常见的graph的几种分类:
当然还有有环无环等分类方式,这里列出常见的分类方法,需要注意的是,graph 的这几种分类之间是相互重叠而不是互斥的。详细可见【图算法:概览(https://zhuanlan.zhihu.com/p/64984300)】
total degree:即与节点 V 相邻节点的数量,称为节点 V 的度;
degree centrality:度中心性,即标准化的度,是使用节点 V 的度除以全图节点的数量得到的用以衡量节点度的相对大小,类似于结构化数据中做 0-1 标准化的操作;
number of triangles:节点所在三角形的数量,即三个节点互相连通则称为一个三角形;
local clustering score:局部聚类得分,2*v 节点所在三角形的数量/(节点 V 的度的平方-节点 v 的度),用于衡量节点 V 的两个邻节点互为邻居的概率;
Eigenvector Centrality:特征向量中心度(详细可见:所谓特征向量中心度 http://blog.sina.com.cn/s/blog_4c9dc2a10101b4y3.html)
pagerank:特征向量中心度的一种变体,相对前者,pagerank 要出名多了。(详细可见:机器学习经典算法之PageRank https://www.cnblogs.com/jpcflyer/p/11180263.html)。pagerank能够实现的功能就是,“如果你的朋友很famous,那么你也会famous”。
比如说脉脉这个社交软件,它计算的就是个人在职场的影响力。如果你的工作关系是李开复、江南春这样的名人,那么你的职场影响力一定会很高。反之,如果你是个学生,在职场上被链入的关系比较少的话,职场影响力就会比较低。
同样,如果你想要看一个公司的经营能力,也可以看这家公司都和哪些公司有合作。如果它合作的都是世界 500 强企业,那么这个公司在行业内一定是领导者,如果这个公司的客户都是小客户,即使数量比较多,业内影响力也不一定大。
除非像淘宝一样,有海量的中小客户,最后大客户也会找上门来寻求合作。所以权重高的节点,往往会有一些权重同样很高的节点在进行合作。
betweenness centrality:中介中心性,中介中心性指的是一个结点担任其它两个结点之间最短路的桥梁的次数。一个结点充当“中介”的次数越高,它的中介中心度就越大。如果要考虑标准化的问题,可以用一个结点承担最短路桥梁的次数除以所有的路径数量。
closeness centrality:接近中心性,接近中心性需要考量每个结点到其它结点的最短路径的平均长度。也就是说,对于一个结点而言,它距离其它结点越近,那么它的中心度越高。一般来说,那种需要让尽可能多的人使用的设施,它的接近中心度一般是比较高的。
对于一个简单的图 G=(V,E),具有 n 个顶点 V;可以用邻接矩阵来描述图:
显然,当 G 是无向图(实现的时候常当作双向图)时,这种矩阵是对称矩阵,下图中无向图 G5 和有向图 G6 的邻接矩阵分别为 A1 和 A2。
注意区分有向和无向,如果带权,则矩阵中的0-1就会被edge的权重所替代了。
一般来说,有向图要分出度的度矩阵和入度的度矩阵,但是很多时候为了方便,我们把有向图当作无向图来做,因此常常可以看到,无论是有向还是无向,都是一样计算所有的与节点相连的 edge 的权重之和,注意是权重不是直接计算节点,因为有权图表示不服;(但是应该一些场景的应用下还是会划分为出度和入度的度矩阵的)
L=D-A (详细可见:邻接矩阵与拉普拉斯矩阵 https://blog.csdn.net/void_xinyue/article/details/105305901)
这里有个比较直观的例子:
给定一个graph:
其领接矩阵:
可以看出这是一个无向无权的graph;
则拉普拉斯矩阵为:
对称归一化拉普拉斯:
直接看上面的这个公式更好理解一些,可以看到对称归一化之后,对角元素全为1,之所以进行对称归一化主要是因为对称归一化之后的拉普拉斯矩阵有很多好的性质。
关联矩阵即用一个矩阵来表示各个点和每条边之间的关系。
对于一个无向图 G,p 为顶点的个数,q 为边数。bij 表示在关联矩阵中点 i 和边 j 之间的关系。若点 i 和边 j 之间是连着的,则 bij = 1. 反之,则 bij = 0.