Press "Enter" to skip to content

变分图自动编码器教程

code: https://github.com/DaehanKim/vgae_pytorch

 

文章目录

 

图适用于许多现实世界的数据集,如社交网络、引文网络、化学图等。对图结构数据日益增长的兴趣增加了图神经网络的研究数量。

 

变分自编码器 (Variational Auto-Encoders, VAE) 体现了变分贝叶斯方法在深度学习中的成功,并激发了广泛的正在进行的研究。变分图自动编码器 (Variational Graph Auto-Encoders, VGAE) 将 VAE 的思想应用于图结构数据,显着提高了对 Cora 和 Citesser 等许多引文网络数据集的预测性能。

 

我搜索了我NTERNET,还没有看到VGAE一个详细的教程。在本文中,我将简要讨论传统自编码器和变分自编码器。此外,我将讨论将 VAE 应用于图结构数据 (VGAE) 的想法。

 

传统自动编码器

 

 

传统的自动编码器是一个包含编码器和解码器的神经网络。编码器将数据点X作为输入并将其转换为低维表示(嵌入)Z。解码器取低维表示Ž,并返回原来的输入的重建的X帽子,看起来像输入X。嵌入的质量决定了输出X-hat的质量。但是,编码器可能无法对所有信息进行编码,因为嵌入的维数低于输入的维数。因此,如果嵌入从输入中捕获更多信息,则输出将具有更好的性能。

 

编码器和解码器的架构

 

让我们看一个例子。图 2 显示了一个以 MNIST 图像作为输入的自动编码器示例。MNIST 数据集包含灰度图像,每个图像的形状为 28 x 28 像素。该编码器采用此图像并将其转换为一个低维嵌入ž。解码器采用嵌入Z并返回重建的输入图像,这是自动编码器的输出。

 

损失函数

 

自编码器的损失函数测量重建过程中丢失的信息。我们希望尽量减少重建损失,使X-帽子接近X。我们经常使用均方误差作为我们的损失函数,

 

它衡量X-hat与X 的接近程度。

 

为什幺我们要将输入转换为低维嵌入?

 

让我们以图像为例。有几种方法可以使用图像的低维嵌入。与存储图像的像素强度相比,存储图像的低维嵌入可以节省存储空间。存储图像的低维嵌入也可以节省计算能力,因为输入维度较低。

 

靠近图像嵌入的点也是嵌入空间中的图像嵌入,这是使自动编码器嵌入有用的另一个原因。例如,如果您修改 MNIST 图像的像素强度,您将得到一张看起来不像 MNIST 数据集中的图像的嘈杂图像。但是,如果您对 MNIST 图像的嵌入进行少量修改,然后对修改后的嵌入进行解码,您仍然可以获得看起来像 MNIST 图像的东西。

 

 

图 3 显示了修改MNIST 图像的像素强度的示例。在为每个像素的强度添加一些随机噪声后,输出是一个噪声图像,看起来不像 MNIST 数据集中的图像。

 

图 4 显示了修改MNIST 图像嵌入的示例。少量修改嵌入与嵌入空间的小偏移相同。从图 4 中我们可以看到,在嵌入Z 中的每个元素都加上 4 之后,输出图像X2-hat仍然与原始输出X1-hat非常相似。

 

我们还可以将这些低维嵌入绘制到 nd 坐标。图 5 显示了在嵌入空间上绘制 MNIST 数据的示例。嵌入空间上的每个点代表一个输入数据。这种可视化很方便,因为它可以系统地组织坐标中的所有输入数据。

 

低维嵌入也可用于下游机器学习任务。我们可以使用预先计算的嵌入来解决另一个机器学习问题,即分类问题。我们可以对这些嵌入而不是原始输入进行分类。我们还可以在迁移学习或半监督学习中使用嵌入,与原始输入相比,这可能会给我们带来更好的结果。

 

变分自编码器

 

为什幺我们需要变分自编码器?

 

变分自编码器的最大优势之一是 VAE 可以从原始源数据集生成新数据。相比之下,传统的自动编码器只能生成与原始输入相似的图像。假设您想建造一个种满灌木的花园。每一个灌木都需要不同,这样你的花园才会看起来真实。你绝对不能自己画每一个灌木,更聪明的方法是使用变分自动编码器为你的花园自动生成新的灌木。

 

变分自编码器的主要思想是将输入嵌入 X到一个分布而不是一个点。然后是随机样本Z 取自分布而不是直接从编码器生成。

 

编码器和解码器的架构

 

VAE 的编码器通常写为qφ(z|x),它采用数据点X并产生分布。该分布通常被参数化为多元高斯分布。因此,编码器预测高斯分布的均值和标准差。低维嵌入Z是从这个分布中采样的。解码器是一个变分近似pθ(x|z),它采用嵌入Z并产生输出X-hat。

损失函数

 

VAE 的损失函数有两部分。损失函数的第一部分称为变分下界,它衡量网络重构数据的程度。如果重构数据X与原始数据相差很大,那幺重构损失就会很高。损失函数的第二部分用作正则化器。它是与真实后验 ( p(z) )的近似值的 KL 散度,它衡量输出分布 ( qφ(z|x) ) 与p(z) 的匹配程度。

VAE的思想可以通过下图概括:

编码器将数据点X作为输入并生成 μ 和 logσ² 作为输出。我们使用 logσ² 而不是 σ² 的原因是 σ² 是非负的,所以我们需要一个额外的激活函数。但是 logσ² 可以是正数也可以是负数。得到 μ 和 logσ² 后,我们尝试使 μ 和 logσ² 都接近 0,这意味着 μ 接近 0,σ 接近 1。因此最终分布将接近N(0,1)。最后,我们希望通过z = μ + σ * ε从 μ 和 σ生成嵌入Z,其中 ε ~ N(0,1)。这称为重新参数化技巧。现在有了潜在变量Z,我们可以通过解码器生成我们的输出X-hat。

 

变分图自编码器

 

我们想要构建一个变分图自动编码器,将 VAE 的思想应用于图结构数据。我们希望我们的变分图自动编码器能够生成新图或对图进行推理。然而,我们不能直接应用 VAE 的思想,因为图结构数据是不规则的。每个图都有可变大小的无序节点,图中的每个节点都有不同数量的邻居,所以我们不能再直接使用卷积了。让我们弄清楚如何以神经网络可以理解的方式表示图形。

 

邻接矩阵

 

我们使用邻接矩阵A来表示输入图。通常我们假设邻接矩阵是二进制的。第i行和第j列的值 1表示顶点i和顶点j之间存在边。第m行和第n列的值 0表示顶点m和顶点n之间没有边。

 

图 8 显示了输入图有向和无向时的邻接矩阵示例。在无向图的左侧,邻接矩阵是对称的。顶点 0 和顶点 1 相互连接,因此A[0,1] = 1和A[1,0] = 1。在有向图的右侧,邻接矩阵是不对称的。顶点 0 指向顶点 1,这意味着顶点 1 聚合了来自顶点 0 的信息,因此A[1,0] = 1。

 

特征矩阵

 

我们使用特征矩阵X来表示输入图中每个节点的特征。特征矩阵X 的第i行表示顶点i的特征嵌入。

 

图 9 显示了特征矩阵的示例。每个节点i都有自己的特征矩阵X_i,我们可以将它们组合在一起以获得整个图的特征矩阵X,其中每一行i代表节点i的特征矩阵。

 

编码器和解码器的架构

 

VGAE 的编码器(推理模型)由图卷积网络(GCN)组成。它以邻接矩阵A和特征矩阵X作为输入,并生成潜在变量Z作为输出。第一个 GCN 层生成一个低维特征矩阵。它被定义为

A-tilde是对称归一化邻接矩阵。

 

第二个 GCN 层生成 μ 和 logσ²,其中

现在如果我们将两层 GCN 的数学结合在一起,我们得到

产生 μ 和 logσ²。

 

然后我们可以使用参数化技巧计算Z

 

其中 ε ~ N(0,1)。

 

解码器(生成模型)由潜在变量Z之间的内积定义。我们的解码器的输出是重构的邻接矩阵A-hat,其定义为

其中 σ(•) 是逻辑 sigmoid 函数。

 

总之,编码器表示为

解码器表示为

 

 

损失函数

 

变分图自动编码器的损失函数与以前几乎相同。第一部分是输入邻接矩阵和重构邻接矩阵之间的重构损失。更具体地说,它是目标 (A) 和输出 (A’) logits 之间的二元交叉熵。第二部分是q(Z | X, A)和p(Z)之间的 KL 散度,其中p(Z) = N(0,1)。它衡量我们的q (Z | X, A)与p(Z) 的匹配程度。

 

 

使用内积解码器的优势

 

得到隐变量Z 后,我们想找到一种方法来学习隐变量中每一行的相似度(因为一行代表一个顶点)来生成输出邻接矩阵。内积可以计算两个向量的余弦相似度,这在我们想要一个对向量大小不变的距离度量时很有用。因此,通过对潜在变量Z和Z^T应用内积,我们可以学习Z内每个节点的相似性来预测我们的邻接矩阵。

 

链接预测实验

 

在变分图自动编码器论文中,作者还创建了一个传统的图自动编码器模型 (GAE) 作为对比 VGAE 模型。GAE 模型有一个单 GCN 层作为编码器,它直接生成一个潜在变量Z,还有一个内积解码器,与 VGAE 模型相同。作者在三个数据集(Cora、Citesser 和 Pubmed)上测试了这两种模型,VGAE 模型在 Cora 和 Citeseer 数据集上都实现了更高的预测性能。

在这篇文章中,您学习了传统自编码器、变分自编码器的基本思想以及如何将 VAE 的思想应用于图结构数据。

 

图结构数据在当今各个领域都发挥着越来越重要的作用。我相信在不久的将来,图结构数据分析将成为机器学习中最热门的话题之一。

 

参考

https://towardsdatascience.com/tutorial-on-variational-graph-auto-encoders-da9333281129

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注