生成式模型之 GAN
生成对抗网络(Generative Adversarial Networks,GANs),由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域。2016年,GANs热潮席卷AI领域顶级会议,从ICLR到NIPS,大量高质量论文被发表和探讨。Yann LeCun曾评价GANs是“20年来机器学习领域最酷的想法”。
Generative Adversarial Nets(GAN)
Generative Adversarial Networks论文提出了一种通过对抗过程来评估生成模型。其训练两个模型:仿照原始数据分布生成数据的模型G和评估数据来源(原始数据/生成数据)的模型D。训练G的目标是最大化D犯错的概率,训练D的目标是最大化区分真实训练样本与G生成的样本的能力。
如果能够知道训练样本的分布\(p(x)\),那么就可以在分布中随机采样得到新样本,大部分的生成式模型都采用这种思路,GAN则是在学习从随机变量z到训练样本x的映射关系,其中随机变量可以选择服从正太分布,那么就能得到一个由多层感知机组成的生成网络\(G(z;\theta_g)\),网络的输入是一个一维的随机变量,输出是一张图片。
GAN的优化是一个极小极大博弈问题,公式如下:
\[
\underset{G}{\min} \: \underset{D}{\max}V(D,G) =\mathbb E_{x\sim p_{data}(x)}[logD(x)]+\mathbb E_{z\sim p_{z}(z)}[log(1-D(G(z)))]
\]
优化这个函数,使\(p_z(x)\)接近\(p_{data}\).下面首先去掉期望符号:
\[
\begin{align}
V(G,D)&=\int_x p_{data}(x)\log(D(x))dx+\int_zp_z(z)\log(1-D(g(z)))dz \\
&=\int_x [p_{data}(x)\log(D(x))+p_g(x)\log(1-D(x))]dx
\end{align}
\]
先固定G,求\(\underset{D}{\max}V(D,G)\),令其导数等于0,求得D的最优解
\[
D^*_G(x)={p_{data}(x)\over p_{data}(x)+p_g(x)}
\]
现在固定D,优化G:将\(D^*_G\)带入目标函数。
\[
\begin{align}
\underset{G}\min V(G,D^*_G) &= \int_x [p_{data}(x)\log{p_{data}(x)\over p_{data}(x)+p_g(x)}+p_g(x)\log{p_g(x)\over p_{data}(x)+p_g(x)}]dx \\
&= \mathbb E_{x\sim p_{data}}[\log{p_{data}(x)\over p_{data}(x)+p_g(x)}]+\mathbb E_{x\sim p_g}[\log{p_g(x)\over p_{data}(x)+p_g(x)}] \\
&= -\log 4+KL(p_{data}\|{p_{data}+p_g\over 2})+KL(p_g\|{p_{data}+p_g\over 2}) \\
&= -\log 4+2JS(p_{data}\|p_g)
\end{align}
\]
其中KL散度:\(KL(P\|Q)=\mathbb E_{x\sim P}\log{P\over Q}=\int_xP(x)\log{P(x)\over Q(x)}dx\)
JS散度:\(JS(P\|Q)={1\over 2}KL(P\|{P+Q\over 2})+{1\over 2}KL(Q\|{P+Q\over 2})\)
JS散度具有对称性,而KL没有。
只要P和Q没有一点重叠或者重叠部分可忽略,JS散度就固定是常数,而这对于梯度下降方法意味着——梯度为0!此时对于最优判别器来说,生成器得不到梯度信息;即使对于接近最优的判别器来说,生成器也有很大机会面临梯度消失的问题。
参考 WGAN的介绍。
f-GAN
在GAN中可以使用任意的f-divergency,相关论文f-GAN(Sebastian Nowozin, Botond Cseke, Ryota Tomioka, “f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization”, NIPS, 2016)
f-divergence
P和Q是两个分布,p(x),q(x)是x的分布概率
\[
D_f(P||Q)=\int_x q(x)f({p(x)\over q(x)})dx
\]
其中f是凸函数且f(1)=0,\(D_f(P||Q)\)衡量了P和Q之间的距离.
当\(\forall x,p(x)=q(x)\)时,\(D_f(P||Q)\)具有最小值0.
当\(f(x)=x\log x\)时,\(D_f(P||Q)=\int_xp(x)\log({p(x)\over q(x)})\),即KL divergence.
当\(f(x)=-\log x\)时,\(D_f(P||Q)=\int_xq(x)\log({q(x)\over p(x)})\),即reverse KL divergence.
当\(f(x)=(x-1)^2\)时,\(D_f(P||Q)=\int_x{(p(x)-q(x))^2\over q(x)}dx\)为Chi Square divergence.
Fenchel Conjugate
每个凸函数f都有一个与之相对的conjugate function f*:
\(f^* (t)=\max_{x\in dom(f)}\{xt-f(x)\}\),且(f ) = f.
\(f(x)=\max_{t\in dom(f^*)}\{xt-f^*(t)\}\),带入\(D_f(P||Q)\)得:
\[
\begin{align}
D_f(P||Q) &=\int_x q(x)f({p(x)\over q(x)})dx \\
&=\int_xq(x)(\max_{t\in dom(f^*)}\{{p(x)\over q(x)}t-f^*(t)\})dx \\
&=\max_D\int_x p(x)D(x)dx-\int_x q(x)f^*(D(x))dx \\
&\text{(t=D(x))}
\end{align}
\]
因此GAN中
\[
D_f(P_{data}\|P_G)=\max_D\{E_{x\sim P_{data}}[D(x)]-E_{x\sim P_G}[f^*(D(x))]\}
\]
可以使用任何的f-divergence,如JS,Jeffrey,Pearson.
WGAN
原始版本:weight clipping,改进版本:gradient penalty.
论文:
- Martin Arjovsky, Soumith Chintala, Léon Bottou, Wasserstein GAN, arXiv preprint, 2017
- Ishaan Gulrajani, Faruk Ahmed, Martin Arjovsky, Vincent Dumoulin, Aaron Courville,“Improved Training of Wasserstein GANs”, arXiv preprint, 2017
主要思想:使用Earth Mover's Distance(Wasserstein Distance)来评估两个分布之间的距离.推土机距离表示将一个分布搬运变为另一个分布的最小搬运的量.
之前GAN所采用的JS divergence的缺点是当两个分布没有交集时,距离是0,梯度为0,网络很难学习.Earth Mover's Distance便可以解决这个问题.此时网络能够持续学习,但为了防止梯度爆炸,需要weight clipping等手段.
对抗样本(adversarial examples)
14年的时候Szegedy在研究神经网络的性质时,发现针对一个已经训练好的分类模型,将训练集中样本做一些细微的改变会导致模型给出一个错误的分类结果,这种虽然发生扰动但是人眼可能识别不出来,并且会导致误分类的样本被称为对抗样本,他们利用这样的样本发明了对抗训练(adversarial training),模型既训练正常的样本也训练这种自己造的对抗样本,从而改进模型的泛化能力[1]。如下图所示,在未加扰动之前,模型认为输入图片有57.7%的概率为熊猫,但是加了之后,人眼看着好像没有发生改变,但是模型却认为有99.3%的可能是长臂猿。

