前阵子学习 GAN 的过程创造现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇。
可是在深度学习,GAN 领域,其进展都因此月来打算的,觉得那两篇综述有些老了。
最近创造有一篇最新的有关 GAN 综述的 paper[1],四十余页,先容了 GAN 的各个方面,于是就学习并整理条记如下。
文中许多内容大都根据自己所学总结,有不当之处欢迎指出。
此外,本文参考了许多博客资料,已给出参考链接。
如有侵权,请私信删除。
文章目录如下:

1. GAN 的基本先容

天生对抗网络(GAN,Generative Adversarial Networks)作为一种精良的天生式模型,引爆了许多图像天生的有趣运用。
GAN 比较于其他天生式模型,有两大特点:

不依赖任何先验假设。
传统的许多方法会假设数据服从某一分布,然后利用极大似然去估计数据分布。

万字长文解读GAN从基本概念事理到实际应用

天生 real-like 样本的办法非常大略。
GAN 天生 real-like 样本的办法通过天生器 (Generator) 的前向传播,而传统方法的采样办法非常繁芜,有兴趣的同学可以参考下周志华老师的《机器学习》一书中对各种采样办法的先容。

下面,我们环绕上述两点展开先容。

1.1 GAN 的基本观点

GAN(Generative Adversarial Networks)从其名字可以看出,是一种天生式的,对抗网络。
再详细一点,便是通过对抗的办法,去学习数据分布的天生式模型。
所谓的对抗,指的是天生网络和判别网络的相互对抗。
天生网络尽可能天生逼真样本,判别网络则尽可能去判别该样本是真实样本,还是天生的假样本。
示意图如下:

隐变量 z(常日为服从高斯分布的随机噪声)通过 Generator 天生 Xfake,判别器卖力判别输入的 data 是天生的样本 Xfake还是真实样本 Xreal。
优化的目标函数如下:

对付判别器 D 来说,这是一个二分类问题,V(D,G) 为二分类问题中常见的交叉熵丢失。
对付天生器 G 来说,为了尽可能欺骗 D,以是须要最大化天生样本的判别概率 D(G(z)),即最小化

(把稳:

一项与天生器 G 无关,以是可以忽略。
)

实际演习时,天生器和判别器采纳交替演习,即先演习 D,然后演习 G,不断往来来往。
值得把稳的是,对付天生器,其最小化的是

,即最小化 V(D,G) 的最大值。
为了担保 V(D,G) 取得最大值,以是我们常日会演习迭代 k 次判别器,然后再迭代 1 次天生器(不过在实践当中创造,k 常日取 1 即可)。
当天生器 G 固定时,我们可以对 V(D,G) 求导,求出最优判别器D(x) :

把最优判别器代入上述目标函数,可以进一步求出在最优判别器下,天生器的目标函数等价于优化 pdata(x) , pg(x) 的 JS 散度 (JSD, Jenson Shannon Divergence)。

可以证明,当 G,D 二者的 capacity 足够时,模型会收敛,二者将达到纳什均衡。
此时,pdata(x) = pg(x),判别器不论是对付 pdata(x) 还是 pg(x) 中采样的样本,其预测概率均为 0.5,即天生样本与真实样本达到了难以区分的地步。

1.2 目标函数

前面我们提到了 GAN 的目标函数是最小化两个分布的 JS 散度。
实际上,衡量两个分布间隔的办法有很多种,JS 散度只是个中一种。
如果我们定义不同的间隔度量办法,就可以得到不同的目标函数。
许多对 GAN 演习稳定性的改进,比如 EBGAN,LSGAN 等都是定义了不同的分布之间间隔度量办法。

1.2.1 f-divergence

f-divergence 利用下面公式来定义两个分布之间的间隔:

上述公式中 f 为凸函数,且 f(1) = 0。
采取不同的 f 函数(Generator),可以得到不同的优化目标。
详细如下:

值得把稳的是,散度这种度量办法不具备对称性,即

不相等(严格来说,间隔度量办法必须具备对称性,以是散度不是一种间隔度量办法,不过此处不去刻意关注这一点,直接把散度也作为一种间隔度量办法,下文也是如此)。

LSGAN

上面提到,LSGAN 是 f-divergence 中

时的分外情形。
详细来说 LSGAN 的 Loss 如下:

原作中取 a = c = 1,b = 0。
LSGAN 有两大优点 [2]:

稳定演习:办理了传统 GAN 演习过程中的梯度饱和问题

改进天生质量:通过惩罚阔别判别器决策边界的天生样本来实现

对付第一点,稳定演习,可以先看一张图:

上图左边是传统 GAN 利用 sigmoid 交叉熵作为 loss 时,输入与输出的对照关系图。
上图右边是 LSGAN 利用最小二乘 loss 时,输入与输出的对照关系图。
可以看到,在左图,输入比较大的时候,梯度为 0,即交叉熵丢失的输入随意马虎涌现梯度饱和征象。
而右边的最小二乘 loss 则不然。

