LOADING

缓存加载中...

GraphML1

2025/3/31

 

l1

Modern deep learning toolbox is designed for simple sequences & grids.

挑战:

  1. 大小不固定,复杂拓扑结构

  2. 没有固定的节点顺序或参考位置

  3. 动态/多模态特征

Heterogeneous Graph(异构图)

定义$G=(V,E,R,T)$.
其中,有节点类型的节点$v_i\in V$,有关系类型的边$(v_i,r,v_j)\in E$,节点类型$T(v_i)$,关系类型$r\in R$
节点和边都有属性/特征。

表征是否是独一无二的?

Bipartite graph (二分图)

节点分两个集合(独立的),边都从一类连接另一类,一个集合内的节点间没有连接。

节点/边,社群/子图,图/图迭代。

  • prediction:节点(节点周围的子结构)/边/图级别。

图元(graphlets):小型、连通的非异构子图,用于捕捉图的局部拓扑结构。


l2 节点嵌入

传统ml:输入图–(特征建模:点/边/图级别的特征)–>结构特征–>学习–>(下游预测任务)

图表征学习:不再需要每次进行特征建模。自动学习到特征。

Embedding:将节点映射到向量:特征表征与嵌入。

将嵌入的向量相似性映射图中的节点相似性。编码网络信息。也可能用于下游预测任务。

编码与解码

需要去定义相似性函数的表达,以将原始图中的similarity映射到embedding空间。

浅层编码shallow encode:直接为每个节点学习一个低维向量表示,而不考虑网络的高阶拓扑结构或节点间复杂的交互关系。

$Z$是编码空间,其中每列是对于一个节点u(除了节点处是1,其他全为0)的embedding表示$z_u$。纵向表示维度,横向每列是一个节点。

解码器基于节点相似性

节点对(u,v)相似的情况下,最大化$z^T_vz_u$。

非监督学习embedding:根据节点周围保留的网络结构。

随机游走randomwalk方法

模型根据$z_u$预测:$P(v|z_u)$,从节点u开始走到v的可能性。(使用非线性函数,柔性最大值、sigmoid等)

则$z^T_vz_u$约等于从节点u开始走到v的可能性:两个向量的偏差(夹角)一个点随机游走到另一个点的概率正相关。

优点:

  1. 直观:随机游走能表现邻接或高阶相连的节点信息。

  2. 高效:不需要考虑所有节点对,只考虑游走过程中出现的。

$\therefore$ ,让邻域重叠最多的节点在嵌入空间靠近。通过最大似然学习。
给定节点u,我们希望通过学习预测其随机游走邻域$N_{(u)}$中节点的特征表示(类似交叉熵),目标是最大化对数似然。$O(|V|^2)$复杂度。
通过负采样优化为两个sigmoid函数的表示(最大化u和正样本v(邻域节点)的相似度+最小化u和k个负样本(随机无关)的相似度)。复杂度降为$O(|v|)$左右。
k更大:引入偏差/估算更准确。一般k取5-20。

或者使用梯度下降优化寻找最大化方法。

随机游走的优化:

  1. 进行短距离固定长度随机行走(批量梯度下降)。
  2. 收集节点u的邻域N(u)
  3. 通过预测节点u的邻域N(u)来优化它的嵌入方法。

DeepWalk作为后续参考。

node2vec

有偏随机行走。
进行BFSDFS

  • BFS:局部视角,同质性。发现节点的直接邻居。
  • DFS:全局视角,结构性。发现远距离节点的功能相似。

使用了两个超参数用来控制游走偏向:

  1. 返回参数p:回到上一个节点的概率。p越大越鼓励停留在局部(类似BFS),p越小越鼓励向远方走(DFS)。
  2. 出入参数q:向内或是向外。q越大,倾向于与上个节点接近的节点。q越小,倾向于远离上个节点的节点。

算法总结:

  1. 计算每边转移可能性。
  2. 驱动点从节点u走r的长度。
  3. 使用梯度下降优化。

在线性时间内完成。三步可以并行。

总之:在嵌入空间的距离反映原始网络中角色或潜在关系。

embedding整个图

  • 法1:嵌入所有点,组合起来。

  • 法2:引入虚节点来嵌入子图:将子图所有节点连这上面。

DiffPool作为参考。

矩阵分解MF

与ml中学的相似,节点嵌入矩阵相乘为图的邻接矩阵。使用ml中类似的最小化误差方法(MSE等)进行回归。

DeepWalk与之类似。

