lecture12-DGM1¶


Wake sleep algorithm¶
先回顾一下variational inference,可以看到VI中的Estep和Mstep都是对于free energy进行优化。
而在wake sleep algorithm中,可以看到KL中p和q颠倒了,这其实是为了计算上的方便。
wake sleep algorithm总体上训练两个单独的model,inference model和generate model,分别对应\(p_{\theta}(x|z)\)和\(q_{\phi}(z|x)\).
在wake phase,我们想对于θ优化,观察free energy的形式可以看出,θ只出现在期望的object中,而期望对应的分布与θ无关,只与φ有关。因此我们可以直接在q上对于p进行采样,从而优化θ
而在sleep phase中,我们想要对φ优化,但是看到φ出现在了我们想要sample的distribution中,没法sample,我们只能learn这个φ。
而如果经过一些变换,
我们可以得到一个log P的形式。因为P可能是一个很小的值,logP就会很大。总体上logP的尺度变化就会很大,梯度的尺度变化也会很大,在实际操作中没法实现。
因此在wake sleep algorithm中,就把KL中的p和q调换了。换句话说,我们换了另一个loss function。
在调换之后,可以看到
我们同样可以使用sample了。尽管我们有observed X,我们还是ignore掉X。然后从之前generative model的p(x, z)中,'dream'出x和z,然后进行sample。


VAE¶
我们对原本复杂的梯度进行reparameterization,直接对于梯度建立一个discrimitive的分布,重新设置这个分布的形式,然后去学习这个新的分布的参数。理论上这样可以解决原本variance过大的问题。

GAN¶
在GAN中,我们只有generative model,没有inference model。
我们需要达到两个目标:
In practical,我们使用下面这个式子解决gradient vanishing的问题。



A unified view of deep generative models¶
对于GAN,最普通的数学表示是这样的,然而这个跟之前的variational EM没有什么共同点。

注意此时在GAN两个step中,我们要优化的loss其实是不一样的,多了一个reverse。
注意虽然GAN是用来生成图片x的,但真正observed的是label y。因此我们在这里把x当作latent,因此生成图片的过程是对于latent variable x的inference,而不是generate。
注意variational EM,lower bound 可以有两种写法,之前推导一直用的是右上角的这种,现在写成另一种,以便观察和GAN的相似性。
在vEM中,x是observed的,z是latent的
在GAN中,y是observed,代表是真实data还是生成的data;x是latent的,用来表示data
可以看到最大的区别是,GAN中没有和prior的KL。因为GAN本身就没有prior,z是trivial的。
在GAN的更新过程中,我们可以把梯度写成KL减去一个JSD的形式。这个JSD我们这里不管,因为变不成其他的形式。
我们这里来观察KL的性质。
可以看到这个跟我们在VEM中想要做的事是类似的,都是让两个latent variable的posterior尽可能相近。GAN其实想让generative p和discrimitive的posterior q尽可能相近。
前几行用于说明\(KL(p_{\theta}(x|y=1)||q^r(x|y=1))\)是不用优化的。由带★号的式子可以看到,\(q^r(x|y=0)\)可以看作是真实data的分布和generated data的分布的mixture。
所以learning的过程其实是让\(p_{g_{\theta}}(x|y)\)靠近mixture,也就相当于靠近\(p_{data}(x)\)。
然后注意到KL的非对称性,可以得到以下的性质:
这一点在PMRL中已经讲过了,也就是p会“缩在”q的mode中。
而JSD是对称的,对此没有影响。
因此综合起来,GAN会丢失true distribution中的mode。
GAN的image是sharp的,就跟这个上面这个性质有关。GAN在learning的过程中会倾向于选择一部分更大的mode,而丢掉一些小mode。因此在生成style的任务中,加入输入10张Astyle,1张Bstyle,那么输出的image很可能不会来自B。
我们尝试用同样的思路来分析VAE,然而VAE中没有GAN中的indicator y。那我们就假设一个y,因为VAE中所有的图片都是生成的,因此所有图片的label y都是fake。
然后经过一系列推导可以得出下面的式子,可以看到也是一个KL的形式。但是与GAN不同的是,VAE对于latent的inference出现在KL的右边,因此VAE倾向于把所有的mode都包括进来。表现为VAE生成的图象比较模糊。

