©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

今天介绍一篇比较经典的工作,作者命名为 f-GAN,他在文章中给出了通过一般的 f 散度来构造一般的 GAN 的方案。可以毫不夸张地说,这论文就是一个 GAN 模型的“生产车间”,它一般化的囊括了很多 GAN 变种,并且可以启发我们快速地构建新的 GAN 变种(当然有没有价值是另一回事,但理论上是这样)。

论文链接:https://arxiv.org/abs/1606.00709

局部变分

整篇文章对 f 散度的处理事实上在机器学习中被称为“局部变分方法”,它是一种非常经典且有用的估算技巧。事实上本文将会花大部分篇幅介绍这种估算技巧在 f 散度中的应用结果。至于 GAN,只不过是这个结果的基本应用而已。

f散度

首先我们还是对 f 散度进行基本的介绍。所谓 f 散度,是 KL 散度的一般化:

注意,按照通用的约定写法,括号内是 p/q 而不是 q/p,大家不要自然而言地根据 KL 散度的形式以为是 q/p。

可以发现,这种形式能覆盖我们见过的很多概率分布之间的度量了,这里直接把论文中的表格搬进来(部分)。

凸函数

上面列举了一堆的分布度量以及对应的 f ,那么一个很自然的问题是这些 f 的共同特点是什么呢?

答案是:

1. 它们都是非负实数到实数的映射();

2. f(1)=0;

3. 它们都是凸函数。

第一点是常规的,第二点  f(1)=0 保证了 ,那第三点凸函数是怎么理解呢?其实它是凸函数性质的一个最基本的应用,因为凸函数有一个非常重要的性质(詹森不等式):

也就是“函数的平均大于平均的函数”,有些教程会直接将这个性质作为凸函数的定义。而如果 f(u) 是光滑的函数,我们一般会通过二阶导数 f′′(u) 是否恒大于等于 0 来判断是否凸函数。

利用 (2),我们有:

也就是说,这三个条件保证了 f 散度是非负,而且当两个分布一模一样时 f 散度就为 0,这使得  可以用来简单地度量分布之间的差异性。当然,f 散度原则上并没有保证 P≠Q 时 。但通常我们会选择严格凸的 f(即 f′′(u) 恒大于 0),那么这时候可以保证 P≠Q 时 ,也就是说这时候有 

注:即便如此,一般情况下  仍然不是满足公理化定义的“距离”,不过这个跟本文主题关系不大,这里只是顺便一提。

凸共轭

现在从比较数学的角度讨论一下凸函数,一般地,记凸函数的定义域为 D(对于本文来说,)。选择任意一个点 ξ,我们求 y=f(u) 在 u=ξ 处的切线,结果是:

考虑两者的差函数:

所谓凸函数,直观理解,就是它的图像总在它的(任意一条)切线上方,因此对于凸函数来说下式恒成立。

整理成:

因为不等式是恒成立的,并且等号是有可能取到的,因此可以导出:

换新的记号,记 t=f′(ξ),并从中反解出 ξ(对于凸函数,这总能做到,读者可以自己尝试证明),然后记:

那么就有:

这里的 g(t) 就称为 f(u) 的共轭函数。留意花括号里边的式子,给定 f 后,g 也确定了,并且整个式子关于 u 是线性的。所以总的来说,我们做了这样的一件事情:

对一个凸函数给出了线性近似,并且通过最大化里边的参数就可以达到原来的值。

注意给定 u,我们都要最大化一次 t 才能得到尽可能接近 f(u) 的结果,否则随便代入一个 t,只能保证得到下界,而不能确保误差大小。所以它称为“局部变分方法”,因为要在每一个点(局部)处都要进行最大化(变分)。这样一来,我们可以理解为 t 实际上是 u 的函数,即:

上述讨论过程实际上已经给出了计算凸共轭的方法,在这里我们直接给出上表对应的凸函数的共轭函数。

注:这里的 W 为朗伯 W 函数。

https://en.wikipedia.org/wiki/Lambert_W_function

f-GAN

由上述推导,我们就可以给出 f 散度的估算公式,并且进一步给出 f-GAN 的一般框架。

f散度估计

计算 f 散度有什么困难呢?根据定义 (1) ,我们同时需要知道两个概率分布 P , Q 才可以计算两者的 f 散度,但事实上在机器学习中很难做到这一点,有时我们最多只知道其中一个概率分布的解析形式,另外一个分布只有采样出来的样本,甚至很多情况下我们两个分布都不知道,只有对应的样本(也就是说要比较两批样本之间的相似性),所以就不能直接根据 (1) 来计算 f 散度了。

