前两天组会,论文提到了VAE,导师一直问我VAE,还问我能不能推出来 当时哑口无言 下面总结一下VAE 以及推倒。

小白谈VAE(Variational Autoencoder)(变分自动编码器)

上面的是模型。

这里先给出推导再解释参数。

小白谈VAE(Variational Autoencoder)(变分自动编码器)

从后面来看,P(x)是decoder 的可能性,当然要最大,这里的q是encoder一般选择正态分布。

继续化简

小白谈VAE(Variational Autoencoder)(变分自动编码器)

后面的是decoder的kl散度,>=0,所以它的lowerbound是前面这项。

小白谈VAE(Variational Autoencoder)(变分自动编码器)

为了最大化likelyhood,q(z|x)和p没有关系,因此最大化q(z|x)可以让lb增加并且减小了kl。

小白谈VAE(Variational Autoencoder)(变分自动编码器)

继续化简lb

小白谈VAE(Variational Autoencoder)(变分自动编码器)

得到loss function

小白谈VAE(Variational Autoencoder)(变分自动编码器)

小白谈VAE(Variational Autoencoder)(变分自动编码器)小白谈VAE(Variational Autoencoder)(变分自动编码器)

合起来构造如下的损失函数:小白谈VAE(Variational Autoencoder)(变分自动编码器)

上面的第一部分,可以看做是重建 loss,就是从 x∼z∼x的这样一个过程,可以表示成上面的熵的形式,也可以表示成最小二乘的形式,这个取决于x本身的分布。后面的 KL 可以看做是正则项,qθ(z∣x) 可以看成是根据x推导出来的z的一个后验分布,p(z)可以看成是z的一个先验分布,我们希望这两个的分布尽可能的拟合,所以这一点是VAE与GAN的最大不同之处,VAE对隐变量z是有一个假设的,而GAN里面并没有这种假设。 一般来说,p(z)都假设是均值为0,方差为1的高斯分布 ????(0,1)如果没有 KL 项,那VAE就退化成一个普通的AE模型,无法做生成,VAE中的z隐变量是一个分布,或者说近似高斯的分布,通过对这个概率分布采样,然后再通过decoder网络,VAE可以生成不同的数据,这样VAE模型也可以被称为生成模型。

代码:https://github.com/bojone/vae/blob/master/vae_keras.py

相关文章:

  • 2021-10-27
  • 2021-10-17
  • 2022-01-17
  • 2021-07-22
  • 2021-04-16
  • 2021-12-10
  • 2021-10-17
  • 2021-07-03
猜你喜欢
  • 2021-05-16
  • 2022-01-04
  • 2022-01-14
  • 2021-10-27
  • 2022-02-12
  • 2022-01-03
  • 2021-06-06
相关资源
相似解决方案