gan推荐算法(万字长文解读GAN从基本概念)
gan推荐算法(万字长文解读GAN从基本概念)对于每一对摄像头都训练一个 cycleGAN,这样就可以实现将一个摄像头下的数据转换成另一个摄像头下的数据,但是内容(人物)保持不变。以上图左边的 DANN 为例,Is,It分别代表源域数据,目标域的数据,ys表示源域数据的标签。Fs,Ft 表示源域特征,目标域特征。DANN 中,生成器用于提取特征,并使得提取的特征难以被判别器区分是源域数据特征还是目标域数据特征。在行人重识别领域,有许多基于 CycleGAN 的迁移学习以进行数据增广的应用。行人重识别问题一个难点在于不同摄像头下拍摄的人物环境,角度差别非常大,导致存在较大的 Domain gap。因此,可以考虑使用 GAN 来产生不同摄像头下的数据进行数据增广。[15] 中提出了一个 cycleGAN 用于数据增广的方法。具体模型结构如下:
分别表示生成的数据,有标签的数据,无标签的数据。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.