GAN(生成对抗网络)

G e n e r a t o r Generator Generator N e t w o r k Network Network 的区别

  • 可以输出一种分布的 N e t w o r k Network Network , 我们就叫它 G e n e r a t o r Generator Generator
  • 神经网络是根据输入 x x x 产生输出 y y y输入 x x x 根输出 y y y 是一一对应的。
  • 生成器的输入是 x x x 和一个从已知分布中采样得到的 z z z ,利用不同的 z z z ,针对同一个 x x x 生成不同的 y y y ,来达到输出是一个分布的目的
    在这里插入图片描述

为什么需要输出一个分布

  • 下面是一个游戏的例子,我们要根据之前的训练,通过当前的画面,决定下一步的操作
    在这里插入图片描述
  • 直接 n e t w o r k network network 训练得到的结果不好
    • 在转角的时候,小精灵可能会出现分裂,就是同时向左向右转
    • 因为在训练集中,在一个转角处,向左转和向右转的情况都有发生。因此模型为了既接近向左转的结果,又接近向右转的结果,采取同时向左向右转的方式。所以,小精灵出现分裂
      在这里插入图片描述
  • 我们想让输出的结果是一个分布,不同结果的发生是有概率的。也就是输出包含向左转和向右转的情况,但不会同时出现向左转和向右转
  • 最终输出我们通过 z z z 来调控 。比如 z = 1 z = 1 z=1 时向左转 , z = 0 z = 0 z=0 时向右转
    在这里插入图片描述

什么时候使用输出一个分布的模型

当我们的模型需要有创造力的时候,需要generator。也就是说,针对同一个输入可以产生不同的输出,而这些输出都是对的。

  • 针对一个相同的任务,不同的人会给出不同的答案
    • 比如下面的画画和聊天任务
      在这里插入图片描述

GAN

Unconditional generation

  • 输入只有 z z z ,没有 x x x
  • 通过输入 z z z , 产生二次元人脸图
  • 下图是一个 g e n e r a t o r generator generator , 其任务是通过输入向量,生成二次元人脸图片
    在这里插入图片描述
  • 还要有一个辨别器 D i s c r i m i n a t o r Discriminator Discriminator其任务是辨别出生成的图片和真实图片
    在这里插入图片描述
  • 拿鸟和枯叶蝶来说
    • 枯叶蝶一直在进化,想要通过伪装自己来成功欺骗鸟,从而躲过被鸟吃的命运
    • 鸟也一直在进化,想要分辨出枯叶蝶,从而吃掉
    • 这里其实对应了 G e n e r a t o r Generator Generator D i s c r i m i n a t o r Discriminator Discriminator
      在这里插入图片描述
  • G e n e r a t o r Generator Generator D i s c r i m i n a t o r Discriminator Discriminator 相互对抗,互相提升
    在这里插入图片描述

算法流程

训练一个 g e n e r a t o r generator generator 作为 G G G 和一个 d i s c r i m i n a t o r discriminator discriminator 作为 D D D

  • 首先将 G G G 固定 , 训练 D D D , 让 D D D 能够分辨 G G G 产生的图片和真实图片
    • 训练 D D D 的过程就是,先利用 G G G 生成一些图片(带有 l a b e l label label),并找一些真实图片(带有 l a b e l label label),然后将 D D D 作为 c l a s s i f i e r classifier classifier 来训练
    • 对于真实图片,产生高分。对于生成图片,产生低分
      在这里插入图片描述
  • 然后将 D D D 固定住 , 训练 G G G
    • 就是将 G G G 生成的图片送入 D D D 中,训练的目标是得到的分数越高越好
    • 可以将 G G G D D D 的网络合在一起,看作一个更大的网络。
      • 输入是向量 , 输出时分数
      • 训练 G G G 的时候,调整前面几层网络的参数
      • 训练 D D D 的时候,调整后面几层网络的参数
        在这里插入图片描述
  • 重复上述过程,反复训练 G G G D D D ,这样两者的效果都能得到提升
    在这里插入图片描述

结果

  • 可以直接合成图片
  • 可以利用已有图片,生成一些新的图片
    • 输入最左端和最右端的向量
    • 中间的向量通过插值得到
    • 可以生成从左图向右图过渡状态的图片
      在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_52852138/article/details/121533728