VAE

(1)变分自编码器(Variational AutoEncoder, VAE)|系统解读Keras实现Generative Deep Learning

完整代码见附录 1.设置 import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers 2.创建采样层 class Sampling(layers.Layer): “””Uses (z_mean, z_log_var) to sample z, the vector encoding a digit.””” def call(self, inputs): z_mean, z_log_var = inputs batch = tf.shape(z_mean)[0] dim = tf.shape(z_mean)[1] epsilon = tf.keras.backend.random_normal(shape=(batch, dim)) return z_mean + tf.exp(0.5 * z_log_var) * epsilon 3.构建编码器 latent_dim = 2 encoder_inputs = keras.Input(shape=(28, 28, 1)) ...

GAN vs VAE

VAE的问题 VAE的一个问题是,为了获得p(x)的良好近似值(其中p(x)是图像的分布),您需要记住潜在空间z中的所有细节。在VAE的简单框架中,后验pθ(z|x)的近似值通常过于简化,因为我们无法参数化复杂分布(通常是单峰分布,类似于各向同性高斯分布)。 一种减少限制并更接近 pθ(z|x) 分布的方法是引入flows[1],或将VAE框架与马尔可夫链蒙特卡罗耦合,后者可以渐近地接近真后验值[2]。 因此,VAE有一个很好的理论,但主要问题是固定参数化pθ(z|x) 通常比图像的真实复杂分布过于简化。这不是GANs的问题,因为G被迫生成看起来真实的样本(代价是具有折叠模式,其中生成器生成来自真实分布的一个单一模式的样本)。 Vincent Dumonlin[3]最近开发的一种有趣的方法是引入一种可以执行推理和生成的GAN。对于VAE框架来说,这似乎是一种具有挑战性的方法。 演示 下面是一些有趣的情节,来自谢尔布鲁克大学的逆向推理演示。 真实的图像流形p(x): VAE / GAN如何近似p(x)。 可以看到,VAE趋向于大致近似此分布。   参考文献 [1] [1505.05770] Variational ...

条件VAE(Conditional VAE)

VAE的主要缺点是图像模糊。 有一种观点认为造成此类模糊图像现象的主要原因是VAE损失函数尤其是KL项。 主要的几种条件VAE(Conditional VAE):

VAE

自编码(特征学习) 类别:无监督学习 原理:输入图像→编码→z→解码→输出图像 与主成分分析的区别:可以做非线性降维 生成模型 给定训练集,产生与训练集同分布的新样本。   无监督学习 无监督学习的一个核心问题:概率密度估计 显式的密度估计 隐式的密度估计