万字综述之生成对抗网络(GAN)

本文深入探讨了生成对抗网络(GAN)的基础知识,包括其基本概念、目标函数和常见模型结构。文章指出,GAN 的优势在于其不需要先验假设且能简单生成真实样本。通过对比分析了f-divergence和IPM,以及LSGAN和Wasserstein距离在稳定训练中的作用。文章还讨论了GAN在图像、序列生成、半监督学习和域适应等领域的应用,以及解决训练障碍和模式塌陷的策略。最后,文章提出了GAN在评估、强化学习关系、优缺点及未来研究方向上的思考。
摘要由CSDN通过智能技术生成

640


作者丨郭晓锋 

单位丨爱奇艺 

研究方向丨图像生成


前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇。可是在深度学习,GAN 领域,其进展都是以月来计算的,感觉那两篇综述有些老了。


最近发现有一篇最新的 GAN 综述论文,四十余页,介绍了 GAN 的各个方面,于是就学习并整理笔记如下。文中许多内容大都根据自己所学总结,有不当之处欢迎指出。


640?wx_fmt=png


640?wx_fmt=png


此外,本文参考了许多博客资料,已给出参考链接。如有侵权,请私信删除。文章目录如下:


640?wx_fmt=jpeg


GAN的基本介绍


生成对抗网络(GAN,Generative Adversarial Networks)作为一种优秀的生成式模型,引爆了许多图像生成的有趣应用。GAN 相比于其他生成式模型,有两大特点: 


1. 不依赖任何先验假设。传统的许多方法会假设数据服从某一分布,然后使用极大似然去估计数据分布。 


2. 生成 real-like 样本的方式非常简单。GAN 生成 real-like 样本的方式通过生成器(Generator)的前向传播,而传统方法的采样方式非常复杂,有兴趣的同学可以参考下周志华老师的《机器学习》一书中对各种采样方式的介绍。 


下面,我们围绕上述两点展开介绍。


GAN的基本概念


GAN(Generative Adversarial Networks)从其名字可以看出,是一种生成式的,对抗网络。再具体一点,就是通过对抗的方式,去学习数据分布的生成式模型。


所谓的对抗,指的是生成网络和判别网络的互相对抗。生成网络尽可能生成逼真样本,判别网络则尽可能去判别该样本是真实样本,还是生成的假样本。示意图如下:


640?wx_fmt=png


隐变量 z (通常为服从高斯分布的随机噪声)通过 Generator 生成 Xfake, 判别器负责判别输入的 data 是生成的样本 Xfake 还是真实样本 Xreal。优化的目标函数如下:


640?wx_fmt=png


对于判别器 D 来说,这是一个二分类问题,V(D,G) 为二分类问题中常见的交叉熵损失。对于生成器 G 来说,为了尽可能欺骗 D,所以需要最大化生成样本的判别概率 D(G(z)),即最小化 log(1-D(G(z))),注意:log(D(x)) 一项与生成器 G 无关,所以可以忽略。


实际训练时,生成器和判别器采取交替训练,即先训练 D,然后训练 G,不断往复。值得注意的是,对于生成器,其最小化的是640?wx_fmt=png,即最小化 V(D,G) 的最大值。


为了保证 V(D,G) 取得最大值,所以我们通常会训练迭代k次判别器,然后再迭代1次生成器(不过在实践当中发现,k 通常取 1 即可)。当生成器 G 固定时,我们可以对 V(D,G) 求导,求出最优判别器 D*(x):


640?wx_fmt=png


把最优判别器代入上述目标函数,可以进一步求出在最优判别器下,生成器的目标函数等价于优化 Pdata(x) , Pg(x) 的 JS 散度(JSD, Jenson Shannon Divergence)。 


可以证明,当 G,D 二者的 capacity 足够时,模型会收敛,二者将达到纳什均衡。此时, Pdata(x)=Pg(x),判别器不论是对于 Pdata(x) 还是 Pg(x) 中采样的样本,其预测概率均为 1/2,即生成样本与真实样本达到了难以区分的地步。


目标函数


前面我们提到了 GAN 的目标函数是最小化两个分布的 JS 散度。实际上,衡量两个分布距离的方式有很多种,JS 散度只是其中一种。如果我们定义不同的距离度量方式,就可以得到不同的目标函数。许多对 GAN 训练稳定性的改进,比如 EBGAN,LSGAN 等都是定义了不同的分布之间距离度量方式。 


f-divergence 


f-divergence 使用下面公式来定义两个分布之间的距离:


640?wx_fmt=png


上述公式中 f 为凸函数,且 f(1)=0 。采用不同的 f 函数(Generator),可以得到不同的优化目标。具体如下:


640?wx_fmt=png


值得注意的是,散度这种度量方式不具备对称性,即 Df(Pdata||Pg) 和 Df(Pg||Pdata) 不相等。


LSGAN 


上面提到,LSGAN 是 f-divergence 中640?wx_fmt=png时的特殊情况。具体来说 LSGAN 的 Loss 如下:


640?wx_fmt=png


原作中取 a=c=1,b=0。LSGAN 有两大优点: 


  • 稳定训练:解决了传统GAN训练过程中的梯度饱和问题 

  • 改善生成质量:通过惩罚远离判别器决策边界的生成样本来实现 


对于第一点,稳定训练,可以先看一张图:


640?wx_fmt=png


上图左边是传统 GAN 使用 sigmoid 交叉熵作为 loss 时,输入与输出的对照关系图。上图右边是 LSGAN 使用最小二乘 loss 时,输入与输出的对照关系图。可以看到,在左图,输入比较大的时候,梯度为 0,即交叉熵损失的输入容易出现梯度饱和现象。而右边的最小二乘 loss 则不然。 


对于第二点,改善生成质量。这个在原文也有详细的解释。具体来说:对于一些被判别器分类正确的样本,其对梯度是没有贡献的。但是判别器分类正确的样本就一定是很接近真实数据分布的样本吗?显然不一定。 


考虑如下理想情况,一个训练良好的 GAN,真实数据分布 Pdata 和生成数据分布 Pg 完全重合,判别器决策面穿过真实数据点,所以,反过来,我们利用样本点离决策面的远近来度量生成样本的质量,样本离决策面越近,则 GAN 训练的越好。


640?wx_fmt=png


上图 b 中,一些离决策面比较远的点,虽然被分类正确,但是这些并不是好的生成样本。传统 GAN 通常会将其忽略。而对于 LSGAN,由于采用最小二乘损失,计算决策面到样本点的距离,如图 c,可以把离决策面比较远的点“拉”回来,也就是把离真实数据比较远的点“拉”回来。


Integral probality metric (IPM) 


IPM 定义了一个评价函数族 f ,用于度量任意两个分布之间的距离。在一个紧凑的空间640?wx_fmt=png中,定义 P(x) 为在 x 上的概率测度。那么两个分布 Pdata,Pg 之间的 IPM 可以定义为如下公式:


640?wx_fmt=png


类似于 f-divergence,不同函数 f 也可以定义出一系列不同的优化目标。典型的有 WGAN,Fisher GAN 等。下面简要介绍一下 WGAN。 


WGAN 


WGAN 提出了一种全新的距离度量方式——地球移动距离(EM, Earth-mover distance),也叫 Wasserstein 距离。关于 Wasserstein 距离的介绍可以参考:白话 Wassertein 距离 [1]


Wasserstein 距离具体定义如下:


640?wx_fmt=png


⊓(Pdata,Pg) 表示一组联合分布,这组联合分布里的任一分布 γ 的边缘分布均为 Pdata(x) 和 Pg(x)。 


直观上来说,概率分布函数(PDF)可以理解为随机变量在每一点的质量,所以 W(Pdata,Pg) 则表示把概率分布 Pdata(x) 搬到 Pg(x) 需要的最小工作量。 


WGAN 也可以用最优传输理论来解释,WGAN 的生成器等价于求解最优传输映射,判别器等价于计算 Wasserstein 距离,即最优传输总代价 [4]。关于 WGAN 的理论推导和解释比较复杂,不过代码实现非常简单。具体来说 [3]: 


  • 判别器最后一层去掉 sigmoid

     

  • 生成器和判别器的 loss 不取 log 

  • 每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数 c 


上述第三点,在 WGAN 的后来一篇工作 WGAN-GP 中,将梯度截断替换为了梯度惩罚。


f-divergence和IPM对比 


f-divergence 存在两个问题:其一是随着数据空间的维度640?wx_fmt=png的增加,f-divergence 会非常难以计算。其二是两个分布的支撑集 [3] 通常是未对齐的,这将导致散度值趋近于无穷。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值