CS224W摘要15.Deep Generative Models for Graphs

Posted oldmao_2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS224W摘要15.Deep Generative Models for Graphs相关的知识,希望对你有一定的参考价值。


CS224W: Machine Learning with Graphs
公式输入请参考: 在线Latex公式
这节和上节都是讲图的生成模型,上节讲传统方法,这节讲DL方法。
本节两个任务:
1.Realistic graph generation(重点)
2.Goal-directed graph generation(创建带有Constraint或者objective的图),例如:Drug molecule generation/optimization

Graph Generative Models

这块先复习生成模型的知识点,之前在别的地方有讲过。大略记一下:
从给定的数据中通过采样得到图 p d a t a ( G ) p_{data}(G) pdata(G)(这里的 d a t a data data相当于所有的真实数据,是无穷无尽的,没法穷举,因此只能尽量多的采样来样本来推测整体数据)
通过采样的数据,从中可以学习到数据的分布 p m o d e l ( G ) p_{model}(G) pmodel(G),再利用 p m o d e l ( G ) p_{model}(G) pmodel(G)来生成图

Setup

要从一个点数据集 { x i } \\{x_i\\} {xi}中学习一个生成模型。
p d a t a ( x ) p_{data}(x) pdata(x)是真实数据分布,这个分布是真实存在但由于数据的无穷性又无法直接学到,因此我们可以对其进行采样: x i ∼ p d a t a ( x ) x_i\\sim p_{data}(x) xipdata(x)
p m o d e l ( x ; θ ) p_{model}(x;\\theta) pmodel(x;θ)是我们要学习的模型, θ \\theta θ是模型参数,可以根据模型来估计真实的数据分布 p d a t a ( x ) p_{data}(x) pdata(x)
这个过程类似人口普查,我们不可能完全统计所有人,但是我们可以通过采样某个小区域的人口,来推断整个区域的人口的分布。
整个过程大概就是两个步骤
1.学习到模型
2.模型生成图结构

步骤1

学习到模型就是要使得 p m o d e l ( x ; θ ) p_{model}(x;\\theta) pmodel(x;θ)越接近 p d a t a ( x ) p_{data}(x) pdata(x)越好,这里通常使用(对数)最大似然的方式来进行估计Maximum Likelihood:
θ ∗ = arg max ⁡ θ E x ∼ p d a t a log ⁡ p m o d e l ( x ∣ θ ) \\theta^*=\\underset{\\theta}{\\argmax}\\mathbb{E}_{x\\sim p_{data}}\\log p_{model}(x|\\theta) θ=θargmaxExpdatalogpmodel(xθ)
找到最优化的参数 θ ∗ \\theta^* θ使得模型最有可能生成观测数据 x x x

步骤2

模型生成图结构就是从 p m o d e l ( x ; θ ) p_{model}(x;\\theta) pmodel(x;θ)采样数据,常用方法:
先从搞屎分布中采样:
z i ∼ N ( 0 , 1 ) z_i\\sim N(0,1) ziN(0,1)
然后对采样结果 z i z_i zi通过 f ( ⋅ ) f(\\cdot) f()(一般用DNN)进行变化:
x i = f ( z i ; θ ) x_i=f(z_i;\\theta) xi=f(zi;θ)
得到的结果 x i x_i xi就是服从复杂分布的结果

Auto-regressive models

这里使用的这个模型和VAE,GAN等模型不一样,VAE,GAN一般有两个部分构成:encoder+Decoder或者generator+discriminator,两个部分分别做数据的表征和生成,这个模型只有一个部分,直接用来做数据的density estimation and sampling。
模型类似语言模型,使用条件概率来表示联合概率:
p m o d e l ( x ; θ ) = ∏ t = 1 n p m o d e l ( x t ∣ x 1 , ⋯   , x t − 1 ; θ ) p_{model}(x;\\theta)=\\prod_{t=1}^np_{model}(x_t|x_1,\\cdots,x_{t-1};\\theta) pmodel(x;θ)=t=1npmodel(xtx1,,xt1;θ)
如果是语言模型,则是用前 t − 1 t-1 t1个词 x t − 1 x_{t-1} xt1预测第 t t t个词 x t x_t xt,从而得到整个句子
这里的图模型, x t x_t xt代表第 t t t个动作(添加节点或边)。
下面看具体的模型。

GraphRNN

GraphRNN: Generating Realistic Graphs with Deep Auto-regressive Models.

尤里组的工作,感觉整个课程基本都是老师的研究方向。。。
将生成图的过程看成一个序列,例如对于下面的图:

每个步骤记如下:

其中 π \\pi π是图 G G G的节点序列(这个当然有必要,因为之前说图是无序的,不知道这里如果不一样生成的模型会不会相同1),经过扩展可以将其对应到添加节点和边的动作序列: S π S^{\\pi} Sπ

图与序列的映射

由于动作包含两层意思:
Node-level:每次添加一个节点;

Edge-level:为新加节点与已存在的节点建立边(可以多条)

从邻接矩阵上来看,可以看到两个序列(实际上是序列的序列)关系如下:


经过图到序列的转化后,就将图生成问题变成了序列生成问题,不过需要处理两个序列:

  1. Generate a state for a new node (Node-level sequence)
  2. Generate edges for the new node based on its state (Edge-level sequence)

RNN

这里复习了一把RNN,RNN是用来处理序列数据的。
它吃输入序列,并更新它的隐状态
隐状态包含之前所有序列的信息
更新关键就是RNN Cells

s t s_t st: State of RNN after step t t t
x t x_t xt: Input to RNN at step t t t
y t y_t yt: Output of RNN at step t t t
RNN cell保护三个可训练参数: 𝑊 , 𝑈 , 𝑉 𝑊,𝑈, 𝑉 W,U,V

(1) Update hidden state:
s t = σ ( W ⋅ x t + U ⋅ s t − 1 ) s_t=\\sigma(W\\cdot x_t+U\\cdot s_{t-1}) st=σ(Wxt+Ust1)
(2) Output prediction:
y t = V ⋅ s t y_t=V\\cdot s_t yt=VsCS224W摘要总纲(已完结)

CS224W摘要总纲(已完结)

CS224W摘要10.Knowledge Graph Embeddings

CS224W摘要03.Node Embedding

CS224W摘要05.Message passin and Node classification

CS224W摘要11.Reasoning over Knowledge Graphs