欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

Generative Adversarial Nets 原理

第一篇,入坑GAN~

前置知识

一个论文比较重要的前置知识,就是对「如何表示一个分布」的理解,对于一个离散的分布来说,我们通常的表示方法是这样,P(A)=0.1,P(B)=0.2,P(C)=0.7; 但是还有另外一种方法,在LDA( latent Dirichlet allocation)模型和强化学习中,引入了一种通过「状态转移」矩阵表示分布的方式,这也啥论文中一直提到的马尔可夫链。建议通过阅读「LDA数学八卦」了解这个重要的知识。

基本思想

GAN中有两个角色,一个分类器,一个生成器.分类器要区分样本是真实的还是假的, 生成器想要尽可能生成可以欺骗分类器的样本;如何设置目标函数和训练逻辑,从而 保证最后收敛到我们期望的状态是需要重点考虑的.

生成器

首先我们知道,样本是可以生成的,例如有一个神经网络,里面的参数都是确定的,经过多层的前向传播,可以看做输入从一个空间映射到另外一个空间(从一个分布映射到另外一个分布)。所以理论上(生成器容量足够大)应该存在这样一个映射,输入是服从正态分布的噪声图片 \(z\) ,输出是0或1的图片。如下图:

 

粘贴图片

分类器

分类器就很好理解了,就是对输入的图像进行分类。这里的分类器要区分出来输入的是上面的生成器生成的样本 \(X'\) 还是真实的样本 \(X\) 。两者之间形成了「对抗」,具体为:生成器G想生成可以骗过分类器D的样本,分类器想区分出来假样本。

接下来需要构造一个目标函数:

QQ20170819-180648

下图是一个完整的表述:

gan1

图片来源此处

训练过程

  1. 训练前期由于G性能差,为了加快速度,对于明显很差的样本D可以直接reject。
  2. 每一次迭代训练一轮G,训练多轮D,要保持D一直是最优的
  3. 最终收敛条件是D的准确率为1/2

下图为对过程的形象介绍

QQ20170819-233744

demo代码

https://zhuanlan.zhihu.com/p/24767059

 

文献

Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

OpenAI的博客:https://blog.openai.com/generative-models/

https://tryolabs.com/blog/2016/12/06/major-advancements-deep-learning-2016/

未经允许不得转载:大数据算法 » Generative Adversarial Nets 原理

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站