快捷搜索:  汽车  科技

gan推荐算法(万字长文解读GAN从基本概念)

gan推荐算法(万字长文解读GAN从基本概念)GAN(Generative Adversarial Networks)从其名字可以看出,是一种生成式的,对抗网络。再具体一点,就是通过对抗的方式,去学习数据分布的生成式模型。所谓的对抗,指的是生成网络和判别网络的互相对抗。生成网络尽可能生成逼真样本,判别网络则尽可能去判别该样本是真实样本,还是生成的假样本。示意图如下:1.1 GAN 的基本概念不依赖任何先验假设。传统的许多方法会假设数据服从某一分布,然后使用极大似然去估计数据分布。生成 real-like 样本的方式非常简单。GAN 生成 real-like 样本的方式通过生成器 (Generator) 的前向传播,而传统方法的采样方式非常复杂,有兴趣的同学可以参考下周志华老师的《机器学习》一书中对各种采样方式的介绍。下面,我们围绕上述两点展开介绍。

雷锋网 AI 科技评论按,本文作者是我爱馒头,原载于知乎。

前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇。可是在深度学习,GAN 领域,其进展都是以月来计算的,感觉那两篇综述有些老了。最近发现有一篇最新的有关 GAN 综述的 paper[1],四十余页,介绍了 GAN 的各个方面,于是就学习并整理笔记如下。文中许多内容大都根据自己所学总结,有不当之处欢迎指出。此外,本文参考了许多博客资料,已给出参考链接。如有侵权,请私信删除。文章目录如下:

gan推荐算法(万字长文解读GAN从基本概念)(1)

gan推荐算法(万字长文解读GAN从基本概念)(2)

gan推荐算法(万字长文解读GAN从基本概念)(3)

1. GAN 的基本介绍

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

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

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

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

1.1 GAN 的基本概念

GAN(Generative Adversarial Networks)从其名字可以看出,是一种生成式的,对抗网络。再具体一点,就是通过对抗的方式,去学习数据分布的生成式模型。所谓的对抗,指的是生成网络和判别网络的互相对抗。生成网络尽可能生成逼真样本,判别网络则尽可能去判别该样本是真实样本,还是生成的假样本。示意图如下:

gan推荐算法(万字长文解读GAN从基本概念)(4)

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

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

(注意:

一项与生成器 G 无关,所以可以忽略。)

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

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

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

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

1.2 目标函数

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

1.2.1 f-divergence

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

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

gan推荐算法(万字长文解读GAN从基本概念)(5)

猜您喜欢: