GAP: Generalizable Approximate Graph Partitioning Framework模型

前言

最近在调研知识图谱分割算法,看到了这篇论文GAP: Generalizable Approximate Graph Partitioning Framework,直接翻译就是可推广的近似图划分框架,按照我的理解,意思大概就是说,模型是以图节点的近似程度为基础来划分子图,并且模型具有一定的泛化能力。

GAP模型

GAP模型
GAP模型主要包含图嵌入模块(Graph Embedding Module)和图分割模块(Graph Partitioning Module):

  • 图嵌入模块:使用GCN(Graph embedder)提取特征和GraphSAGE(Node embeddings)生成高维图节点表示;
  • 图分割模块:使用全连接层和Softmax;

图嵌入模块

图嵌入模块

图卷积神经网络GCN

论文:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
GAP模型使用GCN来提取特征,假设图 G G G N N N个顶点,每个顶点都有自己的特征,假设顶点的特征组成 N × D N×D N×D维的矩阵 X X X,顶点之间的关系组成 N × N N×N N×N维的邻接矩阵 A A A,则GCN神经网络层与层之间正向传播可以表示为:
H l + 1 = σ ( A ^ H l W l ) H^{l+1}=\sigma(\hat{A}H^lW^l) Hl+1=σ(A^HlWl)
其中, A ^ = D ~ − 1 2 A ~ D ~ − 1 2 \hat{A}=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}} A^=D~21A~D~21 A ~ = A + I n \tilde{A}=A+I_n A~=A+In I n I_n In是单位矩阵, D ~ \tilde{D} D~ A ~ \tilde{A} A~的度矩阵, D ~ i i = ∑ j A ~ i j \tilde{D}_{ii}=\sum_j\tilde{A}_{ij} D~ii=jA~ij A ^ \hat{A} A^可以直接由邻接矩阵 A A A计算得到; W l W^l Wl是第 l l l层的权重矩阵, σ \sigma σ是非线性激活函数, H l H^l Hl是第 l l l层的特征,输入层特征 H 0 H^0 H0 X X X
GAP使用三层GCN来提取特征:
Z = t a n h ( A ^ t a n h ( A ^ t a n h ( A ^ X W 0 ) W 1 ) W 2 ) Z=tanh(\hat{A}tanh(\hat{A}tanh(\hat{A}XW^{0})W^1)W^2) Z=tanh(A^tanh(A^tanh(A^XW0)W1)W2)

GraphSAGE(Graph sample and aggregate approach)

论文:Inductive Representation Learning on Large Graphs
GAP模型使用GraphSAGE作为图嵌入模块,embedding既是高维特征的低维表示;GraphSAGE的核心是采样和聚合,先通过采样获取目标节点邻居的特征,再聚合邻居的特征生成目标节点的embedding。
GraphSAGE

GraphSAGE算法基本步骤如上图所示:

  1. 先对目标节点的邻居随机采样,降低计算复杂度(图中1跳邻居采样数=3,2跳邻居采样数=5)
  2. 生成目标节点embedding:先聚合2跳邻居特征,生成1跳邻居embedding,再聚合1跳邻居embedding,生成目标节点embedding
  3. 将目标节点的embedding输入全连接网络得到目标节点的预测值。
    算法1

算法1的输入包含了 k k k个聚合函数,就是 k k k次embedding操作;伪代码第4行使用聚合函数聚合节点 v v v的邻居得到 h N ( v ) k h_{N(v)}^k hN(v)k,第5行 h N ( v ) k h_{N(v)}^k hN(v)k h v k − 1 h_v^{k-1} hvk1拼接后进行非线性转换得到 h v k h_v^k hvk,最后经过L2正则化得到该层的输出。
此外,GraphSAGE算法支持miniatches处理节点和边:
算法2

算法2的伪代码2-7行阐述了GraphSAGE采样的过程; B \mathcal{B} B是要计算embedding的节点集合,即一个batch nodes; B k − 1 B^{k-1} Bk1表示节点 v ϵ B k v ϵ B^k vϵBk计算embedding需要的节点集合,所有 B k − 1 B^{k-1} Bk1 B \mathcal{B} B节点集合的1跳邻居的节点集合; N k ( u ) N_k (u) Nk(u)表示节点 u u u的邻居随机采样方法。算法2可以看出,GraphSAGE采样是从1跳邻居到 k k k跳邻居,聚合是从 k k k跳邻居到1跳邻居。

聚合函数

略,需要图

图分割模块

图分割模块

GAP模型的图分割模块比较简单,就是一个传统的全连接层 + softmax输出表示节点属于每个分区的概率。

损失函数

损失函数
GAP模型的损失函数主要考虑两个方面:

  1. 割边数
  2. 负载均衡
定义

给定图 G = ( V , E ) , V = { V i } , E = { e ( v i , v j ) ∣ v i ∈ V , v j ∈ V } G=(V,E),V=\{V_i\},E=\{e(v_i,v_j)|v_i\in{V},v_j\in{V}\} G=(V,E),V={Vi},E={e(vi,vj)viV,vjV}表示图 G G G中的节点和边的集合, n n n为节点数。图 G G G可以被分割为 g g g个不相交的集合 S 1 , S 2 , . . . , S g S_1,S_2,...,S_g S1,S2,...,Sg V V V g g g个集合中节点的并集: ⋃ k = 1 g S k = V , ⋂ k = 1 g S k = ∅ \bigcup_{k=1}^{g}S_k=V,\bigcap_{k=1}^{g}S_k=\emptyset k=1gSk=V,k=1gSk=

最小割

形成不相交集合需要移除的边数成为割 c u t cut cut,给定集合 S k , S ˉ k S_k,\bar{S}_k Sk,Sˉk
c u t ( S k , S ˉ k ) = ∑ v i ∈ S k , v j ∈ S ˉ k e ( v i , v j ) cut(S_k,\bar{S}_k)=\sum_{v_i\in{S_k},v_j\in{\bar{S}_k}}e(v_i,v_j) cut(Sk,Sˉk)=viSk,vjSˉke(vi,vj)
推广到多个不相交集合:
c u t ( S 1 , S 2 , . . . , S g ) = 1 2 ∑ v i ∈ S k , v j ∈ S ˉ k g c u t ( S k , S ˉ k ) cut(S_1,S_2,...,S_g)=\frac{1}{2}\sum_{v_i\in{S_k},v_j\in{\bar{S}_k}}^{g}cut(S_k,\bar{S}_k) cut(S1,S2,...,Sg)=21viSk,vjSˉkgcut(Sk,Sˉk)
最小割的标准有利于分割度较小的节点,导致分割得到的子图负载不均衡。(比如一个节点只有一度,切割该节点的一条边就可以得到一个子图)

归一化割

归一化割可以避免子图负载不均衡的问题:
N c u t ( S 1 , S 2 , . . . , S g ) = ∑ v i ∈ S k , v j ∈ S ˉ k g c u t ( S k , S ˉ k ) v o l ( S k , V ) Ncut(S_1,S_2,...,S_g)=\sum_{v_i\in{S_k},v_j\in{\bar{S}_k}}^{g}\frac{cut(S_k,\bar{S}_k)}{vol(S_k,V)} Ncut(S1,S2,...,Sg)=viSk,vjSˉkgvol(Sk,V)cut(Sk,Sˉk)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值