gan推荐算法(万字长文解读GAN从基本概念)
gan推荐算法(万字长文解读GAN从基本概念)Paired two domain data所谓图像翻译,指从一副(源域)图像到另一副(目标域)图像的转换。可以类比机器翻译,一种语言转换为另一种语言。翻译过程中会保持源域图像内容不变,但是风格或者一些其他属性变成目标域。由于 GAN 在生成样本过程成不需要显式建模任何数据分布就可以生成 real-like 的样本,所以 GAN 在图像,文本,语音等诸多领域都有广泛的应用。下表总结了 GAN 在各个方面的应用,后文会这些算法做相应介绍。3.1 图像3.1.1 图像翻译
上述模型的 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]: