生成对抗网络-GAN

版权声明:本文为博主原创文章,未经允许不得转载。 https://blog.csdn.net/Koala_Tree/article/details/77774151

生成对抗网络-GAN

1. GAN基础

本质

图片生成器

这里写图片描述

组成:

  • D:判别网络;
  • G:生成网络;
  • Loss:判别是真实模型的概率:是/否真值。

数学原理

这里写图片描述

其中,z:均匀分布变量;x:某空间的数据;z->x生成某空间数据;
黑线:目标标准分布;绿线:生成数据分布;蓝线:判断函数(根据x大小判断是否真实的概率)

  • 初始状态:生成数据同真实数据差距明显,容易判别;
  • 训练过程:对是否真实判断得到的loss引导生成模型更新,差距减少;
  • 最终状态:生成数据同真实数据相似,无法识别。

对于D:maximize【D(x)+1-D(G(z))】
对于G:minimize【1-D(G(z))】
目标:

minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(x)))]

假设前提:判别模型D,生成模型G具有学习能力,能够收敛。

简单模型

G: relu+sigmoid nn;
D: maxout

优缺点

优点:

  • 不需要大量label数据,loss来源于D判定;
  • 产生大量生成数据用于训练,接近无监督学习;
  • 可以和深度神经网络结合。

缺点:

  • 数据直接生成,没有推导过程;
  • 生成器,判断器需要配合共同训练难度较大;
  • 容易出现训练失败。

可能性

  • 连接神经网络扩展;
  • 输入不仅是噪声信号,条件控制;
  • 时域信号生成。

2. 深度 GAN

DCGAN(Deep Convolutional GAN)

卷积神经网络+GAN
变化: 生成器G;判别器D(conv feat>1)

这里写图片描述

结构细节

  • 没有pooling,stride conv/deconv
  • 运用batchnorm;
  • 不要FC(全连接层);
  • 非线性激励ReLU(G),LeakyReLU(D).

总结

  • GAN同深度CNN网络结合;
  • 噪声输入有着重要作用,可以实现有意义的运算;
  • 对输入信号实际意义可以有更深入研究,定性输出有可能。

3. 条件 GAN

cGAN(conditional)

用一些信息对GAN的生成图片进行范围约束;
信息的类型:文字、图片;

这里写图片描述

训练过程输入:随机信息+约束信息特征。

文字作为约束

输入: 随机信息+约束信息特征

这里写图片描述

文字+位置作为约束

Where and what ?

这里写图片描述

某位置的文字约束-key points condition

关键点多层次参与图片生成。

这里写图片描述

图片作为约束条件

利用图片生成相关的图片。

  • 映射关系无限可能;
  • 图片分割;
  • 轮廓生成;
  • 热图生成;
  • 图片补全;
  • 高精度生成。

模型结构:
随机输入同图片结合;
G学习图片到转化图片的映射关系;
D判断生成图片和正式图片是否一致。

这里写图片描述

LcGAN(G,D)=Ex,ypdata(x,y)[logD(x,y)]+Expdata(x),zpz(z)[log(1D(x,G(x,z)))]
$$

  • G:反池化,反卷积结构(deconv)
    Unet结构。
    这里写图片描述
  • D:PatchGAN
    图片整体优化会造成生成的图片边界模糊,高频信息难以估计。
    解决方案:判别器关注在local区域。
    这里写图片描述

4. Info GAN

特点

在DCGAN中,随机参数z的值有一定实际意义,如果有text label可以学习这种约束关系,如果没有label数据,则使用infoGAN。

infoGAN可以自动学习z中部分变量的意义。

  • Z分为两部分,c和z;
  • c代表数据分布某种物理意义,z随机信号。

关系

  • DCGAN、InfoGAN没有额外数据标注;
  • DCGAN中z对生成数据控制作用不确定,需要尝试观察;
  • InfoGAN没有额外的标注,能够学到c与生成图片关系,引入Mutual Info 概念,其参与目标函数的确定,关系越紧密I越高,训练过程使得Mutual Info高,实现生成图片同c的联系。

I(X;Y)=H(X)H(X|Y)=H(Y)H(Y|X)

新的loss为:
minGmaxDVI(D,G)=V(D,G)λI(c;G(z,c))

其中,V(D,G)为旧的loss。

例如,有四个pattern,设计出4个c,希望最终每个c对应一个pattern的强度。

结果

确定c向量长度,观察各个c物理意义。
特点:

  • 无监督学习;
  • 自动学到模式;
  • 可用于生成特点图片。
    要求:

  • 训练图片的模式比较明显。

这里写图片描述

5. Wasserstein GAN

GAN存在的问题

  • 训练困难,G、D需要经过次数尝试,需要匹配好;
  • Loss无法知道能否优化,图片的质量和分布无法得到明确的体现;
  • 生成样本单一;
  • 改进方案靠暴力多次尝试。

**原因:**Loss函数选择不合适,使模型容易面临梯度小时,梯度不稳定,优化目标不定导致模型失败。

WGAN的特点

  • 无需平衡D、G的训练组合;
  • 解决collapse model的问题,保证样本的多样性;
  • 结构更改简单有效。

改进方法

充分利用神经网络拟合性能以及数值近似。

  • 判别器最后一层去掉sigmoid(使得loss更明显);
  • 生成器和判别器的loss不去log(使得loss更明显);
  • 判别器的参数更新截断;
  • 不用基于动量的优化算法。

6. 实例:图片生成器

Image conditon pix2pix

fork代码参见:https://github.com/KoalaTree/pix2pix-tensorflow

展开阅读全文

没有更多推荐了,返回首页