从 Toy Model 研究深度学习:GAN(1)

从 Toy Model 研究深度学习:GAN(1)

从科学方法的角度,如果希望真正了解一个复杂系统的运作,可以从 Toy model 和 Toy data 开始。不过,很少见到有人这样研究深度学习模型,通常的研究都是直接在复杂数据集上做实验,其实那个常见的25个点的数据集都属于太复杂了。

在此我们从最简单的模型和数据开始,看看 GAN 的运作。模型有多简单?从线性模型开始。

此前很有话题性的一篇文章([1711.10337] Are GANs Created Equal? A Large-Scale Study),认为所有 GAN 的效果都差不多。确实,目前对于 GAN 的应用仍然在大程度上处于玄学层面。如果一上来就研究复杂的模型,难度很大。研究最简单的模型,可以逐渐为我们带来启示。

1. 最简单的“GAN”

知乎的公式编辑器似乎坏了,不会显示公式。下面就直接贴图了。

G 网络:

只有1个隐变量 z,1个权重。输出1个数字。不能再简单了。

D 网络:

同样简单。只有1个权重,输入1个数字 x,输出1个数字。

训练数据集,也只有一个数字:{X}。

那么 G 网络的目标是最大化 D(G(z)),D 网络的目标是最大化 D(X),最小化 D(G(z))。这个是 “WGAN”。

那么大家可能会问,这样的模型有研究的必要吗?答案是肯定的,我们马上就会看到。

对于数学有敏感性的朋友,会感觉这个模型训练时会看到循环。确实如此。


2. 计算

首先需要注意,由于这里的模型是线性的而且没有bias,所以 z 不适合取平均值为 0 的随机数,否则这个模型就真的没有意义了。这里为了方便,令 z 为在 0 到 2 之间的均匀随机数,这样 z 的平均值为 1。

那么训练公式是:

继续简化,令 batch size 无穷大(这样z就等于1了),再把训练公式连续化,把学习速率也去掉,得到:

这里有个现象。我们最希望 wG 取的值,无疑是等于 X,因为这时 G 的输出就在平均意义上最接近 X。确实,D 在此时会稳定。但 G 对此不知情,它不会稳定下来,除非 wD 刚好也等于 0。

如果 wD 和 wG 的初始值是 0,我们会看到 D 和 G 都在永恒地震荡:

例如,如果 X=1,就是这样,黄色是 wG,蓝色是 wD:

wG 的平均值是对的,但是一直在震荡。除非我们在某一瞬间恰好满足 wD = 0 且 wG = X。所以这是一个很不稳定的系统。


3. 总结

可见,对于最简单的线性模型,如果使用的是 WGAN 的损失函数,即使是在输入和输出最简单的情况下,GAN 也无法稳定。

那么,如何拯救这个 GAN?下次继续。

编辑于 2018-05-06

文章被以下专栏收录