这是本人第一次写博客文章,有不足的地方请多包涵,另外该博客只是对GAN在图像领域应用的个人理解,大神轻喷。部分内容参考的这篇文章[19]

一、图像转换(修复、翻译)

1. 成对样本

1. Context Encoder

论文[1]提出一种上下文编码器来根据缺失图像周围的像素来修补缺失部分。训练上下文编码器时,需要构造标准的逐像素重构误差和对抗损失误差。利用对抗损失误差,该上下文自编码器能够很好的修复缺失部分的语义信息。

1.1 网络结构

 生成对抗网络(GAN)常见应用

1.2 损失函数

(1)重构损失

重构损失其实就是真实图片和生成图片之间的L2损失(实验证明L2L1的差别不明显),重构损失函数如下:

 生成对抗网络(GAN)常见应用

其中,F代表上下文自编码器的输出,M是二值掩模(缺失部分用1表示,否则用0表示),生成对抗网络(GAN)常见应用代表点乘。

(2)对抗损失

使用的是原始GAN损失函数形式,即最小化真实数据和生成数据的JS距离。

 生成对抗网络(GAN)常见应用

(3)二者结合

 生成对抗网络(GAN)常见应用

2. Pix2Pix[2]

Pix2pix可以看成将X领域的图像转换成Y领域的图像,是一种有监督的方法。

2.1网络结构

该网络使用编解码的形式,以CGAN为基础思想,以U-Net(一种图像分割网络)为网络结构。

 生成对抗网络(GAN)常见应用

2.2损失函数

类似上下文自编码器,由两个部分组成

(1)条件对抗损失 

生成对抗网络(GAN)常见应用

(2)重构损失

 生成对抗网络(GAN)常见应用

(3)求解

 生成对抗网络(GAN)常见应用

3. PAN[3]

同样是图像转换,PANPerceptual Adversarial Networks)不像Pix2Pix使用CGAN的框架,而是利用生成对抗损失和感知对抗损失来作为网络的损失函数。通过最小化判别器的感知信息差异来训练转移网络(生成网络)。该论文与上下文自编码器和Pix2Pix进行对比,并证明该网络的优秀性能。

3.1网络结构

PAN同样采用编解码形式,转移网络T的隐层采用Skip connection的形式;判别网络D的隐层通过最小化生成数据和真实数据之间的perceptual adversarial loss来约束T网络。

 

 生成对抗网络(GAN)常见应用

3.2损失函数

(1)生成对抗损失

 生成对抗网络(GAN)常见应用

(2)感知对抗损失

生成对抗网络(GAN)常见应用 

 生成对抗网络(GAN)常见应用

其中,m是预定义的正值边界,pi表示感知损失,例如可以使用公式(5)的形式。

(3)结合

综合(1)(2)最终损失函数定义为:

 生成对抗网络(GAN)常见应用

2. 非成对样本

非成对样本之间的图像转换即给定两个领域的非成对数据,通过无监督的形式学习领域间的映射关系。

1. CycleGAN, DiscoGAN, DualGAN

2017年几乎同时出现的3篇论文CycleGAN[4], DiscoGAN[5], DualGAN[6]采用两个生成器和两个判别器,几乎采用同样的思路来解决非成对样本之间的映射关系。

1.1网络结构

三者思路一样,就拿cyclegan举例,结构如下:

 生成对抗网络(GAN)常见应用

1.2损失函数 

(1)生成对抗损失

生成对抗网络(GAN)常见应用 

生成网络G尽量生成图像Y使得Y与真实图像Y中的图像尽量相似同理可以构建生成网络F:Y->X,以及判别网络的目标函数

(2)Cycle Consistency Loss

生成对抗网络(GAN)常见应用 

(3)综合

综合(1)(2),最终损失函数:

生成对抗网络(GAN)常见应用 

2. DistanceGAN[7]

该网络相比CycleGAN,舍弃了cyclic consistency loss,而是使用了distance preserving loss,其思想在于X域中的样本距离在Y域中应当保留,即如果A的两幅图通过GAB映射到B中,那么映射后的两幅图在之间的距离应该保持,不容易发生模式崩塌。

2.1 distance constraint

 生成对抗网络(GAN)常见应用

2.2 Self-distance Constraints

DistanceGAN基于2幅图片,所以做作者就将一幅图片分成两半(比如左一半,右一半)从而得到distance约束,即

生成对抗网络(GAN)常见应用

2.3损失函数

 生成对抗网络(GAN)常见应用

二、半监督学习

半监督学习通常使用无标签和有标签的数据来分类。

1. Improved GAN

