带你漫游 Wasserstein GAN

前言

上次带大家写了原始版的 GAN,只生成了高斯分布。但兔子哥哥发现在 GAN 论文的底下,有 GAN 生成图片的 example。

因此,这足以说明 GAN 亦有能力生成图片,并非只有 DCGAN 才能生成图片,这一点与我学 GAN 之前的认知大为不同。于是我就开始尝试了使用原始的 GAN 来尝试生成图像,但接下来,我就开始怀疑人生了。

在开始的时候我采用了 MINST 的数据集,按照我上一篇文章兔子哥哥带你从零写一个 GAN中提及的训练 GAN 的方式中连续训练原始 GAN 多次,得到的仍然全是噪点,并没有一点手写数字的影子。

在尝试多次后,未免让我怀疑我是不是读了假论文,自己是不是一只假兔子。

在查阅多番资料后,在知乎偶遇到,令人拍案叫绝的 Wasserstein GAN - 知乎专栏 (下文简称 WGAN) 一文,不读不知道,读了简直惊为天人。读完之后,我打消了原本打算去学习 DCGAN 的念头,改成继续学习 WGAN。因此,本文兔子哥哥将会带读者一起来领略一下 WGAN 的风采。

文章目录如下:

  • 为什么原始 GAN 训练困难重重?
  • WGAN 是什么鬼?
  • WGAN 的个人一些使用经验总结

为什么原始的 GAN 这样问题重重?

令人拍案叫绝的 Wasserstein GAN - 知乎专栏一文中提及(亦是论文中提及),原始 GAN 的优化目标经过一定的数学推断后,可以等价于最小化真实分布 P(r) 与生成分布 P(g) 的 JS 散度。那么什么叫 JS 散度呢,为此我们先引出 KL 散度。

KL 散度又称 KL 距离,亦叫相对熵。这里先给出 KL 散度的公式:

其中 p,g 为 x 的概率分布。在一定程度上,熵这个概念可以度量两个随机变量的距离,因此 KL 散度可衡量两概率分布的差异,特别注意一点是该距离并非对称距离,即:

得知 KL 散度后,那么 JS 散度就很好理解了,JS 散度的表达式是

显然,JS 散度可以解释成用 p 和 q 分布离 pq 的平均分布的相对熵来作为衡量 p,q 间的距离,这个时候,该距离就是对称的了。其中经过数学式子的推断,原始 GAN 的损失函数是可以改写成以下式子:

令人拍案叫绝的 Wasserstein GAN - 知乎专栏中分析了 p,q 各取 0 与非 0 时,对损失函数的影响,而得出的结论是,无论 p 和 q 的取值如何,其 JS 散度都是常数值 log2,既然是常数,优化就无从谈起。

而从另一个更加通俗的角度来说,在优化中,KL 散度和 JS 散度是突变的,这就导致了,如果 D 训练得太好了,那么 G 就会被按在地上摩擦,进而训练 G 的时候梯度将会梯度不稳定,但如过 D 太差了,G 的梯度不正确,会使得 G 往错误的方向前进。这么说来,就好像老婆和老妈掉进河里,你救谁一样,怎么回答的火候是难以把握的。

WGAN 是什么鬼

故名思意,WGAN 就是指用 Wasserstein distance 来替代掉 JS 散度和 KS 散度来作为优化目标的 GAN 模型咯。

那么,什么叫 Wasserstein 距离呢?

下文引用于令人拍案叫绝的 Wasserstein GAN - 知乎专栏

Wasserstein 距离又叫 Earth-Mover(EM)距离,定义如下:

解释如下:是Pγ和Pg组合起来的所有可能的联合分布的集合,反过来说,中每一个分布的边缘分布都是Pγ和Pg。对于每一个可能的联合分布γ而言,可以从中采样得到一个真实样本x和一个生成样本y,并算出这对样本的距离,所以可以计算该联合分布γ下样本对距离的期望值。在所有可能的联合分布中能够对这个期望值取到的下界,就定义为 Wasserstein 距离。

