TVGAN(迄今为止最简单的新GAN):思考DL的理论细节 (2)

383 阅读2分钟
原文链接: zhuanlan.zhihu.com

在本文中,我们提出一种可能是迄今为止最简单的新 GAN,称为 TVGAN。

本系列的前文见:

PENG Bo:MLE, Bayes, 生成模型:思考DL的理论细节 (1)zhuanlan.zhihu.com图标

其实不能说是提出,因为太简单了,应该说是,“介绍一个大家都应该知道的东西”。

由于它是如此简单,我非常奇怪为何似乎没有人提出过。

1. 理论

考虑 Total Variation:

\operatorname{TV}(P,Q)=\int |p(x) - q(x)| \, dx

TV 的性质很好。它特别简单,对称,而且永远有效,不会坍塌,不会像 K-L/J-S 等等那样失效。


那么,下式是显然的:

|p(x) - q(x)| = \max_{t \in [-1,1]} p(x) \cdot t - q(x) \cdot t

下式也是显然的:

|p(x) - q(x)| = \max_{t(x) \in [-1,1]} p(x) \cdot t(x) - q(x) \cdot t(x)


所以:

\begin{align} \int |p(x) - q(x)| \, dx &= \int \left(\max_{t(x) \in [-1,1]} p(x) \cdot t(x) - q(x) \cdot t(x) \right) \, dx \\&= \max_{t(x) \in [-1,1]}  \left( \int p(x) \cdot t(x) \, dx - \int q(x) \cdot t(x) \, dx \right) \\&= \max_{t(x) \in [-1,1]} E_{x \sim p(x)}(t(x)) - E_{x \sim q(x)}(t(x))  \end{align}


把 t 叫做 D,用 G(z) 生成 q(x),则:

\begin{align} \operatorname{TV} = \max_{D(x) \in [-1,1]} E_{x \sim p_x(x)}(D(x)) - E_{z \sim p_z(z)}(D(G(z))) \end{align}

希望最小化 TV,就得到了 TVGAN 模型:

\min_{G} \max_{D(x) \in [-1,1]} E_{x \sim p_x(x)}(D(x)) - E_{z \sim p_z(z)}(D(G(z)))


注意,这样看来,其实 TVGAN 的训练方法也可以试试别的方法。例如,每次同时采样一个真样本 a,一个假样本 b,算一个 D(a)-D(b),然后 D 的目标是最大化 D(a)-D(b)。

我还没有试,先把这个文章发出来,大家可以自己试。


TVGAN 的训练目标极其简单,例如,完美的 D 是这样的:

D(x) = \operatorname{sgn}(p(x) - q(x))

也就是说,D 的目标是,判断 x 更可能属于 p(x) 还是 q(x)。

看图:

TVGAN 和 WGAN 的 LOSS 看上去很像,但是,区别是:

  1. 我们要求 D(x) \in [-1, 1],这非常重要!!!(原因非常显然)。
  2. 同时,它不需要 WGAN 的各种限制条件(正是因为我们限制了 D 的范围)。
  3. TVGAN 的训练过程可能可以试试不同的方法,前文说了。
  4. 简单到令人无语的程度。小学生都可以懂。


2. 实践

稍后更新。其实不用做实验,显然 TVGAN 是正确的。我相信 TVGAN 不会模式坍塌,大家可以试试。


后续继续这里的讨论,在我看来,下一步的关键是 G 和 D 本身的架构优化。

欢迎大家讨论,欢迎大家关注。