生成模型基础 06 GAN
Generative Adversarial Networks
Metrics
From complex distribution to simple distribution
生成模型的核心:给定随机噪声,生成想要的结果形式 e.g. text、image
假设随机变量X服从一个非常复杂的无法显示表示的分布Q,我们该如何从Q中生成数据?
假设我们已知Q的累计概率密度函数F(x),F(x)有如下性质:
- 假设我们可以算出F(x)的逆函数F(x)^(-1),则可通过下面的算法采样Q:
- 从均匀分布中采样Z
- X = F(Z)^(-1)服从Q
代入X=F(Z)^(-1)后,X的随机性变为Z的随机性。再对等式两侧同时作用F可得𝑃(𝑍 < 𝐹(𝑡)) = 𝐹(𝑡)
从而如果Q的反函数可求,可利用均匀分布采样出复杂分布Q
问题:Q未知,F(x) 和 F(x) 的反函数都不可求,因而需要神经网络来解决
VAE问题:VAE较浅,用小网络做image generation任务时,image真实性和质量较差
解决方法:可以使用GAN来实现从简单噪声中采样,经过复杂的函数变换生成image
GAN is a kind of implicit generative model
生成图像的模型可以分为两类:
- 显式模型:
- 已知模型参数
- 给定任何数据,都可以算出其出现的概率,可以计算出数据集出现的概率
- 可以使用MLE进行优化
- e.g. AR model
- 隐式模型:
- 已知模型参数
- 对于每个样本,无法计算出概率密度
- 无法通过MLE优化,需要其他的loss
- e.g. VAE、GAN
- 显式模型:
隐式模型问题:希望关心模型生成结果的好坏,那么该如何估计生成数据与真实数据之间的差异?
Difference metrics
给定两个点A、B,可以计算两个点间的欧氏距离:𝑑 =||𝑥𝐴 −𝑥𝐵||2
给定两个集合SA、SB,一种简单的办法是可以计算两个集合这种距离最近的点
问题:两个集合部分重合的时候,这种距离不再适用
解决方法:可以计算集合A、B中的点到集合B、A最近距离之和
Difference between two distributions
可以使用f-divergence来评估两个分布的距离
将 𝑃(𝑥) 表示为一个分布(其密度为 𝑝(𝑥))、𝑄(𝑥) 作为另一种分布(密度为 𝑞(𝑥))
函数f:[0, +∞] -> [-∞, +∞]满足性质:
- 凸函数
- 非负函数
- f(1) = 0
- 有限
则f-divergence定义为:
f-divergence不是严格意义上的距离:不满足三角不等式和对称性
f-divergence是非负的,证明:
- 函数f需要预先定义好
KL divergence
total variation distance
- 全变差距离:对差的绝对值进行积分
Jensen-Shannon(JS) divergence
- f-divergence作用:衡量生成数据和真实数据分布的差异有多大,从而降低这个差异优化模型,从而生成更真实的image
GAN
- 学习生成模型(最小化)Jensen-Shannon-divergence
P∗是gt,希望逼近;Pθ是模型生成的数据,希望minimize P∗和Pθ的差别
JS散度希望尽可能的小:
前者是真实数据的期望,后者是生成数据的期望,二者形式接近但是关心的期望不同
问题:难以计算P∗(x)和Pθ(x)。前者无法计算,后者经过了复杂的神经网络,难以估计
解决方法:可以从二者的物理意义入手,用其他方法做估计
- 观察到二者均属于[0, 1],且分母相同,相加为1
- 说明P∗(x)趋近于0,x不太可能是从gt中锋采样得到
反之,说明Pθ(x)趋近于0,说明x不太可能是从模型生成数据中采样得到的
可见,可以构建一个二分类器Dθ’(x)来判别数据x是从gt中得到的还是从模型生成出来的:
- 如果认为是模型中生成出来的,则输出0
- 如果认为是从gt中采样的道德,则输出1
目的:由于P∗(x)和Pθ(x)无法计算,因此用Dθ’(x)的结果来代替:
- 替换后可得,生成模型的优化是:
训练Dθ’:假设生成模型为Gθ(z),从噪音z中生成数据
- 从gt中采样K个数据:[positive, 𝑆𝑝𝑜𝑠],希望Dθ’输出label为1
- 从Gθ(z)中采样k个数据:[negative, 𝑆𝑛𝑒𝑔],希望Dθ’输出label为0
则Dθ’需要优化maximize acc:前面式子是在真实数据中最对的,后面式子是在Gθ(z)中最对的
训练:
- 从gt中采样K个数据:[positive, 𝑆𝑝𝑜𝑠]
2,使用不同噪声z,从Gθ(z)中采样K个数据:[negative, 𝑆𝑛𝑒𝑔]
- 从gt中采样K个数据:[positive, 𝑆𝑝𝑜𝑠]
Gθ(z)需要优化minimize loss:前面式子与Gθ(z)无关,而后面式子希望minimize等价于希望骗过Dθ’,让其无法分别
- GAN的训练过程:
Dθ’的目的是为了能够计算JS散度
Gθ的目的是通过训练最小化JS散度提高生成质量
Overview of GAN
- 模型Gθ可以采样数据:
- 希望可以评估P∗(x)和Pθ(x)之间的差异 -> 引入JS散度
- 因为P∗(x)和Pθ(x)不可求,根据其意义,定义二分类器模型Dθ’
- GAN:
Algorithm
- 训练过程:
- 初始化
- 更新Dθ’,提高其性能,使其可以区分P∗(x)和Pθ(x)
- 更新Gθ,使其向gt靠拢
- 重复以上两步,理想状态下,直到Dθ’无法判别,收敛到输出恒为1/2