对抗样本跟生成式对抗网络没有直接的关系,对抗网络是想学样本的内在表达从而能够生成新的样本,但是有对抗样本的存在在一定程度上说明了模型并没有学习到数据的一些内部表达或者分布,而可能是学习到一些特定的模式足够完成分类或者回归的目标而已。
GAN生成的图片能否用于CNN训练?
现在来说,应当不可以。由于GAN是从较小的分布中采样生成的,是真实世界的极小的一部分,所以拿来训练没有广泛的适用性。另外,当前的GAN生成较大的图片比较困难(32x32以上)。
参考资料
- GAN作者Ian Goodfellow的教程论文NIPS 2016 Tutorial: Generative Adversarial Networks
- 台大李宏毅 deep learning tutorial
生成式模型之 GAN的更多相关文章
- 生成式对抗网络(GAN)实战——书法字体生成练习赛
https://www.tinymind.cn/competitions/ai 生成式对抗网络(GAN)是近年来大热的深度学习模型. 目前GAN最常使用的场景就是图像生成,作为一种优秀的生成式模型,G ...
- 生成式对抗网络GAN 的研究进展与展望
生成式对抗网络GAN的研究进展与展望.pdf 摘要: 生成式对抗网络GAN (Generative adversarial networks) 目前已经成为人工智能学界一个热门的研究方向. GAN的基 ...
- 预测学习、深度生成式模型、DcGAN、应用案例、相关paper
我对GAN"生成对抗网络"(Generative Adversarial Networks)的看法: 前几天在公开课听了新加坡国立大学[机器学习与视觉实验室]负责人冯佳时博士在[硬 ...
- 【神经网络与深度学习】生成式对抗网络GAN研究进展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN
[前言] 本文首先介绍生成式模型,然后着重梳理生成式模型(Generative Models)中生成对抗网络(Generative Adversarial Network)的研究与发展.作者 ...
- 机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器
本文简述了以下内容: (一)生成式模型的非参数方法 (二)Parzen窗估计 (三)k近邻估计 (四)k近邻分类器(k-nearest neighbor,kNN) (一)非参数方法(Non-param ...
- AI 判别式模型和生成式模型
判别式模型(discriminative model) 生成式模型(generative model) 对于输入x,类别标签y:产生式模型估计它们的联合概率分布P(x,y)判别式模型估计条件概率分布P ...
- 生成式模型 VS 判别式模型
1 定义 1.1 生成式模型 生成式模型(Generative Model)会对x和y的联合分布p(x,y)建模,然后通过贝叶斯公式来求得 p(yi|x),然后选取使得p(yi|x) 最大的 yi,即 ...
- 判别式模型 vs. 生成式模型
1. 简介 生成式模型(generative model)会对\(x\)和\(y\)的联合分布\(p(x,y)\)进行建模,然后通过贝叶斯公式来求得\(p(y|x)\), 最后选取使得\(p(y|x) ...
- 产生式模型(生成式模型)与判别式模型<转载>
转自http://dongzipnf.blog.sohu.com/189983746.html 产生式模型与判别式模型 产生式模型(Generative Model)与判别式模型(Discrimiti ...
随机推荐
- Storm+HBase实时实践
1.HBase Increment计数器 hbase counter的原理: read+count+write,正好完成,就是讲key的value读出,若存在,则完成累加,再写入,若不存在,则按&qu ...
- HDP2.0测试
1.测试Hbase (1)hive导入hbase
- ORACLE中修改表的Schema的总结
前阵子遇到一个案例,需要将数据库中的几个表从USER A 移动到USER B下面,在ORACLE中,这个叫做更改表的所有者或者修改表的Schema.其实遇到这种案例,有好几种解决方法.下面我们通过实验 ...
- 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting
本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树 ...
- 在bmp上添加字符2
void CTextOnbmpDlg::OnButton2() { // TODO: Add your control notification handler code here FILE *f ...
- zTree实现地市县三级级联数据库映射
zTree实现地市县三级级联数据库映射 Province.hbm.xml: <?xml version="1.0" encoding="UTF-8"?&g ...
- Java中的“&”和“&&”的区别
Java中的"&"和"&&"的区别 1."&"是位运算符,"&&"是逻辑 ...
- 7.C++类与封装的概念
类通常分为以下两部分 -类的内部具体实现 -类的外部使用方法 比如: 用户使用手机,只需要知道如何使用. 而手机开发者,则需要考虑手机内部的实现细节. 类的封装 并不是类的每个成员变量和成员函数都要对 ...
- iOS - MySQL 的安装配置
前言 提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提前准备好的软件: mysql-5.7.17-macos10.12-x86_64.dm ...
- Spring Boot 文件上传
其实网上已经有很多这样的文章了.为什么我还要记录一下呢?原因是在工作中对接外系统时,碰到了他们调取我们文件上传接口确存在着http请求头部规范的情况,从而导致用传统方法获取不到参数.今天就来整理下Sp ...