学习总结于国立台湾大学 :李宏毅老师

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-divergenceFenchel 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) 为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的更多相关文章

  1. PLSQL_通过UTL_MAIL发送并发程式结果报表至用户邮箱(案例)

    2014-06-01 Created By BaoXinjian

  2. Mysql_以案例为基准之查询

    查询数据操作

  3. 用GAN生成二维样本的小例子

    同步自我的知乎专栏:https://zhuanlan.zhihu.com/p/27343585 本文完整代码地址:Generative Adversarial Networks (GANs) with ...

  4. 提高驾驶技术:用GAN去除(爱情)动作片中的马赛克和衣服

    同步自我的知乎专栏:https://zhuanlan.zhihu.com/p/27199954 作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章.这篇就介绍利用生成式对抗网络(GAN)的两个基 ...

  5. GAN 转

    生成式对抗网络(GAN)是近年来大热的深度学习模型.最近正好有空看了这方面的一些论文,跑了一个GAN的代码,于是写了这篇文章来介绍一下GAN. 本文主要分为三个部分: 介绍原始的GAN的原理 同样非常 ...

  6. 生成式模型之 GAN

    生成对抗网络(Generative Adversarial Networks,GANs),由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域.2016年,GANs热潮席卷AI ...

  7. 深度学习之 GAN 进行 mnist 图片的生成

    深度学习之 GAN 进行 mnist 图片的生成 mport numpy as np import os import codecs import torch from PIL import Imag ...

  8. 【深度学习】--GAN从入门到初始

    一.前述 GAN,生成对抗网络,在2016年基本火爆深度学习,所有有必要学习一下.生成对抗网络直观的应用可以帮我们生成数据,图片. 二.具体 1.生活案例 比如假设真钱 r 坏人定义为G  我们通过 ...

  9. 生成式对抗网络(GAN)学习笔记

    图像识别和自然语言处理是目前应用极为广泛的AI技术,这些技术不管是速度还是准确度都已经达到了相当的高度,具体应用例如智能手机的人脸解锁.内置的语音助手.这些技术的实现和发展都离不开神经网络,可是传统的 ...

  10. 论文笔记: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 ...

随机推荐

  1. BZOJ 400题纪念

    应该是最后一次纪念了吧! 想当年,我可是发过"BZOJ 10题纪念"的人--那时候(一年前?)的自己真的好菜啊,只能说掌握了c++的基础语法的样子.当时觉得省选级别的BZOJ题是世 ...

  2. CF724F Uniformly Branched Trees

    CF724F Uniformly Branched Trees 有根树可以统计.无根树难以统计.因为可以换根. 所以不让换根:只要两个无根树在重心位置不同构,就一定不同构 每个本质不同的树在重心位置统 ...

  3. 关于flex布局,我大多数常用的几个点

    第一类:让两个块级元素居于一行中 效果图如下 第二类:让两个块级元素居于一行的两边显示 效果图如下 第三类:让一个块级元素水平居中显示 效果图如下 第四类:让一个块级元素竖直居中显示 效果图如下 第五 ...

  4. genetic model

    如果CC表示野生基型,CA因表示杂合型突变基因型,AA表示纯合型突变基因型.Recessive Model(隐性模型 ):AA VS (CA+CC);Dominant Model(显性模型):(CA+ ...

  5. (next_permutation) 排列2 hdu 1716

    排列2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. js,mui,jq 操作基本的DOM

    一.HTML <ul> <li>1111111</li> <li>22222222</li> </ul> 二.CSS li{ h ...

  7. H5 手机拨打电话与转到邮箱的标签属性

    <a href="tel:电话号码"></a> <a href-"mailto:邮箱"></a> 说明:第一个标 ...

  8. k8s部署prometheus

    https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content ...

  9. spring @Transactional注解参数详解

    事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: @Transactional public class TestServiceBean imp ...

  10. 数据库入门理论知识介绍以及编译安装MySql

    数据库入门理论知识介绍以及编译安装MySql 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 1.目前90%以上的公司面临的运维的瓶颈都在后端 最常见的2大瓶颈就是: 1&g ...