GAN基础
Generative Adversarial Networks
GAN框架
GAN框架是有两个对象(discriminator,generator)的对抗游戏。generator是一个生成器,generator产生来自和训练样本一样的分布的样本。discriminator是一个判别器,判别是真实数据还是generator产生的伪造数据。discriminator使用传统的监督学习技术进行训练,将输入分成两类(真实的或者伪造的)。generator训练的目标就是欺骗判别器。
游戏中的两个参与对象由两个函数表示,每个都是关于输入和参数的可微分函数。discriminator是一个以 x 作为输入和使用θ(D) 为参数的函数D,D(x)是指判断输入样本x是真实样本的概率 ;generator由一个以z为输入使用 θ(G) 为参数的函数G,G(z)是指输入样本z产生一个新的样本,这个新样本希望接近真实样本的分布。
如图 1所示GAN有两种场景,第一种场景(左图),discriminator对象随机从样本集中取一个元素X作为输入,discriminator对象的目标是以真实样本X作为输入时,尽量判断D(x)为1;而第二种场景(右图),具有discriminator和generator两个对象的参与,generator对象以噪声变量z作为输入,然后产生一个样本G(z),discriminator对象以G(z)作为输入并尽量判断D(G(z) )为0;而generator对象的目标是尽量让discriminator对象计算D(G(z) )为1。最后这个游戏是达到纳什均衡(Nash equilibrium),即G(z)产生的数据样本分布与真实数据样本分布一样,即对于所有的输入x,D(x) 的计算结果为0.5。
交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式。交叉熵损失函数定义如下:
目前为 GANs 设计的所有不同的博弈针对discriminator的 J(D) 使用了同样的代价函数。他们仅仅是generator J(G) 的代价函数不同。
通过给discriminator模型定义损失函数后,将优化discriminator模型转移为优化等式,即训练discriminator模型就是为了最小化discriminator的等式。
所以优化generator模型,一样是优化 损失函数,即最小化该损失函数。由于和两个损失函数只是互为相反数,所以可以将两个等式合并为一个优化等式。即
由于我们训练D来最大化分配正确标签给不管是来自于训练样例还是G生成的样例的概率.我们同时训练G来最小化。换句话说,D和G的训练是关于值函数V(G,D)的极小化极大的二人博弈问题:
生成对抗网络的minibatch随机梯度下降训练。判别器的训练步数,k是一个超参数。在我们的试验中使用k=1,使消耗最小。
GAN的设计思想采用discriminator和generator两个模型进行对抗优化,本章用两个证明来从理论上论证了对抗网络的合理性。
命题:如果G和D有足够的性能,对于算法中的每一步,给定G时,判别器能够达到它的最优,并且通过更新pg来提高这个判别准则。
如3.2小节所示介绍的对抗网络,对于一个映射函数G:XàY,和discriminator对象DY,则GAN的损失函数定义为:
理论上GAN能够学习两个映射函数G和F,其能够分别从X或Y一个领域的数据生成到另一个领域的数据。但是由于映射函数变换可能性非常多,无法保证映射函数能够将一个领域的输入数据xi转换为其它领域的数据yi。为了减少映射函数的变换范围或可能性,CycleGAN增加了一些约束函数来限制这种变换范围过大的问题。
- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks.