进一步提升 GAN 的技术 Tips for Improving GAN

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 小于这个阈值就好

原文地址:https://www.cnblogs.com/chaojunwang-ml/p/11447453.html

时间: 2024-07-31 10:18:58

进一步提升 GAN 的技术 Tips for Improving GAN的相关文章

主流开源开发者工具落地阿里云,进一步提升开发者体验

摘要: 在云计算大数据时代,企业的不断上云,业务的不断发展,技术架构的不断演进,导致资源.应用和数据的管理成本不断增加,运维难度不断加大.业务场景的不断和复杂和变化,不得不引起我们更多的思考: 在云计算大数据时代,企业的不断上云,业务的不断发展,技术架构的不断演进,导致资源.应用和数据的管理成本不断增加,运维难度不断加大.业务场景的不断和复杂和变化,不得不引起我们更多的思考: 业务基础设施架构如此复杂,是否可以实现一键搭建?自定义云镜像,能否实现批量生产?数据安全,是企业和个人最关心的事儿- A

干货!总结19个提升iOS开发技术的必看教程!

又到了ibnShawari一周一篇技术推送的时间了,今天我为大家带来了iOS开发篇,绝对实用,绝对简单!!! 注意!!本课程采用了一种系统且全面的方式学习:赶快来学习,体验这种方法的魔力吧!! 干货!总结19个提升iOS开发技术的必看教程!        本系列教程采用了最新的IOS开发技术进行讲解,视频中所有的例子都在最新的编译器中调试通过.理论上所有的例子都可以在成功运行.本路线图提供的视频课程是全网最深入,最全.通过对本路线图的学习,学员可以充分掌握IOS的开发过程,并具有一定的项目实战经

6个常用Excel函数,帮你进一步提升工作效率,职场必备!

我们处理Excel数据报表时候,经常因为对函数的不熟练,导致我们在插入函数时候出现不显示情况. 那么我们如何才能避免这些情况呢?不用担心今天为大家整理了6个我们办公常用到的Excel函数,学会巧妙使用它们轻松帮你进一步提升工作效率,职场必备良品之一! 获取日期里面是星期几 大家都是到在Excel里面获取日期是[Ctrl+:],但却并不知道如何才能从日期里面获取今天是周几,这时候不妨试试这个函数公式. 获取星期函数公式=TEXT(A2,"AAAA") 获取数据排名 如何才能将Excel里

阿里云负载均衡升级:同城容灾进一步提升可用性

为了向广大SLB用户提供更加稳定可靠的负载均衡服务,近期阿里云对其SLB系统进行了升级,优先在杭州和青岛地域部署了同城容灾的本地高可用解决方案,下面就让我们一起来了解一下SLB同城容灾方案. 什么是同城容灾? SLB集群本身,已经实现了各种冗余,包括电力.网络.服务器等.我们单集群可以防止“单路电力故障”.“单边网络故障”.“服务硬件故障”.“系统意外宕机”甚至“整(一)个机柜突然掉电.突然断网.突然宕机”等故障对用户对外服务造成的影响. 但是更大范围的故障,比如整个数据中心不可用,已经不能从S

如何确定怎样进一步提升学习算法的性能

当我们成功实现一个机器学习算法并将其用于解决实际问题时,常常会发现它的性能 (分类.回归准确度)达不到我们足够满意的状态.在这种情况下,我们有以下六种选项 来提高当前算法的性能 1 增加training set的数目 这种方法适合模型发生过拟合的情况 2 减小feature的数量(使用更少feature) 这种方法适合模型发生过拟合 3 增加feature的数量(使用更多feature) 这种方法适合模型发生欠拟合 4 增加多项式feature  这种方法适合发生欠拟合的模型 5 减小λ 适合欠

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

GAN:通过 将 样本 特征 化 以后, 告诉 模型 哪些 样本 是 黑 哪些 是 白, 模型 通过 训练 后, 理解 了 黑白 样本 的 区别, 再输入 测试 样本 时, 模型 就可以 根据 以往 的 经验 判断 是 黑 还是 白. 与 这些 分类 的 算法 不同, GAN 的 基本 原理 是, 有两 个 相生相克 的 模型 Generator 和 Discriminator,Generator 随机 生成 样本, Discriminator 将 真实 样本 标记 为 Real, 将 Gene

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

InfoGAN 期望的是 input 的每一个维度都能表示输出数据的某种特征.但实际改变输入的一个特定维度取值,很难发现输出数据随之改变的规律. InfoGAN 就是想解决这个问题.在 GAN 结构以外,把输入 z 分成两个部分 c 和 z' ,然后根据 generated data x 来预测给到 generator 的 c 是什么,这里的ae 做的事情是 code-x-code.同时还需要 discriminator 来配合,x 还必须要足够像目标数据(要不 generator 直接把 c

李宏毅 2018最新GAN课程 class 3 Theory behind GAN

Too much limitation of Gaussian model. The images are too blurry. So any general model? But if PG(x;θ) is a neural network, it's impossible to calculate the likelihood. ???? We don't know the formulation of PG and Pdata, so how to calculate the diver

上班的第四百四十九天

今天其实是不用写日志的,毕竟我今天不用上班,但是由于昨天上了半天班后请假了,外加昨晚陪老爸喝了两杯,直接就去睡觉了,所以今天补一补. 昨天我已经和周工说了,说我要辞职了,他想了一下,就觉得我这样做是对的.虽然他也想留我,但是他也知道公司的情况,这样的公司只能用来学习,没得发展的.和周工聊完后就找向本谈了下,从他进来到现在都是我带的,虽然他有潜质,但是一直都没有发挥出来,很大原因就是我的存在.他总觉得可以依靠我,所以很多事情都不会想着自己去弄,就随便弄一下,然后我去帮他收拾收拾就好了.我知道的,但