Wasserstein GAN (WGAN)

在一些情况下,用 JS散度来衡量两个分布的远近并不适合:

  1. 数据是高维空间中的低维流形(manifold),两个分布在高维空间中的 overlap 少到可以忽略。

  

  2. 由于 sampling 的局限性,即使两个分布之间真的存在一定的 overlap,但如果采样的数据不够多的话,可能实际上并不能体现出来。

  

在这种情况,GAN 训练过程中用JS散度来衡量分布之间的距离,即使已经很接近但是没有重合,还是会计算为常数 2log2,那在训练 D 的过程中 loss 就没有改变,梯度也就一直不变,整个 GAN 的 minmax 训练就变得困难。

Earth Mover’s Distance

不用JS散度,用 The Earth Mover's Distance http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/RUBNER/emd.htm

所有的 moving plan 中平均距离最小的

好处就是,即使两个分布没有overlap,还是能够体现出距离远近。怎么应用到 GAN 的目标函数中呢?

把 D 的最后一层的 sigmoid 函数拿掉,让 D 变成一个 real-value function ,但必须是 1-Lipschitz 连续的。(就是要让这个函数平滑,避免无法收敛的情况)

Lipschitz 函数的定义,K=1 的时候就是 1-Lipschitz 函数,y的变化总是比x的变化要小,就会比较平滑。

实施 1-Lipschitz 约束的方法:

  1. weight clipping:Force the parameters w between c and -c. After parameter update, if w > c, w = c; if w < -c, w = -c. 但是这个做法比较粗糙,会导致 weights 大部分都直接被截在+c和-c,相当于减弱了NN的拟合能力。

  2. gradient penalty(WGAN-GP):A differentiable function is 1-Lipschitz if and only if it has gradients with norm less than or equal to 1 everywhere. 这个做法就是从 1-Lipschitz 函数定义出发了,但没办法真的做到对 x 积分,所以通过在P_data 和 P_G 之间随机插值采样来实现 from P_penalty 对里面的 max 函数求期望,近似积分项。

  

  为什么是在 P_data 和 P_G 之间插值呢?

  因为论文中表示,这样做效果好。而且这个区域的点能够反映 how P_G moves to P_data,其他的 region 反正 P_G 也走不到,干脆就不管它。

  

  实际做的时候,gradient 的 norm 大于或小于 1 都会惩罚,原因也是做实验效果好:

  

  3. Spectrum Norm

总结一下,WGAN:

Energy-based GAN (EBGAN) 

用一个 ae 来当作 discriminator,generator不改变。不用二分类器来做判别,而是依据自编码器的 negative reconstruction error 。这样做的好处是 ae 可以事先单独拿出来只用real data 就能 pre-train 。

另外一个要特别注意的是,并不是要让 generated data 的 reconstruction error 越大越好,所以要设置一个margin,generated data 的 reconstruction error 小于这个阈值就好

