【DL】6 GAN入门1——基本思想(Generator、Discriminator)、条件生成、无监督生成(直接转换、投射到公共空间)

1. Introduction of Generative Adversarial Network (GAN)

在无监督学习方面有哪些最新的和潜在的突破?

在这里插入图片描述
在深度学习方面,最近有哪些潜在的突破?

在这里插入图片描述
各种各样的GAN,GAN的种类实在太多了,英文字母太少了,以至于出现了α-GAN

会话索引页上的关键字搜索,因此包含会话名称,标题中包含关键词的论文数量,可见GAN成为一项非常重要的技术

在这里插入图片描述

1.1 GAN的基本思想

希望机器生成(Generation)东西,图像生成:

在这里插入图片描述
句子生成:
在这里插入图片描述
似乎看起来没有什么用,但是我们将控制后面要生成的内容→ 条件生成

在这里插入图片描述
具体的例子,改变某个维度的数值,输出就会发生改变:

在这里插入图片描述
训练的时候会同时训练一个Discriminator,价值越大代表真,价值越小代表假:
在这里插入图片描述
在这里插入图片描述
Generator和Discriminator的关系就像是猎物和狩猎者一样:
在这里插入图片描述
他们像天敌,有对抗的意思,Generator就像假钞,Discriminator就想警察,这就是 "对抗性(adversarial) "一词的由来,你可以用不同的方式解释这个过程…

在这里插入图片描述
一个和平的比喻如下:
在这里插入图片描述
可以发现有两个问题,Generator为什么不自己学,Discirminator为什么不自己做?

Generator v.s. Discriminator——写作敌人,念做朋友

算法

  • 初始化生成器和鉴别器
  • 在每次训练迭代中:
    1. 固定生成器G,并更新鉴别器D
      在这里插入图片描述
      鉴别器学习将高分分配给真实对象,将低分分配给生成对象
    2. 固定鉴别器D,并更新生成器G,希望生成器学会 "欺骗"辨别器
      在这里插入图片描述

整个演算法如下:
在这里插入图片描述
动漫面孔生成,训练数据集来源,100次更新之后:

在这里插入图片描述
1000次更新之后:
在这里插入图片描述
2000次之后:
在这里插入图片描述
5000次更新结果:
在这里插入图片描述
10000更新:
在这里插入图片描述
20000更新:
在这里插入图片描述
50000更新:
在这里插入图片描述
实际上可以做得更好:
在这里插入图片描述
GAN也可以用在三维人脸上,而且可以产生没有看过的面孔,只需要看过很多真实的面孔:

在这里插入图片描述

1.2 GAN作为结构化学习

Structured Learning

机器学习就是要找到一个函数f, f : X → Y f:X→Y f:XY
回归:输出一个标量
分类:输出一个 “类” (one-hot vector,例如100——Class1、010——Class2、001——Class3)
结构化学习/预测:输出一个序列、一个矩阵、一个图形、一棵树…
输出由具有依赖性的组件组成

输出是序列:
在这里插入图片描述
输出是矩阵:
在这里插入图片描述
为什么结构化学习具有挑战性?

  • 一次性/零次性学习:
    • 在分类中,每个类都有一些例子
    • 在结构化学习中,
      • 如果你把每一个可能的输出看作是一个 “类”…
      • 由于输出空间巨大,大多数 "类 "没有任何训练数据,比如机器翻译中,测试集里的句子在训练时一次都没有见到过
      • 机器必须在测试过程中创造新的东西
      • 需要更多的智能
  • 机器要学会做规划
    * 机器生成的对象是逐个组件的,但它心中应该有一个全局
    * 因为输出组件有依赖性,所以应该全局考虑
    在这里插入图片描述

结构化学习法

  • Bottom Up:学习在组件级生成对象(Generator)
  • Top Down:评价整个对象,找到最好的一个(Discriminator)

把以上两种方法结合起来就是GAN

1.3 Generator可以自己学习吗?

在这里插入图片描述
在这里插入图片描述
Auto-encoder

在这里插入图片描述
其实NN Decoder就是Generator:

在这里插入图片描述
一个真实的例子:
在这里插入图片描述
在这里插入图片描述
Auto-encoder有什么问题?
在这里插入图片描述
Variational Auto-encoder(VAE)

在这里插入图片描述
Auto-encoder到底少了什么?
通常计算两张图片是否相似,计算两张图片的像素的位置,希望越小越好

在这里插入图片描述
如果生成器能真正复制目标图像就可以了,但是如果生成器犯了一些错误怎么办…有些错误是严重的,而有些则是好的

在这里插入图片描述
所以不能单纯的让输出和目标越像越好

输出层的每个神经都对应一个像素
在这里插入图片描述
各部分之间的关系至关重要,虽然高度相关,但不能相互影响,这需要深层次的结构来把握各部分之间的关系

(Variational) Auto-encoder,Generator产生的是蓝色的点,绿色的是目标:

在这里插入图片描述

1.4 鉴别器能生成吗?

Discriminator可能有不同的名字——评价函数、电位函数、能量函数…鉴别器是一个函数D(网络,可深层), D : X → R D:X→R DXR

  • 输入x:对象x(如图像)
  • 输出D(x):标量,表示对象x的 "好 "程度
    我们可以使用判别器来生成对象吗?- 可以

通过自上而下的评价,更容易抓住各部分之间的关系

在这里插入图片描述
假设我们已经有一个很好的判别器D(x)…

在这里插入图片描述
如何训练?
我有一些真实的图像

在这里插入图片描述
鉴别器只学习输出 “1”(实数)

Discriminator训练需要一些反面例子,反面例子很关键

在这里插入图片描述
如何生成现实的负面例子?

一般算法

  • 给定一组正例,随机生成一组负例
  • 在每次迭代中
    • 学习一个能分辨正例和反例的判别器D
    • 通过判别器D生成负例

在这里插入图片描述

在实际工作中,除了实际的例子,你不能减少所有的x
在这里插入图片描述
和Graphical Model有关的技术:
在这里插入图片描述
Generator v.s. Discriminator

Generator

  • 优点
    • 即使是深度模型,也很容易生成
  • 缺点
    • 模仿外观
    • 很难学习成分之间的相关性

Discriminator

  • 优点
    • 考虑到大局
  • 缺点
    • 生成并不总是可行的
      • 特别是当你的模型是深
    • 如何进行负向采样?

GAN的好处

  • 从Discriminator的角度看
    • 使用生成器生成阴性样品
      在这里插入图片描述
  • 从Generator的角度来看
    • 依然逐个组件生成对象
    • 但它是从具有全球视野的辨析师那里学到的。

在这里插入图片描述

比较一下GAN和VAE的差别:
在这里插入图片描述
VAE很稳,但比较可以产生最好的结果,VAE比GAN还是差一点

1.5 一点理论

Generator
在这里插入图片描述
Discriminator
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. Conditional Generation by GAN

Text-to-Image

  • 传统的监督方式,其存在问题:产生的图片是多张图片的平均

在这里插入图片描述

之前GAN中生成器将学会生成逼真的图像…但完全忽略了输入条件 ×

在这里插入图片描述
所以Discriminator需要同时看两个输入,有条件的GAN[Scott Reed, et al, ICML, 2016]:

在这里插入图片描述

演算法:
在这里插入图片描述
有条件的GAN——判别器,第二个网络理论上合理一些:

在这里插入图片描述
在这里插入图片描述
Stack GAN

先产生小张的图,再产生大的图

Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang, Xiaogang Wang, Xiaolei Huang, Dimitris Metaxas, “StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks”, ICCV, 2017

在这里插入图片描述

Image-to-image

在这里插入图片描述
传统的监督方式:

在这里插入图片描述
它之所以模糊,是因为它是几幅图像的平均值

在这里插入图片描述
Patch GAN ,每次只让Discriminator只检查一个区域:

语音增强(Speech Enhancement)

在这里插入图片描述
有条件的GAN
在这里插入图片描述
视频生成
在这里插入图片描述

3. 无监督条件生成

在这里插入图片描述

在没有配对数据的情况下,将一个对象从一个域转换到另一个域(如风格转换)
在这里插入图片描述
所以只有两堆Data,能不能进行转换来生成

在这里插入图片描述

3.1 直接转换

在这里插入图片描述
通过学习,Discriminator能够分辨产生的是Domain X还是Domain Y,所以接下来Generator需要要想办法骗过Discriminator,但这会有一个问题,即 G X → Y G_{X→Y} GXY只要总是产生同一张Domain Y的图片就行了,即使这和一开始的Domain X的图片毫无关系:
在这里插入图片描述

  • 一个可能的做法是直接无视这个问题,这个问题可以通过网络设计来避免(把Generator设计的比较浅),更简单的生成器使输入和输出的关系更加紧密[Tomer Galanti, et al. ICLR, 2018]

  • 拿训练好的Network(例如VGG),希望得到的两个向量不会差太多 [Yaniv Taigman, et al., ICLR, 2017]
    在这里插入图片描述

  • Cycle GAN [Jun-Yan Zhu, et al., ICCV, 2017]

在这里插入图片描述
也可以做成双向的:
在这里插入图片描述
有人利用Cycle GAN把头发颜色转成银色头发

在这里插入图片描述
在这里插入图片描述
Cycle 一致性(Consistency)的问题,CycleGAN: 隐写术大师 [Casey Chu, et al., NIPS workshop, 2017] :
在这里插入图片描述
在这里插入图片描述
StarGAN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 投射到公共空间

目标

在这里插入图片描述
如何训练?
在这里插入图片描述
也可以加上Discriminator一起训练,因为我们分别训练两个自动编码器…具有相同属性的图像可能不会投射到潜伏空间的同一位置,这样会产生截然不同的图片:

在这里插入图片描述
如何解决这个问题?
在这里插入图片描述
共享编码器(最后几层)和解码器的参数,这样的技术被用在:

  • Couple GAN[Ming-Yu Liu, et al., NIPS, 2016]
  • UNIT[Ming-Yu Liu, et al., NIPS, 2017]

最极端的例子,同一个Encoder权值完全一样,只是给不同的Flag,让他们知道现在是哪个Domain

其它的方法:领域判别器迫使 E N X EN_X ENX E N Y EN_Y ENY的输出具有相同的分布,现在可以期待不同的维度有不同的含义 [Guillaume Lample, et al., NIPS, 2017]

在这里插入图片描述
Cycle Consistency,用在ComboGAN[Asha Anoosheh, et al., arXiv, 017],和Cycle GAN的训练差不多:

在这里插入图片描述

Semantic Consistency,用在DTN [Yaniv Taigman, et al., ICLR, 2017] and XGAN [Amélie Royer, et al., arXiv, 2017]
在这里插入图片描述
世界二次元化,这不是cycle GAN, Disco GAN

在这里插入图片描述
也可以应用在语音转换

在这里插入图片描述
在这里插入图片描述

总结

  1. 简单了解生成对抗网络基本思想,Generator用来生成,Discriminator用来打分,GAN其实是一种结构化学习
    • Generator也可以自己打分,这有点像Auto-encoder的概念,但是不能单纯的让输出和目标越像越好,需要把握各部分之间的关系
    • Discriminator也可以自己生成,但实际中很难训练,很难穷举所有可能的负面的情况
      所以将二者结合起来的GAN很好,Discriminator很容易得到负面例子,Generator的打分也很容易考虑全局,理论部分没有讲到
  2. 条件生成,数据成对的,这个比较好懂,就是在之前的Discriminator加上了一个条件的输入,以及讲到Stack GAN、Patch GAN…
  3. 无监督生成,这个应该就是实际中应用较多的
    • 直接转换可以是不管毫无关系、拿训练好的Network使产生的向量尽可能近,但是重点还是Cycle GAN和Star GAN,其中Cycle GAN有一致性的问题
    • 投射到公共空间,为了解决具有相同属性的图像可能不会投射到潜伏空间的同一位置的问题,训练的方式有很多:共享编码器参数、Domain判别器、Cycle Consistency、Semantic Consistency…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值