cs224w 图神经网络 学习笔记(二)Properties of Networks and Random Graph Models

本文主要是介绍cs224w 图神经网络 学习笔记(二)Properties of Networks and Random Graph Models,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程链接:CS224W: Machine Learning with Graphs
课程视频:【课程】斯坦福 CS224W: 图机器学习 (2019 秋 | 英字)

目录

1. How to measure a Network?——网络的属性

1.1 度分布(Degree distribution) P ( k ) P(k) P(k)

度分布 P ( k ) P(k) P(k)是指,网络中,度为 k k k的节点的出现概率;对于有向图来说又分为入度分布和出度分布。如果网络中总共有 N N N个节点,其中有 N k N_k Nk个节点,他的度为 k k k,那么
P ( k ) = N k N w h e r e N k = nodes with degree k P(k)=\frac {N_k}{N} \quad where \quad N_k= \text{nodes with degree k} P(k)=NNkwhereNk=nodes with degree k

在这里插入图片描述

1.2. 路径长度 h h h

路径是一个节点序列,其中每个节点都链接到下一个节点。(A path is a sequence of nodes in which each node is linked to the next one)。路径可以重复经过节点和边;在有向图里面,路径的方向必须要沿着箭头的方向。

有了路径的概念,就可以定义图中两个点之间的距离(distance)。距离即最短路径,如果两个节点不相连,则通常会将这两个节点之间的距离定义为 h = ∞ h=\infty h=或者 h = 0 h=0 h=0

在此基础上,可以定义图的直径(diameter)——The maximum (shortest path) distance between any pair of nodes in a graph,即图中节点距离的最大值。

对于连通图或者强连通有向图来说,图的平均路径长度(Average path length)可以由下面这个式子计算:
h ‾ = 1 2 E m a x ∑ i , j ≠ 1 h i j \overline{h}=\frac{1}{2E_{max}}\sum_{i,j \neq 1}{h_{ij}} h=2Emax1i,j=1hij

其中 h i j h_{ij} hij是节点 i i i和节点 j j j之间的距离, E m a x = n ( n − 1 ) / 2 E_{max}=n(n-1)/2 Emax=n(n1)/2是图中的最大边数。通常情况下,在计算时我们会忽略不相连的节点之间的距离。

1.3. 聚类系数(Clustering coefficient) C C C

参考资料:聚类系数的含义和计算

在图论中,集聚系数(也称群聚系数、集群系数)是用来描述一个图中的顶点之间结集成团的程度的系数。

对于图中的节点 i i i来说,其聚类系数 C i ∈ [ 0 , 1 ] C_i \in [0,1] Ci[0,1]。在计算聚类系数时,找出其直接邻居节点集合 N i N_i Ni,计算 N i N_i Ni构成的网络中的边数 k k k,除以 N i N_i Ni集合中可能存在的边数 ∣ N i ∣ ∗ ∣ N i − 1 ∣ / 2 |N_i|*|N_i-1|/2 NiNi1/2。即:
C i = n C k 2 = 2 e i k i ( k i − 1 ) C_i=\frac {n}{C{^2_k}}=\frac {2e_i}{k_i(k_i-1)} Ci=Ck2n=ki(ki1)2ei

其中 e i e_i ei表示节点 i i i的邻居节点构成的边, k i k_i ki表示节点 i i i的度, k i ( k i − 1 ) k_i(k_i-1) ki(ki1)是节点 i i i的邻居节点所能相连的最大的边的数量。