对付第二点,改进天生质量。
这个在原文也有详细的阐明。
详细来说:对付一些被判别器分类精确的样本,其对梯度是没有贡献的。
但是判别器分类精确的样本就一定是很靠近真实数据分布的样本吗?显然不一定。

考虑如下空想情形,一个演习良好的 GAN,真实数据分布 pdata和 pg天生数据分布 完备重合,判别器决策面穿过真实数据点,以是,反过来,我们利用样本点离决策面的远比来度量天生样本的质量,样本离决策面越近,则 GAN 演习的越好。

上图 b 中,一些离决策面比较远的点,虽然被分类精确,但是这些并不是好的天生样本。
传统 GAN 常日会将其忽略。
而对付 LSGAN,由于采取最小二乘丢失,打算决策面到样本点的间隔,如图 c,可以把离决策面比较远的点「拉」回来,也便是把离真实数据比较远的点「拉」回来。

1.2.2 Integral probality metric(IPM)

IPM 定义了一个评价函数族 f,用于度量任意两个分布之间的间隔。
在一个紧凑的空间

中,定义 p(x) 为在 x上的概率测度。
那么两个分布 pdata,pg 之间的 IPM 可以定义为如下公式:

类似于 f-divergence,不同函数 f 也可以定义出一系列不同的优化目标。
范例的有 WGAN,Fisher GAN 等。
下面简要先容一下 WGAN。

WGAN

WGAN 提出了一种全新的间隔度量办法——地球移动间隔 (EM, Earth-mover distance),也叫 Wasserstein 间隔。
关于 Wasserstein 间隔的先容可以参考:

我爱馒头:口语 Wassertein 间隔

Wasserstein 间隔详细定义如下:

表示一组联合分布,这组联合分布里的任一分布 r 的边缘分布均为 pdata(x) 和 pg(x)。

直不雅观上来说,概率分布函数(PDF)可以理解为随机变量在每一点的质量,以是 W(pdata, pg) 则表示把概率分布 pdata(x) 搬到 pg(x) 须要的最小事情量。

WGAN 也可以用最优传输理论来阐明,WGAN 的天生器等价于求解最优传输映射,判别器等价于打算 Wasserstein 间隔,即最优传输总代价 [4]。
关于 WGAN 的理论推导和解释比较繁芜,不过代码实现非常大略。
详细来说 [3]:

判别器末了一层去掉 sigmoid

天生器和判别器的 loss 不取 log

每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数 c

上述第三点,在 WGAN 的后来一篇事情 WGAN-GP 中,将梯度截断更换为了梯度惩罚。

1.2.3 f-divergence 和 IPM 比拟

f-divergence 存在两个问题:其一是随着数据空间的维度 的增加

,f-divergence 会非常难以打算。
其二是两个分布的支撑集 [3] 常日是未对齐的,这将导致散度值趋近于无穷。

IPM 则不受数据维度的影响,且同等收敛于 pdata, pg两个分布之间的间隔。
而且即便是在两个分布的支撑集不存在重合时,也不会发散。

1.2.4 赞助的目标函数

在许多 GAN 的运用中,会利用额外的 Loss 用于稳定演习或者达到其他的目的。
比如在图像翻译,图像修复,超分辨当中,天生器会加入目标图像作为监督信息。
EBGAN 则把 GAN 的判别器作为一个能量函数,在判别器中加入重构偏差。
CGAN 则利用种别标签信息作为监督信息。

1.3 其他常见天生式模型

1.3.1 自回归模型:pixelRNN 与 pixelCNN

自回归模型通过对图像数据的概率分布 p_{data}(x) 进行显式建模,并利用极大似然估计优化模型。
详细如下:

上述公式很好理解,给定

条件下,所有 p(xi) 的概率乘起来便是图像数据的分布。
如果利用 RNN 对上述依然关系建模,便是 pixelRNN。
如果利用 CNN,则是 pixelCNN。
详细如下 [5]:

pixelRNN

pixelCNN

显然,不论是对付 pixelCNN 还是 pixelRNN,由于其像素值是一个个天生的,速率会很慢。
语音领域大火的 WaveNet 便是一个范例的自回归模型。

1.3.2 VAE

PixelCNN/RNN 定义了一个易于处理的密度函数,我们可以直接优化演习数据的似然;对付变分自编码器我们将定义一个不易处理的密度函数,通过附加的隐变量 z 对密度函数进行建模。
VAE 事理图如下 [6]:

在 VAE 中,真实样本 X 通过神经网络打算出均值方差(假设隐变量服从正态分布),然后通过采样得到采样变量 Z 并进行重构。
VAE 和 GAN 均是学习了隐变量 z 到真实数据分布的映射。
但是和 GAN 不同的是:

GAN 的思路比较粗暴,利用一个判别器去度量分布转换模块(即天生器)天生分布与真实数据分布的间隔。

VAE 则没有那么直不雅观,VAE 通过约束隐变量 服从标准正态分布以及重构数据实现了分布转换映射

天生式模型比拟

自回归模型通过对概率分布显式建模来天生数据

VAE 和 GAN 均是:假设隐变量 z 服从某种分布,并学习一个映射 X = G(z),实现隐变量分布 z 与真实数据分布 pdata(x) 的转换。

GAN 利用判别器去度量映射 X = G(z) 的利害,而 VAE 通过隐变量 z 与标准正态分布的 KL 散度和重构偏差去度量。

1.4 GAN 常见的模型构造

1.4.1 DCGAN

DCGAN 提出利用 CNN 构造来稳定 GAN 的演习,并利用了以下一些 trick:

Batch Normalization

利用 Transpose convlution 进行上采样

利用 Leaky ReLu 作为激活函数

上面这些 trick 对付稳定 GAN 的演习有许多帮助,自己设计 GAN 网络时也可以酌情利用。

1.4.2 层级构造

GAN 对付高分辨率图像天生一贯存在许多问题,层级构造的 GAN 通过逐层次,分阶段天生,一步步提生图像的分辨率。
范例的利用多对 GAN 的模型有 StackGAN,GoGAN。
利用单一 GAN,分阶段天生的有 ProgressiveGAN。
StackGAN 和 ProgressiveGAN 构造如下:

1.4.3 自编码构造

经典的 GAN 构造里面,判别网络常日被当做一种用于区分真实/天生样本的概率模型。
而在自编码器构造里面,判别器(利用 AE 作为判别器)常日被当做能量函数 (Energy function)。
对付离数据流形空间比较近的样本,其能量较小,反之则大。
有了这种间隔度量办法,自然就可以利用判别器去辅导天生器的学习。

AE 作为判别器,为什么就可以当做能量函数,用于度量天生样本离数据流形空间的间隔呢?首先,先看 AE 的 loss:

AE 的 loss 是一个重构偏差。
利用 AE 做为判别器时,如果输入真实样本,其重构偏差会很小。
如果输入天生的样本,其重构偏差会很大。
由于对付天生的样本,AE 很难学习到一个图像的压缩表示(即天生的样本离数据盛行形空间很远)。
以是,VAE 的重构偏差作为 pdata和 pg之间的间隔度量是合理的。
范例的自编码器构造的 GAN 有:BEGAN, EBGAN, MAGAN 等

1.5 GAN 的演习障碍 (Obstacles)

1.5.1 理论中存在的问题

经典 GAN 的判别器有两种 loss,分别是:

利用上面第一个公式作为 loss 时:在判别器达到最优的时候,等价于最小化天生分布与真实分布之间的 JS 散度,由于随机天生分布很难与真实分布有不可忽略的重叠以及 JS 散度的突变特性,使得天生器面临梯度消逝的问题

利用上面第二个公式作为 loss 时:在最优判别器下,等价于既要最小化天生分布与真实分布直接的 KL 散度,又要最大化其 JS 散度,相互抵牾,导致梯度不稳定,而且 KL 散度的不对称性使得天生器宁肯损失多样性也不愿损失准确性,导致 collapse mode 征象 [7]。

1.5.2 实践中存在的问题

GAN 在实践中存在两个问题:

其一,GAN 提出者 Ian Goodfellow 在理论中虽然证明了 GAN 是可以达到纳什均衡的。
可是我们在实际实现中,我们是在参数空间优化,而非函数空间,这导致理论上的担保在实践中是不成立的。

其二,GAN 的优化目标是一个极小极大 (minmax) 问题,即

,也便是说,优化天生器的时候,最小化的是


可是我们是迭代优化的,要担保 V(G,D) 最大化,就须要迭代非常多次,这就导致演习韶光很长。
如果我们只迭代一次判别器,然后迭代一次天生器,不断循环迭代。
这样原来的极小极大问题,就随意马虎变成极大极小 (maxmin) 问题,可二者是不一样的,即:

如果变革为极小极大问题,那么迭代便是这样的,天生器师长西席成一些样本,然后判别器给出错误的判别结果并惩罚天生器,于是天生器调度天生的概率分布。
可是这样每每导致天生器变「

1.5.3 稳定 GAN 演习的技巧

如上所述,GAN 在理论上和实践上存在三个大问题,导致演习过程十分不稳定,且存在 mode collapse 的问题。
为了改进上述情形,可以利用以下技巧稳定演习:

Feature matching: 方法很大略,利用判别器某一层的特色更换原始 GAN Loss 中的输出。
即最小化:天生图片通过判别器的特色和真实图片通过判别器得到的特色之间的间隔。

标签平滑:GAN 演习中的标签非 0 即 1,这使得判别器预测出来的 confidence 方向于更高的值。
利用标签平滑可以缓解该问题。
详细来说,便是把标签 1 更换为 0.8~1.0 之间的随机数。

谱归一化:WGAN 和 Improve WGAN 通过施加 Lipschitz 条件来约束优化过程,谱归一化则是对判别器的每一层都施加 Lipschitz 约束,但是谱归一化比较于 Improve WGAN 打算效率要高一些。

PatchGAN:准确来说 PatchGAN 并不是用于稳定演习,但这个技能被广泛用于图像翻译当中,PatchGAN 相称于对图像的每一个小 Patch 进行判别,这样可以使得天生器天生更加锐利清晰的边缘。
详细做法是这样的:假设输入一张 256x256 的图像到判别器,输出的是一个 4x4 的 confidence map,confidence map 中每一个像素值代表当前 patch 是真实图像的置信度,即为 PatchGAN。
当前图像 patch 的大小便是感想熏染野的大小,末了将所有 Patch 的 Loss 求均匀作为终极的 Loss。

1.6 GAN mode collapse 的办理方案

1.6.1 针对目标函数的改进方法

为了避免前面提到的由于优化 maxmin 导致 mode 跳来跳去的问题,UnrolledGAN 采取修正天生器 loss 来办理。
详细而言,UnrolledGAN 在更新天生器时更新 k 次天生器,参考的 Loss 不是某一次的 loss,是判别器后面 k 次迭代的 loss。
把稳,判别器后面 k 次迭代不更新自己的参数,只打算 loss 用于更新天生器。
这种办法使得天生器考虑到了后面 k 次判别器的变革情形,避免在不同 mode 之间切换导致的模式崩溃问题。
此处务必和迭代 k 次天生器,然后迭代 1 次判别器区分开 [8]。
DRAGAN 则引入博弈论中的无后悔算法,改造其 loss 以办理 mode collapse 问题 [9]。
前文所述的 EBGAN 则是加入 VAE 的重构偏差以办理 mode collapse。

1.6.2 针对网络构造的改进方法

Multi agent diverse GAN(MAD-GAN) 采取多个天生器,一个判别器以保障样本天生的多样性。
详细构造如下:

比较于普通 GAN,多了几个天生器,且在 loss 设计的时候,加入一个正则项。
正则项利用余弦间隔惩罚三个天生器天生样本的同等性。

MRGAN 则添加了一个判别器来惩罚天生样本的 mode collapse 问题。
详细构造如下:

输入样本 x 通过一个 Encoder 编码为隐变量 E(x),然后隐变量被 Generator 重构,演习时,Loss 有三个。
DM和 R(重构偏差)用于辅导天生 real-like 的样本。
而 DD则对 E(x) 和 z 天生的样本进行判别,显然二者天生样本都是 fake samples,以是这个判别器紧张用于判断天生的样本是否具有多样性,即是否涌现 mode collapse。

1.6.3 Mini-batch Discrimination

Mini-batch discrimination 在判别器的中间层建立一个 mini-batch layer 用于打算基于 L1 间隔的样本统计量,通过建立该统计量去判别一个 batch 内某个样本与其他样本有多靠近。
这个信息可以被判别器利用到,从而甄别出哪些缺少多样性的样本。
对天生器而言,则要试图天生具有多样性的样本。

2. 关于 GAN 隐空间的理解

隐空间是数据的一种压缩表示的空间。
常日来说,我们直接在数据空间对图像进行修恰是不现实的,由于图像属性位于高维空间中的流形中。
但是在隐空间,由于每一个隐变量代表了某个详细的属性,以是这是可行的。

在这部分,我们谈判量 GAN 是如何处理隐空间及其属性的,此外还将磋商变分方法如何结合到 GAN 的框架中。

2.1 隐空间分解

GAN 的输入隐变量 z 是非构造化的,我们不知道隐变量中的每一位数分别掌握着什么属性。
因此有学者提出,将隐变量分解为一个条件变量 c 和标准输入隐变量 z。
详细包括有监督的方法和无监督的方法。

2.1.1 有监督方法

范例的有监督方法有 CGAN,ACGAN。

CGAN 将随机噪声 z 和种别标签 c 作为天生器的输入,判别器则将天生的样本/真实样本与种别标签作为输入。
以此学习标签和图片之间的关联性。

ACGAN 将随机噪声 和种别标签 作为天生器的输入,判别器则将天生的样本/真实样本输入,且回归出图片的种别标签。
以此学习标签和图片之间的关联性。
二者构造如下 (左边为 CGAN,右边为 ACGAN):

2.1.2 无监督方法

比较于有监督方法,无监督方法不该用任何标签信息。
因此,无监督方法须要对隐空间进行解耦得到故意义的特色表示。

