变分自编码器(VAE)

变分自编码器(VAE)

经典的自编码器由于本身是一种有损的数据压缩算法,在进行图像重构时不会得到效果最佳或者良好结构的潜在空间表达,VAE则不是将输入图像压缩为潜在空间的编码,而是将图像转换为最常见的两个统计分布参数——均值和标准差。然后使用这两个参数来从分布中进行随机采样得到隐变量,对隐变量进行解码重构即可。

在自动编码器中,我们将原始图像中的元素编码成向量。然后,解体层将这些矢量“解码”回原始图像。如果我们保存图像的向量编码,可以通过将其传递到解码器部分来重建它。这就是标准的自动编码器。如下图所示:
在这里插入图片描述

然而,我们试图在这里建立一个生成模型,而不仅仅是一个可以“记忆”图像的模糊数据结构。我们不能产生任何东西,因为我们不知道如何创建潜在的向量,而不是从图像编码它们。
我们在编码网络上添加一个约束,强制它产生基本遵循高斯分布的潜在向量。正是这种约束将变分自编码器与标准自动编码器分离开来。

生成新的图像是容易的:我们所需要做的是从单位高斯上采样隐含矢量并将其传递到解码器。

我们需要应用一个简单的重新参数化技巧:代替生成真实值向量的编码器,它将产生均值向量和标准差向量.
在这里插入图片描述

生成模型与分布变换

在统计学习方法中,通过生成方法所学习到模型就是生成模型(generative model)(对应于判别方法和判别模型)。所谓生成方法,就是根据数据学习输入X和输出Y之间的联合概率分布,然后求出条件概率分布p(Y|X)作为预测模型的过程,这种模型便是生成模型。比如说咱们传统机器学习中的朴素贝叶斯模型和隐马尔可夫模型都是生成模型。

具体到深度学习和图像领域,生成模型也可以概括为用概率方式描述图像的生成,通过对概率分布采样产生数据。深度学习领域的生成模型的目标一般都很简单:就是根据原始数据构建一个从隐变量Z生成目标数据Y的模型,只是各个模型有着不同的实现方法。从概率分布的角度来解释就是构建一个模型将原始数据的概率分布转换到目标数据的概率分布,目标就是原始分布和目标分布要越像越好。所以,从概率论的角度来看,生成模型本质上就是一种分布变换。

代码

Example of VAE on MNIST dataset using MLP