本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

互怼的艺术:从零直达 WGAN

时间:2017-06-12 23:14来源:报码现场 作者:118KJ 点击:
学校丨中山大学硕士生 研究方向丨NLP,神经网络 个人主页丨 1 前言 GAN,全称 Generative Adversarial Nets,中文名是生成对抗式网络。对于 GAN 来说,最通俗的解释就是“造假者-鉴别者”的

学校丨中山大学硕士生

研究方向丨NLP,神经网络

个人主页丨

1

前言

GAN,全称 Generative Adversarial Nets,中文名是生成对抗式网络。对于 GAN 来说,最通俗的解释就是“造假者-鉴别者”的解释,如艺术画的伪造者和鉴别者。一开始伪造者和鉴别者的水平都不高,但是鉴别者还是比较容易鉴别出伪造者伪造出来的艺术画。但随着伪造者对伪造技术的学习后,其伪造的艺术画会让鉴别者识别错误;或者随着鉴别者对鉴别技术的学习后,能够很简单的鉴别出伪造者伪造的艺术画。这是一个双方不断学习技术,以达到最高的伪造和鉴别水平的过程。 然而,稍微深入了解的读者就会发现,跟现实中的造假者不同,造假者会与时俱进地使用新材料新技术来造假,而 GAN 最神奇而又让人困惑的地方是它能够将随机噪声映射为我们所希望的正样本,有噪声就有正样本,这不是无本生意吗,多划算。

另一个情况是,自从 WGAN 提出以来,基本上 GAN 的主流研究都已经变成了 WGAN 上去了,但 WGAN 的形式事实上已经跟“伪造者-鉴别者”差得比较远了。而且 WGAN 虽然最后的形式并不复杂,但是推导过程却用到了诸多复杂的数学,使得我无心研读原始论文。这迫使我要找从一条简明直观的线索来理解 GAN。幸好,经过一段时间的思考,有点收获。

在正文之前,先声明:笔者所有的 GAN 的知识,仅仅从网上的科普文所读而来,我并没有直接读过任何关于 GAN 的论文,因此,文中的结果可能跟主流的结果有雷同,也可能有很大出入,而且本文的讲述方法并不符合 GAN 的历史发展进程。严谨治学者慎入。

注:如无指明,本文所谈到的 GAN 都是广义的,即包括原始 GAN、WGAN 等等,对它们不作区分。文中出现的正样本、真实样本,都是指预先指定的一批样本,而生成样本则指的是随机噪声通过生成模型 G 变换所得的结果。

2

一道面试题

一道经典的面试题是:如果有一个伪随机数程序能够生成 [0,1] 之间的均匀随机数,那么如何由它来生成服从正态分布的伪随机数?比如怎么将 U[0,1] 映射成 N(0,1)?

这道题不同的角度有不同的做法,工程上的做法有:同时运行 n 个这样的伪随机数程序,每步产生 n 个随机数,那么这 n 个数的和就近似服从正态分布了。不过,这里不关心工程做法,而关心理论上的做法。理论上的做法是:将 X∼U[0,1] 经过函数 Y=f(X) 映射之后,就有 Y∼N(0,1) 了。设 ρ(x) 是 U[0,1] 是概率密度函数,那么 [x,x+dx] 和 [y,y+dy] 这两个区间的概率应该相等,而根据概率密度定义,ρ(x) 不是概率,ρ(x)dx 才是概率,因此有

互怼的艺术:从零直达 WGAN

那么:

互怼的艺术:从零直达 WGAN

这里 Φ(y) 是标准正态分布的累积分布函数,所以:

互怼的艺术:从零直达 WGAN

注意到累积分布函数是无法用初等函数显式表示出来的,更不用说它的逆函数了。说白了,Y=f(X) 的 f 的确是存在的,但很复杂。正态分布是常见的、相对简单的分布,但这个映射已经这么复杂了。如果换了任意分布,甚至概率密度函数都不能显式写出来,那么复杂度可想而知。

3

神经大法好

现在我们将问题一般化:如何找到映射 Y=f(X),把服从均匀分布 X 映射到指定的分布?在一般情形下,这个指定的分布是通过给出一批具体的分布样本 Z=(z1,z2,…,zN) 来描述的(比如,给出一批服从正态分布的随机数,而不是给出概率密度

  

)。

这个问题相当一般化,跟 GAN 所做的事情也是一样的。也就是说,GAN 也是希望把均匀的随机噪声映射成特定分布,直播,这个特定分布由一组“正样本”描述。这样的理解就可以回答我们开头的一个小问题了:为什么 GAN 可以将噪声变换成正样本?事实上 GAN 并不是学习噪声到正样本的变换,而是学习均匀分布到指定分布的变换。假如学习成功了,那么输入一个随机噪声,那么就变换成指定分布的数据,而通常来说我们指定的分布是一个比较“窄”的分布(比如指定的正样本是某一类图片的集合,但事实上图片无穷无尽,某一类的图片是相当窄的),所以都会映射到我们眼中的“正样本”去。

前面正态分布的例子已经表明,这个映射 f 通常都是很复杂的,因此没必要求它的解析解。这时候“神经大法”就登场了:熟悉神经网络的读者都知道,我们总可以用一个神经网络来拟合任意函数,因此,不妨用一个带有多个参数的神经网络 G(X,θ) 去拟合它?只要把参数 θ 训练好,就可以认为 Y=G(X,θ) 了。

可是,问题又来了:拟合什么目标呢?我们怎么知道 Y=G(X,θ) 跟指定的分布是很接近的呢?

4

KL 距离?JS 距离?

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容