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