利用GAN做实验的学者一定为其训练不稳定感到痛苦,如何去控制超参数,如何去平衡判别器和生成器间的迭代都是操碎了心。尽管WGANLSGAN对于GAN的梯度消失做了解释和改进,但是在实际的训练中模型的不稳定一直存在。SNGAN 可以有效的约束判别器的能力,但是随着生成精度的增加,仍然不可避免训练的不稳定。T-GANs苏剑林, 苏大哥的一篇基于RSGAN的基础上对相对判别器做一般化的改进,文章现已挂在Arxiv, 文章出现较多的数学公式,笔者尽量用简洁的话语阐述清文章的观点。

论文引入

由于GAN的文章更新的太多,现在称原始GAN叫做Standard GAN简称SGAN,文章后续的SGAN就是大家最熟悉的由Goodfellow创作的最原始的GAN。 GAN在训练和分析过程中都会发现判别器D的能力是远超生成器G的,这个的理论推导在SNGAN中有所提及。为了较好的平衡D和G的关系,在GAN刚开始的阶段, 大多数学者是控制判别器和生成器的更新比例,由于WGAN和LSGAN等一系列改进文章的提出,权重裁剪、梯度惩罚得到应用,SNGAN对判别器做谱归一化来约束判别器的能力。

上述的这些方法仍然无法完全消除GAN训练过程中的不稳定,尤其是训练特别高维数据的情况下,例如1024x1024的图像。这个观念在最近新出的BigGAN 中作者也是吐槽了一下。RSGAN将“图灵测试”的思想引入到了GAN中,何谓图灵测试,借用苏大哥博客中的描述做解释:

图灵测试指的是测试者在无法预知的情况下同时跟机器人和人进行交流,如果测试者无法成功分别出人和机器人,那么说明这个机器人已经(在某个方面)具有人的智能了。 “图灵测试”也强调了对比的重要性,如果机器人和人混合起来后就无法分辨了,那么说明机器人已经成功了。

RSGAN把图灵测试在GAN中的应用可以理解为对于真实样本我们可以理解为人,假样本可以理解为机器人,不在按照SGAN中一张张的送到判别器下判断样本真假, 而是将真假样本混合在一起让判别器判断何为真何为假,这样判别器将不在按照记忆去判断真假,而是在混合的数据堆中找到真假,这个无疑是增加了判别器的判别要求, 在训练阶段有用的和丰富的梯度将得到保留;同时让生成器也看到真实样本,在生成阶段更加逼真的生成高质量样本。这种一收一放,有效的控制了D和G的能力, 达到了整体上提高GAN的性能。

GAN的回顾

为了保证与原文的公式一致,接下来部分的公式保持与原文一致。对于大部分GAN的目的都是为了减小真实样本和生成样本的分布差异。我们定义真实样本的分布为$\tilde{p}(x)$, 生成样本分布为$q(x)$,对于SGAN对抗下最大最小化博弈,对于判别器$T(x)$和生成器$G(z)$:

\[\begin{eqnarray} \arg\max_{T} \mathbb{E}_{x\sim \tilde{p}(x)}[\log \sigma(T(x))] + \mathbb{E}_{x\sim q(x)}[\log(1-\sigma(T(x)))] \end{eqnarray}\] \[\begin{eqnarray} \arg\min_{G} \mathbb{E}_{x\sim q(x)}[h(T(x))] = \arg\min_{G} \mathbb{E}_{z\sim q(z)}[h(T(G(z)))] \end{eqnarray}\]

这里的$\sigma$为sigmoid函数$\sigma(x) \frac{1}{1+e^{-x}}$,其中$h$可以是任何标量函数,只要使$h(log(t))$成为变量t的凸函数即可, 这个后续再说。对上述的判别器优化公式(1)进行变分操作,类似于微分,可以得到:

\[\begin{eqnarray} \frac{\tilde{p}(x)}{q(x)}=\frac{\sigma(T(x))}{1 - \sigma(T(x))} = e^{T(x)} \end{eqnarray}\]

详细证明可参看博客《RSGAN:对抗模型中的“图灵测试”思想》。带入到公式(2),可以得到:

\[\begin{eqnarray} \arg\min_{G}\mathbb{E}_{x\sim q(x)}\left[h\left(\log\frac{\tilde{p}(x)}{q(x)}\right)\right]=\arg\min_{G}\int q(x)\left[h\left(\log\frac{\tilde{p}(x)}{q(x)}\right)\right]dx \end{eqnarray}\]

设$f(t) = h(log(t))$,可以看出SGAN的基本目标是最小化$p(x)$和$q(x)$之间的f-散度,函数$f$受凸函数约束。因此,任何使$h(log(t))$成为凸函数的函数都可以使用, 例如$h(t)= -t$,$h(t) = - log \sigma(t)$,$h(t) = log(1 - \sigma (t))$。

对于WGAN中的Wasserstein distance,它的目的也是为了最小化$p(x)$和$q(x)$之间的距离,详细的解释可参看原文,这里不再赘述。不过统一起来, 这些GAN都是为了拉近生成分布与真实分布;在更新生成器时,只有来自生成分布的假样本可用。这种一张张输入判断真假的任务对于拥有强大记忆性的判别器来说是容易的, 这无疑会导致越训练判别器的能力越强,最终导致训练的失败。

RSGAN

RSGAN在SGAN的基础上对判别器做了一定的变化,此时判别器不再是一张张判断输入的真假,而是将真假混合在一起来判断,同时生成器的更新也加入了真实样本作为指导, 这就是RSGAN的整体思路,所对应的优化公式为:

\[\begin{equation} \arg\max_{T} -\mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[\log \sigma(T(x_r)-T(x_f))] \end{equation}\] \[\begin{equation} \arg\min_{G} -\mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[\log \sigma(T(x_f)-T(x_r))] \end{equation}\]

继续通过变分的思想,可以对公式(5)进一步分析,得到的最优解:

\[\begin{equation} \frac{\tilde{p}(x_r)q(x_f)}{\tilde{p}(x_f)q(x_r)}=\frac{\sigma(T(x_r)-T(x_f))}{\sigma(T(x_f)-T(x_r))}=e^{T(x_r)-T(x_f)} \end{equation}\]

带入到公式(6)可以得到:

\[\begin{equation} \begin{aligned}&\arg\min_{G}\mathbb{E}_{x_r\sim \tilde{p}(x), x_f=G(z),z\sim q(z)}\left[h\left(\log\frac{\tilde{p}(x_f)q(x_r)}{\tilde{p}(x_r)q(x_f)}\right)\right]\\ =&\arg\min_{G}\iint \tilde{p}(x_r)q(x_f)\left[h\left(\log\frac{\tilde{p}(x_f)q(x_r)}{\tilde{p}(x_r)q(x_f)}\right)\right] dx_r dx_f\end{aligned}\label{eq:rsgan-gg} \end{equation}\]

这就是RSGAN的目的所在,它实际上优化的是$\tilde{p}(x_r)q(x_f)$和$\tilde{p}(x_f)q(x_r)$的f-散度。我们可以进一步分析(以下观点借鉴苏剑林个人博客内容)

假如我从真实样本采样一个$x_r$出来,从伪造样本采样一个$x_f$出来,然后将它们交换一下,把假的当成真,真的当成假,那么还能分辨出来吗?换言之:$\tilde{p}(x_f)q(x_r)$有大变化吗?

假如没有什么变化,那就说明真假样本已经无法分辨了,训练成功,假如还能分辨出来,说明还需要借助真实样本来改善伪造样本。所以,式(8)就是RSGAN中的“图灵测试”思想的体现:打乱了数据,是否还能分辨出来?

T-GANs

前面说道RSGAN的突破性工作就是优化了$\tilde{p}(x_r)q(x_f)$和$\tilde{p}(x_f)q(x_r)$的f-散度,利用“图灵测试”的思想来优化GAN, 为了让这一思想更加一般化,更加可以称得上“图灵测试”在GAN中的应用,T-GANs显示出了更加一般化的思想。

