(接上一条21 Unsupervised Learning-Deep Generative Medel)
2. Variational Autoencoder(变分自编码)
为什么要用VAE?一个intuitive的解释是,auto-encoder的encoder与decoder都是非线性的,很难预测问号处是一张介于满月与弦月之间的图像。VAE使得code加上noise之后还能恢复出来,这样问号处既希望恢复出满月、又希望恢复出弦月,最后得到介于满月与弦月之间的图像,既像满月又像弦月。
VAE是在encoder output上加noise,而De-noising auto-encoder是在encoder input上加noise。
如果只最小化重构误差,那么train出来的结果不会是预期的样子,因为variance是学出来的,会学成0。 exp是为了确保variance是正的,右下方的minimize是为了让variance不能太小,其中第一项为蓝色曲线、第二项为红色曲线、二者相减得绿色曲线,这样variance最小为1,第三项是L2正则化,希望参数稀疏避免过拟合。
接下来要引入Gaussian Mixture Model的概念,Gaussian Mixture Model的核心思想是很复杂的distribution是由好多Gaussian分布和不同的weight结合起来的结果,只要Gaussian分布数目足够多,就可以产生复杂的distribution
从数学上解释,VAE是GMM的Distributed representation版本。下图Z上的每一个点对应一个Gaussian,这个点对应什么样的Gaussian,是由某一个function(neural network)所决定的,总共有无穷多个高斯分布。纵使z是从一个正态分布上采样的,所表示的函数P(X)依然可以很复杂
最终就是目的是最大化似然函数P(X)。这里我们需要引入另一个分布就是q(z|x)
这时候logP(x)的值是Lb和KL(q(z|x)||P(z|x))求和得到。下界Lb与两个量有关:P(x|z),q(z|x),下界变大不一定使似然函数P(x)变大。我们调整q(z|x)使得Lb最大,让KL最小,那么下界Lb就是似然函数,得到q(z|x)=p(z|x). 最终q(z|x)的分布会和p(z|x)相同。最终得到的结果是Lb越大,logP(x)越大
下界Lb又可以拆成两项(一个负的KL距离+一个积分),与网络联系起来:最大化Lb,也就是最小化KL(q(z|x)||P(z))。我们能做的就是调q对应的NN’,使得产生的distribution和normal distribution(P(z))越接近越好。具体推导在VAE的原始paper。实际上,minimize黄色方框的项就是minimize KL(q(z|x)||P(z))。而maximize Lb的另外一项实际上就是auto-encoder在做的事情。因为gaussion分布在mean地方概率最大,所以要求anto-encoder输出和x越接近越好。
VAE的问题:
但VAE也有缺点,例如对于下图,对VAE来说,下图中output的两张image一样好,两张照片只是一个像素点的差异。因为VAE从来没有学过产生新的image,唯一做的事情只有模仿而已。
3.Generative Adversarial Network (GAN)
GAN由两部分组成,一个是generator,另一个是discriminator。Generator的目的是产生图像进而迷惑discriminator,而discriminator的作用是尽力分辨出图像是真实图像还是generator生成的图像。
对于discrimination来说这是一个简单的二分类问题,而对于generator来说就是简单的利用梯度下降方法来调参数。
例子(黑点:real,绿线:Generator,蓝线:Discriminator):