CS224W笔记-第十课:深度图生成模型
第九课是一个助教的实践课,所以就不写讲义了。
回顾上节课的内容
GNN完成了把图结构转化到向量空间,即称为一个 E n c o d e r Encoder Encoder。其基本思路是通过不同的局部图结构构成的计算图,使用共享的参数构建深度网络,把邻居结点的特征层层聚合到一个节点,完成embedding的计算。基于这个思路,GCN和GraphSage使用不同的聚合方法构建了深度图神经网络。
这个编码的过程可以用下图来示意:
第九课的内容就是把这个过程反过来,即从右侧向左侧实现一个解码器 D e c o d e r Decoder Decoder。
图生成问题定义
给定一系列真实的图,使用模型生成人造的图。问题的核心就是:
- 如何评估一个模型;
- 如何用这个模型生成图。
两种类型的图生成任务
- 现实图生成:生成和给定的一系列图想类似的图。这是这节课主要介绍的。
- 特定目的的图生成:生产针对特定目标或限制进行优化的图。
图生成的挑战
- 需要生成的数据量( n n n个点就需要生成 n 2 n^2 n2个值)很大,而且生成的图的大小也差别很大。
- 生成的结果不具有唯一性,改变点的顺序不会改变图,但输出结果却会变( n n n个点的图,会有 n ! n! n!种邻接矩阵的表示方法)。这让优化结果很困难。
- 生成的结果具有复杂的依赖性,因为边的生成可能要依赖全图的结构。
问题设定:
- 训练数据是来自 p d a t a ( G ) p_{data}(G) pdata(G)采样的一批图。
- 目标是:
- 学习到一个模型分布 p m o d e l ( G ) p_{model}(G) pmodel(G)
- 由此分布采样获得的生成图
图生成的机器学习基本方法——生成模型概述
设定:
从一系列数据样本 { 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 \backsim p_{data}(x) xi∽pdata(x)
- p m o d e l ( x ; θ ) p_{model}(x; \theta) pmodel(x;θ)是由参数 θ