聚类系数计算
在这里插入图片描述对于节点 i i i来说,邻居节点一共有4个,这4个邻居节点构成了6条边,他们所有可能构成的边为 C 4 2 = 4 × 3 2 = 6 C{^2_4}=\frac {4 \times 3} {2}=6 C42=24×3=6因此其聚类系数为 C i = 6 6 = 1 C_i=\frac {6}{6}= 1 Ci=66=1
在这里插入图片描述对于节点 i i i来说,邻居节点一共有4个,这4个邻居节点构成了3条边,他们所有可能构成的边为 C 4 2 = 4 × 3 2 = 6 C{^2_4}=\frac {4 \times 3} {2}=6 C42=24×3=6因此其聚类系数为 C i = 3 6 = 1 2 C_i=\frac {3}{6}= \frac {1} {2} Ci=63=21
在这里插入图片描述对于节点 i i i来说,邻居节点一共有4个,这4个邻居节点构成了0条边,他们所有可能构成的边为 C 4 2 = 4 × 3 2 = 6 C{^2_4}=\frac {4 \times 3} {2}=6 C42=24×3=6因此其聚类系数为 C i = 0 6 = 0 C_i=\frac {0}{6}= 0 Ci=60=0

1.4. 连通分量(Connected components) s s s

无向图G的极大连通子图称为G的连通分量( Connected Component)。任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。

如何找到一张图的联通分量?

  • 随机选择一个节点作为起点,进行广度优先搜索;
  • 将广度优先搜索经过的节点进行标记;
  • 如果所有的节点都进行了标记,则该图是一个连通图;
  • 如果存在未标记的节点,从未标记的节点中随机选择一个节点作为起点进行广度优先搜索;重复第2步和第4步,直至所有节点都标记完毕;最后得到的多个连通子图中对的极大连通子图就是该图的连通分量。

2. 一些真实网络案例的属性计算

2.1 MSN Messager网络

通过MSN一个月的对话活动构建。网络中有180M的用户(节点),1.3B的边(即连个用户之间至少发了一条信息)。我们可以看一下MSN网络的一些属性:

属性结果讨论
度分布(Degree distribution)在这里插入图片描述严重倾斜。 k ‾ = 14.4 \overline{k}=14.4 k=14.4
聚类系数(Clustering coefficient)在这里插入图片描述 C ‾ = 0.11 \overline{C}=0.11 C=0.11
连通分量(Connected components)在这里插入图片描述强连通,MSN网络的连通分量中包含了99%的节点。
路径长度(Path length)在这里插入图片描述平均路径长度为6.6。从图中可以看出,超过 1 0 10 10^{10} 1010对节点之间的距离是6,可能这就是所谓的认识6个人,就认识了全世界吧hh。两个人之间最多通过30人就可以互相认识。

2.2 PPI网络(蛋白质相互作用的网络)

PPI网络中包含2018个结点(2018种蛋白质),2930条边。

属性结果讨论
度分布(Degree distribution)在这里插入图片描述倾斜。 < k > = 2.9 <k>=2.9 <k>=2.9
聚类系数(Clustering coefficient)在这里插入图片描述 C ‾ = 0.12 \overline{C}=0.12 C=0.12
连通分量(Connected components)有185个连通子图,其连通分量中包含1647个结点(81%的节点)。
路径长度(Path length)在这里插入图片描述平均路径长度为5.8。

在计算了这些网络的参数之后,这些参数有哪些实质的意义呢?这两个网络的参数也——聚类参数和路径长度也很接近。为了获得这些参数的意义,需要一些图模型作为benchmark。

3. 最简单的图模型——ER Random Graph Model (ER随机图模型)

在数学中,随机图是指由随机过程产生的图。

在图论的数学理论部分中,ER模型(Erdős–Rényi model)可指代两个密切相关的随机图生成模型中的任意一个。这两个模型的名称来自于数学家Paul Erdős(保尔•厄多斯)和Alfréd Rényi(阿尔弗烈德•瑞利),他们在1959年首次提出了其中一个模型,而另一个模型则是Edgar Gilbert(埃德加•吉尔伯特)同时并且独立于Erdős和Rényi提出的。在Erdős和Rényi的模型中,节点集一定、连边数也一定的所有图是等可能的;在Gilbert的模型中,每个连边存在与否有着固定的概率,与其他连边无关。在概率方法中,这两种模型可用来证明满足各种性质的图的存在,也可为几乎所有图的性质提供严格的定义。

ER随机图模型有两种,一个是 G n p G_{np} Gnp图,给定 n n n个节点和节点之间生成边的概率 p p p;一个是 G n m G_{nm} Gnm图,给定 n n n个节点和 m m m条边,这 m m m条边随机在这 n n n个节点间生成。

3.1 G n p G_{np} Gnp

在模型 G n p G_{np} Gnp中,随机连接节点构成一个图。图中每个连边彼此独立,连接的概率为 p p p。等价地,拥有 n n n个节点、 M M M个连边的所有图具有相同的概率。

需要注意的是,给定节点 n n n和概率 p p p,并不意味着生成唯一的图。下面是 n = 10 n=10 n=10 p = 1 / 6 p=1/6 p=1/6时生成图的一些例子:
在这里插入图片描述
下面介绍 G n p G_{np} Gnp图的一些性质。

G n p G_{np} Gnp图的度分布(Degree distribution)

G n p G_{np} Gnp图的度分布是二项分布(binomial)。

P ( k ) = C n − 1 k p k ( 1 − p ) n − 1 − k P(k)=C{^k_{n-1}} p^k (1-p)^{n-1-k} P(k)=Cn1kpk(1p)n1k

对于某个节点来说,度为 k k k的概率为从剩下的 n − 1 n-1 n1个点中选取 k k k个点,并与之相连的概率。
由二项分布的性质,可以得到:
k ‾ = p ( n − 1 ) \overline{k}=p(n-1) k=p(n1)

σ 2 = p ( 1 − p ) ( n − 1 ) \sigma^2=p(1-p)(n-1) σ2=p(1p)(n1)

σ k ‾ = [ 1 − p p 1 n − 1 ] 1 2 ≈ 1 ( n − 1 ) 1 / 2 \frac {\sigma} {\overline{k}}= [\frac{1-p} {p} \, \frac {1}{n-1}]^{\frac{1}{2}} \approx \frac {1}{(n-1)^{1/2}} kσ=[p1pn11]21(n1)1/21
在这里插入图片描述
根据大数定律,随着网络规模的增大,分布变得越来越窄(分布会越来越集中)——我们越来越确信一个节点的度在 k ‾ \overline{k} k附近。

G n p G_{np} Gnp图的聚类系数(Clustering coefficient)

G n p G_{np} Gnp图的聚类系数(Clustering coefficient)由公式 C i = = 2 e i k i ( k i − 1 ) C_i==\frac {2e_i}{k_i(k_i-1)} Ci==ki(ki1)2ei得到。

我们首先得到 e i e_i ei的期望值
E [ e i ] = p k i ( k i − 1 ) 2 E[e_i]=p \frac {k_i(k_i-1)}{2} E[ei]=p2ki(ki1)

这里 p p p为一对节点相连的概率; k i ( k i − 1 ) 2 \frac {k_i(k_i-1)}{2} 2ki(ki1)表示节点 i i i的邻居节点集能产生的边的数量。则
E ( C i ) = 2 E [ e i ] k i ( k i − 1 ) = p = k ‾ n − 1 ≈ k ‾ n E(C_i)=\frac {2E[e_i]}{k_i(k_i-1)}=p=\frac {\overline{k}}{n-1} \approx \frac {\overline{k}}{n} E(Ci)=ki(ki1)2E[ei]=p=n1knk

随机图的聚类系数通常都比较小。If we generate bigger and bigger graphs with fixed avg. degree k k k (that is we set p = k ⋅ 1 / n p=k \cdot 1/n p=k1/n), then C decreases with the graph size n n n.

G n p G_{np} Gnp图的路径长度(Path length)

G n p G_{np} Gnp图的路径长度(Path length)通过扩展数(expansion)来衡量。

