✨ Fix some errors, add "Can GAN do ..."
This commit is contained in:
parent
525dfdc07d
commit
6c852fd974
|
|
@ -1,15 +1,19 @@
|
|||
# 第七章 生成对抗网络(GAN)
|
||||
# 第七章_生成对抗网络(GAN)
|
||||
|
||||
## GAN生成概率的本质是什么?
|
||||
## GAN的「生成」的本质是什么?
|
||||
GAN的形式是:两个网络,G(Generator)和D(Discriminator)。Generator是一个生成图片的网络,它接收一个随机的噪声z,记做G(z)。Discriminator是一个判别网络,判别一张图片是不是“真实的”。它的输入是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
|
||||
|
||||
GAN*生成*能力是学习*分布*,引入的latent variable的noise使习得的概率分布进行偏移。因此在训练GAN的时候,latent variable**不能**引入均匀分布(uniform distribution),因为均匀分布的数据的引入并不会改变概率分布。
|
||||
GAN*生成*能力是*学习分布*,引入的latent variable的noise使习得的概率分布进行偏移。因此在训练GAN的时候,latent variable**不能**引入均匀分布(uniform distribution),因为均匀分布的数据的引入并不会改变概率分布。
|
||||
|
||||
## GAN能做数据增广吗?
|
||||
GAN能够从一个模型引入一个随机数之后「生成」无限的output,用GAN来做数据增广似乎很有吸引力并且是一个极清晰的一个insight。然而,纵观整个GAN的训练过程,Generator习得分布再引入一个Distribution(Gaussian或其他)的噪声以「骗过」Discriminator,并且无论是KL Divergence或是Wasserstein Divergence,本质还是信息衡量的手段(在本章中其余部分介绍),能「骗过」Discriminator的Generator一定是能在引入一个Distribution的噪声的情况下最好的结合已有信息。
|
||||
|
||||
训练好的GAN应该能够很好的使用已有的数据的信息(特征或分布),现在问题来了,这些信息本来就包含在数据里面,有必要把信息丢到Generator学习使得的结果加上噪声作为训练模型的输入吗?
|
||||
|
||||
## VAE与GAN有什么不同?
|
||||
1. VAE可以直接用在离散型数据。
|
||||
2. VAE整个训练流程只靠一个假设的loss函数和KL Divergence逼近真实分布。GAN没有假设单个loss函数, 而是让判别器D和生成器G互相博弈,以期得到Nash Equilibrium。
|
||||
|
||||
|
||||
## 有哪些优秀的GAN?
|
||||
|
||||
### DCGAN
|
||||
|
|
@ -22,7 +26,7 @@ WGAN及其延伸是被讨论的最多的部分,原文连发两文,第一篇(
|
|||
|
||||
**KL/JS Divergence为什么不好用?Wasserstein Divergence牛逼在哪里?**
|
||||
|
||||
**KL Divergence**是两个概率分布P和Q差别的**非对称性**的度量。KL Divergence是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 而**JS Divergence**是KL Divergence的升级版,解决的是**对称性**的问题。即:JS Divergence是对称的。
|
||||
**KL Divergence**是两个概率分布P和Q差别的**非对称性**的度量。KL Divergence是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数(即分布的平移量)。 而**JS Divergence**是KL Divergence的升级版,解决的是**对称性**的问题。即:JS Divergence是对称的。并且由于KL Divergence不具有很好的对称性,将KL Divergence考虑成距离可能是站不住脚的,并且可以由KL Divergence的公式中看出来,平移量$\to 0$的时候,KL Divergence直接炸了。
|
||||
|
||||
KL Divergence:
|
||||
$$D_{KL}(P||Q)=-\sum_{x\in X}P(x) log\frac{1}{P(x)}+\sum_{x\in X}p(x)log\frac{1}{Q(x)}=\sum_{x\in X}p(x)log\frac{P(x)}{Q(x)}$$
|
||||
|
|
@ -40,9 +44,14 @@ $$JS(P_1||P_2)=\frac{1}{2}KL(P_1||\frac{P_1+P_2}{2})$$
|
|||
3. 对更新后的权重强制截断到一定范围内,比如[-0.01,0.01],以满足lipschitz连续性条件。
|
||||
4. 论文中也推荐使用SGD,RMSprop等优化器,不要基于使用动量的优化算法,比如adam。
|
||||
|
||||
然而,就实际而言,最优的选择其实应该是
|
||||
然而,由于D和G其实是各自有一个loss的,G和D是可以**用不同的优化器**的。个人认为Best Practice是G用SGD或RMSprop,而D用Adam。
|
||||
|
||||
**如何理解Wass距离?**
|
||||
很期待未来有专门针对寻找均衡态的优化方法。
|
||||
|
||||
**WGAN-GP的改进有哪些?**
|
||||
|
||||
**如何理解Wasserstein距离?**
|
||||
Wasserstein距离与optimal transport有一些关系,并且从数学上想很好的理解需要一定的测度论的知识。
|
||||
|
||||
### condition GAN
|
||||
|
||||
|
|
@ -58,6 +67,9 @@ $$L^{infoGAN}_{G}=L^{GAN}_G-\lambda L_1(c,c')$$
|
|||
|
||||
### StarGAN
|
||||
目前Image-to-Image Translation做的最好的GAN。
|
||||
|
||||
## Self-Attention GAN
|
||||
|
||||
## GAN训练有什么难点?
|
||||
由于GAN的收敛要求**两个网络(D&G)同时达到一个均衡**,
|
||||
|
||||
|
|
@ -71,6 +83,8 @@ GAN是一种半监督学习模型,对训练集不需要太多有标签的数
|
|||
|
||||
Instance Norm比Batch Norm的效果要更好。
|
||||
|
||||
使用逆卷积来生成图片会比用全连接层效果好,全连接层会有较多的噪点,逆卷积层效果清晰。
|
||||
|
||||
## GAN如何解决NLP问题
|
||||
|
||||
GAN只适用于连续型数据的生成,对于离散型数据效果不佳,因此假如NLP方法直接应用的是character-wise的方案,Gradient based的GAN是无法将梯度Back propagation(BP)给生成网络的,因此从训练结果上看,GAN中G的表现长期被D压着打。
|
||||
|
|
|
|||
Loading…
Reference in New Issue