Improved GAN[8]GAN的判别网络D的输出增加一个softmax生成对抗网络(GAN)常见应用),即将每个输出转化为概率。假设训练数据有k类,那么在训练improved-GAN模型的时候,可以把生成器生成出来的样本归为第k+1类,因为该模型可以利用有标签的训练样本,也可以从无标签的生成数据中学习,所以称之为“半监督”分类。 Improved-GAN的半监督学习实际上有两个部分组成,即监督学习和无监督学习。所谓监督学习,指的是给定小量的训练样本,将比较判决器判决出来的类别与样本的标签之间的交叉熵作为损失函数,而这个交叉熵损失函数也是一般的分类任务中经常运用到的技巧,其监督损失函数表达式为生成对抗网络(GAN)常见应用。无监督学习,就是说对于那些真实的无标签数据(因为只有少量的样本具有标签),无监督的任务就是将这些数据判别为真实数据,即判别为k类,即最大化生成对抗网络(GAN)常见应用;而对于生成的伪造样本,判断其为第k+1类,最大化从而可以达到无监督学习的目的。所以无监督的损失函数可以定义为生成对抗网络(GAN)常见应用

2. CatGAN

CatGAN[9]Jost 发表于2016年的论文“Unsupervised And Semi-superviesed Learning With Categorical Generative Adversarial Networks”。CatGAN相比于原始GAN,其思想就是判别网络D最后加一层softmax,将生成的数据不再判别真假,而是将其判别为属于某个确定类的概率,或者从生成网络G的角度讲,生成的数据不是尽可能真的数据,而是生成K个类别中的确切样本。

catGAN中,判别网络D需要满足:1)给样本确定的类分配;2)对生成的样本分配不确定;3)公平地运用所有类别 。生成网络G需要满足:1)它应该生成具有高度确定的类分配的样本;2)在K个类别上平等地分布样本。对于无监督的catGAN,可以用信息论的熵来表示确定性的大小。这样,D的条件1)就可以表示为min{Ex~X[H[p(y|x,D)]]},条件2)可以表示为max{Ez~P(z)[H[p(y|G(z),D)]]},条件3)表示为max{Hx[p(y|D)]}。同样,对于G来说,条件1)可以表示为min{Ez~P(z)[H[p(y|G(z),D)]},条件2)可以表示为max{HG[p(y|D)]}。综上,D的目标函数表示为LD=max{Hx[p(y|D)]-Ex~X[H[p(y|x,D)]]+Ez~P(z)[H[p(y|G(z),D)]]}G的目标函数表示为LG=min{-HG[p(y|D)]+Ez~P(z)[H[p(y|G(z),D)]}

半监督cataGAN中,LG目标函数不变,给定部分数据标签集{(x1,y1)……(xL,yL)},在LD目标函数的基础上加上给定样本标签的交叉熵作为新的目标函数,即新的判别网络的目标函数定义为:LD=max{Hx[p(y|D)]-Ex~X[H[p(y|x,D)]]+Ez~P(z)[H[p(y|G(z),D)]]+λCrossEntropy[y,p(y|x,D)]}

3. SSL_GAN

SSL_GANsemi-supervised learning GAN[10]利用CC_GANcontext-conditional GAN[11]进行半监督学习,CC_GAN的生成器输入缺失图像块的图像,判别器将完整图像判别为真,将缺失图像块的图像判别为假。

3.1网络结构

生成对抗网络(GAN)常见应用 

3.2损失函数 

类似于半监督GAN的学习方式,SSL_GAN的半监督形式体现在原始GAN损失函数的基础上添加交叉熵,其损失函数定义为:

 生成对抗网络(GAN)常见应用

4. Triple-GAN

半监督学习的GAN网络存在以下两个问题:1)判别器D有两个不兼容的收敛点,一是判别生成图像真假的收敛点,二是分辨类标的收敛点;2)生成器会生成没有确定类标的图像。而Triple-GAN[12]可以解决上述问题。Triple-GAN由三个部分组成:生成器G、判别器D以及分类器CG在类标Yg的前提下生成相应的图像XgC计算生成数据(XgYg)和有标签数据(Xl,Yl)的交叉熵并预测无标签数据Xc的类别YcD将有标签的真实数据(Xl,Yl)判别为真,将生成的数据(Xg,Yg)以及无标签的数据(XcYc)判别为假。

4.1网络结构

生成对抗网络(GAN)常见应用 

4.2损失函数

 生成对抗网络(GAN)常见应用

其中CE代表交叉熵。论文证明,当且仅当p(x,y)=pg(x,y)=pc(x,y)时,网络达到最优。

三、隐空间

1. 隐空间分解

输入G网络的向量z如果只是噪声就不会得到我们想要的表示,所以可以将其分解为标准的隐向量z和其他我们想要的形式c

1.1 监督

条件GANCGAN[13]提出添加类别信息作为隐向量,生成器的输入不仅仅是常规的隐向量z,而是考虑了类别c;同样,判别器的输入也是考虑了类别c的信息,有助于判别真假。网络结构如下:

生成对抗网络(GAN)常见应用 

AC-GAN[14]采用辅助分类器来最大化生成类别的对数似然,从而来分类样本。所以说,AC-GAN的判别器不仅能够判别生成样本的真假,还能判别生成样本的类别。其网络结构如下:

 

1.2 无监督和半监督生成对抗网络(GAN)常见应用

