用于记录自学 图神经网络。
- 目录
- 图的基础知识
- Graph Embedding
- Graph Neural Network (GNN)
- Heterogeneous Graph Attention Network (HAN)
- Graph Transformer Networks (GTN)
- Metapath2Vec
- General Attributed Multiplex HeTerogeneous Network Embedding (GATNE)
- Bipartite Network Embedding (BiNE)
- Signed Graph Convolutional Network
- Signed Graph Attention Networks
- [SDGNN: Learning Node Representation for Signed Directed Networks](#SDGNN-Learning Node-Representation-for-Signed-Directed-Networks)
- Dynamic Graph
- 参考链接
图
一张图是一个二元组
图的分类
有向图,无向图,混合图(边既可以有向也可以无向)。
图的表示
邻接表,邻接矩阵。
度
入度(箭头指入),出度(箭头指出)。
子图
对于图
连通图
对于一个 无向图,如果任意的节点
有向图连通性
- 强连通图:任意两个节点互相对称可达的 有向图。
- 弱连通图:任意两个节点至少单向可达的 有向图。
图直径
图中任意两点之间 最短路径 中的 最长者。
度中心性 Degree Centrality
用来刻画节点中心性的最直接度量,用来发现图中与其他关联最多的顶点。
中介中心性 Betweenness Centrality
衡量顶点在图中担任 桥梁 角色的程度,即顶点出现在其他任意两个顶点对之间最短路径的次数。
接近中心性 Closeness Centrality
用于计算每个顶点到其他所有顶点的最短距离之和。
特征向量中心性
测量节点对网络影响的方式。给定一个节点集合为
- 异构图 (Heterogeneous Graph Neural Networks)。即节点和边是有类别之分的,至少有两种及以上种类的边或至少有两种及以上种类的节点,也可以同时存在不同类别的边和节点。
- 二部图 (Bipartite Graph Neural Networks)。即二分图,直观理解图分成左右两部分,两部分的节点之间可以相互连接,但同一边的节点之间一定没有连线。
- 多维图 (Multi-dimensional Graph Neural Networks)。即两个节点间可能有多种关系的连线,例如人可以 "点击","购买","评论" 某商品。
- 符号图 (Signed graph)。边上带有符号关系的图。例如 "点赞" 和 "点踩"。
- 超图 (Hypergraphs)。一条边连接着两个及以上的节点。
- 动态图 (Dynamic Graphs)。节点或边会随着时间的变化而变化。
主要思想是在图结构上进行 随机游走,产生大量 节点序列,然后将这些序列作为训练样本输入 word2vec 进行训练,采用 skip-gram 算法,最大化随机游走序列的似然概率,并使用 随机梯度下降 学习参数,得到物品的 embedding。
捕获节点的一阶和二阶相似度,分别求解,再将一阶二阶拼接在一起,作为节点的 embedding。
用于描述图中成对顶点之间的局部相似度。形式化描述为若
对于每一条无向边
经验分布 为:
常用指标是 KL 散度,则 优化目标 为 最小化:
用来表示
对于有向边
优化目标 是。其中
经验分布 是。其中
使用 KL 散度 并且设
采用 有偏向的随机游走 策略来获取顶点的近邻序列,使用类似 skip-gram 方式生成节点 embedding。
给定当前顶点
引入两个超参数
-
$q$ 值小,则 探索性强。会捕获 同质性节点,即相邻接点表示相似,更像 DFS。 -
$p$ 值小,则 相对保守。会捕获 结构性,即某些节点的图上结构,更像 BFS。
通过比较两个顶点间距离为
$k$ 的环路上的有序度序列来层次化衡量结构相似度,对图的结构信息进行捕获,从而发掘节点间 空间结构相似性。当图的结构重要性大于邻居重要性时,有较好的效果。
-
$R_k(u)$ :到顶点$u$ 距离为$k$ 的 顶点集合。例如$R_0(u)$ 即节点本身组成的集合,$R_1(u)$ 则是直接与节点相邻节点组成的集合。 -
$s(S)$ :顶点集合$S$ 的 有序度序列。 -
$f_k(u, v)$ :顶点$u$ 和顶点$v$ 之间距离为$k$ 的环路上的结构距离。
其中
- Dynamic Time Warping (DTW):用来衡量两个不同长度且含有重复元素的序列的距离的算法。
-
$d(a, b) = \frac{\max(a, b)}{\min(a, b)} - 1$ :基于 DTW 的元素之间距离函数。 -
$w_k(u ,v) = e^{-f_k(u ,v)}$ :第$k$ 层中顶点$u$ 和 顶点$v$ 的 边权。
通过 有向边 将 属于不同层次的同一顶点 连接起来,则不同层次同一顶点间的边权是。
- 采用 随机游走,每次采样的顶点更倾向于选择与当前节点结构相似的节点。
若决定在当前层游走,则从顶点
若决定切换不同的层,则以如下概率选择
采用多个非线性层的方式捕获一阶二阶的相似性。
多层的图卷积神经网络,每一个卷积层仅处理一阶邻域信息,通过叠加若干卷积层可以实现多阶邻域的信息传递。
每一个 卷积层的传播规则是。
-
$\hat{A} = A + I_N$ :无向图$G$ 的邻接矩阵加上自连接,$I_N$ 是单位矩阵。 -
$\hat{D}$ 是$\hat{A}$ 的度矩阵,即 $\hat{D}{ii} = \sum_j\hat{A}{ij}$。 -
$H^{(l)}$ 是第$I$ 层的激活单元矩阵,$H^0 = X$。 -
$W^{(l)}$ 是每一层的参数矩阵。
通过学习一个对邻居节点进行聚合表示的函数来产生目标顶点的 embedding 向量。先采样邻居节点的向量信息,然后对这些信息进行聚合操作,最后和自己的信息进行拼接得到单个向量,并且 训练权重函数 来生成节点的 embedding。
采样数量 少于 邻居节点数时,采用 有放回 抽样方法。采样数量 多于 邻居节点数时,采用 无放回 抽样方法。
minibatch 仅采样部分邻居节点,不使用全图信息,适用于大规模图训练。具体方式如下图:
常用聚合函数
-
MEAN aggregator:将目标顶点和邻居顶点的
$k - 1$ 层向量 拼接 起来,然后对向量的每个维度进行 求均值 操作,将得到的结果做一次 非线性变化 产生目标顶点的第$k$ 层表示向量。
-
Pooling aggregator:先对目标顶点的邻结点表示向量进行一次非线性变换,之后再进行一次 pooling 操作(maxpooling 或 meanpooling),将得到结果与目标顶点的表示向量拼接,最后再进行一次非线性变换得到目标顶点的第
$k$ 层表示向量。
- LSTM aggregator:有更强的表达能力,但不是输入对称的,所以使用时需要对顶点的邻句 乱序。
无监督学习。基于图的损失函数希望 临近的节点具有相似的向量表示,同时让 分离的节点表示尽可能区分。目标函数如下:
其中,$v$ 是通过 固定长度的随机游走 出现在
多头注意力机制 使用不同参数重复训练多次拼接成一个大矩阵。
在最后的预测层则直接在向量的每个位置 取平均值 得到节点的最终特征。
基于 注意力机制 的 异构图 神经网络,利用 语义级别注意力 和 节点级别注意力 来同时学习 元路径 和 节点邻居 的重要性,并通过相应地 聚合 操作得到最终的节点表示。
定义异构图为
格式是
例如可以通过 电影 - 时间 - 电影 来定义一个 Meta-Path,从而将同一年的电影进行关联,并在这种 Meta-Path 下形成一条两个电影之间的边。
不同类别的节点
然后使用 自注意力机制 学习 每个节点的权值,对于给定的 节点对
其中 $\text{att}{\text{node}}$ 表示 节点级别 的 attention,对于同一个 meta-path $\phi$ 下的目标节点,其邻居节点的权值是 共享的。$\sigma$ 是激活函数,$|$ 是拼接操作,$a\phi$ 是节点级别的 attention 向量。然后通过 softmax 操作得到每个特征向量的 权值系数。
最后,节点
节点的类别可能会非常多,所以引入 多头注意力机制。
语义级别的 Attention 将不同类型的连接的 embedding 组合起来。假设每个类别的权值为
其中
其中
最终,根节点的嵌入表示。
HAN 是一个 半监督模型。我们根据数据集中有的 有标签数据,使用 误差反相传播算法 对模型进行训练,使用 交叉熵损失函数。
其中,$C$ 是分类器的参数,$y_L$ 是有标签的节点,$Y^l$ 和
通过自动学习异构图并生成不同长度的 meta-path,再结合传统的 GCN 算法以端到端的方式来学习图上有效的节点表示。
首先使用不同卷积核对 邻接矩阵
然后,通过将邻接矩阵相乘来计算某种 meta-path 的矩阵,并使用度矩阵对其正则化以保证稳定性。
任意长度
这样很容易将 短的 meta-path 忽略,因此将 单位矩阵 进来
GT 层产生一组 meta-path后,通过多个不同的图结构学习不同节点,在
专注于 异构网络,使用 基于 meta-path 的随机游走策略 来构建每个顶点的异构邻域,再使用 Skip-Gram 模型来完成顶点的嵌入。
metapath2vec: Scalable Representation Learning for Heterogeneous Networks
对于一个 同构网络
其中,$N(v)$ 表示顶点
而 metapath2vec 主要分为 Meta-Path-Based Random Walks 和 Heterogeneous Skip-Gram 两个部分。
一种异构网络上的随机游走方式。
一个异构网络
在第
其中。$v_t^i \in V_t$,$N_{t + 1}(v_t^i)$ 表示顶点
且 meta-path 常常以对称方式使用,即顶点
这样保证不同烈性顶点之间的语义关系可以适当融入 Skip-Gram 模型中去。
使用 Skip-Gram 模型通过在顶点
$v$ 的邻域$N_t(v), t \in T_v$ 上 最大化条件概率 来学习异构网络$G = (V, E, T)$ 上的顶点表征。
其中
其中
metapath2vec 通过 不考虑 顶点的类型进行节点抽取来确定当前顶点概率。
在 softmax 环节考虑顶点类型,从而在 Negative Sampling 环节采样时考虑顶点类型。
softmax 函数 根据不同类型的顶点 的上下文
最终得到的目标函数是。
解决了 AMHEN 图网络,其包含不同类型的节点,相邻节点之间有不同类型的边,且每个节点有多个属性值。
AMHEN 是 Attributed Multiplex HEterogeneous Network 的缩写,对于这种图网络的研究有几大难点:
- 多类型边:每个节点对之间都有可能有多条不同类型的边,这些信息需要被充分考虑。
- 观察不全面:实际数据往往是观察不全面的,常规的神经网络嵌入算法无法解决 长尾 和 冷启动 的问题。
- 可拓展性:实际数据往往巨大无比,这就非常考验算法对大的神经网络的适应性和拓展性了。
基于此,我们提出了 GATNE 方法,它正式定义了多属性多类型的异构图嵌入问题,且支持 转换型 和 归纳型 两种嵌入方式,而且其中的算法非常 高效(时间复杂度较低,有利于解决超大规模图网络)。
-
图网络
$G = (V, E)$ ,$V$ 是$n$ 个节点的集合,$E$ 是边的集合。每条边$e_{ij} = (v_i, v_j)$ 都有一个权重$w_{ij} \geq 0$ ,表示连接的两个节点之间相关性强弱。实际问题中,如果$G$ 是有向图,则$e_{ij} \neq e_{ji}$ 并且$w_{ij} \neq w_{ji}$ 。如果$G$ 是无向图,则$e_{ij} \equiv e_{ji}$ 且$w_{ij} \equiv w_{ji}$ 。具体符号定义如下:
-
异构图
$G = (V, E)$ 有一个 节点类型映射函数$\phi: V \rightarrow O$ 和一个 边类型映射函数$\psi: E \rightarrow R$ 。$O$ 和$R$ 分别代表所有结点类型的集合、所有边类型的集合。异构图必须满足$|O| + |R| \gt 2$ 。 -
属性图
$G = (V, E, A)$ ,每一个节点$v_i \in V$ 都有一个关联的属性数组,$A = {x_i | v_i \in V}$ 是所有结点的节点属性的集合,$x_i$ 就是节点$v_i$ 对应的属性数组。 -
属性化多路异构图
$G = (V, E, A), E = \bigcup_{r \in R} E_r$ ,其中$E_r$ 包含了所有类型是$r \in R$ 的边。我们可以根据边类型将这个图划分成多个子图$G_r = (V, E_r, A)$ 。
对于某个特定节点
其中
其中
利用 自注意力机制 计算
其中,$b_i$ 是节点
由于 GATNE-T 只是将现有数据进行转换,因此无法处理新的数据,而 GATNE-I 便是从现有数据中学习某种规律,并将其转换成函数表示,因此对于新的数据也可以很好地处理。
我们定义 base embedding
最终,我们还加入了额外的属性贡献,得到:
其中
GATNE-T 和 GATNE-I 本质区别 在于:
- 在 GATNE-T 中,base embedding
$b_i$ 和 initial edge embedding$u_{i, r}^{(0)}$ 是直接根据网络结构对每个节点进行训练得到的,因此无法处理新的节点。 - 在 GATNE-I 中,我们则训练一个 转换函数
$h_z$ 和$g_{z, r}$ ,这两个函数可以将原始特征$x_i$ 映射成$b_i$ 和$u_{i, r}^{(0)}$ ,因此可以处理新的节点。
使用 meta-path-based 随机游走 来生成节点序列,使用 skip-gram 算法对生成的节点序列学习得到 embeddings。转移概率是:
所以,给定节点
其中,$\theta$ 是所有的参数,我们采用异构的 softmax 函数进行标准化,最终得到:
其中,$\sigma(x) = 1 / (1 + \exp(-x))$ 是 sigmoid 函数,$L$ 是负采样样本数量,而
我们的随机游走算法 时间复杂度 是
进行有 目的性 的随机游走生成节点序列,然后设计一种同时考虑显式关系和隐式关系的新型优化框架,来表示学习节点的表示。
- 显示关系 是指能从数据集中直接获得的关系信息,如图中可直接观测到的边信息。
- 隐式关系 是指数据中隐含的关系信息,例如两个节点没有直接边连接,但通过某个节点间接连接在一起,那么可以认为这两个节点之间具有隐式关系。
给定异构图
一个好的 embedding 需要能够重建原来的图网络,因此我们从 显式关系和隐式关系 两个方面来重构原始的二分图学习,并将学习到的 embedding 结合起来学习到最终的节点表示。
对显式关系的建模,考虑两个已有连接边的节点,其 连接概率 定义为
显然,两节点之间边的权重值越大,概率值越大。参考 word2vec 向量内积思想,将两个节点的嵌入在空间内的相似度表示为
然后使用 KL 散度来衡量俩分布的差异并以最小化为目标,即显式关系的目标函数是
$$ \text{minimize} \quad O_1 = \text{KL}(P|\hat{P}) = \sum_{e_{ij} \in E} P(i, j) \log(\frac{P(i, j)}{\hat{P}(i, j)}) \
\propto - \sum_{e_{ij} \in E} w_{ij} \log\hat{P}(i, j) $$
直观理解是,对于两个相连紧密的节点,学习到的两个节点在低位向量空间中的表示也是靠近的,即保持了 局部临近性。
隐式关系相对于同类型节点而言,面对大规模的二分图,需要用到 DeepWalk 中的随机游走,生成两个包含不同类型节点的语料库。
- 构建顶点序列的语料库
将二分图 拆分成两个同质网络,定义两个同类型节点的二阶相似度为
这样得到两个同质网络的权重矩阵,大小分别为
然后我们在这两个同质网络的权重矩阵运行 截断随机游走,引入 偏置 和 自适应 的随机游走产生器,具体参照规则如下
- 对于每个节点,其 中心性 越强,从它开始的随机游走序列越多。
- 选定一个 概率值,使得随机游走会在某一步随机地停止,得到长度不同的节点序列。
- 建模隐式关系
在上述生成的两个语料库中分别使用 Skip-Gram 模型来学习节点的表示,目标函数如下
由于计算
- 负采样
采用 局部敏感哈希 算法,给出
其中
其中
分别通过显式关系和隐式关系得到节点表示,然后我们需要将这两者结合起来形成最终的节点表示,最终的目标函数公式是
使用 SGA 来优化这个函数,因为优化这个函数的不同部分需要不同的训练实例,所以 分布优化。
首先优化 显式关系,更新节点公式为
然后优化 隐式关系,公式如下
其中
将 GCN 框架运用到有权图中存在两个问题,第一是如何正确处理负权边,因为它们的属性和正权边完全不同,第二是如何将正权和负权边相互结合形成节点的表示。
所以根据 平衡理论,定义了 平衡路径,以此为基础提出 SGCN。直观来说,平衡理论就是朋友的朋友是朋友,朋友的敌人是敌人,敌人的朋友是敌人,敌人的敌人是朋友。据此,我们将带权图周期分类为 平衡 或 不平衡。平衡的周期包括 偶数条 负链接,不平衡的周期包括 奇数条 负连接。
并且我们按照路径的长度做出划分,$B_i(1)$ 就代表节点
因此,我们推导出通过
在 SGCN 中,信息的传递和聚合,每层将维持两个表达:一个对应节点的平衡邻居集合,另一个对应不平衡邻居集合。所以每一层的聚合函数也分为两个部分,针对任意的节点
当模型网络深度增加时,聚合函数会更加复杂,当
基于此,SGCN 在训练过程中,希望分类节点之间的连接关系,并且运用平衡理论让有正边连接的节点要比没有边连接的节点要比有负边连接的节点的距离更进。目标函数设计为:
平衡理论:朋友的朋友是朋友,敌人的敌人是朋友,常用与无向图。
地位理论:从
所有满足平衡理论和地位理论的可能的三角形。
对每一个 主题,都采用 GAT
方式聚合邻居节点。
然后,通过一个线性组合将特征聚合成单个节点最终的特征表示。
使用无监督损失函数,此函数反映了朋友的嵌入是相似的,而敌人的嵌入式不相似的。
基于平衡理论和地位理论的
layer-to-layer
的有向关系 GNN 模型。它在不同的有向关系定义下的节点之间聚合和传播信息。
对于一个有向信号图,方向和符号信息反映了两个节点之间不同关系和语义的信息,因此应该区分不同邻居之间的不同关系。基于此作者定义了 4 种节点间关系:
基于不同的有向符号关系(Signed directed relation)$r_i$ 我们可以得到对应的邻居 append
到节点嵌入表示中。
GNN 的聚合器包括 mean aggregators(均值聚合器),attention aggregators(注意力聚合器)等。对于均值聚合器,节点信息传播框架是
对于注意力聚合器,首先需要计算节点
在得到节点之间在关系
损失函数由 边的符号预测、边的方向预测 和 三角关系预测 三部分组成。
对于边的符号预测,我们使用 交叉熵损失函数 来评估两个节点间的符号预测:
在社会学理论中,status theory 体现在有向图边的方向中,因此对于一节点对
其中
对于三元关系
基于此定义三元关系目标函数为:
其中
根据符号、方向和三角形损失函数,总体目标函数如下,其中
分类
- Static。忽略图中动态信息,将其作为一张静态图来处理。
- Edge Weighted。动态信息作为静态图中的节点或者边的标签使用。
- Discrete。使用一组有序的图(快照)来离散表示。
-
Continuous Networks。使用确切时间信息的表示形式。
-
The Event-based Representation。基于链接持续时间的动态网络的表示。$EB = {(u_i, v_i, t_i, \delta_i); i = 1, 2, \dots}$。其中
$u_i, v_i$ 表示发生事件的一对节点,$t_i$ 表示发生时间,$\delta_i$ 表示持续时间。 - The Contact Sequence Representation。在接触序列中,链接是瞬时发生的,不存在持续时间,比如电子邮件的发送。
- The Graph Stream Representation。基于事件的表示,它将链接的出现和链接的消失视为单独的事件。
-
The Event-based Representation。基于链接持续时间的动态网络的表示。$EB = {(u_i, v_i, t_i, \delta_i); i = 1, 2, \dots}$。其中
主要通过结构自注意力、时间自注意力和图环境预测来将动态图中信息提取。
- 在结构自注意力层,输入为一个 静态快照 对应的邻接矩阵,以及节点的 one-hot 向量。通过注意力机制的加权,将节点的直接邻居嵌入进行聚合。
- 在时间自注意力层,输入为从上层学得的节点嵌入,并与关于时间的位置编码结合,最终形成输入的节点嵌入。即:
其中
在进行时间层面的嵌入聚合时,应当注意使用
在每个时间点,采用 随机游走 的方式,获得节点的上下文节点来构建正样本,负样本采用负采样的方式得到。