其中可以看到GAN中有两个最关键的结构就是generator(生成器)和discriminator(判别器)。生成器是为了生成接近真实数据分布的虚假样本,判别器是为了分辨样本是来自生成器还是真实数据。
整个网络运行流程如下:从隐空间随机生成隐变量,生成器通过计算将隐变量映射至真实数据空间。判别器判断样本是来自真实分布还是生成器得到的分布,并用判别结果做梯度下降优化。
对于生成器的Loss,我们可以变形一下。不影响结果。
那么整个gan的优化函数可以看做是V(G,D)
在D(x)接近于0的时候,这个函数十分平滑,梯度非常的小。这就会导致,在训练的初期,G想要骗过D,变化十分的缓慢,而上面的函数,趋势和下面的是一样的,都是递减的。但是它的优势是在D(x)接近0的时候,梯度很大,有利于训练,在D(x)越来越大之后,梯度减小,这也很符合实际,在初期应该训练速度更快,到后期速度减慢。
In theory, one would expect therefore that we would first train the discriminator as close as we can to optimality (so the cost function better approximates the JSD), and then do gradient steps, alternating these two things. However, this doesn’t work. In practice, as the discriminator gets better, the updates to the generator get consistently worse.
我们会希望如果两个分布之间越接近它们的JS散度越小,我们通过优化JS散度就能将“pg拉向”pdata,最终以假乱真。这个希望在两个分布有所重叠的时候是成立的,但是如果两个分布完全没有重叠的部分,或者它们重叠的部分可忽略(下面解释什么叫可忽略),它们的JS散度是多少呢?
在(近似)最优判别器下,最小化生成器的loss等价于最小化pg与pdata之间的JS散度,而由于pg与pdata几乎不可能有不可忽略的重叠,所以无论它们相距多远JS散度都是常数,最终导致生成器的梯度(近似)为0,梯度消失,生成器无法训练。
当pdata与pg的支撑集(support)是高维空间中的低维流形(manifold)时,重叠部分测度(measure)为0的概率为1。
There is no overlapping between ????? and ??or the overlapping could be neglected !
原因是GAN中的生成器一般是从某个低维(比如100维)的随机分布中采样出一个编码向量,再经过一个神经网络生成出一个高维样本(比如64x64的图片就有4096维)。当生成器的参数固定时,生成样本的概率分布虽然是定义在4096维的空间上,但它本身所有可能产生的变化已经被那个100维的随机分布限定了,其本质维度就是100,再考虑到神经网络带来的映射降维,最终可能比100还小,所以生成样本分布的支撑集就在4096维空间中构成一个最多100维的低维流形,“撑不满”整个高维空间。
“撑不满”就会导致真实分布与生成分布难以“碰到面”,这很容易在二维空间中理解:一方面,二维平面中随机取两条曲线,它们之间刚好存在重叠线段的概率为0;另一方面,虽然它们很大可能会存在交叉点,但是相比于两条曲线而言,交叉点比曲线低一个维度,长度(测度)为0,可忽略。三维空间中也是类似的,随机取两个曲面,它们之间最多就是比较有可能存在交叉线,但是交叉线比曲面低一个维度,面积(测度)是0,可忽略。从低维空间拓展到高维空间,就有了如下逻辑:因为一开始生成器随机初始化,所以几乎不可能与有什么关联,所以它们的支撑集之间的重叠部分要么不存在,要么就比和的最小维度还要低至少一个维度,故而测度为0。所谓“重叠部分测度为0”,就是上文所言“不重叠或者重叠部分可忽略”的意思。
Lower dimension manifold
KL散度不是一个对称的衡量
这一放一打之下,生成器宁可多生成一些重复但是很“安全”的样本,也不愿意去生成 多样性的样本,因为那样一不小心就会产生第二种错误,得不偿失。这种现象就是 大家常说的collapse mode。
giuhub链接:https://github.com/hindupuravinash/the-gan-zoo
论文参考:Mirza M, Osindero S. Conditional generative adversarial nets[J]. arXiv preprint arXiv:1411.1784, 2014.
参考文献:Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks[J]. arXiv preprint arXiv:1511.06434, 2015.