WGAN(Wasserstein GAN)看这一篇就够啦,WGAN论文解读

zz/2024/5/23 2:34:48

WGAN论文地址:[1701.07875] Wasserstein GAN (arxiv.org)

WGAN解决的问题

原始GAN训练过程中经常遇到的问题:

  1. 模式崩溃,生成器生成非常窄的分布,仅覆盖数据分 布中的单一模式。 模式崩溃的含义是生成器只能生成非常相似的样本(例如 ,MNIST中的单个数字),即生成的样本不是多样的。
  2. 没有指标可以告诉我们收敛情况。生成器和判别器的 loss并没有告诉我们任何收敛相关信息。当然,我们可以通 过不时地查看生成器生成的数据来监控训练进度。但是, 这是一个手动过程。因此,我们需要有一个可解释的指标 可以告诉我们有关训练的进度。

一句话概括:判别器越好,生成器梯度消失越严重。

      GAN网络训练的重点在于均衡生成器与判别器,若判别器太 强,loss没有再下降,生成器学习不到东西,生成图像的质量 便不会再有提升。

        在最优判别器的下,我们可以把原始GAN定义的生成器loss 等价变换为最小化真实分布与生成分布之间的JS散度。 我们越训练判别器,它就越接近最优,最小化生成器的loss也 就会越近似于最小化真实分布与生成分布之间的JS散度。

关键点就在于如何评价生成图片和真实图片之间的距离

 JS散度存在的问题

如果希望两个分布之间越接近它们的JS散度越小,我们通过 优化JS散度就能将生成分布拉向真实分布,最终以假乱真。 这个希望在两个分布有所重叠的时候是成立的,但是如果两 个分布完全没有重叠的部分,或者它们重叠的部分可忽略, 那它们的JS散度就一直是 log2。

在原始GAN的(近似)最优判别器下,生成器loss面临梯度 消失问题。 也面临优化目标荒谬、梯度不稳定、对多样性与准确性惩罚 不平衡导致mode collapse问题。

原始GAN问题的根源可以归结为两点,

  1. 等价优化的距离衡量(JS散度)不合理
  2. 生成器随机初始化后的生成分布很难与真实分布有不可 忽略的重叠

Wasserstein GAN(WGAN)就是希望解决上述两个问题

解决原始GAN问题的方法

解决问题的关键在于使用 Wasserstein距离 衡量两个分布之间的距离 Wasserstein距离 优越性在于: 即使两个分布没有任何重叠,也可以反应他们之间的距离。

Wasserstein距离

P和Q为两个分布:P分布为一堆土,Q分布为要移到的目标,那么要移动P达到Q,哪种距离更小呢?

最好的移动方案: 

使用Wasserstein距离, 无论两个分布多远,都有梯度,都是可以更新的

WGAN设计 

原始的生成对抗网络,所要优化的目标函数为:

 此目标函数可以分为两部分来看: ①固定生成器 G,优化判别器 D, 则上式可以写成如下形式:

可以转化为最小化形式: 

②固定判别器 D,优化生成器 G,舍去前面的常数,

相当于最小化: 

我们要构建一个判别器 D,使得 D 的参数不超过某个固定的 常数,最后一层是非线性层,并且使下面式子最大化:

 这是一种数学的近似,同要求梯度变化的不要太猛。那么怎么梯度更新呢?因为D有了限制,无法直接利用SGD。 这里引入一种方法:Weight clipping 就是强制令权重w 限制在c ~ -c之间。在参数更新后,如果 w>c,则令w=c, 如果w<-c,则令w=-c

WGAN的实现

WGAN与原始GAN第一种形式相比,只改了四点:

  1. 判别器最后一层去掉sigmoid
  2. 生成器和判别器的loss不取log
  3. 每次更新判别器的参数之后把它们的值截断到不超过一个 固定常数c
  4. 不要用基于动量的优化算法(包括momentum和 Adam),推荐RMSProp

WGAN本作引入了Wasserstein距离,由于它相对KL散度与JS 散度具有优越的平滑特性,理论上可以解决梯度消失问题。接 着通过数学变换将Wasserstein距离写成可求解的形式,利用 一个参数数值范围受限的判别器神经网络来较大化这个形式, 就可以近似Wasserstein距离。

WGAN既解决了训练不稳定的问题,也提供了一个可靠的训 练进程指标,而且该指标确实与生成样本的质量高度相关。


