系列文章目录
阅读笔记Graph Representation Learning–Chapter2
阅读笔记Graph Representation Learning–Chapter3
阅读笔记Graph Representation Learning–Chapter4
阅读笔记Graph Representation Learning–Chapter5
阅读笔记Graph Representation Learning–Chapter6
阅读笔记Graph Representation Learning–Chapter8
阅读笔记Graph Representation Learning–Chapter9
Chapter 9——Deep Generative Models
概要
上一章中讨论的传统的图的生成方法在许多情况下都很有用。他们可以用来有效生成具有某些属性的合成图,并且它们可以被用来让我们洞察在现实世界中某些图结构是如何产生的。然而,这些传统方法的一个关键限制是它们依赖于一个固定的,人为设定的生成过程。简而言之,传统的方法虽然可以生成图结构,但它们缺乏从数据中学习生成模型的能力。
在本章中,我们将介绍各种解决这一挑战的方法。这些方法将寻求从一组由图结构数据构成的训练集学习到一个生成模型。这些方法避免了在生成模型中手工编码特定的属性,如社区结构或者度分布。相反,这些方法的目标是根据给定一组图
G
1
,
G
2
,
.
.
.
,
G
n
{G_1,G_2,...,G_n}
G1,G2,...,Gn,设计一个可以生成与训练集中的图具有相似特性的图生成模型。
我们将介绍一些针对图结构的基本的深度生成模型。这些模型将采用三种最流行的方法来构建通用的深度生成模型:VAE,GAN,以及自回归模型。我们将专注于这些模型的简单并通用的变体,着重于较为高级的细节。并在必要时提供文献参考。此外,尽管这些生成技术原则上可以相互结合(例如,VAE通常与自回归方法结合使用),但在此我们将不会详细的讨论这种结合。相反,我们将从讨论图的基本VAE模型开始,再次我们寻求以自动编码器样式一次生成整个graph。 接下来,我们将讨论如何使用基于GAN的目标函数来代替变化损失,但仍要在一次生成的图的情况下进行。这些一次性生成模型与上一章中的ER和SBM生成模型类似,因为我们同事对图中的所有边进行采样。最后,本章将以对自回归方法的讨论结束,自回归方法允许逐步生成图,而不是一次性生成所有图。这些自回归方法与前一章的PA模型有相似之处,即在生成过程中每一步添加一条边的概率取决于之前添加到图中的边。为了简单起见,我们讨论的所有方法将只关注于生成图结构(即邻接矩阵),而不是生成节点或边缘特征。本章假设您基本熟悉VAEs、GANs和自回归生成模型,例如基于lstm的语言模型。在本书的所有主题中,图的深层生成模型在其开发中涉及的技术最多,也最为萌芽。 因此,本章的目标是介绍启发该领域早期研究的关键方法框架,同时重点介绍一些有影响力的模型。 因此,我们通常会避开低级细节,而倾向于对这个初生的子领域进行更高层次的考察。
9.1 VAE
将VAE应用于图结构的关键思想可以总结如下:
- 我们的目标是从真实的图结构的分布中(例如邻接矩阵)训练出一个概率解码器模型: p θ ( A ∣ E ) p_{\theta}(\mathbf A|\mathbf E) pθ(A∣E)。
- 从概率的意义上讲,我们旨在学习邻接矩阵的条件分布(该分布以某些潜在变量为条件开始)。
为了训练这个VAE,我们需要结合一个概率解码器模型: q θ ( Z ∣ G ) q_{\theta}(\mathbf Z|\mathcal G) qθ(Z∣G)。这个解码器模型将一个输入的图结构 G \mathcal G G映射为一个潜在变量 Z ∼ q θ ( Z ∣ G ) \mathbf Z\sim q_\theta(\mathbf Z|\mathcal G) Z∼qθ(Z∣G)的后验分布。这个想法是,我们共同训练编码器和解码器,一遍在给定从编码器采样的潜在变量的情况下,解码器能够重建训练集中的图结构。在训练完成后,我们可以抛弃编码器,通过从某些(无条件的)先验分布中采样潜变量 Z ∼ p ( Z ) \mathbf Z\sim p(\mathbf Z) Z∼p(Z),并将这些采样后的隐含变量送到解码器中来生成新的图结构。
要为图构建VAE,我们必须指定以下关键组成部分:
- 一个概率编码器 q ϕ q_{\phi} qϕ。对于图来说,编码器以一个图 G \mathcal G G作为输入。然后根据这个输入,在潜在表示上定义一个分布 q ϕ ( Z ∣ G ) q_{\phi}(\mathbf Z|\mathcal G) qϕ(Z∣G)。通常,在VAE中,使用具有高斯随机变量的重新参数化技巧来设计概率 q ϕ q_{\phi} qϕ函数。也就是说,我们将潜在条件分布指定为 Z ∼ N ( μ ϕ ( G ) , σ ( ϕ ( G ) ) ) \mathbf Z\sim\mathcal N(\mu_{\phi}(\mathbf G),\sigma(\phi(\mathcal G))) Z∼N(μϕ(G),σ(ϕ(G))) 并且 μ ϕ \mu_\phi μϕ和 σ ϕ \sigma_\phi σϕ是为正态分布生成均值和方差参数的神经网络,我们从中抽取潜在嵌入 Z \mathbf Z Z。
- 一个概率解码器模型 p θ p_\theta pθ。解码器将隐含变量 Z \mathbf Z Z作为输入,并使用此输入来指定图结构上的条件分布。本章中,我们假设 p θ p_\theta pθ定义邻接矩阵元素的条件分布,即 p θ ( A [ u , v ] = 1 ∣ Z ) p_{\theta}(\mathbf A[u,v]=1|\mathbf Z) pθ(A[u,v]=1∣Z)
- 一个隐空间的先验分布 p ( Z ) p(\mathbf Z) p(Z)。在本章中,我们将采用对于VAEs常用的标准高斯先验 Z ∼ N ( 0 , 1 ) \mathbf Z\sim\mathcal N(0,1) Z∼N(0,1)
给定一个图结构的训练集
G
1
,
G
2
,
.
.
.
,
G
n
{ \mathcal G_1,\mathcal G_2,...,\mathcal G_n }
G1,G2,...,Gn,我们可以通过最大化ELBO:
基本的思路是我们寻求最大化我们解码器的重建能力,即
E
q
θ
(
Z
∣
G
i
)
[
p
θ
(
G
i
∣
Z
)
]
\mathbb E_{q_{\theta}(\mathbf Z|\mathcal G_i)}[p_\theta(\mathcal G_i|\mathbf Z)]
Eqθ(Z∣Gi)[pθ(Gi∣Z)],并且最小化
q
θ
(
Z
∣
G
i
)
q_{\theta}(\mathbf Z|\mathcal G_i)
qθ(Z∣Gi)与
p
(
Z
)
p(\mathbf Z)
p(Z)之间的
K
L
\mathbf K\mathbf L
KL散度。
ELBO损失函数背后的动机源于变分推理理论。但是,关键之处在于我们想要在潜在表示上生成,满足以下两个(相互冲突的)目标的分布。
- 采样的潜在表示编码足够的信息,以使我们的解码器能够重构输入。
- 潜在分布与先验分布越接近越好。
第一个目标是确保当我们以训练图作为输入时,从被编码的隐含表示中解码出有意义的图结构。第二个目标作为一个正则函数,确保即使我们从 p ( Z ) p(\mathbf Z) p(Z)中采样,解码器也能解码出有意义的图结构。如果我们想在训练结束后能够生成新的图,那么第二个目标就显得至关重要。我们可以通过从之前的图中采样并将这些潜在的嵌入输入到解码器来生成新的图,并且只有在第二个目标得到满足时,这个过程才会有效。
在下面的章节中,我们将描述VAE思想在图结构中实例化的两种不同方式。这些方法的不同之处在于它们如何定义编码器、解码器和潜在表示。但是,它们共享了将VAE模型适应于图结构的总体思想。
9.1.1 Node-level Latents
我们将研究的第一种方法是基于第三章中介绍的基于节点嵌入的图的编码和解码思想之上。这种方法的关键思想是编码器为图中的每个节点生成latent representations。然后,将成对的节点的嵌入作为解码器的输入,并利用这些节点的嵌入向量来预测在两个节点之间出现一条边的可能性。这个想法首先由这篇文章提出,被称作Variational Graph Autoencoder (VGAE)。
(1)编码器模型:
编码器模型可以是基于第五章讨论的任何GNN架构。特别的是,在给定邻接矩阵
A
A
A和节点特征
X
X
X作为输入,我们使用两个单独的
G
N
N
GNN
GNN来生成均值和方差参数。
μ
Z
\mu_\mathbf Z
μZ是一个
∣
V
∣
×
d
维
的
矩
阵
|\mathcal V|\times d维的矩阵
∣V∣×d维的矩阵。
l
o
g
σ
Z
∈
R
∣
V
∣
×
d
log\, \sigma_{\mathbf Z}∈\mathbb R^{|V|\times d}
logσZ∈R∣V∣×d,参数化对数方差通常比直接参数化方差更稳定
可以得到
l
a
t
e
n
t
r
e
p
r
e
s
e
n
t
a
t
i
o
n
s
Z
latent\; representations\;\mathbf Z
latentrepresentationsZ
即:
Z
=
ϵ
∘
e
x
p
(
l
o
g
(
σ
z
)
)
+
μ
Z
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\mathbf Z\;=\;\epsilon\;\circ\;exp(log(\sigma_\mathbf z))\;+\;\mu_\mathbf Z
Z=ϵ∘exp(log(σz))+μZ
ϵ
∼
N
(
0
,
1
)
\epsilon\sim\mathcal N(0,1)
ϵ∼N(0,1)是具有独立采样单位正态分量的
∣
V
∣
×
d
|\mathcal V|×d
∣V∣×d维矩阵。
.
(2)解码器模型:
给定节点嵌入的矩阵
Z
∈
R
∣
V
∣
×
d
\mathbf Z \in\mathbb R^{|V|\times d}
Z∈R∣V∣×d。解码器的目标是预测每对节点之间的边存在的可能性,即解码器根据给定的节点嵌入矩阵得出邻接矩阵的后验概率
p
θ
(
A
∣
Z
)
p_{\theta}(\mathbf A|\mathbf Z)
pθ(A∣Z)。VAGE中使用了一个简单地点积来作为解码器,即:
σ
\sigma
σ:即sigmoid函数
其实,只要解码器能够产生有效的概率值,那么就可以采用这些解码器。
VAGE在训练没结束后,可以直接冲正态分布中采样节点的embedding,并用我们的decoder生成一个图。然而,这种基本方法的生成能力非常有限,尤其是在使用简单的点积解码器时。主要问题是解码器没有参数,因此在没有训练图作为输入的情况下,模型无法生成有意义的图结构。事实上,VAGE模型在提出时,也是被当作一个生成节点 embeddings的方法,作者们并未打算将其用作生成新图的生成模型。
一些论文提出通过建立更强大的解码器来改进VAGE。例如,这篇文章提出用迭代的基于GNN的解码器来扩充解码器。尽管如此,简单的节点级别的VAE还没有成为一种有效的图结构的生成方法。对于图重建任务和一个自编码器框架,VAE已经很成功了。但对于图生成任务,这种简单的方法是严重受限的。
9.1.2 Graph-level Latents
作为上一节中描述的节点级VGAE方法的替代方法,还可以基于图级别的潜在表示来定义变分自编码器。在此方法中,我们再次使用ELBO损失(公式9.1)来训练VAE模型。然而,我们修改了编码器和解码器函数,以使用图级别的潜在表示 z G \mathbf z_{\mathcal G} zG。本节讨论的图级别的VAE是由GraphVAE提出的。
(1)编码器模型
编码器模型可以由第五章提到的任意GNN框架结合一个池化层来构成。具体的,我们让:
Z
∣
V
∣
×
∣
V
∣
×
R
∣
V
∣
×
m
→
R
∣
V
∣
×
d
\mathbb Z^{|V|\times|V|}\times\mathbb R^{|V|\times m}\to\mathbb R^{|V|\times d}
Z∣V∣×∣V∣×R∣V∣×m→R∣V∣×d来表示一个kk层的图神经网络,其输出是一个有节点潜入向量组成的矩阵;接下来,我们利用图池化函数:
R
∣
V
∣
×
d
→
R
d
\mathbb R^{|V|\times d}\to\mathbb R^{d}
R∣V∣×d→Rd ,来将节点的嵌入矩阵
Z
∈
R
V
×
d
\mathbb Z∈\mathbb R^{V\times d}
Z∈RV×d, 映射为Graph-level的嵌入向量
z
G
∈
R
d
\mathbf z_{\mathcal G}∈R^{d}
zG∈Rd。使用此表示法,我们可以通过下列方程式来定义Graph-level VAE的编码器:
这里我们继续分别使用两个独立的GNN来参数化潜在变量后验正态分布的均值和方差。其中,均值:
μ
z
G
∈
R
d
\mu_{\mathbf z_{\mathcal G}}∈\mathbb R^{d}
μzG∈Rd,方差参数:
l
o
g
σ
z
G
∈
R
d
log \,\sigma_{\mathbf z_{\mathcal G}}∈\mathbb R^{d}
logσzG∈Rd,在GraphVAE中这两个变量都是对于图级别的embedding而言的,即
z
G
∼
N
(
μ
z
G
,
σ
z
G
)
\mathbf z_{\mathcal G}\sim\mathcal N(\mu_{\mathbf z_{\mathcal G}},\sigma_{\mathbf z_{\mathcal G}})
zG∼N(μzG,σzG)。而在上一节中的VAGE,这两个都是针对节点级的embedding的参数。
(2)解码器模型
graph-level VAE解码器的目标是给定一个图级别的潜在表示,来指定一个特定图结构的后验分布:
p
(
G
∣
z
G
)
p(\mathcal G|\mathbf z_{\mathcal G})
p(G∣zG).。最初提出的GraphVAE模型通过将基本的多层感知器(MLP)与伯努分布假设相结合来解决这一挑战。在这个方法中,我们用一个MLP来将图级别的潜在表示
z
G
\mathbf z_\mathcal G
zG。映射为一个edge的概率矩阵:
A
∈
[
0
,
1
]
∣
V
∣
×
∣
V
∣
\mathbf A\in[0,1]^{|\mathcal V|\times|\mathcal V|}
A∈[0,1]∣V∣×∣V∣
即:
A
~
=
σ
(
M
L
P
(
z
G
)
)
\tilde{A}\,=\,\sigma(\mathbf{MLP}(\mathbf z_{\mathcal G}))
A~=σ(MLP(zG))
s
i
g
m
o
i
d
sigmoid
sigmoid函数是为了保证取值在
[
0
,
1
]
[0,1]
[0,1]之间。原则上,我们可以从节点级别来定义后验分布,即:
A
A
A是图
G
\mathcal G
G的邻接矩阵。
A
~
\tilde {A}
A~表示我们预测的边概率矩阵。换言之,我们简单地假设每一条边都有独立的Bernoulli分布,整个对数似然目标相当于每条边上一组独立的二元交叉熵损失函数。可是在实现公式9.8时,有两个关键挑战:
- 首先,我们用MLP作为我们的解码器,然后,我们需要假设一个固定数量的节点。通常,这个问题可以通过假设最大节点数和使用mask的方法来解决。具体而言,我们可以假设节点数量的最大值 n m a x \mathbf n_{max} nmax,这个值使得解码器 M L P MLP MLP的输出维度为 n m a x × n m a x n_{max}\times n_{max} nmax×nmax。为了解码一个节点数小于 ∣ V ∣ |\mathcal V| ∣V∣的图,我们先将 A ~ \tilde A A~中大于 ∣ V ∣ |\mathcal V| ∣V∣的行或列都mask掉。为了在模型训练后生成不同规模的图结构,我们可以为图的规模指定一个概率分布 p ( n ) p(n) p(n),取值范围为 2 , . . . . , n m a x {2,....,n_{max}} 2,....,nmax。并从中采样来决定生成的图的规模。一个简单的策略来指定 p ( n ) p(n) p(n)是使用训练数据中图大小的经验分布。
- 第二个关键挑战是在实现公式9.8的过程中,其中当我们计算重建损失时,我们并不知道矩阵
A
~
\widetilde A
A
的行与列的正确顺序。矩阵
A
~
\widetilde A
A
是由MLP生成的,当我们想用
A
~
\widetilde A
A
来计算训练图的似然函数时,我们需要隐式地假设节点上有某种排序。公式9.8中的损失函数要求我们指定节点顺序
π
∈
Π
\pi \in\Pi
π∈Π来给矩阵
A
~
\widetilde A
A
指定行与列。这一点很重要,因为如果我们简单地忽略这个问题,那么解码器可能会过拟合训练期间使用的任意的节点顺序。目前有两种方法来解决问题:1)第一种方法是应用图匹配启发式算法,尝试为每个训练图寻找一个节点的排序,该排序将损失改为:
即找到使得损失函数最大的节点顺序,但这样带来了过大的计算量的问题。对于节点数量很大的图,这样的方法并不适合。
最近,作者倾向于使用启发式节点排序。例如,我们可以根据从最高度节点开始的深度优先或广度优先搜索对节点进行排序。在这种方法中,我们只是指定一个特定的排序函数
π
\mathcal\pi
π,然后计算这个排序的损失:
另外一种方法是给定一个有不同排序组成的集合
π
1
,
.
.
.
,
π
n
{\pi_{1},...,\pi_{n}}
π1,...,πn,并且按照这些顺序来计算损失函数,并求平均来作为损失函数:
虽然这些启发式的方法并没有解决图匹配的问题,但在实际中他们也取得了很好的效果。这篇文章对这些启发式排序方法进行了详细的讨论和比较,并将这种策略解释为变分近似。
局限性:
与node-level的VAE一样,基本的Graph-level的VAE也有严重的局限性。最显著的是,使用图级别的潜在表示会引入指定节点顺序的问题。这个该问题连同使用将MLP作为解码器一起,将基本Graph-level的VAE的应用限制在具有数百个节点或更少节点的小型图结构上。然而,Graph-level的VAE框架可以和更有效的解码器结合起来,包括我们在章节9.3中讨论的自回归方法,这些方法可以得到更强大的模型。
9.2 Adversarial Approaches
生成器:
g
θ
:
R
d
→
X
g_{\theta}:\mathbb R^{d}\to\mathcal X
gθ:Rd→X;生成器的输入为:
Z
∈
R
d
Z\in\mathbb R^{d}
Z∈Rd;
z
z
z可以是从正态分布中采样的。判别器:
d
ϕ
:
X
→
[
0
,
1
]
d_{\phi}:\mathbb X\to[0,1]
dϕ:X→[0,1];判别器是为了将真实的数据
x
∈
X
x\in\mathcal X
x∈X以及由生成器生成的数据
x
~
∈
X
\tilde x\in\mathcal X
x~∈X。并且我们假设由生成器生成的数据输入判别器后,我们希望判别器的输出为0。
(1)GAN用于图生成的基本方法:
对于生成器我们可以在给定一个
s
e
e
d
v
e
c
t
o
r
seed\;vector
seedvector的情况下,仅用一个MLP来生成边的概率矩阵:
A
~
=
σ
(
M
L
P
(
z
)
)
\;\widetilde A\,=\,\mathbf {\sigma}(\mathbf{MLP}(\mathbf z))
A
=σ(MLP(z))。接下来利用生成的
A
~
\widetilde A
A
我们根据伯努利分布来生成一个离散的邻接矩阵
A
~
∈
Z
∣
V
∣
×
∣
V
∣
\widetilde A\in\mathbb Z^{|\mathcal V|\times|\mathcal V|}
A
∈Z∣V∣×∣V∣。
对于判别器,我们利用一个以GNN为基础的图分类模型来实现,不同的是,判别器只需要根据输入的图(邻接矩阵)输出一个在0和1之间的值。即判定图是真或者假。
(2)GAN方法的分析:
用GAN来生成图的一个优点就是不用再考虑图节点的顺序了,只要判别器满足置换不变(几乎所有的GNN都满足置换不变)。然而,由于GAN的minimax优化所带来的困难,利用GAN来实现图生成仍然比较困难。
\;
\;
\;
思考:之前学习GAN的时候,看到GAN在生成图像时也是因为minimax优化所带来的困难及训练时不稳定,容易让生成器陷入只生成一种类型的图片,而忽略其他类别及陷入模型崩溃。相关的解决办法由WGAN引出:让判别器满足1-李普希兹约束然后使用Wasserstein distance来缓解原始GAN的不足,更有效的方法由WGAN-GP,SNGAN等工作提出。在使用GAN生成图时有没有类似的解决办法?这需要更进一步的调研。
\;
\;
\;
9.3 Autoregressive Methods
9.3.1 Modeling Edge Dependencies
前几小节我们讨论的方法都是图中的边在生成时是相互独立的。从概率角度来看,当给定潜在表示
z
z
z时,我们将图的似然函数分解为一系列相互独立的边的似然函数:
假设边之间是相互独立的确很方便,它可以简化模型并带来了高效的计算。但是,这个假设具有局限性,因为现实世界中的很多图的边之间都具有复杂的依赖性。为了缓解此问题(同时仍保持模型的易处理性),自回归模型放松了边缘独立性的假设。在自回归方法中,我们假设边是按照顺序生成的,并且每条边的可能性可以根据先前生成的边来确定。我们使用
L
\mathbf L
L来表示邻接矩阵
A
\mathbf A
A的下三角部分。假设我们处理的是简单的图,
A
\mathbf A
A和
L
\mathbf L
L包含完全相同的信息,但是在下面的方程中使用
L
\mathbf L
L会很方便。自回归方法的似然函数为:
换句话说,
L
[
v
i
,
:
]
\mathbf L[\mathcal v_{i},:]
L[vi,:]生成依赖于之前所有的行
L
[
v
j
]
i
>
j
\mathbf L[\mathcal v_{j}]\;\;\;i>j
L[vj]i>j。
9.3.2 Recurrent Models for Graph Generation
(1)GraphRNN
GraphRNN的基本方法是用一个分层的
R
N
N
RNN
RNN来建模等式9.13中边之间的依赖性。层次模型中的第一个RNN(被称为图级别的RNN)用于对当前生成的图的状态进行建模。这个图级别的RNN内含一个隐藏状态
h
i
\mathbf h_{i}
hi,并在生成邻接矩阵的第i行
L
[
v
i
,
:
]
\mathbf L[v_{i},:]
L[vi,:]后获得更新:
h
i
+
1
=
R
N
N
g
r
a
p
h
(
h
i
,
L
[
v
i
,
L
]
)
(
9.14
)
\mathbf h_{i+1}\;=\;\mathbf {RNN}_{graph}(\mathbf h_i,\mathbf L[v_i,L])\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(9.14)
hi+1=RNNgraph(hi,L[vi,L])(9.14)。并且有
h
0
=
0
\mathbf h_0=\mathbf 0
h0=0但这个初始化也可以通过graph encoder或者VAE学习得到。
第二个
R
N
N
\mathbf {RNN}
RNN,被称为节点级的
R
N
N
o
r
R
N
N
n
o
d
e
\mathbf {RNN}\;\; or\;\; \mathbf {RNN}_{node}
RNNorRNNnode,以自回归的方式生成
L
[
v
i
,
:
]
\mathbf L[v_i,:]
L[vi,:]。
具体产生过程如下:
通过公式9.13来优化,并且在训练时采用
t
e
a
c
h
i
n
g
f
o
r
c
e
\mathbf{teaching}\;\;\mathbf{force}
teachingforce 策略,(这是一个在训练RNN时常用的策略,简单来说,就是在训练时,使用前
T
−
1
\mathbf{T-1}
T−1个
s
t
e
p
\mathbf{step}
step的
G
r
o
u
n
d
T
r
u
t
h
\mathbf{Ground}\;\,\mathbf{Truth}
GroundTruth来输出第T个step的值。)但需要注意的是,就像
g
r
a
p
h
−
l
e
v
e
l
V
A
E
graph-level\;\,\mathbf{VAE}
graph−levelVAE在优化公式9.13时一样,我们需要假设一个具体的节点生成时的顺序。
(2)Graph Recurrent Attention Networks (GRAN)
Graph RNN的一个关键优点是它建模了边之间的依赖性。
但由上图可以看出:
G
r
a
p
h
R
N
N
{\mathbf{Graph\;RNN}}
GraphRNN也会生成不符合实际的图结构,比如生成了具有很长链的图。并且可以想到的另外一个缺点就是,
G
r
a
p
h
R
N
N
{\mathbf{Graph\;RNN}}
GraphRNN不适合生成规模巨大的图,因为这将会使RNN的训练有很多步骤,(GraphRNN是一个节点一个节点生成的。
G
R
A
N
\mathbf{GRAN}
GRAN被提出来应对这些问题。
G
R
A
N
(
代
表
着
g
r
a
p
h
r
e
c
u
r
r
e
n
t
a
t
t
e
n
t
i
o
n
n
e
t
w
o
r
k
s
\mathbf{GRAN}(代表着\mathbf{graph\;\,recurrent\;\,attention\;\,networks}
GRAN(代表着graphrecurrentattentionnetworks)仍然保持着自回归的生成方式。GRAN的关键思想是,我们可以通过在已经生成的图上运行GNN来建模邻接矩阵每行的条件分布:
L
[
v
1
:
v
i
−
1
,
:
]
L[v_1:v_{i-1},:]
L[v1:vi−1,:]表示在生成步骤i之前生成的图的下三角邻接矩阵。方程(9.15)中的GNN可以用多种方式实例化,但关键的要求是它生成一个边缘概率向量
L
[
v
i
,
:
]
L[v_i,:]
L[vi,:],从中我们可以在生成过程中对离散的边缘实现进行采样。原文采用的是
G
A
T
GAT
GAT的一种变种,由于生成的节点没有属性,
X
~
\widetilde \mathbf X
X
可以采用随机生成的向量作为每个节点的属性。
G
R
A
N
GRAN
GRAN也可以用
t
e
a
c
h
i
n
g
f
o
r
c
e
\mathbf{teaching}\;\;\mathbf{force}
teachingforce 策略,和GraphRNN一样,GRAN在训练时也必须指定节点生成的顺序。与GraphRNN相比,GRAN模型的主要优点是它不需要在图级RNN中维护长而复杂的历史。相反,GRAN模型在每个生成步骤使用GNN显式地对已经生成的图进行条件约束。GRAN的一个关键性能改进是,可以在单个块中同时添加多个节点,而不是一次添加一个节点。