GAN的理论 Theory behind GAN
接下来,先放结论: maximum likelihood estimation 就等价于 minimize KL Divergence

重要假设是,D(x) 可以是任意函数(NN拟合的理想情况),那么对于某一个 x ,都可以找一个 D(x) 令 V(G, D) 最大。V 对 D 求梯度后令其为0,得到极大值点 D(x) = P_data(x) / ( P_data(x) + P_G(x) )

再把 D* 代入 V(G, D) 中,就得到了 maxD V(G, D) = V(G, D*) 。然后把log里面的分母除以2,就能提出来两个 -log2

提出来常数项 -2log2 之后,可以发现后面剩下的部分就是两倍的JS散度。因为 JS散度定义为 JSD(P || Q) = KL(P || M) /2 = KL(Q || M) /2,其中 M = (P + Q) / 2

到这里就比较清楚了,接下来就要找一个 G ,最小化 JSD(P_data || P_G) 。举个例子,假设只有3个 G 可以选,那么先对每个固定的 G 找 V(G, D*),然后找一个 Gi 令 V(Gi, D*) 最小,下图所示显然应该选 G3。

对应 GAN 的训练过程,总结一下:

对于 G 的训练,就是要在固定刚才找到的最好的 D 之后,最小化 L(G, D)


这里有个疑问,L(G) 中有 max 函数,能够求梯度吗? —— 可以,分段求(回忆一下 maxout network)

还存在别的问题吗?

回顾一下整个 GAN 的训练流程和实际做法:

这里面还有个技巧,实际上训练 G 的目标函数可以不跟上面的公式一模一样,因为原来的式子会导致起始的时候梯度很小、更新的会很慢

实际的训练过程中,真的会导致 D 最后训练得如下图所示吗(完全不能做判别)?

我自己觉得不会。。。因为实际的训练不会这么理想,本身就有太多假设和近似在里面。
GAN 的一般框架:fGAN
如何把不同的 f-divergence 应用到 GAN 中。 f-divergence 的定义:

满足一些性质:当 p(x) = q(x),Df (P || Q) = 0;并且 Df (P || Q) >= 0

一些常见的 f-divergence 和对应的 f 函数:

任意一个凸函数 f 都有一个共轭函数 f*,满足

求解方式如下图所示,穷举所有的 x,所有的直线 xt-f(x) 求包络线就行了

回到 Df (P || Q) 的表达式,f 的自变量是 p(x) /q(x),代入。本来要穷举所有的 t 让后面的项最大,现在就找一个 D(更新 D 的参数),令 D(x) = t 使得后面的项最大。

其中,由于 D 的拟合能力有限,所以只能得到一个下界

所以,把积分写成对分布求期望

这就是把不同的 f-divergence 应用到 GAN 中的目标函数了

这样做是要解决什么问题? —— Mode Collapse、Mode Dropping
生成数据的模式太集中
Mode Collapse:

Mode Dropping:

这可能是散度的选择导致的,所以就多一些可能的 f-divergence 来选择,然后 ensemble 一下。(不过其实已经有更好的解决方案了)

GAN的理论 Theory behind GAN的更多相关文章
- GAN笔记——理论与实现
GAN这一概念是由Ian Goodfellow于2014年提出,并迅速成为了非常火热的研究话题,GAN的变种更是有上千种,深度学习先驱之一的Yann LeCun就曾说,"GAN及其变种是数十 ...
- GAN实战笔记——第一章GAN简介
GAN简介 一.什么是GAN GAN是一类由两个同时训练的模型组成的机器学习技术:一个是生成器,训练其生成伪数据:另一个是鉴别器,训练其从真实数据中识别伪数据. 生成(generative)一词预示着 ...
- (转) GAN论文整理
本文转自:http://www.jianshu.com/p/2acb804dd811 GAN论文整理 作者 FinlayLiu 已关注 2016.11.09 13:21 字数 1551 阅读 1263 ...
- 生成式对抗网络(GAN)学习笔记
图像识别和自然语言处理是目前应用极为广泛的AI技术,这些技术不管是速度还是准确度都已经达到了相当的高度,具体应用例如智能手机的人脸解锁.内置的语音助手.这些技术的实现和发展都离不开神经网络,可是传统的 ...
- [ZZ] Valse 2017 | 生成对抗网络(GAN)研究年度进展评述
Valse 2017 | 生成对抗网络(GAN)研究年度进展评述 https://www.leiphone.com/news/201704/fcG0rTSZWqgI31eY.html?viewType ...
- 深度学习新星:GAN的基本原理、应用和走向
深度学习新星:GAN的基本原理.应用和走向 (本文转自雷锋网,转载已获取授权,未经允许禁止转载)原文链接:http://www.leiphone.com/news/201701/Kq6FvnjgbKK ...
- [Deep-Learning-with-Python]GAN图片生成
GAN 由Goodfellow等人于2014年引入的生成对抗网络(GAN)是用于学习图像潜在空间的VAE的替代方案.它们通过强制生成的图像在统计上几乎与真实图像几乎无法区分,从而能够生成相当逼真的合成 ...
- Generative Adversarial Nets(原生GAN学习)
学习总结于国立台湾大学 :李宏毅老师 Author: Ian Goodfellow • Paper: https://arxiv.org/abs/1701.00160 • Video: https:/ ...
- [转]从头开始 GAN
1 前言 GAN的火爆想必大家都很清楚了,各种GAN像雨后春笋一样冒出来,大家也都可以名正言顺的说脏话了[微笑脸].虽然目前GAN的酷炫应用还集中在图像生成上,但是GAN也已经拓展到NLP,Robot ...
随机推荐
- csp201909-2小明种苹果续
/* 定义输入N 二维数组 输出T总数 D掉落棵树 E掉落组数 定义last记录上次掉落的编号,flag=1表示两次连续掉落,不掉落归零 spec=1表示1 2都掉落了,spec=2表示只有1掉落 对 ...
- Unity NGUI C#性能优化
建议读者先看这篇博文:http://blog.csdn.net/zzxiang1985/article/details/43339273,有些技术已经变了,比如第1招,unity5的打包机制已经变许多 ...
- CentOS yum 安装时错误 Errno 14 Couldn't resolve host 解决办法
在虚拟机上安装完CentOS6.5之后,首次使用时yum命令安装软件时,出现一堆的” Errno 14 Couldn't resolve host”这个问题. 上网上查了半天,很多都说在/etc/re ...
- kali命令大全
arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hd ...
- webstorm单标签设置成双标签展开解决iview中col展开问题
大家好!我是木瓜太香,今天给大家带来一个 webstorm 小技巧 场景:有使用过 vue 框架并且使用 iview 做 ui webstorm 做 ide 的同学,可能会遇到一个比较奇怪的问题,iv ...
- Linux:用tar解压文件出现错误Not found in archive
问题:用tar解压文件出现错误Not found in archive 解决办法:加上-C参数 tar -zxvf ZenTaoPMS.8.1.3.zbox_64.gz -C /usr 因为压缩文件 ...
- pytest文档1-pytest+Allure+jenkins+邮箱发送
前言: 1.pytest+allure是目前很多公司使用较多的一种报告样式,因为它更详细,各种指标更直观(简单的说就是看着更高大上,更能装X). 环境准备: 1.Windows10 2.Allure ...
- 第24课 - #pragma 使用分析
第24课 - #pragma 使用分析 1. #pragma简介 (1)#pragma 是一条预处理器指令 (2)#pragma 指令比较依赖于具体的编译器,在不同的编译器之间不具有可移植性,表现为两 ...
- [LeetCode]438. 找到字符串中所有字母异位词、76. 最小覆盖子串(滑动窗口解决子串问题系列)
题目438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 说明: 字母异位词指字母相同,但排列不同的字符 ...
- 分别用canvas和css3的transform做出钟表的效果
两种方式实际上在js上的原理都是一样的.都是获取时间对象,再获取时间对象的时分秒,时分秒乘以其旋转一刻度(一秒.一分.一小时)对应的角度.css3中要赋值于transform:rotate(角度),c ...