InfoGAN 对把输入噪声分解为隐变量 z 和条件变量 c(演习时,条件变量 c 从均匀分布采样而来。
),二者被一起送入天生器。
在演习过程中通过最大化 c 和 G(z, c) 的互信息 I(c,G(z,c)) 以实现变量解耦(

的互信息表示 c 里面关于 G(z,c) 的信息有多少,如果最大化互信息

,也便是最大化天生结果和条件变量 c 的关联性)。
模型构造和 CGAN 基本同等,除了 Loss 多了一项最大互信息。
详细如下 [10]:

从上面剖析可以看出,InfoGAN 只是实现了信息的解耦,至于条件变量 c 每一个值的详细含义是什么,我们无法掌握。
于是 ss-InfoGAN 涌现了,ss-InfoGAN 采取半监督学习方法,把条件变量 c 分成两部分

,css则利用标签像 CGAN 一样学习,则像 InfoGAN 一样学习。

2.2 GAN 与 VAE 的结合

GAN 比较于 VAE 可以天生清晰的图像,但是却随意马虎涌现 mode collapse 问题。
VAE 由于鼓励重构所有样本,以是不会涌现 mode collapse 问题。

一个范例结合二者的事情是 VAEGAN,构造很像前文提及的 MRGAN,详细如下:

上述模型的 Loss 包括三个部分,分别是判别器某一层特色的重构偏差,VAE 的 Loss,GAN 的 Loss。

2.3 GAN 模型总结

前面两节先容了各种各样的 GAN 模型,这些模型大都是环绕着 GAN 的两大常见问题:模式崩溃,以及演习崩溃来设计的。
下表总结了这些模型,读者可以根据下表回顾对照:

3. GAN 的运用

由于 GAN 在天生样本过程成不须要显式建模任何数据分布就可以天生 real-like 的样本,以是 GAN 在图像,文本,语音等诸多领域都有广泛的运用。
下表总结了 GAN 在各个方面的运用,后文会这些算法做相应先容。

3.1 图像

3.1.1 图像翻译

所谓图像翻译,指从一副(源域)图像到另一副(目标域)图像的转换。
可以类比机器翻译,一种措辞转换为另一种措辞。
翻译过程中会保持源域图像内容不变,但是风格或者一些其他属性变成目标域。

Paired two domain data

成对图像翻译范例的例子便是 pix2pix,pix2pix 利用成对数据演习了一个条件 GAN,Loss 包括 GAN 的 loss 和逐像素差 loss。
而 PAN 则利用特色图上的逐像素差作为感知丢失替代图片上的逐像素差,以天生人眼感知上更加靠近源域的图像。

Unpaired two domain data

对付无成对演习数据的图像翻译问题,一个范例的例子是 CycleGAN。
CycleGAN 利用两对 GAN,将源域数据通过一个 GAN 网络转换到目标域之后,再利用另一个 GAN 网络将目标域数据转换回源域,转换回来的数据和源域数据恰好是成对的,构成监督信息。

3.1.2 超分辨

SRGAN 中利用 GAN 和感知丢失天生细节丰富的图像。
感知丢失重点关注中间特色层的偏差,而不是输出结果的逐像素偏差。
避免了天生的高分辨图像缺少纹理细节信息问题。

3.1.3 目标检测

得益于 GAN 在超分辨中的运用,针对小目标检测问题,可以情由 GAN 天生小目标的高分辨率图像从而提高目标检测精度

3.1.4 图像联合分布学习

大部分 GAN 都是学习单一域的数据分布,CoupledGAN 则提出一种部分权重共享的网络,利用无监督方法来学习多个域图像的联合分布。
详细构造如下 [11]:

如上图所示,CoupledGAN 利用两个 GAN 网络。
天生器前半部分权重共享,目的在于编码两个域高层的,共有信息,后半部分没有进行共享,则是为了各自编码各自域的数据。
判别器前半部分不共享,后半部分用于提取高层特色共享二者权重。
对付演习好的网络,输入一个随机噪声,输出两张不同域的图片。

值得把稳的是,上述模型学习的是联合分布 P(x,y),如果利用两个单独的 GAN 分别取演习,那么学习到的便是边际分布 P(x) 和 P(y)。
常日情形下,


3.1.5 视频天生

常日来说,视频有相对静止的背景和运动的前景组成。
VideoGAN 利用一个两阶段的天生器,3D CNN 天生器天生运动前景,2D CNN 天生器天生静止的背景。
Pose GAN 则利用 VAE 和 GAN 天生视频,首先,VAE 结合当前帧的姿态和过去的姿态特色预测下一帧的运动信息,然后 3D CNN 利用运动信息天生后续视频帧。
Motion and Content GAN(MoCoGAN) 则提出在隐空间对运动部分和内容部分进行分离,利用 RNN 去建模运动部分。

3.2 序列天生

比较于 GAN 在图像领域的运用,GAN 在文本,语音领域的运用要少很多。
紧张缘故原由有两个:

GAN 在优化的时候利用 BP 算法,对付文本,语音这种离散数据,GAN 没法直接跳到目标值,只能根据梯度一步步靠近。

