Generative Adversarial Networks

Metrics

From complex distribution to simple distribution

  • 生成模型的核心:给定随机噪声,生成想要的结果形式 e.g. text、image

  • 假设随机变量X服从一个非常复杂的无法显示表示的分布Q,我们该如何从Q中生成数据?

  • 假设我们已知Q的累计概率密度函数F(x),F(x)有如下性质:

image.png

  • 假设我们可以算出F(x)的逆函数F(x)^(-1),则可通过下面的算法采样Q:
    1. 从均匀分布中采样Z
    2. X = F(Z)^(-1)服从Q

image.png

  • 代入X=F(Z)^(-1)后,X的随机性变为Z的随机性。再对等式两侧同时作用F可得𝑃(𝑍 < 𝐹(𝑡)) = 𝐹(𝑡)

  • 从而如果Q的反函数可求,可利用均匀分布采样出复杂分布Q

  • 问题:Q未知,F(x) 和 F(x) 的反函数都不可求,因而需要神经网络来解决

  • VAE问题:VAE较浅,用小网络做image generation任务时,image真实性和质量较差

  • 解决方法:可以使用GAN来实现从简单噪声中采样,经过复杂的函数变换生成image

image.png

GAN is a kind of implicit generative model

  • 生成图像的模型可以分为两类:

    1. 显式模型:
      1. 已知模型参数
      2. 给定任何数据,都可以算出其出现的概率,可以计算出数据集出现的概率
      3. 可以使用MLE进行优化
      4. e.g. AR model
    2. 隐式模型:
      1. 已知模型参数
      2. 对于每个样本,无法计算出概率密度
      3. 无法通过MLE优化,需要其他的loss
      4. e.g. VAE、GAN
  • 隐式模型问题:希望关心模型生成结果的好坏,那么该如何估计生成数据与真实数据之间的差异?

Difference metrics

  • 给定两个点A、B,可以计算两个点间的欧氏距离:𝑑 =||𝑥𝐴 −𝑥𝐵||2

  • 给定两个集合SA、SB,一种简单的办法是可以计算两个集合这种距离最近的点

image.png

  • 问题:两个集合部分重合的时候,这种距离不再适用

  • 解决方法:可以计算集合A、B中的点到集合B、A最近距离之和

image.png

Difference between two distributions

  • 可以使用f-divergence来评估两个分布的距离

  • 将 𝑃(𝑥) 表示为一个分布(其密度为 𝑝(𝑥))、𝑄(𝑥) 作为另一种分布(密度为 𝑞(𝑥))

  • 函数f:[0, +∞] -> [-∞, +∞]满足性质:

    1. 凸函数
    2. 非负函数
    3. f(1) = 0
    4. 有限
  • 则f-divergence定义为:

image.png

  • f-divergence不是严格意义上的距离:不满足三角不等式和对称性

  • f-divergence是非负的,证明:

image.png

  • 函数f需要预先定义好

KL divergence

image.png

total variation distance

  • 全变差距离:对差的绝对值进行积分

image.png

Jensen-Shannon(JS) divergence

image.png

  • f-divergence作用:衡量生成数据和真实数据分布的差异有多大,从而降低这个差异优化模型,从而生成更真实的image

GAN

  • 学习生成模型(最小化)Jensen-Shannon-divergence

image.png

  • P∗是gt,希望逼近;Pθ是模型生成的数据,希望minimize P∗和Pθ的差别

  • JS散度希望尽可能的小:

image.png

  • 前者是真实数据的期望,后者是生成数据的期望,二者形式接近但是关心的期望不同

  • 问题:难以计算P∗(x)和Pθ(x)。前者无法计算,后者经过了复杂的神经网络,难以估计

  • 解决方法:可以从二者的物理意义入手,用其他方法做估计

image.png

  • 观察到二者均属于[0, 1],且分母相同,相加为1

image.png

  • 说明P∗(x)趋近于0,x不太可能是从gt中锋采样得到

image.png

  • 反之,说明Pθ(x)趋近于0,说明x不太可能是从模型生成数据中采样得到的

  • 可见,可以构建一个二分类器Dθ’(x)来判别数据x是从gt中得到的还是从模型生成出来的:

    1. 如果认为是模型中生成出来的,则输出0
    2. 如果认为是从gt中采样的道德,则输出1
  • 目的:由于P∗(x)和Pθ(x)无法计算,因此用Dθ’(x)的结果来代替:

image.png

  • 替换后可得,生成模型的优化是:

image.png

  • 训练Dθ’:假设生成模型为Gθ(z),从噪音z中生成数据

    1. 从gt中采样K个数据:[positive, 𝑆𝑝𝑜𝑠],希望Dθ’输出label为1
    2. 从Gθ(z)中采样k个数据:[negative, 𝑆𝑛𝑒𝑔],希望Dθ’输出label为0
  • 则Dθ’需要优化maximize acc:前面式子是在真实数据中最对的,后面式子是在Gθ(z)中最对的

image.png

  • 训练:

    1. 从gt中采样K个数据:[positive, 𝑆𝑝𝑜𝑠]
      2,使用不同噪声z,从Gθ(z)中采样K个数据:[negative, 𝑆𝑛𝑒𝑔]
  • Gθ(z)需要优化minimize loss:前面式子与Gθ(z)无关,而后面式子希望minimize等价于希望骗过Dθ’,让其无法分别

image.png

  • GAN的训练过程:

image.png

  • Dθ’的目的是为了能够计算JS散度

  • Gθ的目的是通过训练最小化JS散度提高生成质量

Overview of GAN

  • 模型Gθ可以采样数据:

image.png

  • 希望可以评估P∗(x)和Pθ(x)之间的差异 -> 引入JS散度

image.png

image.png

  • 因为P∗(x)和Pθ(x)不可求,根据其意义,定义二分类器模型Dθ’

image.png

  • GAN:

image.png

Algorithm

image.png

  • 训练过程:
    1. 初始化
    2. 更新Dθ’,提高其性能,使其可以区分P∗(x)和Pθ(x)
    3. 更新Gθ,使其向gt靠拢
    4. 重复以上两步,理想状态下,直到Dθ’无法判别,收敛到输出恒为1/2

image.png