在这里插入图片描述
扩展数 α \alpha α的计算如图所示,它描述了图的任意节点集与剩余节点之间边的数量。对于图中节点 V V V的任意子集 S S S,从该子集中的节点指向其补集 V \ S V \backslash S V\S中的节点的边 # of edges leaving S ≥ α ⋅ min ⁡ ( ∣ S ∣ , ∣ V \ S ∣ ) \text{ \# of edges leaving S} \geq \alpha \cdot \min (|S|,|V \backslash S|)  # of edges leaving Sαmin(S,V\S)。扩展数 α \alpha α通常也用来衡量图的鲁棒性(可扩展性)。

简单理解为:任取图中节点的一个子集,相对应的从子集中离开的(也就是和这些节点相关的)最小节点数目。
或者还可以理解为:为了让图中一些节点不具备连接性,需要cut掉图中至少多少条边?
(answer:需要至少cut掉 α ⋅ N \alpha \cdot N αN条边)
——摘自:图机器学习 2.2-2.4 Properties of Networks, Random Graph

如果一个图有 n n n个节点,其扩展系数为 α \alpha α,对于所有的节点对的来说,路径长度为 O ( ( log ⁡ n ) / α ) O((\log n)/\alpha) O((logn)/α)

对于 G n p G_{np} Gnp图来说,存在一个常数 c c c,使得 log ⁡ n > n p > c \log n > np > c logn>np>c d i a m ( G n p ) = O ( ( log ⁡ n ) / log ⁡ ( n p ) ) diam(G_{np})=O((\log n)/\log (np)) diam(Gnp)=O((logn)/log(np)) p p p衡量的是两个节点之间随机生成边的概率, p p p越大,遍历 G n p G_{np} Gnp图所需要的步数越小。

同时, G n p G_{np} Gnp图的可扩展性很好,所以通过广度优先搜索来遍历图中的所有节点相对比较容易:
在这里插入图片描述
其实我在看这一部分的时候理解起来比较费劲,而且在google上各种关键词搜索都没有搜索到讲的比较明确的资料。不过上面这张图还是画的比较明白的,可以结合图的广度优先生成树/森林来理解。

同时可以看到,在 p p p一定的情况下,随着节点数的增长, G n p G_{np} Gnp图的平均最短路径趋于某一个值。。
在这里插入图片描述

G n p G_{np} Gnp图的连通分量(Connected components)
p p p衡量的是两个节点之间随机生成边的概率, G n p G_{np} Gnp图的连通性也会随着 p p p而改变:
在这里插入图片描述
p = 1 / ( n − 1 ) p=1/(n-1) p=1/(n1)时,度平均为1,出现最大连通子图,每个节点至少有一条期望边。

在这里插入图片描述

3.2 G n p G_{np} Gnp图与实际网络的比较

我们将MSN网络与 G n p G_{np} Gnp图模型进行比较:
在这里插入图片描述
随机图模型与真实网络的比较:
在这里插入图片描述
随机图模型存在的一些问题:
在这里插入图片描述

  • 真实网络的度分布与随机图模型不同;
  • 真实网络的最大连通子图并不是通过相变(phase transition)产生的。
  • 由于没有局部结构——导致随机图模型的聚类系数过低。

更重要的一点,真实网络并不是随机图模型。那么,既然 G n p G_{np} Gnp图模型是错误的,我们了解和研究 G n p G_{np} Gnp图模型的性质有什么意义呢?
在这里插入图片描述

4. 小世界网络模型 The Small-world model

前面讲到,随机图模型其实不符合真实网络的分布。随机图模型正确模拟真实世界网络中的平均路径长度,但是低估了聚类系数。为了解决这个问题,我们引入第二个模型——小世界网络模型(The Small-world model)

小世界网络模型是一类具有较短的平均路径长度又具有较高的聚类系数的网络的总称。

我们怎样去构建一个小世界网络模型呢?可以先看下面这两张图:
在这里插入图片描述
Clustering implies edge “locality”
Randomness enables “shortcuts”

左边这张图保证了聚集性(比如在现实社会中,我的朋友的朋友就是我的朋友这种情况),但是这种时候图的直径就会比较大,就好比大家都认识,想要传递消息的时候不能直接打电话,得有无数人中间传话一样;右边这张图是随机图模型,图的直径比较小,两两之间能够直接沟通的渠道变多了,但是缺少聚集性的特点。

