f-GAN
学习总结于国立台湾大学 :李宏毅老师
f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization
本文Outline

一句话介绍f-GAN: you can use any f-divergence
一. 回顾GAN的basic idea:
我们想要machine生成的target distribution: Pdata(x) ,如下图蓝色区域的分布。图中的蓝色区域里面为Pdata(x)值为高的部分,即sample出的图片看起来很好,蓝色区域外sample出来的看起来很模糊。

那怎么做?要找到一个generator,即为NN, 这个网络就定义了一个probability distribution。此时generator的输入为一个分布:normal distribution, 输出就是另外一个distribution。而这个输出一般是很复杂的分布,可能是叫不上名字的分布(例如高斯混合分布等),毕竟是经过了NN。那我们的任务就是调整generator的参数使得生成的分布PG(x)尽可能接近真实的分布 Pdata(x) 。

上图操作的难点在于难以计算出PG(x), 就说给定x,无法算出PG(x)是多少,如果可以算出PG(x)是多少,就可以maxmize likelihood。所以给你已有的data,无法算出data的likelihood是多少,唯一能做的是从原始data中sample。
Basic Idea of GAN:

直观解释generator和discriminator在迭代过程中做了什么?
蓝色的点代表此时的generator画出的图,绿色的点为真实的数据分布,蓝线和绿线分别表示generator和data的distribution。红线为discriminator。那discriminator就是让绿点进入discriminator的输出为1, 蓝色输出为0,所以如果你训练了一个discriminator它应该长这个样子:

生成器又希望蓝线可以移向绿线 但调参G可能又使得移动过多, D又有新的判断

G,D反复更新 完全重合时,D无法判别只能都是输出一样的值
实际为高维问题,远比二维复杂。
GAN的基本算法:

二. GAN的Unified Framework
什么是f-divergence、Fenchel Conjugate,然后 Connect to GAN
1. f-divergence
f-divergence论文讲到之前的discriminator和JS-divergence有关,但是可以设计你的discriminator让它跟任何的f-divergence有关。
什么是f-divergence? f可以为很多不同的function,但必须满足(f is convex, f(1) = 0):
假设P, Q为两个分布,p(x)和q(x)为sample x的概率(the probability of sampling x)。

f-divergence为大于等于0的数,当P和Q完全一样的分布时,Df(P||Q)取到最小值0.否则为正数。 证明如下:


f-divergence栗子:
- f = xlogx 为 KL-divergence:

- f = -logx 为Reverse KL-divergence:

- f = (x-1)2 为Chi Squzre:

2. Fenchel Conjugate
每个凸函数f有一个conjugate function f*:

x不同的取值得到不同的直线,横坐标对应不同的t值取所有与直线中取值最大的值,这个操作就得到了红色的线,是个凸函数f*(t)。
Fenchel Conjugate 栗子: 取x为0.1、1、10....

上图看起来像exp指数函数吧,事实上当f(x) = xlogx时, f*(t)就是指数函数exp(t-1) !!! 这个过程怎么算的呢?
很简单,令g(x) = xt- xlogx, 就是给定t,找一个x使得g(x)最大。所以对g(x)微分: t - logx -1 = 0 得到:x = exp(t-1) 带回原式得到f得共轭f*:

3. Connection with GAN
前提了解了 f 与它的共轭好朋友的互推关系:
现在将Df(P||Q)中的 f 带入上式:

上式怎么得出的?假设有个函数叫D, 为一个function,它的输入为x,输出为t。 注意原式中的max{ }一项中为给定一个x找到一个t使得式子最大值,那么这个D为任意一个函数,所以它的输出应是个下界lower bound,所以可以用D来代替t,从而得到了下界:

所以这里的f-divergence有个近似,即找一个D使得式子
最大:

把P、Q代替后有:

算期望值可以利用sample来近似,要找一个PG 和Pdata越相近越好就是解下面这个式子:找一个G来最小化divergence

所以这就推出了原生GAN的优化目标: 
原生GAN论文实现:double-loop algorithm:

f-GAN论文实现:Single -step:

注意G、D的update方向不一样。f-GAN论文中列出了各式各样的f-divergence:


f-GAN的更多相关文章
- PLSQL_通过UTL_MAIL发送并发程式结果报表至用户邮箱(案例)
2014-06-01 Created By BaoXinjian
- Mysql_以案例为基准之查询
查询数据操作
- 用GAN生成二维样本的小例子
同步自我的知乎专栏:https://zhuanlan.zhihu.com/p/27343585 本文完整代码地址:Generative Adversarial Networks (GANs) with ...
- 提高驾驶技术:用GAN去除(爱情)动作片中的马赛克和衣服
同步自我的知乎专栏:https://zhuanlan.zhihu.com/p/27199954 作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章.这篇就介绍利用生成式对抗网络(GAN)的两个基 ...
- GAN 转
生成式对抗网络(GAN)是近年来大热的深度学习模型.最近正好有空看了这方面的一些论文,跑了一个GAN的代码,于是写了这篇文章来介绍一下GAN. 本文主要分为三个部分: 介绍原始的GAN的原理 同样非常 ...
- 生成式模型之 GAN
生成对抗网络(Generative Adversarial Networks,GANs),由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域.2016年,GANs热潮席卷AI ...
- 深度学习之 GAN 进行 mnist 图片的生成
深度学习之 GAN 进行 mnist 图片的生成 mport numpy as np import os import codecs import torch from PIL import Imag ...
- 【深度学习】--GAN从入门到初始
一.前述 GAN,生成对抗网络,在2016年基本火爆深度学习,所有有必要学习一下.生成对抗网络直观的应用可以帮我们生成数据,图片. 二.具体 1.生活案例 比如假设真钱 r 坏人定义为G 我们通过 ...
- 生成式对抗网络(GAN)学习笔记
图像识别和自然语言处理是目前应用极为广泛的AI技术,这些技术不管是速度还是准确度都已经达到了相当的高度,具体应用例如智能手机的人脸解锁.内置的语音助手.这些技术的实现和发展都离不开神经网络,可是传统的 ...
- 论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN
论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN ICCV 2017 Paper: http://op ...
随机推荐
- MT【232】展开式中的系数
$(1+x+x^2+\cdots+x^{100})^3$展开式中$x^{150}$前的系数为_____ 解答:$(1+x+x^2+\cdots+x^{100})^3=(1-x^{101})^3\sum ...
- 点分治模板(洛谷P4178 Tree)(树分治,树的重心,容斥原理)
推荐YCB的总结 推荐你谷ysn等巨佬的详细题解 大致流程-- dfs求出当前树的重心 对当前树内经过重心的路径统计答案(一条路径由两条由重心到其它点的子路径合并而成) 容斥减去不合法情况(两条子路径 ...
- Android自动化测试探索
Android自动化测试探索 前言 通常来说,我们开发完成产品之后,都是由测试组或者是我们自己点一点,基本上没有问题了就开始上线.但是,随着时间的堆叠,一款产品的功能也越来越多.这时,我们为了保证产品 ...
- Java 关键字final的一小结
* final类不能被继承,没有子类,final类中的方法默认是final的. * final方法不能被子类的方法覆盖,但可以别继承 (方法) * final 成员变量 表示常量,只能被赋值一 ...
- 洛谷 P3225 [HNOI2012]矿场搭建 解题报告
P3225 [HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤 ...
- docker的memory和cpu资源限制
这里仅针对docker本身,不涉及任何编排工具compose或者k8s等. 按照惯例,官文撸起来. 重要的部分是一些选项,用来限制资源大小. Memory Most of these options ...
- Codeforces Round #548
没打,简单补档 C.Edgy Trees 容斥,把黑边断掉数联通块,每个联通块贡献$siz^k$ #include<cstdio> #include<cstring> #inc ...
- 决策单调性优化dp
决策单调性: 对于一些dp方程,经过一系列的猜想和证明,可以得出,所有取的最优解的转移点(即决策点)位置是单调递增的. 即:假设f[i]=min(f[j]+b[j]) (j<i) 并且,对于任意 ...
- Hadoop原生态版安装
1 安装环境和必要软件 3 台 ubuntu 16.04 vim 2 创建hadoop用户 sudo useradd -m hadoop -s /bin/bash sudo passwd hadoop ...
- 超详细从零记录Hadoop2.7.3完全分布式集群部署过程
超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...