目录
1. 生成式对抗网络
1. Network as Generator
1.1. 为什么需要输入一个分布?
1.2. Unconditional generation
2. Theory behind GAN
2.1. Objective
2.2. 如何计算两个distribution之间的divergence?
2.3. Discriminator
3. 训练GAN的技巧
3.1. WGAN
4. generator效能评估与条件式生成
4.1. Evaluation of GAN
4.2. Conditional Generation
4.3. Unpaired Data
2. 其他generative model
1. VAE
1.1. Auto-encoder
1.2. VAE
1.3. Why VAE?
1.4. Gaussian Mixture Model
1.5. Problems of VAE
2. Flow-based model
generator把一个简单的distribution对应到一个复杂的distribution
找一个Generator,使得生成数据的分布与目标数据的分布越接近越好
→ 只要能够从两个distribution中sample data,就可以估测divergence → Discriminator
*熵和交叉熵公式:
其中maximum objective value与JS divergence相关
直觉上,两个分布接近(small divergence)时,判别器难以区别数据, 的最大值较小
也可以使用其他divergence,需要重新定义objective function(ref: FGAN)
JSdivergence的问题:
对于没有重叠的distributions, JS divergence算出来都是,training loss不能给很多资讯
更直观来说,如果两个distribution不重叠,做binary classifier时正确率总是可以达到100%
→ Wasserstein distance
求解 ,解得的值就是Wasserstein distance
实作中的一些方法:
generator抓到discriminator的盲点。(还没有解决)(可以记录train point)
Inception Score
用inception network量一下quality和Diversity
拿Inception network 进入softmax之前的HiddenLayer的输出,假设分布是Gaussian
例如:Text to image
训练的时候只有positive和negative example出来的结果并不会很好,还需要一种不好的情况是好的图片 + 不匹配的标签,实做会打乱图片和标签
例如:风格转换
理论上,没有办法保证输入和输出很接近。举一个极端的例子,可以学到翻转图片,可以学到再次翻转图片,所以cycle consistency并没有办法保证机器不会学到一些奇怪的转换。但是在实做上,通常输入输出很接近,即使没有使用cycle gan的结构。
表示variance,因为variance总是正值所以用exp
σ=0的时候 最小, → variance为1,所以minimize这个值让variance不能太小。是 Regularization,为了避免模型overfitting
加入noise后,又因为variance不会太小,红点所在位置会同时对应到满月和半月 ,但因为要满足mean square error,所以会生成介于满月半月之间的月亮。
Even though z si from N(0,I), P(x) can be very complex
为了estimate,, 我们maximize Likelihood:
所以
maximize的时候,P(x)与其无关所以不会变,所以KL divergence会越来越小。最后q(z|x)和p(z|x)越来越接近
所以,要minimize KL(q(z|x)||P(z)),就是让q(z|x)接近标准正态分布,也就是黄框里的式子
另外,要maximize第二项