这里我们介绍WS小世界模型构造算法 [Watts-Strogatz ‘98] :
1、**从一个环状的规则网络开始:**网络含有 N N N个结点,每个节点向与它最临近的 K K K个节点连出 K K K条边,并满足 N > > K > > l n ( N ) > > 1 N>>K>>ln(N)>>1 N>>K>>ln(N)>>1
2、随机化重连:以概率 p p p随机地重新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。这样就会产生 p N K / 2 pNK/2 pNK/2条长程的边把一个节点和远处的结点联系起来。改变 p p p值可以实现从规则网络( p = 0 p=0 p=0)向随机网络( p = 1 p=1 p=1)转变。
在这里插入图片描述
小世界网络模型给我们描述真实的网络提供了一个比较贴切的模型:
在这里插入图片描述

5. Kronecker Graph Model——Generating large realistic graphs

我们怎样有效地构建超大的图呢?这里引入一个概念:自相似性(Self-similarity)——物体总是和自身的某些局部是相似的。Kronecker Graph Model就是通过递归来生成网络。其递归的方法是通过Kronecker乘积来实现的,Kronecker乘积就是生成自相似矩阵的一种方式。

在这里插入图片描述
Kronecker图就是通过一系列初始矩阵 K 1 K_1 K1与自身的Kronecker乘积来得到:
K 1 [ m ] = K m = K 1 ⊗ K 1 ⊗ ⋯ ⊗ K 1 ⏟ m times = K m − 1 ⊗ K 1 K{^{[m]}_1}=K_m=\underbrace{K_1 \otimes K_1 \otimes \cdots \otimes K_1}_{\text{m times}}=K_{m-1} \otimes K_1 K1[m]=Km=m times K1K1K1=Km1K1

Stochastic Kronecker Graph Model 随机Kronecker图模型

  • 生成 N 1 × N 1 N_1 \times N_1 N1×N1的概率矩阵 Θ 1 \Theta_1 Θ1
  • 递归计算第 k k k个Kronecker乘积 Θ k \Theta_k Θk
  • Θ k \Theta_k Θk中的值 p u v p_{uv} puv表示节点 u u u和节点 v v v之间生成边的概率
  • 按照这个概率产生实际的邻接矩阵,得到最后的大图模型
    在这里插入图片描述
    但是,这时候生成邻接矩阵的计算量回达到 N 2 N^2 N2次,速度会很慢。为了提高计算效率,我们引入drop操作——就是在 n = 2 m n=2^m n=2m个结点中递归生成边。

快速克罗内克图生成算法(Fast Kronecker Generator Algorithm)(用于生成有向图)

  • 构建归一化概率矩阵 L u , v = Θ u , v / ( ∑ Θ 矩阵内的素有元素之和 ) L_{u,v}=\Theta_{u,v}/(\sum \Theta \text{矩阵内的素有元素之和}) Lu,v=Θu,v/(Θ矩阵内的素有元素之和)
  • F o r i = 1 ⋯ m : For \, i=1 \cdots m: Fori=1m:
    - 令 x = 0 x=0 x=0 y = 0 y=0 y=0
    - 通过概率矩阵中的概率值随机选取一个元素 ( u , v ) (u,v) (u,v)
    - 在 u , v u,v u,v所在的象限内计算一个求和值 X + = u ⋅ 2 m − i X+=u \cdot 2^{m-i} X+=u2mi Y + = v ⋅ 2 m − i Y+=v \cdot 2^{m-i} Y+=v2mi
  • 在图 G G G中添加边 ( X , Y ) (X,Y) (X,Y)

这是真实网络和克罗内克图模型的比较:
在这里插入图片描述

这篇关于cs224w 图神经网络 学习笔记(二)Properties of Networks and Random Graph Models的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525274

相关文章

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学