对付序列天生问题,每天生一个单词,我们就须要判断这个序列是否合理,可是 GAN 里面的判别器是没法做到的。
除非我们针对每一个 step 都设置一个判别器,这显然不合理。

为理解决上述问题,强化学习中的策略梯度低落(Policy gredient descent)被引入到 GAN 中的序列天生问题。

3.2.1 音乐天生

RNN-GAN 利用 LSTM 作为天生器和判别器,直接天生全体音频序列。
然而,正如上面提到的,音乐当做包括歌词和音符,对付这种离散数据天生问题直策应用 GAN 存在很多问题,特殊是天生的数据缺少局部同等性。

比较之下,SeqGAN 把天生器的输出作为一个智能体 (agent) 的策略,而判别器的输出作为褒奖 (reward),利用策略梯度低落来演习模型。
ORGAN 则在 SeqGAN 的根本上,针对详细的目标设定了一个特定目标函数。

3.2.2 措辞和语音

VAW-GAN(Variational autoencoding Wasserstein GAN) 结合 VAE 和 WGAN 实现了一个语音转换系统。
编码器编码语音旗子暗记的内容,解码器则用于重修音色。
由于 VAE 随意马虎导致天生结果过于平滑,以是此处利用 WGAN 来天生更加清晰的语音旗子暗记。

3.3 半监督学习

图像数据的标签得到须要大量的人工标注,这个过程费时费力。

3.3.1 利用判别器进行半监督学习

基于 GAN 的半监督学习方法 [12] 提出了一种利用无标签数据的方法。
实现方法和原始 GAN 基本一样,详细框架如下 [13]:

比较于原始 GAN,紧张差异在于判别器输出一个 K+1 的种别信息(天生的样本为第 K+1 类)。
对付判别器,其 Loss 包括两部分,一个是监督学习丢失(只须要判断样本真假),另一个是无监督学习丢失(判断样本种别)。
天生器则只须要只管即便天生逼真的样本即可。
演习完成后,判别器就可以作为一个分类模型去分类。

从直不雅观上来看,天生的样本紧张在于赞助分类器学会区分真实的数据空间在哪里。

3.2.2 利用赞助分类器的半监督学习

上面提及的利用判别器进行半监督学习的模型存在一个问题。
判别器既要学习区分正负样本,也要学习预测标签。
二者目标不一致,随意马虎导致二者都达不到最优。
一个直不雅观的想法就把预测标签和区分正负样本分开。
Triple-GAN 便是这么做的 [14]:

分别表示天生的数据,有标签的数据,无标签的数据。
CE 表示交叉熵丢失。

3.4 域适应

域适应是一个迁移学习里面的观点。
大略说来,我们定义源数据域分布为 Ds(x,y),目标数据域分布为DT(x,y)。
对付源域数据,我们有许多标签,但是对付目标域的数据没有标签。
我们希望能通过源域的有标签数据和目标域的无标签数据学习一个模型,在目标域泛化的很好。
迁移学习的「迁移」二字指的是源域数据分布向目标域数据分布的迁移。

GAN 用于迁移学习时,核心思想在于利用天生器把源域数据特色转换成目标域数据特色,而判别器则尽可能区分真实数据和天生数据特色。
以下是两个把 GAN 运用于迁移学习的例子 DANN 和 ARDA:

以上图左边的 DANN 为例,Is,It分别代表源域数据,目标域的数据,ys表示源域数据的标签。
Fs,Ft 表示源域特色,目标域特色。
DANN 中,天生器用于提取特色,并使得提取的特色难以被判别器区分是源域数据特色还是目标域数据特色。

在行人重识别领域,有许多基于 CycleGAN 的迁移学习以进行数据增广的运用。
行人重识别问题一个难点在于不同摄像头下拍摄的人物环境,角度差别非常大,导致存在较大的 Domain gap。
因此,可以考虑利用 GAN 来产生不同摄像头下的数据进行数据增广。
[15] 中提出了一个 cycleGAN 用于数据增广的方法。
详细模型构造如下:

对付每一对摄像头都演习一个 cycleGAN,这样就可以实现将一个摄像头下的数据转换成另一个摄像头下的数据,但是内容(人物)保持不变。

3.5 其他运用

GAN 的变体繁多,运用非常广泛,在一写非机器学习领域也有运用,以下是一些例子。

3.5.1 医学图像分割

[16] 提出了一种 segmentor-critic 构造用于分割医学图像。
segmentor 类似于 GAN 中的天生器用于天生分割图像,critic 则最大化天生的分割图像和 ground truth 之间的间隔。
此外,DI2IN 利用 GAN 分割 3D CT 图像,SCAN 利用 GAN 用于分割 X 射线图像。

3.5.2 图片隐写