直观上可以把理解为在这个 “路径规划” 下把Pγ这堆 “沙土” 挪到Pg“位置” 所需的 “消耗”,而就是 “最优路径规划” 下的 “最小消耗”,所以才叫 Earth-Mover(推土机)距离。

而对于怎么把 Wasserstein 距离化作我们训练中的损失函数,论文作者使用 Lipschitz 连续即一些已知的数学定理来使得目标函数转化为

存在函数f(w)其满足 Lipschiz 连续,在取上界,此时就是 Wasserstein 距离。显然这个函数可以用深度学习技术来拟合,而 Lipschitz 连续的限制,则可以通过限制每一层神经网络的权重的取值范围来控制。

归纳起来,在 WGAN 中,D 的任务不再是尽力区分生成样本与真实样本,而是尽量拟合出样本间的 Wasserstein 距离,从分类任务转化成回归任务。而 G 的任务则变成了尽力缩短样本间的 Wasserstein 距离。

故 WGAN 对原始 GAN 做出了如下改变:

  • D 的最后一层取消 sigmoid
  • D 的 w 取值限制在 [-c,c] 区间内。
  • 使用 RMSProp 或 SGD 并以较低的学习率进行优化 (论文作者在实验中得出的 trick)

WGAN 的个人一些使用经验总结

这些经验是基于自身的实验得出,仅供参考

  • WGAN 的论文指出使用 MLP,3 层 relu,最后一层使用 linear 也能达到可以接受的效果,但根据我实验的经验上,可能对于彩色图片,因为其数值分布式连续,所以使用 linear 会比较好。但针对于 MINST 上,因为其实二值图片,linear 的效果很差,可以使用 batch normalization + sigmoid 效果更好。
  • 不要在 D 中使用 batch normalization,估计原因是因为 weight clip 对 batch normalization 的影响
  • 使用逆卷积来生成图片会比用全连接层效果好,全连接层会有较多的噪点,逆卷积层效果清晰。
  • 关于衡量指标,Wasserstein distance 距离可以很好的衡量 WGAN 的训练进程,但这仅限于同一次,即你的代码从运行到结束这个过程内。

另外有一点,虽然在 WGAN 的论文里面把原始 GAN 说得那么不堪,但人家原始 GAN 在论文里面也是有成功生成图片的例子,所以特别想问一句,如过有小伙伴用原始 GAN 生成过质量可观的图片的话,欢迎冒泡,交流一下。

这个是我用 WGAN 用拟合出的 MINST 的效果,不算太理想,继续训练应该有较好效果,但 GAN 系列的收敛速度都好像有点感人。。。

后话

参考文献:

令人拍案叫绝的 Wasserstein GAN - 知乎专栏

[1701.07875] Wasserstein GAN

我的 Github,我的 WGAN 的代码可在这里找到

MashiMaroLjc/learn-GAN

个人的学习总结,并非教程,仅供参考,如有错误,欢迎指出和交流。

====================================分割线================================

本文作者:AI研习社

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-09-13 04:26:04

带你漫游 Wasserstein GAN的相关文章

令人拍案叫绝的Wasserstein GAN

在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文<Wassertein GAN>却在Reddit的Machine Learning频道火了,连Goodfellow都在帖子里和大家热烈讨论,这篇论文究竟有什么了不得的地方呢? 要知道自从2014年Ian Goodfellow提出以来,GAN就存在着训练困难.生成器和判别器的loss无法指示训练进程.生成样本缺乏多样性等问题.从那时起,很多论文都在尝试解决,但是效果不尽人意,比如最有名的一个改进DCGAN依靠的是对判别

还记得Wasserstein GAN吗?不仅有Facebook参与,也果然被 ICML 接收 | ICML 2017

雷锋网(公众号:雷锋网) AI 科技评论按:Facebook列出了自己的9篇 ICML 2017论文,Wasserstein GAN 赫然位列其中. ICML 2017 仍然在悉尼火热进行中,Facebook 研究院今天也发文介绍了自己的 ICML 论文.Facebook有9篇论文被 ICML 2017接收,这些论文的主题包括语言建模.优化和图像的无监督学习:另外 Facebook 还会共同参与组织 Video Games and Machine Learning Workshop. 曾掀起研究

