博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GAN的数学原理
阅读量:3729 次
发布时间:2019-05-22

本文共 1446 字,大约阅读时间需要 4 分钟。

GAN的数学推导

最近看了一下GAN的论文,又恰好看到了李宏毅老师的课程,感觉里面的数学推导很有意思,所以准备写下来以备之后查阅。

首先需要一点预备知识,KL divergence,这是统计中的一个概念,是衡量两种概率分布的相似程度,其越小,表示两种概率分布越接近。 对于离散的概率分布,定义如下

对于连续的概率分布,定义如下

根据我们之前讲的内容,我们要做的事情就如下图所示

我们想要将一个随机高斯噪声z通过一个生成网络G得到一个和真的数据分布差不多的生成分布

其中的参数是网络的参数决定的,我们希望找到 使得和尽可能接近。

Maximun Likelihood Estimation

我们从真实数据分布 里面取样m个点,,根据给定的参数我们可以计算如下的概率 ,那么生成这m个样本数据的似然(likelihood)就是

我们想要做的事情就是找到 θ∗来最大化这个似然估计

而 PG(x;θ)如何算出来呢?

里面的I表示示性函数,也就是

这样我们其实根本没办法求出这个 PG(x) 出来,这就是生成模型的基本想法。

Basic Idea of GAN

  • Generator G

    • G是一个生成器,给定先验分布 Pprior(z)我们希望得到生成分布 PG(x),这里很难通过极大似然估计得到结果

  • Discriminator D

    • D是一个函数,来衡量 PG(x) 与 Pdata(x)之间的差距,这是用来取代极大似然估计

    首先定义函数V(G, D)如下

    我们可以通过下面的式子求得最优的生成模型

    是不是感觉很晕,为什么定义了一个V(G, D)然后通过求max和min就能够取得最优的生成模型呢?

    首先我们只考虑 maxDV(G,D),看其表示什么含义。

    在给定G的前提下,我们要取一个合适的D使得V(G, D)能够取得最大值,这就是简单的微积分。

    对于这个积分,要取其最大值,我们希望对于给定的x,积分里面的项是最大的,也就是我们希望取到一个最优的 D∗最大化下面这个式子

    在数据给定,G给定的前提下,Pdata(x)与PG(x) 都可以看作是常数,我们可以分别用a,b来表示他们,这样我们就可以得到如下的式子

    这样我们就求得了在给定G的前提下,能够使得V(D)取得最大值的D,我们将D代回原来的V(G, D),得到如下的结果

    看到这里我们其实就已经推导出了为什么这么衡量是有意义的,因为我们取D使得V(G,D)取得max值。

    这个时候这个max值是由两个KL divergence构成的,相当于这个max的值就是衡量 PG(x)与Pdata(x)的差异程度,所以这个时候,我们取

    就能够取到G使得这两种分布的差异性最小,这样自然就能够生成一个和原分布尽可能接近的分布。

    同时这样也摆脱了计算极大似然估计,所以GAN本质是改变了训练的过程。

    授权自 机器学习算法与自然语言处理

    转载 请联系源公众号

    【每日一题】

    在一个神经网络中,下面哪种方法可以用来处理过拟合?

    A、Dropout

    B、分批归一化(Batch Normalization)

    C、正则化(regularization)

    D、都可以

    正确答案是:D

    解析:

    都可以。对于选项C,分批归一化处理过拟合的原理,是因为同一个数据在不同批中被归一化后的值会有差别,相当于做了data augmentation。

    【IELTS a bit】

    faint adj. 微弱的;不清楚的

            v. 昏厥

    garment n. 衣服;外衣

    推荐阅读:


你可能感兴趣的文章
SVN的安装及其基本操作
查看>>
python 250行代码开发一个贪吃蛇(较为完整)
查看>>
SSM项目实战 —— 物流管理系统的实现
查看>>
响应式WEB设计 BootStrap入门及自适应
查看>>
BootStrap的简介与全局样式
查看>>
Vue.Js简介与数据渲染
查看>>
Vue.Js本地应用 -v系列指令 及部分简单案例的实现
查看>>
Axios 简介网络应用及不同城市天气查询案例实现
查看>>
Vuejs与Axios项目开发,简单的网页版的播放器实现
查看>>
json-server 搭建REST接口 和Axios方法简单测试
查看>>
NodeJs的安装与简介及文件的读取、写入、追加(FileSystem模块)
查看>>
Zookeeper启动报错 Starting zookeeper ... already running as process 5688.
查看>>
CenterOs7 安装MySQL数据库
查看>>
CenterOS的Hive环境的搭建日志及可能出现的问题和解决方法
查看>>
SSM 严重: 子容器启动失败Failed to start component [StandardEngine[Catalina].StandardHost[localhost]
查看>>
NodeJs的Http服务器的搭建
查看>>
NodeJs使用npm安装第三方模块与moment模块进行时间格式化
查看>>
NodeJs 服务端渲染 art-template 与 CommonJS 的模块规范
查看>>
Hive 数据库操作(HQL语法详解)
查看>>
Java Xml 操作之 dom4j 详解和实现一个xml存储的学生管理系统
查看>>