隐写指的是把秘密信息隐蔽到非秘容器,比如图片中。
隐写剖析器则用于判别容器是否含有秘密信息。
一些研究考试测验利用 GAN 的天生器天生带有隐写信息的图片,判别器则有两个,一个用于判别图片是否是真实图片,另一个则判别图片是否具有秘密信息 [17]。

3.6.3 连续学习

连续学习目的在于办理多个任务,且在学习过程中不断积累新知识。
连续学习中存在一个突出的问题便是「知识遗忘」。
[18] 中利用 GAN 的天生器作为一个 scholars model,天生器不断利用以往知识进行演习,solver 则给出答案,以此避免「知识遗忘」问题。

4. 谈论

在第一,二部分我们谈论了 GAN 及其变体,第三部分谈论了 GAN 的运用。
下表总结了比较有名的一些 GAN 的模型构造及其施加的额外约束。

前面都是对付 GAN 的微不雅观层面的磋商。
接下来,我们会站在一个宏不雅观的视角来谈论 GAN。

4.1 GAN 的评价

GAN 的评价方法多种多样,现有的 example-based(顾名思义,基于样本层面做评价)方法,均是对天生样本与真实样本提取特色,然后在特色空间做间隔度量。
详细框架如下:

关于本小节的符号对照关系如下:

Pg:天生数据分布

Pr:表示真实数据分布

E:数学期望

x:输入样本

:表示 x 为天生样本的采样

:表示 x 为真实样本的采样。

y:样本标签

M:分类网络,常日选择 Inception network

下面分别对常见的评价指标进行逐一先容:

4.1.1 Inception Score

对付一个在 ImageNet 演习良好的 GAN,其天生的样本丢给 Inception 网络进行测试的时候,得到的判别概率该当具有如下特性:

对付同一个类别的图片,其输出的概率分布该当趋向于一个脉冲分布。
可以担保天生样本的准确性。

对付所有种别,其输出的概率分布该当趋向于一个均匀分布,这样才不会涌现 mode collapsing 等,可以担保天生样本的多样性。

因此,可以设计如下指标:

根据前面剖析,如果是一个演习良好的 GAN,

趋近于脉冲分布,

趋近于均匀分布。
二者 KL 散度会很大。
Inception Score 自然就高。
实际实验表明,Inception Score 和人的主不雅观判别趋向同等。
IS 的打算没有用到真实数据,详细值取决于模型 M 的选择。

特点:可以一定程度上衡量天生样本的多样性和准确性,但是无法检测过拟合。
Mode Score 也是如此。
不推举在和 ImageNet 数据集差别比较大的数据上利用。

4.1.2 Mode Score

Mode Score 作为 Inception Score 的改进版本,添加了关于天生样本和真实样本预测的概率分布相似性度量一项。
详细公式如下:

4.1.3 Kernel MMD (Maximum Mean Discrepancy)

打算公式如下:

对付 Kernel MMD 值的打算,首先须要选择一个核函数 k,这个核函数把样本映射到再生希尔伯特空间 (Reproducing Kernel Hilbert Space, RKHS),RKHS 比较于欧几里得空间有许多优点,对付函数内积的打算是完备的。
将上述公式展开即可得到下面的打算公式:

MMD 值越小,两个分布越靠近。

特点:可以一定程度上衡量模型天生图像的利害性,打算代价小。
推举利用。

4.1.4 Wasserstein distance

Wasserstein distance 在最优传输问题中常日也叫做推土机间隔。
这个间隔的先容在 WGAN 中有详细谈论。
公式如下:

Wasserstein distance 可以衡量两个分布之间的相似性。
间隔越小,分布越相似。

特点:如果特色空间选择得当,会有一定的效果。
但是打算繁芜度为 O(n^3) 太高

4.1.5 Fréchet Inception Distance (FID)

FID 间隔打算真实样本,天生样本在特色空间之间的间隔。
首先利用 Inception 网络来提取特色,然后利用高斯模型对特色空间进行建模。
根据高斯模型的均值和协方差来进行间隔打算。
详细公式如下:

分别代表协方差和均值。

特点:只管只打算了特色空间的前两阶矩,但是鲁棒,且打算高效。

4.1.6 1-Nearest Neighbor classifier

利用留一法,结合 1-NN 分类器(别的也行)打算真实图片,天生图像的精度。
如果二者靠近,则精度靠近 50%,否则靠近 0%。
对付 GAN 的评价问题,作者分别用正样本的分类精度,天生样本的分类精度去衡量天生样本的真实性,多样性。

对付真实样本 xr,进行 1-NN 分类的时候,如果天生的样本越真实。
则真实样本空间 R 将被天生的样本 xg包围。
那么 xr的精度会很低。

对付天生的样本 xg,进行 1-NN 分类的时候,如果天生的样本多样性不敷。
由于天生的样本聚在几个 mode,则 xg很随意马虎就和 xr 区分,导致精度会很高。

特点:空想的度量指标,且可以检测过拟合。

4.1.7 其他评价方法

