GAN
KL散度,JS散度
传统GAN 在辨别器最优时,生成器的loss为
根据KL,JS散度,
但是如果两个分布完全没有重叠的部分,或者它们重叠的部分可忽略时
JS散度始终未log2
而这对于梯度下降方法意味着——梯度为0
生成样本分布的支撑集就在4096维空间中构成一个最多100维的低维流形
从某个低维(比如100维)的随机分布中采样出一个编码向量
- 判别器训练得太好,生成器梯度消失,生成器loss降不下去;判别器训练得不好,生成器梯度不准,四处乱跑。只有判别器训练得不好不坏才行,但是这个火候又很难把握,甚至在同一轮训练的前后不同阶段这个火候都可能不一样,所以GAN才那么难训练。
第二种原始生成器loss(公式三)
最终可以把公式3化简为
这个等价最小化目标存在两个严重的问题。
- 第一是它同时要最小化生成分布与真实分布的KL散度,却又要最大化两者的JS散度,一个要拉近,一个却要推远!这在直观上非常荒谬
- 第二,即便是前面那个正常的KL散度项也有毛病。因为KL散度不是一个对称的衡量
第一种错误对应的是“生成器没能生成真实的样本”,惩罚微小;第二种错误对应的是“生成器生成了不真实的样本” ,惩罚巨大。第一种错误对应的是缺乏多样性,第二种错误对应的是缺乏准确性。这一放一打之下,生成器宁可多生成一些重复但是很“安全”的样本,也不愿意去生成多样性的样本,因为那样一不小心就会产生第二种错误,得不偿失。这种现象就是大家常说的collapse mode。
小结:在原始GAN的(近似)最优判别器下,第一种生成器loss面临梯度消失问题,第二种生成器loss面临优化目标荒谬、梯度不稳定、对多样性与准确性惩罚不平衡导致mode collapse这几个问题。
对第一种问题的解决方案
对生成样本和真实样本加噪声,直观上说,使得原本的两个低维流形“弥散”到整个高维空间,强行让它们产生不可忽略的重叠。而一旦存在重叠,JS散度就能真正发挥作用,此时如果两个分布越靠近,它们“弥散”出来的部分重叠得越多,JS散度也会越小而不会一直是一个常数,于是(在第一种原始GAN形式下)梯度消失的问题就解决了。在训练过程中,我们可以对所加的噪声进行退火(annealing),慢慢减小其方差,到后面两个低维流形“本体”都已经有重叠时,就算把噪声完全拿掉,JS散度也能照样发挥作用。
但是仍然没能够提供一个衡量训练进程的数值指标。但是WGAN就从根源出发,用Wasserstein距离代替JS散度,同时完成了稳定训练和进程指标的问题。
Wasserstein 距离
Wasserstein距离又叫Earth-Mover(EM)距离,定义如下:
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。
WGAN
Domain Agnostic Learning with Disentangled Representations
This paper purposes a novel Deep Adversarial Disentangled Autoencoder (DADA), which aims to tackle domain-agnostic learning by disentangling the domain-invariant features from both domain-specific and class-irrelevant (background) features simultaneously.
求导
Sigmoid
tanh
Relu
Softmax