Deep Generative Model
Pixel RNN
为了生成图片,生成一个像素每个时间点。
Pixel RNN示意图
Variational Autoencoder
encoder输出两个维度相同的vector m和σ,之后从正态分布中采样一个vector e,最后得到的结果c的计算公式为:
ci=exp(σi)×ei+mi
VAE示意图
VAE得到的图不太清楚,但是VAE可以控制需要生成的图片。
Minimize
i=1∑3(exp(σi)−(1+σi)+(mi)2)
Why VAE?
Intuitive Reason
VAE增加了noise,从code的空间连续采样,得到的图片质量会更好。
如果不对variance进行限制,网络会认为σ和e等于0就好。
VAE
z N(0,1)x∣z N(μ(z),σ(z))
最大似然估计
P(x)=∫zP(z)P(x∣z)dzL=x∑logP(x)
P(z)是正态分布,x∣z N(μ(z),σ(z)),μ(z),σ(z)是需要被优化的值。
logP(x)=∫zq(z∣x)logP(x)dz=∫zq(z∣x)log(P(z∣x)P(z,x))dz=∫zq(z∣x)log(q(z∣x)P(z,x)P(z∣x)q(z∣x))dz=∫zq(z∣x)log(q(z∣x)P(z,x))dz+∫zq(z∣x)log(P(z∣x)q(z∣x))dz≥∫zq(z∣x)log(q(z∣x)P(x∣z)P(z))dz
上述化简结果的两个部分,后半部分其实是KL(q(z∣x)∣∣P(z∣x))这两个分布的KL散度,衡量了两个分布的距离,大于等于0,我们得出了L的下界。
logP(x)
与网络的联系
Minimizing KL(q(z∣x)∣∣P(z))
Maximizing ∫zq(z∣x)logP(x∣z)dz=Eq(z∣x)[logP(x∣z)]
网络视角
Problems of VAE
VAE并没有尝试去模拟真实图片。因为如果VAE生成的图片有一个pixel错误,网络也会觉得这样的损失也比较小,虽然人可能看起来很怪,但是网络觉得没问题。
此外,VAE只记住了现有图片。
Generative Adversarial Network(GAN)
想法是演化,GAN在训练时,生成器和优化器是因为对抗越来越强的。
生成器从来没有看过真正的图片,因此它可以生成训练集中从来没有出现过图片。
GAN的训练过程