http://www.ngui.cc/zz/2390070.html

相关文章

图文详解WGAN及其变体WGAN-GP并利用Tensorflow2实现WGAN与WGAN-GP

图文详解WGAN及其变体WGAN-GP并利用Tensorflow2实现WGAN与WGAN-GP构建WGAN&#xff08;Wasserstein GAN&#xff09;&#xff37;asserstein loss介绍1-Lipschitz约束的实现训练过程实现梯度惩罚&#xff08;WGAN-GP&#xff09;完整代码构建WGAN&#xff08;Wasserstein GAN&a…

植物大战僵尸无尽模式最强阵容可以无限打

植物大战僵尸无尽模式最强阵容 话不多说直接上图&#xff1a; 这就是最终阵容&#xff0c;本人亲测可以打到200关不死&#xff0c;有毅力的话可以无限打下去&#xff0c;关键的关键是你必须能合理把控玉米加农炮的时机。 图片是之前打的图了&#xff0c;我给的阵容图比图中11…

关于前端配置微信重定向导致ios调用微信方法配置失败解决方案

1、背景 由于某些原因要前端来直接写微信重定向地址 2、隐患 微信ios传过去的地址不是后台appid配置的地址&#xff0c;导致签名出错&#xff0c;不能调用微信提供sdk 3、解决方案 获取url时不用 url window.location.href 改为&#xff1a; url window.location.origin win…

iOS微信小程序webview,ios内嵌H5页面左滑关闭视频或者音频还在播放

iOS微信小程序webview&#xff0c;ios内嵌H5页面左滑关闭视频或者音频还在播放 表现 iosAPP中的内嵌H5页面&#xff0c;点击返回按钮或者左滑&#xff0c;音频还在播放 解决办法 可在页面隐藏时&#xff0c;将视频或者音频暂停 var video document.querySelector(video);…

vue微信H5自定义分享兼容ios、PC、安卓

1.安装微信sdk yarn add weixin-js-sdk // 安装依赖 // 或者在index.html引入<script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>// 用依赖包在main.js引入 import wx from weixin-js-sdk Vue.prototype.$wx wx 2.配置 &#xff…

ios微信公众号返回上一级页面的时候页面数据没有刷新

vue项目&#xff0c;运行在微信公众号&#xff0c;测试ios设备的时候发现从数据总览页点击一个新的页面&#xff0c;执行部分操作后&#xff0c;总览页面的数据应该被修改的&#xff0c;但是点击返回只会&#xff0c;总览页面还是旧数据&#xff0c;手动点击刷新之后数据才被修…

uniapp接入微信分享iOS总是跳转两次

配置了N遍&#xff0c;依旧跳转两次&#xff0c;最终倒在了打包签名的方式上面。 先打越狱包&#xff0c;然后再进行签名&#xff0c;这样的包iOS可以微信分享&#xff0c;但是每次都是两次。直接打包正式包或基座包&#xff0c;iOS微信分享正常 uniapp配置文件 /* ios打包配置…

IOS实现微信授权登录

IOS实现微信授权登录 微信是一个在开发中经常会使用到的平台&#xff0c;比如微信登录、授权、支付、分享。今天我们来看看如何在自己的应用里面集成微信授权。 1、微信授权的定义 微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站&#xff0c;在微信用户授…

xcode 配置wechat_iOS 13 Xcode 11.3 微信SDK版本 1.8.6 关于微信登录和微信支付的回调...

创建项目时使用的Xcode 版本是 11.3 , AppDelegate 已拆分开来 ,存在ScaneDelegate 窗口代理 , 微信SDK也更新到最新版本, 1.8.6, 如果Xcode 的版本低于11, 在AppDelegate 没有被拆分的时候创建的项目 . 使用微信登录或支付在 iOS 系统版本 13 以上都是OK 的 , 需要讲的是高版本…

iOS微信授权登录中Universal Link(通用链接)的配置 ,解决ios13,ios14微信支付不走回调问题

这里写自定义目录标题 简介Unuversal Links介绍配置Unuversal Links 1.苹果开发者账号打开配置2.XCode工程配置3.配置JSON文件4.后台服务器配置5.微信开放平台配置6.初始化代码简介 随着iOS和微信SDK版本的更新&#xff0c;有变化。 新版本&#xff0c;需要配置Unuversal Lin…