提升GAN的技术 Tips for Improving GAN的更多相关文章

  1. TIPS FOR IMPROVING PERFORMANCE OF KAFKA PRODUCER

    When we are talking about performance of Kafka Producer, we are really talking about two different t ...

  2. tflearn kears GAN官方demo代码——本质上GAN是先训练判别模型让你能够识别噪声,然后生成模型基于噪声生成数据,目标是让判别模型出错。GAN的过程就是训练这个生成模型参数!!!

    GAN:通过 将 样本 特征 化 以后, 告诉 模型 哪些 样本 是 黑 哪些 是 白, 模型 通过 训练 后, 理解 了 黑白 样本 的 区别, 再输入 测试 样本 时, 模型 就可以 根据 以往 ...

  3. GAN生成的评价指标 Evaluation of GAN

    传统方法中,如何衡量一个generator ?-- 用 generator 产生数据的 likelihood,越大越好. 但是 GAN 中的 generator 是隐式建模,所以只能从 P_G 中采样 ...

  4. 基于GAN的特征抽取 Feature Extraction by GAN

    InfoGAN 期望的是 input 的每一个维度都能表示输出数据的某种特征.但实际改变输入的一个特定维度取值,很难发现输出数据随之改变的规律. InfoGAN 就是想解决这个问题.在 GAN 结构以 ...

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

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

  6. 生成对抗网络(Generative Adversarial Networks,GAN)初探

    1. 从纳什均衡(Nash equilibrium)说起 我们先来看看纳什均衡的经济学定义: 所谓纳什均衡,指的是参与人的这样一种策略组合,在该策略组合上,任何参与人单独改变策略都不会得到好处.换句话 ...

  7. 学习笔记GAN003:GAN、DCGAN、CGAN、InfoGAN

    ​GAN应用集中在图像生成,NLP.Robt Learning也有拓展.类似于NLP中的Actor-Critic. https://arxiv.org/pdf/1610.01945.pdf . Gen ...

  8. 深度学习新星:GAN的基本原理、应用和走向

    深度学习新星:GAN的基本原理.应用和走向 (本文转自雷锋网,转载已获取授权,未经允许禁止转载)原文链接:http://www.leiphone.com/news/201701/Kq6FvnjgbKK ...

  9. [GAN] Generative networks

    中文版:https://zhuanlan.zhihu.com/p/27440393 原文版:https://www.oreilly.com/learning/generative-adversaria ...

随机推荐

  1. javascript 数据结构与算法---二叉数

    二叉树,首先了解一些关于二叉数的概念(来自百度百科) 1. 二叉树(Binary tree)是树形结构的一个重要类型 2. 定义: 二叉树(binary tree)是指树中节点的度不大于2的有序树,它 ...

  2. h5c3

    HTML5 第一天 一.什么是 HTML5 HTML5 的概念与定义 定义:HTML5 定义了 HTML 标准的最新版本,是对 HTML 的第五次重大修改,号称下一代的 HTML 两个概念: 是一个新 ...

  3. 力扣Leetcode 1518. 换酒问题

    小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒.你购入了 numBottles 瓶酒. 如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的. 请你计算 最多 能喝到多少瓶酒. 示例: ...

  4. 学完Python,我决定熬夜整理这篇总结

    目录 了解Python Python基础语法 Python数据结构 数值 字符串 列表 元组 字典 集合 Python控制流 if 判断语句 for 循环语句 while 循环语句 break 和 c ...

  5. 《神经网络的梯度推导与代码验证》之FNN(DNN)前向和反向过程的代码验证

    在<神经网络的梯度推导与代码验证>之FNN(DNN)的前向传播和反向梯度推导中,我们学习了FNN(DNN)的前向传播和反向梯度求导,但知识仍停留在纸面.本篇章将基于深度学习框架tensor ...

  6. IO优化

    Linux性能优化之CPU.内存.IO优化 https://blog.csdn.net/zyc88888/article/details/79027944 iOS的I/O操作 https://www. ...

  7. P1082 同余方程(拓展欧几里德)

    题目描述 求关于xx的同余方程 a x \equiv 1 \pmod {b}ax≡1(modb) 的最小正整数解. 输入输出格式 输入格式: 一行,包含两个正整数 a,ba,b,用一个空格隔开. 输出 ...

  8. Stack (30)(模拟栈,输出中间数用set)

    Stack is one of the most fundamental data structures, which is based on the principle of Last In Fir ...

  9. HDU-Tick and Tick

    The three hands of the clock are rotating every second and meeting each other many times everyday. F ...

  10. 伪距定位算法(matlab版)

    在各种伪距定位算法中,最小二乘法是一种比较简单而广泛的方法,该算法可以分为以下几步: 1.准备数据与设置初始值 这里准备数据,主要是对于各颗可见卫星,收集到它们在同一时刻的伪距测量值,计算测量值的各项 ...