InfoGAN[15]将输入随机噪声分为标准的因空间向量z和其他隐变量c(来捕获真实样本的某种语义信息)。所以生成器的输出就表示为G(z,c),并通过最大化cG(z,c)之间的互信息I(c;G(z,c))来作为损失函数。但是由于互信息需要后验概率p(c|x),而该项不能直接求得,所以本文求解时采用变分的方法,通过一个辅助的Q网络,来最大化I(c;G(z,c))的下界,从而近似评估后验概率p(c|x)。网络结构如下:

 生成对抗网络(GAN)常见应用

半监督InfoGANss-InfoGAN[16]将隐变量c分解为两部分:1)例如InfoGAN中,无标签数据的语义信息(用来最大化和生成样本之间互信息的隐变量,用cus表示);2)半监督形式的隐变量css。通过最大化有标签的数据和隐变量css之间的互信息,可以引导css对类别信息y作编码,然后通过最大化生成数据和css之间的互信息,就能将类标信息y以编码的形式传递给生成器。网络结构如下:

生成对抗网络(GAN)常见应用 

2. 结合自编码器

编解码形式的网络将数据x编码成隐变量z,并通过解码成原始数据的方式有助于GAN的稳定性,因为可以学习后验概率p(z|x)来重构x,所以可以减少模式崩塌。

ALI[17]BiGAN[18]类似,都是利用GAN框架学习隐码表征。其都是学习数据x和隐码的联合分布而不像原始GAN单纯学习数据分布。判别器判断(G(z),z)(x,E(x))之间的联合对,其中G表示解码器,E表示编码器。通过同时训练GE,可以学习X->Z的映射关系并生成高质量图片,其网络结构图如下:

生成对抗网络(GAN)常见应用 

 

AGE由生成器G和编码器E组成,生成器最小化E(G(z))和先验隐码z之间的散度,而编码器则最大化E(G(z))和先验隐码z之间的散度,同时让先验隐码z和真实数据的编码E(x)尽可能匹配。其网络结构如下,其中红色的R表示重构损失。

 生成对抗网络(GAN)常见应用

[1] Pathak D, Krahenbuhl P, Donahue J, et al. Context Encoders: Feature Learning by Inpainting[J]. 2016:2536-2544.

[2] Isola P, Zhu J Y, Zhou T, et al. Image-to-Image Translation with Conditional Adversarial Networks[J]. 2016:5967-5976.

[3] Wang C, Xu C, Wang C, et al. Perceptual Adversarial Networks for Image-to-Image Transformation[J]. 2017.

[4] Zhu J Y, Park T, Isola P, et al. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks[J]. 2017.

[5] Kim T, Cha M, Kim H, et al. Learning to Discover Cross-Domain Relations with Generative Adversarial Networks[J]. 2017.

[6] Yi Z, Zhang H, Tan P, et al. DualGAN: Unsupervised Dual Learning for Image-to-Image Translation[J]. 2017:2868-2876.

[7] Benaim S, Wolf L. One-Sided Unsupervised Domain Mapping[J]. 2017.

[8] Salimans T, Goodfellow I, Zaremba W, et al. Improved Techniques for Training GANs[J]. 2016.

[9] Springenberg J T. Unsupervised and Semi-supervised Learning with Categorical Generative Adversarial Networks[J]. Computer Science, 2015.

[10] Semi-supervised learning with contextconditional generative adversarial networks

[11] Semi-supervised learning with contextconditional generative adversarial networks

[12] Li C, Xu K, Zhu J, et al. Triple Generative Adversarial Nets[J]. 2017.

[13] Mehdi Mirza and Simon Osindero. Conditional generative adversarial nets. arXiv preprint arXiv:1411.1784, 2014.

[14] Augustus Odena, Christopher Olah, and Jonathon Shlens. Conditional image synthesis with auxiliary classifier gans. arXiv preprint arXiv:1610.09585, 2016.

[15] Xi Chen, Yan Duan, Rein Houthooft, John Schulman, Ilya Sutskever, and Pieter Abbeel.Infogan: Interpretable representation learning by information maximizing enerative adversarial nets. In Advances in Neural Information Processing Systems, pages 2172–2180, 2016.

[16] Adrian Spurr, Emre Aksan, and Otmar Hilliges. Guiding infogan with semi-supervision.arXiv preprint arXiv:1707.04487, 2017.

[17] Vincent Dumoulin, Ishmael Belghazi, Ben Poole, Alex Lamb, Martin Arjovsky, Olivier Mastropietro, and Aaron Courville. Adversarially learned inference. arXiv preprint arXiv:1606.00704, 2016.

[18] Vincent Dumoulin, Ishmael Belghazi, Ben Poole, Alex Lamb, Martin Arjovsky, Olivier Mastropietro, and Aaron Courville. Adversarially learned inference. arXiv preprint arXiv:1606.00704, 2016. 

[19] Hong Y, Hwang U, Yoo J, et al. How Generative Adversarial Networks and Its Variants Work: An Overview of GAN[J]. 2017.