Liu J., Kumar A., Ba J., Kiros J. and Swersky K. Graph normalizing flows. NIPS, 2019.
概
基于 flows 的图的生成模型.
符号说明
- G=(H,Ω), 图;
- H=(h(1),⋯,h(N))∈RN×dn, node feature matrix;
- Ω∈RN×N×(de+1), 其中 Ω:,:,0∈RN×N 表示邻接矩阵, Ω:,:,:1:(de+1) 表示 edge features.
- 寻常的 MPNN 可以表述为:
m(v)t+1=Agg({Mt(h(v)t,h(u)t,Ωu,v)}u∈N(v))h(v)t+1=Ut(h(v)t,mvt+1),
其中 Mt(⋅),Ut(⋅) 分别是 message generation function 和 vertex update function.
Graph Normalizing Flows
-
需要注意的是, 本文的 flows 和一般的 flows 有点区别, 它并不具有一个 encoder 先将 x 转换为隐变量 z 再 z′=f(z) 的过程, 而是直接构造 flow z=f(x).
-
简单来说, flow 需要保证 f(⋅) 是可逆的, 此时:
P(z)=P(x)|det(∂f(x)∂x)|−1.
-
作者是基于 RealNVP 进行的, 该方法将 x 切分为 x(0),x(1), 然后:
z(0)=x(0)z(1)=x(1)⊙exp(s(x(0)))+t(x(0)),
其中 s,t 为两个 non-linear 函数. 和显然 ∇xz 为一个下三角矩阵. 此时行列式就是对角线元素相乘.
GRevNets

-
让我们来看看作者是怎么构造可以的 flow 的.
-
首先, 对每个结点 v, 将它的结点特征切分为 h0t,h1t (这里我们省略标识 (v)).
-
前向的过程可以表述为:
H0t+12=H0t⊙exp(F1(H1t))+F2(H1t),H0t+1=H0t+12,H1t+12=H1t,H1t+1=H1t+12⊙exp(G1(H0t+12))+G2(H0t+12).
-
给定 H0t+1,H1t+1 我们可以得到:

-
于是我们有:
P(H0)=P(HT)T∏t=1|det(∂Ht∂Ht−1)|.
-
我们可以通过极大化对数似然 logP(H0) 来优化参数.
-
但是, 我们最终希望的其实是生成离散的图 (通过邻接矩阵 A 来刻画).
-
所以在生成的时候, 比如我们采样 HT∼N(0,1), 然后通过 GNF 得到 H0, 那么我们实际上还需要一个 decoder 将 H0 映射为 ^A.
-
为此, 作者还额外设计了一个 encoder, 将 A,H 映射为隐变量 X, 不过我不是特别清楚为什么 H 也是采样子正态分布而不是直接用 node features.
-
训练编码器是通过如下损失:
L(θ)=−N∑i=1N/2∑j=1Aijlog(^Aij)+(1−Aij)log(1−^Aij),
这里 N/2 的原因是作者假设我们生成的是无向图, 所以 A 是对称的.
-
对于 decoder, 作者采用的是一种非常简单的方式:
^Aij=11+exp(C(∥xi−xj∥22−1)).
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2022-05-25 Neural Factorization Machines for Sparse Predictive Analytics