蒙特利尔大学研究者改进Wasserstein GAN,极大提高GAN训练稳定性

生成对抗网络(GAN)是一种强大的生成模型,但是自从2014年Ian Goodfellow提出以来,GAN就存在训练不稳定的问题.最近提出的 Wasserstein GAN(WGAN)在训练稳定性上有极大的进步,但是在某些设定下仍存在生成低质量的样本,或者不能收敛等问题. 近日,蒙特利尔大学的研究者们在WGAN的训练上又有了新的进展,他们将论文<Improved Training of Wasserstein GANs>发布在了arXiv上.研究者们发现失败的案例通常是由在WGAN中使用权重剪

(转) Read-through: Wasserstein GAN

Sorta Insightful Reviews Projects Archive Research About  In a world where everyone has opinions, one man...also has opinions Read-through: Wasserstein GAN Feb 22, 2017 I really, really like the Wasserstein GAN paper. I know it's already gotten a lot

引入秘密武器强化学习,发掘GAN在NLP领域的潜力

1.基础:文本生成模型的标准框架文本生成(Text Generation)通过 机器学习 + 自然语言处理 技术尝试使AI具有人类水平的语言表达能力,从一定程度上能够反应现今自然语言处理的发展水平. 下面用极简的描述介绍一下文本生成技术的大体框架,具体可以参阅各种网络文献(比如:CSDN经典Blog"好玩的文本生成"[1]),论文等. 文本生成按任务来说,比较流行的有:机器翻译.句子生成.对话生成等,本文着重讨论后面两种. 基于深度学习的Text Generator 通常使用循环神经网

深度学习界明星:生成对抗网络与Improving GAN

2014年,深度学习三巨头之一IanGoodfellow提出了生成对抗网络(Generative Adversarial Networks, GANs)这一概念,刚开始并没有引起轰动,直到2016年,学界.业界对它的兴趣如"井喷"一样爆发,多篇重磅文章陆续发表.2016年12月NIPS大会上,Goodfellow做了关于GANs的专题报告,使得GANs成为了当今最热门的研究领域之一,本文将介绍如今深度学习界的明星--生成对抗网络. 1何为生成对抗网络 生成对抗网络,根据它的名字,可以推

强化学习在生成对抗网络文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

1.基础:文本生成模型的标准框架 文本生成(Text Generation)通过 机器学习 + 自然语言处理 技术尝试使AI具有人类水平的语言表达能力,从一定程度上能够反应现今自然语言处理的发展水平. 下面用极简的描述介绍一下文本生成技术的大体框架,具体可以参阅各种网络文献(比如:CSDN经典Blog"好玩的文本生成"[1]),论文等. 文本生成按任务来说,比较流行的有:机器翻译.句子生成.对话生成等,本文着重讨论后面两种.基于深度学习的Text Generator 通常使用循环神经网

AI人工智能专业词汇集

作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客.论文.专家观点等内容上已经积累了超过两年多的经验.期间,从无到有,机器之心的编译团队一直在积累专业词汇.虽然有很多的文章因为专业性我们没能尽善尽美的编译为中文呈现给大家,但我们一直在进步.一直在积累.一直在提高自己的专业性. 两年来,机器之心编译团队整理过翻译词汇对照表「红宝书」,编辑个人也整理过类似的词典.而我们也从机器之心读者留言中发现,有些人工智能专业词汇没有统一的翻译标准,这可能是因地区.跨专业等等原因造成的.举个例子,Deep

提升效率必备,9 篇论文帮你积累知识点 | PaperDaily #06

自然语言处理 Multi-Task Learning for Speaker-Role Adaptation in Neural Conversation Models @paperweekly 推荐 多任务学习是个非常流行的研究方法,本文针对对话生成任务,给出了一种 seq2seq+autoencoder 的多任务学习方案,取得了一定的效果. 论文链接http://www.paperweekly.site/papers/988 Supervised Speech Separation Base