假设联合分布$P(x_r, x_f)=\tilde{q}(x_r)p(x_f)$,$Q(x_r, x_f)=\tilde{q}(x_f)p(x_r)$。现在的目的是想最小化$P(x_r, x_f)$和$Q(x_r, x_f)$ 距离,如果认为$(x_r, x_f)$作为一个变量,则带入SGAN中,即公式(1)中,可以得到:

\[\begin{equation} \begin{aligned}& \arg\max_{T} \mathbb{E}_{(x_r, x_f)\sim P(x_r,x_f)}[\log \sigma(T(x_r,x_f))] + \mathbb{E}_{(x_r, x_f)\sim Q(x_r,x_f)}[\log(1-\sigma(T(x_r,x_f)))] \\ =& \arg\max_{T} \mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[\log \sigma(T(x_r,x_f)) + \log(1-\sigma(T(x_f,x_r)))] \end{aligned} \end{equation}\]

代入公式(2)可以得到G的优化公式,这里的$x_f$可以表示为$x_f=G(z),z \sim q(z)$,最终得到一般化优化公式:

\[\begin{equation} \arg\max_{T} \mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[\log \sigma(T(x_r,x_f)) + \log(1-\sigma(T(x_f,x_r)))] \\ \arg\max_{G} \mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[\log(1 - \sigma(T(x_r,x_f))) + \log \sigma(T(x_f,x_r))] \end{equation}\]

这就是利用SGAN实现了$\tilde{p}(x_r)q(x_f)$和$\tilde{p}(x_f)q(x_r)$的分布距离的拉近,更一般的也可以将“图灵测试”思想用在WGAN上。

\[\begin{equation} \begin{aligned}& W(P(x_r,x_f),Q(x_r,x_f)) \\ =& sup_{\Vert T \Vert_L \leq 1} \mathbb{E}_{(x_r, x_f)\sim P(x_r,x_f)}[T(x_r,x_f)] - \mathbb{E}_{(x_r, x_f)\sim Q(x_r,x_f)}[T(x_r,x_f)] \\ =& sup_{\Vert T \Vert_L \leq 1} \mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[T(x_r,x_f) - T(x_f,x_r)] \end{aligned} \end{equation}\]

最终应用在优化公式上:

\[\begin{equation} \arg\min_G \arg\max_{T,\Vert T \Vert_L \leq 1} \mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[T(x_r,x_f) - T(x_f,x_r)] \\ \arg\max_T \arg\max_{T,\Vert T \Vert_L \leq 1} \mathbb{E}_{(x_r, x_f)\sim \tilde{q}(x_r)p(x_f)}[T(x_r,x_f) - T(x_f,x_r)] \end{equation}\]

怎么去实现$T(x_r,x_f)$呢?

可以构造一个编码器E,对真实样本和生成样本先做编码到潜在空间,在通过判别器D判断$E(x_r)-E(x_f)$的真假,可以表示为:

\[\begin{equation} T(x_r,x_f) \triangleq D(E(x_r)-E(x_f)) \end{equation}\]

当然这种“图灵思想”可以用在更多的GAN模型上,甚至可以说对于任何一种GAN都是适用的,所以文章将“图灵思想(Turing Test)”用作题目,简称为T-GANs。

实验

在不同的图像尺寸上,T-GANs展示了更多的网络适应能力和更快的收敛速度,在私下和作者交流的过程中,64尺寸到128,甚至是256整体框架的改动不大, 这对于一般GAN模型是困难的,看一下实验结果对比:

由于文章还处于初稿阶段,本博文只是为了对文章做中文解释,后续的实验还会再丰富。

总结

在本文中,作者提出了一种新的对抗模式,用于训练称为T-GAN的生成模型。这种对抗模式可以解释为GAN中的图灵测试,它是训练GAN而不是特定GAN模型的指导思想。 它可以与当前流行的GAN(如SGAN和WGAN)集成,从而实现T-SGAN和T-WGAN。实验表明,T-GAN在从小规模到大规模的数据集上具有良好且稳定的性能。 它表明在GAN中更新发生器时,实际样本的信号非常重要。然而,T-GAN提高稳定性和收敛速度的机制仍有待进一步探索。

源码地址:Keras版本

谢谢观看,希望对您有所帮助,欢迎指正错误,欢迎一起讨论!!!