深度学习之生成对抗网络(7)WGAN原理

2023-11-09

深度学习之生成对抗网络(7)WGAN原理


 WGAN算法从理论层面分析了GAN训练不稳定的原因,并提出了有效的解决方法。那么是什么原因导致了GAN训练如此不稳定呢?WGAN提出是因为JS散度在不重叠的分布 p p p q q q上的梯度曲面是恒定为0的。如下图所示。当分布p和q不重叠时,JS散度的梯度值始终为0,从而导致此时GAN的训练出现梯度弥散现象,参数长时间得不到更新,网络无法收敛。

图1. JS散度出现梯度弥散现象


 接下来我们将详细阐述JS散度的缺陷以及怎么解决此缺陷。


1. JS散度的缺陷

为了避免过多的理论推导,我们这里通过一个简单的分布实例来解释JS散度的缺陷。
考虑完全不重叠( θ ≠ 0 θ≠0 θ=0)的两个分布 p p p q q q,其中 p p p为:
∀ ( x , y ) ∈ p , x = 0 , y ∼ U ( 0 , 1 ) ∀(x,y)∈p,x=0,y\sim\text{U}(0,1) (x,y)p,x=0,yU(0,1)
分布 q q q为:
∀ ( x , y ) ∈ q , x = θ , y ∼ U ( 0 , 1 ) ∀(x,y)∈q,x=θ,y\sim\text{U}(0,1) (x,y)q,x=θ,yU(0,1)
其中 θ ∈ R θ∈R θR,当 θ = 0 θ=0 θ=0时,分布 p p p q q q重叠,两者相等;当 θ ≠ 0 θ≠0 θ=0时,分布 p p p q q q不重叠。

图2. 分布$p$和$q$示意图


 我们来分析上述分布 p p p q q q之间的JS散度随 θ θ θ的变化情况。根据KL散度与JS散度的定义,计算 θ = 0 θ=0 θ=0时的JS散度 D J S ( p ∣ ∣ q ) D_{JS} (p||q) DJS(pq)
D K L ( p ∣ ∣ q ) = ∑ x = 0 , y ∼ U ( 0 , 1 ) 1 ⋅ log ⁡ 1 0 = + ∞ D_{KL} (p||q)=∑_{x=0,y\sim\text{U}(0,1)}1\cdot\text{log}⁡\frac{1}{0}=+∞ DKL(pq)=x=0,yU(0,1)1log01=+
D K L ( q ∣ ∣ p ) = ∑ x = θ , y ∼ U ( 0 , 1 ) 1 ⋅ log ⁡ 1 0 = + ∞ D_{KL} (q||p)=∑_{x=θ,y\sim\text{U}(0,1)}1\cdot\text{log}⁡\frac{1}{0}=+∞ DKL(qp)=x=θ,yU(0,1)1log01=+
D J S ( p ∣ ∣ q ) = 1 2 ( ∑ x = 0 , y ∼ U ( 0 , 1 ) 1 ⋅ log 1 1 / 2 + ∑ x = 0 , y ∼ U ( 0 , 1 ) 1 ⋅ log 1 1 / 2 ) = log ⁡ 2 D_{JS} (p||q)=\frac{1}{2} \bigg(∑_{x=0,y\sim\text{U}(0,1)}1\cdot\text{log}\frac{1}{1/2}+∑_{x=0,y\sim\text{U}(0,1)}1\cdot\text{log}\frac{1}{1/2}\bigg)=\text{log}⁡2 DJS(pq)=21(x=0,yU(0,1)1log1/21+x=0,yU(0,1)1log1/21)=log2
 当 θ = 0 θ=0 θ=0时,两个分布完全重叠,此时的JS散度和KL散度都取得最小值,即0:
D K L ( p ∣ ∣ q ) = D K L ( q ∣ ∣ p ) = D J S ( p ∣ ∣ q ) = 0 D_{KL} (p||q)=D_{KL} (q||p)=D_{JS} (p||q)=0 DKL(pq)=DKL(qp)=DJS(pq)=0
从上面的推导,我们可以得到 D J S ( p ∣ ∣ q ) D_{JS} (p||q) DJS(pq) θ θ θ的变化趋势:
D J S ( p ∣ ∣ q ) = { log⁡ 2 θ ≠ 0 0 θ = 0 D_{JS} (p||q) = \begin{cases} \text{log⁡}2 &\text{} θ≠0 \\ 0 &\text{} θ=0 \end{cases} DJS(pq)={log⁡20θ=0θ=0
也就是说,当两个分布完全不重叠时,无论发布之间的距离远近,JS散度为恒定值 log ⁡ 2 \text{log}⁡2 log2,此时JS散度将无法产生有效的梯度信息;当两个分布出现重叠时,JS散度采会平滑变动,产生有效梯度信息;当完全重合后,JS散度取得最小值0.如下图所示,红色的曲线分割两个正态分布,由于两个分布没有重叠,生成样本位置处的梯度值始终为0,无法更新生成网络的参数,从而出现网络训练困难的现象。

图3. JS散度出现梯度弥散现象


 因此,JS散度在分布 p p p q q q不重叠时是无法平滑地衡量分布之间的距离,从而导致此位置上无法产生有效梯度信息,出现GAN训练不稳定的情况。要解决此问题,需要使用一种更好的分布距离衡量标准,使得它即使在分布 p p p q q q不重叠时,也能平滑反映分布之间的真实距离变化。


2. EM距离

 WGAN论文发现了JS散度导致GAN训练不稳定的问题,并引入了一种新的分布距离度量方法:Wasserstein距离,也叫推土机距离(Earth-Mover Distance,简称EM距离),它表示了从一个分布变换到另一个分布的最小代价,定义为:
W ( p , q ) = inf γ ∼ ∏ ( p , q ) E ( x , y ) ∼ γ [ ∥ x − y ∥ ] W(p,q)=\underset{γ\sim∏(p,q)}{\text{inf}}\mathbb E_{(x,y)\simγ} [\|x-y\|] W(p,q)=γ(p,q)infE(x,y)γ[xy]
其中 ∏ ( p , q ) ∏(p,q) (p,q)是分布 p p p q q q组合起来的所有可能的联合分布的集合,对于每个可能的联合分布 γ ∼ ∏ ( p , q ) γ\sim∏(p,q) γ(p,q),计算距离 ∥ x − y ∥ \|x-y\| xy的期望 E ( x , y ) ∼ γ [ ∥ x − y ∥ ] \mathbb E_{(x,y)\simγ} [\|x-y\|] E(x,y)γ[xy],其中 ( x , y ) (x,y) (x,y)采样自联合分布 γ γ γ。不同的联合分布 γ γ γ由不同的期望 E ( x , y ) ∼ γ [ ∥ x − y ∥ ] \mathbb E_{(x,y)\simγ} [\|x-y\|] E(x,y)γ[xy],这些期望中的下确界即定义为分布 p p p q q q的Wasserstein距离。其中 inf ⁡ { ⋅ } \text{inf}⁡\{\cdot\} inf{}表示集合的下确界,例如 { x ∣ 1 < x < 3 , x ∈ R } \{x|1<x<3,x∈R\} {x1<x<3,xR}的下确界为1。

 继续考虑图2中的例子,我们直接给出分布 p p p q q q之间的EM距离的表达式:
W ( p , q ) = ∣ θ ∣ W(p,q)=|θ| W(p,q)=θ
绘制出JS散度和EM距离的曲线,如下图所示,可以看到,JS散度在 θ = 0 θ=0 θ=0处不连续,其他位置导数均为0,而EM距离总能够产生有效的导数信息,因此EM距离相对于JS散度更适合直到GAN网络的训练。

在这里插入图片描述

图4. JS散度和EM距离随$θ$变换曲线

3. WGAN-GP

 考虑到几乎不可能遍历所有的联合分布 γ γ γ去计算距离 ∥ x − y ∥ \|x-y\| xy的期望 E ( x , y ) ∼ γ [ ∥ x − y ∥ ] \mathbb E_{(x,y)\simγ} [\|x-y\|] E(x,y)γ[xy],因此直接计算生成网络分布 p g p_g pg与真实数据数据分布 p r p_r pr的距离 W ( p r , p g ) W(p_r,p_g ) W(pr,pg)距离是不现实的,WGAN作者基于Kantorchovich-Rubin对偶性将直接求 W ( p r , p g ) W(p_r,p_g ) W(pr,pg)转换为求:
W ( p r , p g ) = 1 K sup ∥ f ∥ L ≤ K E x ∼ p r [ f ( x ) ] − E x ∼ p g [ f ( x ) ] W(p_r,p_g )=\frac{1}{K} \underset{\|f\|_L≤K}{\text{sup}} \mathbb E_{x\sim p_r} [f(x)]-\mathbb E_{x\sim p_g} [f(x)] W(pr,pg)=K1fLKsupExpr[f(x)]Expg[f(x)]
其中 sup ⁡ { ⋅ } \text{sup}⁡\{\cdot\} sup{}表示集合的上确界, ∥ f ∥ L ≤ K \|f\|_L≤K fLK表示函数 f : R → R f:R→R f:RR满足K阶-Lipschitz连续性,即满足
∣ f ( x 1 ) − f ( x 2 ) ∣ ≤ K ⋅ ∣ x 1 − x 2 ∣ |f(x_1 )-f(x_2)|≤K\cdot|x_1-x_2 | f(x1)f(x2)Kx1x2
 于是,我们使用判别网络 D θ ( x ) D_θ (\boldsymbol x) Dθ(x)参数化 f ( x ) f(\boldsymbol x) f(x)函数,在 D θ D_θ Dθ满足1阶-Lipschitz约束条件下,即 K = 1 K=1 K=1,此时:
W ( p r , p g ) = 1 K sup ∥ D θ ∥ L ≤ K E x ∼ p r [ D θ ( x ) ] − E x ∼ p g [ D θ ( x ) ] W(p_r,p_g )=\frac{1}{K} \underset{\|D_θ\|_L≤K}{\text{sup}} \mathbb E_{x\sim p_r} [D_θ (\boldsymbol x)]-\mathbb E_{x\sim p_g} [D_θ (\boldsymbol x)] W(pr,pg)=K1DθLKsupExpr[Dθ(x)]Expg[Dθ(x)]
因此求解 W ( p r , p g ) W(p_r,p_g ) W(pr,pg)的问题可以转化为:
max ⁡ θ   E x ∼ p r [ D θ ( x ) ] − E x ∼ p g [ D θ ( x ) ] \underset{θ}{\text{max}⁡}\ \mathbb E_{x\sim p_r} [D_θ (\boldsymbol x)]-\mathbb E_{x\sim p_g} [D_θ (\boldsymbol x)] θmax Expr[Dθ(x)]Expg[Dθ(x)]
这就是判别器D的优化目标。判别网络函数D_θ (x)需要满足1阶-Lipschitz约束:
∇ x ^ D ( x ^ ) ≤ 1 ∇_{\hat{\boldsymbol x}} D(\hat{\boldsymbol x})≤1 x^D(x^)1
 在WGAN-GP论文中,作者提出采用增加梯度惩罚项(Gradient Penalty)方法来迫使判别网络满足1阶-Lipschitz函数约束,同时作者发现将梯度值约束在1周围时工程效果更好,因此梯度惩罚项定义为:
G P ≜ E x ^ ∼ P x ^ [ ( ∥ ∇ x ^ D ( x ^ ) ∥ 2 − 1 ) 2 ] GP≜\mathbb E_{\hat{\boldsymbol x}\sim P_{\hat{\boldsymbol x}}} [(\|∇_{\hat{\boldsymbol x}} D(\hat{\boldsymbol x})\|_2-1)^2] GPEx^Px^[(x^D(x^)21)2]
因此WGAN的判别器D的训练目标为:
max θ L ( G , D ) = E x r ∼ p r [ D ( x r ) ] − E x f ∼ p g [ D ( x f ) ] ⏟ E M 距 离 − λ E x ^ ∼ P x ^ [ ( ∥ ∇ x ^ D ( x ^ ) ∥ 2 − 1 ) 2 ] ⏟ G P 惩 罚 项 \underset{θ}{\text{max}} \mathcal L(G,D)=\underbrace{\mathbb E_{\boldsymbol x_r\sim p_r } [D(\boldsymbol x_r )]-E_{\boldsymbol x_f\sim p_g} [D(\boldsymbol x_f )]}_{EM距离}-\underbrace{λ\mathbb E_{\hat{\boldsymbol x}\sim P_{\hat{\boldsymbol x}}} [(\|∇_{\hat{\boldsymbol x}} D(\hat{\boldsymbol x})\|_2-1)^2]}_{GP惩罚项} θmaxL(G,D)=EM Exrpr[D(xr)]Exfpg[D(xf)]GP λEx^Px^[(x^D(x^)21)2]
其中 x ^ \hat{\boldsymbol x} x^来自于 x r \boldsymbol x_r xr x f \boldsymbol x_f xf的线性差值:
x ^ = t x r + ( 1 − t ) x f , t ∈ [ 0 , 1 ] \hat{\boldsymbol x}=t\boldsymbol x_r+(1-t) \boldsymbol x_f,t∈[0,1] x^=txr+(1t)xf,t[0,1]
判别器D的优化目标是最小化上述的误差 L ( G , D ) \mathcal L(G,D) L(G,D),即迫使生成器G的分布 p g p_g pg与真实分布 p r p_r pr之间的EM距离 E x r ∼ p r [ D ( x r ) ] − E x f ∼ p g [ D ( x f ) ] \mathbb E_{\boldsymbol x_r\sim p_r } [D(\boldsymbol x_r )]-E_{\boldsymbol x_f\sim p_g} [D(\boldsymbol x_f )] Exrpr[D(xr)]Exfpg[D(xf)]项尽可能大, ∥ ∇ x ^ D ( x ^ ) ∥ 2 \|∇_{\hat{\boldsymbol x}} D(\hat{\boldsymbol x})\|_2 x^D(x^)2逼近于1。

 WGAN的生成器G的训练目标为:
max θ L ( G , D ) = E x r ∼ p r [ D ( x r ) ] − E x f ∼ p g [ D ( x f ) ] ⏟ E M 距 离 \underset{θ}{\text{max}} \mathcal L(G,D)=\underbrace{\mathbb E_{\boldsymbol x_r\sim p_r } [D(\boldsymbol x_r )]-E_{\boldsymbol x_f\sim p_g} [D(\boldsymbol x_f )]}_{EM距离} θmaxL(G,D)=EM Exrpr[D(xr)]Exfpg[D(xf)]
即使得生成器的分布 p g p_g pg与真实分布 p r p_r pr之间的EM距离越小越好。考虑到 E x r ∼ p r [ D ( x r ) ] \mathbb E_{\boldsymbol x_r\sim p_r } [D(\boldsymbol x_r )] Exrpr[D(xr)]一项与生成器无关,因此生成器的训练目标简写为:
max θ L ( G , D ) = − E x f ∼ p g [ D ( x f ) ] = − E z ∼ p z ( ⋅ ) [ D ( G ( z ) ) ] \begin{aligned}\underset{θ}{\text{max}} \mathcal L(G,D)&=-E_{\boldsymbol x_f\sim p_g} [D(\boldsymbol x_f )]\\ &=-E_{\boldsymbol z\sim p_\boldsymbol z (\cdot)} [D(G(\boldsymbol z))]\end{aligned} θmaxL(G,D)=Exfpg[D(xf)]=Ezpz()[D(G(z))]
 从现实来看,判别网络D的输出不需要添加Sigmoid激活函数,这是因为原始版本的判别器的功能是作为二分类网络,添加Sigmoid函数获得类别的概率;而WGAN中判别器作为EM距离的度量网络,其目标是衡量生成网络的分布 p g p_g pg和真实分布 p r p_r pr之间的EM距离,属于实数空间,因此不需要添加Sigmoid激活函数。在误差函数计算时,WGAN也没有 log \text{log} log函数存在。在训练WGAN时,WGAN作者推荐使用RMSProp或SGD等不带动量的优化器。

 WGAN从理论层面发现了原始GAN容易出现训练不稳定的原因,并给出了一种新的距离度量标准和工程实现解决方案,取得了较好的效果。WGAN还在一定程度上缓解了模式崩塌的问题,使用WGAN的模型不容易出现模式崩塌的现象。需要注意的是,WGAN一般并不能提升模型的生成效果,仅仅是保证了模型训练的稳定性。当然,保证模型能够稳定地训练也是取得良好效果的前提。如图5所示,原始版本的DCGAN在不使用BN层等设定时出现了训练不稳定的现象,在同样设定下,使用WGAN来训练判别器可以避免此现象,如图6所示。

图5. 不带BN层的DCGAN生成器效果

图6. 不带BN层的WGAN生成效果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习之生成对抗网络(7)WGAN原理 的相关文章

随机推荐

  • 珍惜,那个主动联系你的人

    听过这样一句话 如果不是在乎你 谁会愿意一直主动付出 如果不是太爱你 谁又愿意低眉顺目 深以为然 感情里 一直都会主动联系你的人 才是真正在乎你 爱你的人 都说乍见之欢易 长相厮守难 再好的感情 也抵不过平淡岁月的冲刷磨砺 两个人相处久了
  • shell命令:ln -s 创建软链接采用相对路径时的奇怪用法

    目前基于测试结果得到结论 暂时无权威资料显示出原因 参考了 https blog csdn net weixin 42183399 article details 80498750 但是这个博客给的结果只是特殊用法 无法归结至一般结论 下面
  • vue中window.addEventListener(‘scroll‘, xx)失效解决办法

    多次尝试都无法获取到滚动事件 后来加上true之后就可以了 window addEventListener scroll this clintHeight true
  • js中startsWith()使用

    startsWith函数 时Java中的 在js使用时他并不是每个浏览器都有的 所以我们一般要重写一下这个函数 采用正则表达式实现startWith endWith效果函数 String prototype startWith functi
  • CPU 风扇清理灰尘加油全过程图解

    主机电源风扇由于使用时间长 风扇轴承的润滑油耗尽 导致风扇转速下降或是不转 引起电源热量无法有效排除而造成电脑经常死机 解决办法有几种 现图解说明最简单省钱的办法如下 1 把电源从主机上拆下 如下图再取出电源背面的4个固定镙丝 2008 5
  • EasyAR4.0使用说明(Unity3D)(七)----稀疏空间地图

    稀疏空间地图的对应用环境的要求和平面图像识别可以比照理解 周围环境需要足够丰富 不能有大片的单色区域 透明区域 此外 光照 角度都会对建立地图和定位产生影响 官方给出了建立地图和定位地图的建议 https help easyar cn Ea
  • rgss加密文件解包器_Galgame汉化中的逆向 (一):文本加密(压缩)与解密

    本文为看雪论坛优秀文章 看雪论坛作者ID devseed 0x0 前言 看到关于游戏汉化相关的逆向教程挺少的 作为某汉化组的成员也帮过别的汉化组 于是就想把我见到的几个典型的例子整理分析一下 还是挺有意思的 此教程和我在贴吧和隔壁发的一样
  • 时序预测

    时序预测 Python实现NARX DNN空气质量预测 目录 时序预测 Python实现NARX DNN空气质量预测 效果一览 基本介绍 研究内容 程序设计 参考资料 效果一览 基本介绍 时序预测 Python实现NARX DNN空气质量预
  • 如何使a==1&&a==2&&a==3表达式成立?

    前几天闲着无聊 玩手机无意中发现一个题 觉得挺有意思的 就顺手记录一下 题目 a 1 a 2 a 3 true 思考 我思考了一会 这让一个值既是1又是2又是3的 不可能吧 这肯定是一个伪命题 但突然我灵光一现 对象属性不是可以拦截吗 我能
  • Flex 构建路径

    然libs文件夹是构建路径的一部分 但它并不总是SWC的理想存放位置 当多个项目同时使用相同的SWC时 就不能都存放在libs文件夹中 在这种情况下 SWC可以保持在中心位置 众所周知 SWC路径可以被添加到构建路径中 虽然这意味着需要建立
  • 问题 G: 用递归的方法求值

    题目描述 求1 2 3 4 5 n的值 输入格式 一个n n不大于10000 输出格式 输出1到n的累加和 输入样例 复制 2 输出样例 复制 3 这道题比较简单 边界是n 0 核心代码为 if n 0 return 0 else retu
  • C++ template 模板的模板参数(5.4节)

    有时 让模板参数本身成为模板是很有用的 我们将继续以stack类模板作为例子 来说明模板的模板参数的用途 在Stack的例子中 如果要使用一个和缺省值不同的内部容器 程序员必须两次指定元素类型 也就是说 为了指定内部容器的类型 你需要同时传
  • java实现文件的上传和下载

    文件的上传 upload 文件上传 客户端通过表单的文件域file 把客户端的文件 上传保存到服务器的硬盘上 页面 首先对上传的表单有以下要求 必须有文件域 input type file 表单提交方式 method post 表单的 en
  • 【剑指Offer】35.复杂链表的复制(JS实现)

    题目描述 请实现 copyRandomList 函数 复制一个复杂链表 在复杂链表中 每个节点除了有一个 next 指针指向下一个节点 还有一个 random 指针指向链表中的任意节点或者 null 示例1 输入 head 7 null 1
  • 图灵机模拟程序功能设计

    图灵机由无限长的纸带 读写头 状态寄存器 控制规则等四部分组成 纸带上的符号可以是 0 1 空格 要利用图灵机求解一个问题 需要自己设计图灵机 程序 即定义一些状态 其中包括初始状态和结束状态 设计给出控制规则 并进行图灵机初始化 设定初始
  • chrome/Edge搜索技巧

    1 剔除干扰项搜索 搜索内容 不想要的关键词 排除干扰项 2 特定搜索 给关键词加引号 关键词 只搜索引号里面的字 3 指定网站内搜索 site 域名 关键词 4 指定格式搜索 filetype 文件格式 关键词 可以制定pdf doc p
  • series not exists. Legend data should be same with series name or data name.

    normal删除
  • php+vscode+xdebug搭建php调试环境

    php vscode xdebug搭建php调试环境 开发环境 windows 10 php 8 0 23 xdebug 3 1 6 配置xdebug 查看php版本信息 cmd exe php version 可看到 我的版本信息为8 0
  • 阿里云maven 仓库地址配置

    参考 https help aliyun com document detail 102512 html spm a2c40 aliyun maven repo 0 0 36183054erKD4V 配置指南 maven配置指南 打开mav
  • 深度学习之生成对抗网络(7)WGAN原理

    深度学习之生成对抗网络 7 WGAN原理 1 JS散度的缺陷 2 EM距离 3 WGAN GP WGAN算法从理论层面分析了GAN训练不稳定的原因 并提出了有效的解决方法 那么是什么原因导致了GAN训练如此不稳定呢 WGAN提出是因为JS散