Graph Normalizing Flows

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), 其中 Ω:,:,0RN×N 表示邻接矩阵, Ω:,:,:1:(de+1) 表示 edge features.
  • 寻常的 MPNN 可以表述为:

    mt+1(v)=Agg({Mt(ht(v),ht(u),Ωu,v)}uN(v))ht+1(v)=Ut(ht(v),mt+1v),

    其中 Mt(),Ut() 分别是 message generation function 和 vertex update function.

Graph Normalizing Flows

  • 需要注意的是, 本文的 flows 和一般的 flows 有点区别, 它并不具有一个 encoder 先将 x 转换为隐变量 zz=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, 将它的结点特征切分为 ht0,ht1 (这里我们省略标识 (v)).

  • 前向的过程可以表述为:

    Ht+120=Ht0exp(F1(Ht1))+F2(Ht1),Ht+10=Ht+120,Ht+121=Ht1,Ht+11=Ht+121exp(G1(Ht+120))+G2(Ht+120).

  • 给定 Ht+10,Ht+11 我们可以得到:

  • 于是我们有:

    P(H0)=P(HT)t=1T|det(HtHt1)|.

  • 我们可以通过极大化对数似然 logP(H0) 来优化参数.

  • 但是, 我们最终希望的其实是生成离散的图 (通过邻接矩阵 A 来刻画).

  • 所以在生成的时候, 比如我们采样 HTN(0,1), 然后通过 GNF 得到 H0, 那么我们实际上还需要一个 decoder 将 H0 映射为 A^.

  • 为此, 作者还额外设计了一个 encoder, 将 A,H 映射为隐变量 X, 不过我不是特别清楚为什么 H 也是采样子正态分布而不是直接用 node features.

  • 训练编码器是通过如下损失:

    L(θ)=i=1Nj=1N/2Aijlog(A^ij)+(1Aij)log(1A^ij),

    这里 N/2 的原因是作者假设我们生成的是无向图, 所以 A 是对称的.

  • 对于 decoder, 作者采用的是一种非常简单的方式:

    A^ij=11+exp(C(xixj221)).

posted @   馒头and花卷  阅读(106)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2022-05-25 Neural Factorization Machines for Sparse Predictive Analytics
点击右上角即可分享
微信分享提示