结合 (1) 和 (11) ,我们得到:

将  记为整体 T(x),那么就有:

式 (13) 就是估计 f 散度的基础公式了。意思就是说:分别从两个分布中采样,然后分别计算 T(x) 和 g(T(x)) 的平均值,优化 T,让它们的差尽可能地大,最终的结果就是f散度的近似值了。显然 T(x) 可以用足够复杂的神经网络拟合,我们只需要优化神经网络的参数。

注意在对凸函数的讨论中,我们在最大化目标的时候,对 T 的值域是有限制的。因此,在 T 的最后一层,我们必须设计适当的激活函数,使得 T 满足要求的值域。当然激活函数的选择不是唯一的,参考的激活函数已经列举在前表。注意,尽管理论上激活函数的选取是任意的,但是为了优化上的容易,应该遵循几个原则:

1. 对应的定义域为 R,对应的值域为要求值域(边界点可以忽略);

2. 最好选择全局光滑的函数,不要简单地截断,例如要求值域为 R+ 的话,不要直接用 relu(x),可以考虑的是  或者 

3. 注意式 (13) 的第二项包含了 g(T(x)),也就是 g 和 T 的复合计算,因此选择激活函数时,最好使得它与 g 的复合运算比较简单。

GAN批发

好了,说了那么久,几乎都已经到文章结尾了,似乎还没有正式说到 GAN。事实上,GAN 可以算是整篇文章的副产物而已。

GAN 希望训练一个生成器,将高斯分布映射到我们所需要的数据集分布,那就需要比较两个分布之间的差异了,经过前面的过程,其实就很简单了,随便找一种 f 散度都可以了。然后用式 (13) 对 f 散度进行估计,估计完之后,我们就有 f 散度的模型了,这时候生成器不是希望缩小分布的差异吗?最小化 f 散度就行了。所以写成一个表达式就是:

或者反过来:

就这样完了。

需要举几个例子?好吧,先用 JS 散度看看。把所有东西式子一步步代进去,你会发现最终结果是(略去了 log2 的常数项):

其中 D 用  激活。这就是最原始版本的 GAN 了。

用 Hellinger 距离试试?结果是:

这里的 D(x) 是线性激活。这个貌似还没有命名?不过论文中已经对它做过实验了。

那用 KL 散度呢?因为 KL 散度是不对称的,所以有两个结果,分别为:

或:

这里的 D(x) 也是线性激活。

好吧,不再举例了。其实这些 f 散度本质上都差不多,看不到效果差别有多大。不过可以注意到,JS 散度和 Hellinger 距离都是对称的、有界的,这是一个非常好的性质,以后我们会用到。

总结

说白了,本文主要目的还是介绍 f 散度及其局部变分估算而已。所以大部分还是理论文字,GAN 只占一小部分。

当然,经过一番折腾,确实可以达到“GAN 生产车间”的结果(取决于你有多少种f散度),这些新折腾出来的 GAN 可能并不像我们想象中的 GAN,但它们确实在优化 f 散度。不过,以往标准 GAN(对应 JS 散度)有的问题,其实 f 散度照样会有,因此 f-GAN 这个工作更大的价值在于“统一”,从生成模型的角度,并没有什么突破。

点击以下标题查看更多往期内容:

  • 万字综述之生成对抗网络(GAN)

  • 从DCGAN到SELF-MOD:GAN的模型架构发展一览

  • 从动力学角度看优化算法:GAN的第三个阶段

  • 简单修改,让GAN的判别器变成一个编码器

  • 详解GAN的谱归一化(Spectral Normalization)

  • 超详综述:GAN在图像生成上的应用

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

???? 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

???? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site

• 所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

▽ 点击 | 阅读原文 | 查看作者博客

f-GAN简介:GAN模型的生产车间相关推荐

  1. Designing GANs:又一个GAN生产车间

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 在 2018 年的文章里 f-GAN 简介:GAN 模型的生产车间笔者介绍了 f-GAN,并评价其为 GA ...

  2. GAN简介及其常见应用

    https://www.toutiao.com/a6665986672145990156/ GAN简介及其常见应用 很长一段时间,只有人类有能力创造,人工智能唯一的好处是解决回归,分类和聚类等问题,但 ...

  3. gan简介_GAN简介

    gan简介 目录: (TABLE OF CONTENTS:) INTRODUCTION介绍 HISTORY OF GANsGAN的历史 INTUITIVE EXPLANATION OF GANsGAN ...

  4. 图像生成王者不是GAN?扩散模型最近有点火:靠加入类别条件,效果直达SOTA

    博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI OpenAI刚刚推出的年末新作GLIDE,又让扩散模型小火了一把. 这个基于扩散模型的文本图像生成大模型参数规模更小,但生成的图像质量却更高 ...

  5. GAN、扩散模型应有尽有,CMU出品的生成模型专属搜索引擎Modelverse来了

    关注公众号,发现CV技术之美 本文转载自机器之心. 生成模型也有自己的搜索引擎啦! 从前几年出尽风头的 GAN 到今年独占鳌头的 Stable Diffusion,预训练生成模型一直风头不减,相关论文 ...

  6. 不服就GAN:GAN网络生成 cifar10 的图片实例(keras 详细实现步骤),GAN 的训练的各种技巧总结,GAN的注意事项和大坑汇总

    GAN 的调参技巧总结 生成器的最后一层不使用 sigmoid,使用 tanh 代替 使用噪声作为生成器的输入时,生成噪声的步骤使用 正态分布 的采样来产生,而不使用均匀分布 训练 discrimin ...

  7. OPENMP学习笔记(1)——简介,模型,运行

    OPENMP学习笔记(1)--简介,模型,运行 简介: OpenMP的英文全称是Open Multiprocessing,一种应用程序接口(API,即Application Program Inter ...

  8. 年产一万吨苹果醋车间布置图、年产50吨羧乙基壳聚糖的工艺设计车间平面布置图、砂石骨料加工系统废水处理车间工艺流程图、氯化苄生产车间平面布置图、年产2000吨聚丙烯腈原丝生产工艺设计车间平面布置图……

    车桥装配线设计图.DWG 汽车轮辋零件图 混凝土搅拌车搅拌系统 60吨转炉吹氩更换小车图纸 汽车柴油箱部件图及其托架零件图 6136车床数控改造 十万辆总装车间平面图 型钢车间平面图 重型卸料小车详细 ...

  9. 车间生产能耗管控方案_SAREN三仁净化工程:锂电池生产车间的设计规范及方案...

    对于锂电池厂厂房装修而言,必须做好车间设计,因为锂电池的生产需要一个洁净的车间环境.锂电池厂厂房装修的车间设计要领主要体现在5方面,即:人员与物料布局.确定清洁度等级.确定空间压力差.确定空间空气平衡 ...

最新文章

  1. C++ Primer 5th笔记(chap 13 拷贝控制) 实例2内存管理测试结果
  2. java+spring+mysql配置_JAVA后台搭建(springboot+mybatis+mysql)项目搭建
  3. linux的shell脚本语法与C语言不同之一
  4. 怎么merge分支_实战 Git 分支策略
  5. discuz 标签详解
  6. namespace! 报错
  7. 【Git】GitHub主页从Dark调回Light的方法
  8. 2017.3.29 越狱 思考记录
  9. pytorch 保存、加载模型
  10. boot客户管理系统源码_「计算机毕设」基于SpringBoot开发的仓库管理系统
  11. mvc ajax 页面不刷新页面,如何在不刷新页面MVC C#的情况下显示不同的值
  12. 华为s5500t服务器硬盘,HuaweiOceanStor1T SAS 7.2K3.5寸WD1003FBYXS5500T存储硬盘
  13. [MATLAB]层次分析法计算权重
  14. C++常用函数(刷PAT甲级总结)
  15. 什么是响应式编程(Reactive Programming)
  16. RMAN准备目录数据库
  17. idean和eclipse快捷键的区别
  18. R语言 因子分析 代码 可视化
  19. pycharm中import caffe/caffe2
  20. 深圳8千名滴滴司机被封号? 官方:只是平台整治

热门文章

  1. [蓝桥杯]2016蓝桥省赛B组题目及详解
  2. 一道笔试题(vue,react)
  3. 用JS实现根据当前时间随机生成流水号或者订单号
  4. MySQL主从复制(Centos6.3MySQL5.6)
  5. [z]IE6各种不兼容问题
  6. JSP中getParameter和getAttribute区别
  7. python 一维数组所有元素是否大于_如何最好在python中将一维数组连续元素分组...
  8. win7触摸板怎么关闭_笔记本电脑触摸板如何开关 笔记本电脑触摸板设置方法【详解】...
  9. java swing点击按钮后输出结果展示_使用Eclipse编写第一个Java程序HelloWorld
  10. oracle 数据库运维技术,Oracle数据库智能运维标准化工艺研究-orastar-DIY数据库运维工具-第1期 导论篇...