生成对抗网络GAN

原创 2017年05月18日 17:25:08

这里写图片描述

GAN属于生成模型,使用生成数据分布PG去无限逼近数据的真实分布Pdata。衡量两个数据分布的差异有多种度量,例如KL散度等,但是前提是得知道PG。GAN利用discriminator巧妙地衡量了PG,Pdata的差异性,利用discriminator和generator的不断竞争(minmax)得到了好的generator去生成数据分布PG

背景

很多时候,我们想输入一类数据,然后让机器学习这一类数据的模式,进而产生该类型新的数据。例如:

  • 输入唐诗三百首,输出机器写的唐诗
  • 输入一堆动漫人物的照片,输出机器生成的动漫人物照片

该问题的核心是原数据有其分布Pdata,机器想要学习新的分布PG去无限逼近Pdata

一个简单的解决办法是采用异常检测的模型,通过输入大量的正常数据,让机器学习正常数据的内在规律。例如:自编码器模型如下。通过训练数据学习到数据的内在模式code。学习到code后,随机输入新的code便可以产生数据。

这里写图片描述

对于mnist数据,设code为2维,训练之后输入code得到的图片如下:
这里写图片描述

但是这种情况下,机器学习到的只是这个数据大概长什么样,而不是数据的真实分布。例如下图的两个7,在人看来都是真的图片7,但是机器却不这么认为。
这里写图片描述

结构

GAN由generator和discriminator两部分组成:

z -> G -> x' ->  D -> 01
          x  ->
  • generator:输入随机的z,输出生成的x
  • discriminator:二分类器,输入生成的x和真实的x,输出01(是否是真的数据)

GAN的训练,也包括generator和discriminator两部分:

  • discriminator的训练,设generator不变,通过调整discriminator的参数让discriminator尽可能区分开x,x
    这里写图片描述

  • generator的训练,设discriminator不变,通过调整generator的参数让discriminator尽可能区分不开x,x
    这里写图片描述

整体来看,generator和discriminator构成了一个网络结构,通过设置loss,保持某一个generator和discriminator参数不变,通过梯度下降更新另外一个的参数即可。

训练

最大似然估计

已知两个分布Pdata(x)PG(x;θ),目标是找到Gθ使两个分布尽量接近。

采用最大似然估计,有:

θ=argmaxθi=1mPG(xi;θ)=argmaxθi=1mlogPG(xi;θ)argmaxθExPdata(x)[logPG(x;θ)]=argmaxθPdata(x)logPG(x;θ)dxPdata(x)logPdata(x)dx=argminθKL(Pdata(x)||PG(x;θ))

也就是说,最大似然PG(x;θ)的概率等价于:最小化基于PG(x;θ)的编码来编码Pdata(x)所需的额外位元数。也就是最小化KL散度。

下面只需要计算出PG(x;θ),一切问题似乎都解决了。事实确实这样,不过对于不同的GPG(x;θ)计算的难易程度不同。如果G是高斯混合模型(GMM)那么很好计算,但是通常数据的分布不是GMM那么简单,需要更复杂的G。通常,G是神经网络。这样的话,PG(x;θ)的计算便很困难,如下:

PG(x;θ)=Pprior(z)I[G(z)=x]dz

这样来看,传统的最大似然是走不通呢,有没有别的出路呢?

考虑最大似然法真正解决的问题。最大似然就是提供了某种手段,去衡量两个分布Pdata(x)PG(x;θ)的相近程度。此路不通另寻他路即可。因此便引出了下文的V(G,D)

V(G,D)取代最大似然估计

V(G,D)是衡量两个分布Pdata(x)PG(x;θ)相近程度的一种手段,其不同于最大似然,是通过一个额外的discriminator识别的好坏做评估的。其核心是:discriminator判别数据是真的数据(1)还是采样的数据(0)。如果两个分布很接近,那么discriminator分辨不清,效果比较差;如果两个分布很远,那么discriminator分辨清,效果比较好。

V(G,D)=ExPdata[logD(x)]+ExPG[log(1D(x))]

整个训练策略,是先固定G选择D去最大化V(G,D) ;然后固定D选择G去最大化V(G,D)

G=argminGmaxDV(G,D)

D的训练

这部分解决的是:对于特定的G,如何训练得到更好的D。

D=maxDV(G,D)

首先,对V(G,D)做进一步分解:

V(G,D)=ExPdata[logD(x)]+ExPG[log(1D(x))]=PdatalogD(x)dx+PGlog(1D(x))dx=[Pdata(x)logD(x)+PG(x)log(1D(x))]dx

所以有:

D=argmaxDPdata(x)logD(x)+PG(x)log(1D(x))

对上述式子求导得到:

D(x)=Pdata(x)Pdata(x)+PG(x)

每个D(x)对应的V(G,D)实际上衡量了特定G下面两个分布Pdata(x)和$P_{G}差距。
这里写图片描述

D(x)代入V(G,D),有:
这里写图片描述

所以:固定G优化D的过程,相当于计算两个分布的距离:

maxDV(G,D)=2log2+2JSD(Pdata(x)||PG(x))

得到两个分布的距离之后,便转化成最小化两个分布的距离的问题,
也就是:

G=argminGmaxDV(G,D)

G的训练

固定G优化D得到D便得到了两个分布的距离V(G,D),固定D优化G,采用梯度下降即可。

这里写图片描述
这里写图片描述

算法

这里写图片描述

问题

G的更新优化不一定朝着最小的方向

优化G之后,原来的D对应的就不一定是maxV(G,D)最大的G了,这样与我们的假设不同。
解决办法是:就像梯度更新的时候迈的步子不能太大;更新G的时候迈的步子也不要太大。

这里写图片描述

通过抽样估计分布

这里写图片描述

G中的目标函数

实际训练G的时候,目标函数需要做一些修改,修改的原因是:在刚开始训练的时候,D能够很好的区分真实数据与模拟数据,这样P(G)D(x)的值比较小。如果采用原来的目标函数,比较小的D(x)对应目标函数的斜率比较低,不容易学习。通过改变目标函数,使比较小的D(x)对应目标函数的斜率比较高,加快了学习速率,使模型更容易学习。

这里写图片描述

利用D去评估分布差异

理论上,可以用D去评估分布差异(G的好坏),D越好表明G越差,D越差表明G越好。但是实际中,这样评价的效果不好,不论G的好坏,D都比较好。

这里写图片描述

可能的原因之一:D太强大了。直观的解决办法是让D变弱一些,但是这样得到的D可否真正的计算JS divergence是个问题。
这里写图片描述

可能的原因之二:数据的本质是高维空间的manifold,很少有重叠。没有重叠的话,js距离永远都是最大值,不容易学习更新。
这里写图片描述
这里写图片描述

通常的解决办法是:给D的输入增加人为的噪声,这样真实数据与人造数据就会有重叠,D不能很好地区分真实数据与人造数据。同时要注意噪声要随时间减少。
这里写图片描述

mode collapse

mode collapse值的是GAN只学到了数据多个形态中的某一种。
这里写图片描述

这里写图片描述

可能的原因是优化式使GAN趋向如此:

这里写图片描述

其他GAN

这里写图片描述

深度学习之生成对抗网络GAN

以下内容将分为如下几个部分: 为什么提出GAN 1 提出的背景2 大概怎么解决问题 基本思想及其过程GAN的优缺点及其发展 1. 为什么提出...
  • ch1209498273
  • ch1209498273
  • 2017年11月20日 12:12
  • 102

《机器学习》中文高清电子非扫描版 - Tom Mitchell

  • 2016年01月22日 15:00
  • 1.58MB
  • 下载

解读GAN及其 2016 年度进展

作者:程程 链接:https://zhuanlan.zhihu.com/p/25000523 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 摘要 本文主要包括两方...
  • omnispace
  • omnispace
  • 2017年02月08日 09:46
  • 5713

生成对抗网络(GAN)的理论与应用完整入门介绍

原文地址:http://blog.csdn.net/blood0604/article/details/73635586?locationNum=1&fps=1 本文包含以下内容: 1.为...
  • qikaihuting
  • qikaihuting
  • 2017年12月22日 17:27
  • 291

【AI-CPS】【生成对抗性网络】 GAN开山之作及最新综述

1论文: Generative Adversarial Nets本文是 GAN 的开山之作.GAN 由两个神经网络组成, 一为生成器 Generator, 一为判别器 Discriminator. 生...
  • np4rHI455vg29y2
  • np4rHI455vg29y2
  • 2018年01月01日 00:00
  • 102

生成式对抗网络GAN研究进展(一)

【前言】     本文首先介绍生成式模型,然后着重梳理生成式模型(Generative Models)中生成对抗网络(Generative Adversarial Network)的研究与发展。...
  • Solomon1558
  • Solomon1558
  • 2016年09月14日 13:16
  • 41542

论文阅读,GAN 生成对抗网络 2014 Goodfellow原文阅读笔记

2014Generative Adversarial Nets(精读2017.3.2)Goodfellow, Bengio et al. NIPS2014 蒙特利尔大学摘要一种新的生成式框架,同时...
  • qdhy199148
  • qdhy199148
  • 2017年03月07日 19:28
  • 1848

浅谈GAN生成对抗网络

浅谈GAN——生成对抗网络 重要引用:深度学习新星:GAN的基本原理、应用和走向 | 硬创公开课;生成对抗网络(GAN)相比传统训练方法有什么优势?;通过拳击学习生成对抗网络(GAN)的基本原理 最近...
  • sinat_27554409
  • sinat_27554409
  • 2017年06月01日 10:58
  • 1864

深入浅出生成对抗网络1-GAN入门

生成对抗网络原理讨论
  • vincent_hbl
  • vincent_hbl
  • 2017年06月09日 17:38
  • 407

生成对抗网络GAN的数学公式的前因后果

Basic Idea of GAN Generator G G是一个生成器,给定先验分布 Pprior(z) 我们希望得到生成分布 PG(x) ,这里很难通过极大似然估计得到结果 Discrimi...
  • liuweizj12
  • liuweizj12
  • 2017年06月26日 16:44
  • 1512
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成对抗网络GAN
举报原因:
原因补充:

(最多只允许输入30个字)