上一节课 CS224W 3.1-Motifs and Structural Roles in Networks, 学习到了配置用于对比作用的随机图,
还有一种配置方式
![](https://i-blog.csdnimg.cn/blog_migrate/f4855d62a27ecd154f3a7632d7cecd87.png)
从一个给定的初始图开始
每一步随机挑选一对edges然后改变edge所对应的终止节点
重复下去
比如将
![](https://i-blog.csdnimg.cn/blog_migrate/60e4f4fd020ca9d1db0b8884e62f8792.png)
A-B,C-D改为A-D,C-B(做一个cross)
迭代次数(做cross次数)足够多的话可以保证收敛。
整个过程所有节点保持不变的degree,但是图变得越来越random
那么我们怎么确定得到的model是一个足够好的model?--取决于你要做什么。
这里我们kept节点个数、边个数等去match真实网络。
现在我们回顾一下找模块的步骤:
![](https://i-blog.csdnimg.cn/blog_migrate/753f00fc6ccb5d45f35f7312f29f4190.png)
那么需要生成多少个随机图?---基本上是成千上万,甚至更多(也取决于真实图的大小)
当然对于模块的定义和度量形式也有很多其他的表示方式:
![](https://i-blog.csdnimg.cn/blog_migrate/8fa7a50803b5b757fd12e203ccd5cafe.png)
Graphlet:node feature vectors
前面学习了模块,用来从局部来窥探整个图的结构,在学习整个图的结构之前,我们现在开始看看一个节点周围(neiborhood)网络的结构是什么样的,学习用graphlets来描述节点的特征,描述给定节点周围的网络结构。
什么是graphlet?--连通的非同构子图
同构图:如果能够通过重新标记图G的顶点而产生图H,则称两个图G和H是同构图
可以理解为两个图之间存在双向映射
如果两个图是同构的,不取决于两个图是怎么画的,也不取决于如何标记顶点。
图G和H是同构的,那么它们的阶相同,大小相同,各顶点度数也对应相同
可以理解edges是具有弹性的绳子,同构表示,节点固定,对G“扯一扯”绳子即可变换成H#
![](https://i-blog.csdnimg.cn/blog_migrate/bd95e60701747579c5d39897c44172bb.png)
我们用graphlets来作为一个在节点层面的子图度量
我们回顾一下什么是degree
degree是一个节点上的边的个数
现在把degree的概念推广到graphlets上--graphlet degree vector:一个节点touch的graphlets的个数。
graphlets考虑的是连通的非同构子图,非同构指的是不同子图之间的关系,但是我们要考虑子图自身的性质--自同构
自同构可以视为图G和G的同构
最初等的理解:对称
![](https://i-blog.csdnimg.cn/blog_migrate/4562bb49bf2cf79c84a94ff3bb1c2de8.png)
看上图中给定节点v,v所touch的子图为形式a的有两个,b的有一个,注意到c是0个(因为G中节点之间是连接的,并不像c这样),将v作为d节点的子图有两个
所以graphlet度向量表示的是给定节点touch的给定轨迹的子图个数
现在学习如何找motifs和graphlets
这里涉及两个步骤:(1)列举所有size-k连通的子图 (2)数每一个子图类型出现的次数
look at这两个步骤就可以看出来工作量很大
所以基本上可行的模块(motif)规模是比较小的:3--8
首先看第一步:列举
这里主要介绍exact subgraph enumeration(参见Wernicke2006的paper)
ESU的步骤
这张树结构图很明了的介绍了esu的思想
完成了第一步:列举,下面就是第二步:数每个类型子图出现次数
![](https://i-blog.csdnimg.cn/blog_migrate/5d804b69f7c3d43572bc3b95c4bdbbab.png)
在数个数这一个步骤存在一个问题:如何分类---即要把子图分为不同构的类型(同构的图属于一个类型)---用的是McKay的nauty algorihtm,具体参见以下网站
The nauty Traces pageusers.cecs.anu.edu.au
这节课也提到了同构:图G和图H是同构的,如果存在双射f,使得在G中相邻的节点在H中也是相邻的。
从定义上看检验两个图是否同构核心在于找到这个映射f,但是实际操作上等于要对每两两节点要去判断,计算量是很大的。
Structural Roles in Networks
这节课的最后一部分:关于roles。
如同在公司里根据每个人的职责和工作性质决定了每个人的角色
那么在网络中也需要根据节点的结构表现来决定其角色(role)
![](https://i-blog.csdnimg.cn/blog_migrate/90e12fce371ec677ea9f2d478016af27.png)
这里要注意区分role(角色)和group的概念:
role是根据在network中相似的功能来决定:例如公司中作为测试工程师的每个人,因为做着相似的工作所以扮演相同的role,可是在公司这个network中,这些人不一定互相连接。即role取决于相似性而不是相互连接性
group/community则是互相连接的个体(节点),核心在于连接性
举个例子:学生、教师这是role,AI实验室、 Info实验室这是group/community
roles和groups是一种互补的概念
![](https://i-blog.csdnimg.cn/blog_migrate/a7740b337e6c6ea17527b32c9b3d9f72.png)
更正式的描述
结构等价性(structural equivalence)--两个节点称为结构等价的,如果它们和所有其他节点都有着相同的关系
这是从社会网络中引用过来的一个概念
![](https://i-blog.csdnimg.cn/blog_migrate/755f28656041999d506511c37ef237fd.png)
发现网络中的结构角色(roles)
为什么roles重要?下图给了很详细的说明
![](https://i-blog.csdnimg.cn/blog_migrate/2b6bdd31a477b6b00af4989bef0161e7.png)
那么怎么去发现网络中的roles?这里介绍RoIX
RoIX是一种无监督学习方式来自动探测网络中节点的结构角色,具备以下优点:
无需先验信息
给每个节点分配a mixed-membership of roles
![](https://i-blog.csdnimg.cn/blog_migrate/c42afd88a818d0b7ab1fa8c568b4b450.png)
根据上图来分析
step 1:输入节点信息
step 2: 递归特征提取
step 3: 得到节点特征矩阵(例如度、平均权重等)
step 4: 提取role
step 5: 输出节点角色矩阵和角色特征矩阵
下图展示了输入和输出
![](https://i-blog.csdnimg.cn/blog_migrate/bcaa4209cfc6b003a22947509a6eb950.png)
那么要重点讲解的就是第二步的递归特征提取和第四步的角色提取
(1) 递归特征提取(recursive feature extraction)
![](https://i-blog.csdnimg.cn/blog_migrate/243140bca76fb55691ec5535235862d7.png)
斯坦福CS224W往期课程解读
图机器学习 2.1 Properties of Networks, Random Graph
图机器学习 2.2-2.4 Properties of Networks, Random Graph√√√
CS224W-6-message passing and node classification 第1部分
CS224W-6-message passing and node classification 第2部分
CS224W-6-message passing and node classification 第3部分
CS224W 7.1 Graph Representation Learning
CS224W 7.2 Graph Representation Learning
Cs224W 8.1-Graph Neural Network
CS224W 8.2-Graph Neural Network
CS224W 10.1-Deep Generative Models for Graphs
CS224W 18.1-Limitations of Graph Neural Network
更多关于图神经网络/图表示学习/推荐系统, 欢迎关注我的公众号 【图与推荐】