AIS,KDE 方法也可以用于评价 GAN,但这些方法不是 model agnostic metrics。
也便是说,这些评价指标的打算无法只利用:天生的样本,真实样本来打算。

4.1.8 总结

实际实验创造,MMD 和 1-NN two-sample test 是最为得当的评价指标,这两个指标可以较好的区分:真实样本和天生的样本, mode collapsing。
且打算高效。

总体说来,GAN 的学习是一个无监督学习过程,以是很难找到一个比较客不雅观的,可量化的评估指标。
有许多指标在数值上虽然高,但是天生效果却未必好。
总之,GAN 的评价目前依然是一个开放性的问题。

4.2 GAN 与强化学习的关系

强化学习的目标是对付一个智能体,给定状态 s,去选择一个最佳的行为 a(action)。
常日的可以定义一个代价函数 Q(s,a) 来衡量,对付状态 s,采纳行动 a 的回报是 Q(s,a),显然,我们希望最大化这个回报值。
对付很多繁芜的问题,我们是很难定义这个代价函数 Q(s,a) 的,就像我们很难定义 GAN 天生的图片到底有多好一样。

说到这里,大家可能反应过来了。
GAN 天生的图片好不好,我确实找不到一个得当的指标,那我学习一个判别器去判断一下天生图片和真实图片的间隔不就好了吗。
强化学习里面的代价函数 Q(s,a) 难以定义,那直接用个神经网络去学习它就好了。
范例的模型有 InverseRL,GAIL 等等

4.3 GAN 的优缺陷

4.3.1 优点

GAN 的优点在开头已有所先容。
这里再总结一下:

GAN 可以并行天生数据。
比较于 PixelCNN,PixelRNN 这些模型,GAN 天生非常快,由于 GAN 利用 Generator 替代了采样的过程

GAN 不须要通过引入下界来近似似然。
VAE 由于优化困难,引入了变分下界来优化似然。
但是 VAE 对付先验和后验分布做了假设,使得 VAE 很难逼近其变分下界。

从实践来看,GAN 天生的结过要比 VAE 更清晰的多。

4.3.2 缺陷

GAN 的缺陷在前文也有详细谈论,紧张问题在于:

演习不稳定,随意马虎崩溃。
这个问题有学者提出了许多办理方案,比如 WGAN,LSGAN 等

模式崩溃。
只管有很多干系的研究,但是由于图像数据的高维度特性,这个问题依然还没完备办理。

4.4 未来的研究方向

GAN 的演习崩溃,模式崩溃问题等依然有待研究改进。

Deep learning 只管很强大,但目前仍有许多领域无法征服,期待 GAN 在此根本上会有一些作为

有同学希望给出 PDF,这里转成了 PDF 放到了 github,须要的同学自行下载:

Morde-kaiser/LearningNotesgithub.com

[1]: Hong, Yongjun, et al. \"大众How Generative Adversarial Networks and its variants Work: An Overview of GAN.\"大众

[2] https://blog.csdn.net/victoriaw/article/details/60755698

[3] https://zhuanlan.zhihu.com/p/25071913

[4] https://mp.weixin.qq.com/s/gv-cpK161oyXinUyh05KXA

[5] https://blog.csdn.net/poulang5786/article/details/80766498

[6] https://spaces.ac.cn/archives/5253

[7] https://www.jianshu.com/p/42c42e13d09b

[8] https://medium.com/@jonathan_hui/gan-unrolled-gan-how-to-reduce-mode-collapse-af5f2f7b51cd

[9] https://medium.com/@jonathan_hui/gan-dragan-5ba50eafcdf2

[10] https://medium.com/@jonathan_hui/gan-cgan-infogan-using-labels-to-improve-gan-8ba4de5f9c3d

[11] https://blog.csdn.net/carrierlxksuper/article/details/60479883

[12]: Salimans, Tim, et al. \"大众Improved techniques for training gans.\公众 Advances in neural information processing systems. 2016.

[13] https://blog.csdn.net/qq_25737169/article/details/78532719

[14] https://medium.com/@hitoshinakanishi/reading-note-triple-generative-adversarial-nets-fc3775e52b1e1

[15]: Zheng Z , Zheng L , Yang Y . Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in VitroC// 2017 IEEE International Conference on Computer Vision (ICCV). IEEE Computer Society, 2017.

[16]: Yuan Xue, Tao Xu, Han Zhang, Rodney Long, and Xiaolei Huang. Segan: Adversar- ial network with multi-scale l_1 loss for medical image segmentation. arXiv preprint arXiv:1706.01805, 2017.

[17]: Denis Volkhonskiy, Ivan Nazarov, Boris Borisenko, and Evgeny Burnaev. Steganographicgenerative adversarial networks. arXiv preprint arXiv:1703.05502, 2017.

[18]: Shin, Hanul, et al. \"大众Continual learning with deep generative replay.\公众 Advances in Neural Information Processing Systems. 2017.