局限性

  1. 传导性限制:无法处理训练集外新图。统一图重复游走可能不便一致。
  2. 不能捕捉结构相似。
  3. 不能利用节点/边本身特征。

解决方案:深度表征学习/GNN。


l3/4/5 图神经网络,图卷积网络

GNN

聚合——>更新——>循环

GNN 信息传递框架,输入图,输出图。
不改变图的连接性,改变顶点/边等的属性。

输入:顶点,边,全局的属性向量。
输出:更新后的属性向量。

最后一层:所有节点共享一个全连接层的数据。

汇聚pooling:找到一个点/边相连的点/边加上全局向量。得到代表那个点/边的向量。

信息传递:某节点+邻居节点再进入更新层。(不加权的卷积?)

用图来理解:

每个图经过一次更新层,获得更远一阶的节点信息。信息传递

顶点的信息到边再到顶点。

全局信息?
消息在点/边之间传递很慢。加入master node(虚拟)。与所有节点(也相当于边)相连。汇聚过程中全部汇聚进入。

GCN,graphsuge

GCN可以认为是很多子图,子图代表向前走k步的汇聚(假设有k层)。

卷积:利用周围的特征。
GCN:单纯是聚合环节与GNN有所不同。解决聚合过程中,周围信息(节点/边)的权值问题。

  • 平均池叫GCN,最大池叫graphSUGE
    公式上:一个点与另一个点的度数 的几何平均的倒数(拉普拉斯矩阵)作为权值,乘到某个点的卷积中,避免信息差很大在卷积过程中使得一个点的更新受很大影响。
    (思想:对称归一化。)

GNN不关注ID只关注特征。所以如果特征不是唯一的,GNN不能区别点

颜色:特征——>embedding.

computationalGraph:计算图。用于表示数学计算过程的有向图,它将复杂的计算分解为一系列节点(Nodes)​和边(Edges)​,直观展示数据流动和运算依赖关系。

GNN中,计算图与每个节点周围的有根子树结构相同。如果有根子树结构不同,根节点用不同颜色表示。(单射)

要求GNN每步单射聚合保留节点周围的邻居信息,包括多次聚合后(高阶子树!)

但GCN和graphSUGE不能完美embedding周围节点:如果数量相同,但类别不同,aggregate后结果是一样的。
所以我们需要单射多集函数,保留数量信息。

GIN

最大化表达:GIN。可学习的Sum聚合 + ​多层感知机(MLP)​,保证邻居信息单射性。基于图同构测试

color-refine(WL测试一维版)来测试是否同构:每个节点初始化为1,每种数字代表一种颜色。每次聚合根据节点和周围颜色hash得到新颜色。一直聚合直到颜色稳定。
迭代完成时,颜色分布一致,可能同构;不一致,不同构。


GIN与WL图核比较。

还有些gnn不能解决的基本图结构,比如环的不同。

limitations & break

好的GNN:
如果两节点有1相同/2不同的邻居结构,则他们应该有相同/不同的embedding.

但是对于1,当两个节点有相同的邻居结构,我们也可能将他们放到不同的embedding:位置信息,在图中的位置不同。

GNN信息传递的谱分解

GNN三种失效:点/边/图级别,计算图(computational)一致(无法区分)。

  • WL核保留了图的对称性。但依赖对称性会无法区分某些非同构图。如下。

  • 图的对称性也会保留在谱分解中,即可能导致谱信息的模糊。WL核并不能充分利用谱信息的全部信息。
    即谱分解的信息是wl着色的信息的超集。

根据GIN的公式:

所以我们可以把更新过程写成矩阵形式

我们就能将图特征分解为特征值/特征向量,它们表达了整张图隐含的信息。

  • 特征值:宏观性质。最大特征值:最大度/连通性。特征值分布:稀疏/稠密。零特征值:连通分量数。

  • 特征向量:第一特征向量:图中心性。高频特征向量:局部震荡模式。

WL算法的颜色更新仅依赖于不正交于1的特征向量(低频平滑)。
而对称图很多特征向量正交于1(高频振荡)。

使用GNN计算子结构

只需要为节点编ID。可以计算图的闭合循环。

包含位置信息的GNN

节点根据它们的位置/结构性特征在图中被打上标签。

传统GNN因为节点计算图相同会失效。

引入锚点:随机选择一个节点。作为坐标帮助图中节点定位。
拓展:锚点集:锚点越多,对于节点位置的表达越精准。

理论支撑:Bourgain 定理

。失真率logn。