机器学习

GAN-QP

2019-06-09  本文已影响0人  Duffy_x

摘要

我们知道在 SGAN (原始 GAN,Standard  GAN) 中有梯度弥散的风险,对其一个十分重要的改进是WGAN,在判别器中 1-Lipschitz constraint 的帮助下使得梯度弥散现象得到解决,那到底有没有一种 GAN 是不会出现梯度弥散现象,不需要在判别器中添加 1-Lipschitz constraint 的呢?文章提出了 GAN-QP。

构造一个新的 GAN 框架通常来说分为三步:

1)选择适当的概率散度函数

2)将其转换为对偶形式

3)进行 min-max 博弈

在本文中,证明了第一步是不必要的,直接分析散度的性质以及在对偶空间内构造新的散度,最终找到了 WGAN 的可替代做法 GAN-QP,同时证明 GAN-QP 效果优于 WGAN。

散度到 GAN

散度

大部分 GAN (Generative Adversarial Networks) 基于确定的散度,散度是一种函数来衡量随机变量 p、q 之间的分布相似性。

定义如下:

散度不要求有三角不等(triangle inequality necessarily.)性质以及对称性质,仅仅用来衡量分布的距离。

对偶形式

如果 p、q 代表两种分布,D(p, q) 我们称之为 概率散度,比如常见的 JS 散度定义如下:

在大部分时候我们可以找到一个概率散度的对偶形式 1606.00709 f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization

JS 对偶形式可以写作:

其中

为 sigmoid 函数

Min-Max 博弈

在博弈中的 Min-Max 形式如下:

当 T 适当训练时,G 的优化可以写作:

(实际上是 JS 散度到交叉熵之间的转换 JS(P, Q) = 1/2 * (H(P, Q) + H(Q, P) + 2log2))

然而,log(1 − σ(T(x))) 不总是便于优化的,需要建立一个相等的 Loss,比如

− log σ(T (x)) 、−T (x) 等,即我们在最后希望生成器得到更好的优化,而不是仅仅执行一个 Min-Max 博弈。

对偶空间内的散度

GAN

通过上述讨论,我们构造一个 GAN 需要三步

1)选择一个概率散度

2)将散度转换为一个对偶形式

3)进行 Min-Max 博弈

第一步通常是理论层面的概念,在实际应用中,对于 GAN 而言重要性不那么强,因此,我们为什么不直接分析散度的性质或者直接在对偶空间内构造一个新的散度呢?下文将基于这一想法进行讨论。

SGAN

原始的 GAN 中的优化公式:

公式是由 JS 散度到交叉熵的转换,JS(P||Q) = 1/2 * [ H(P, Q) - H(Q, P) + 2log2]

是可以直接用于 Min-Max 博弈训练的,但存在一个很严重的问题,即当 p(x) 和 q(x) 不存在交集的时候,D的值恒为 log 2,存在着无法训练的问题。

WGAN

WGAN 定义了一种与 SGAN 不一样的散度

其中

d 可以是任意的距离矩阵,1 范数和 2 范数是通常的选择。

新的 Min-Max 博弈就变为:

与原始的 GAN 相比,WGAN 可以在任何情况下衡量两个分布的距离,无论两个分布是否有重叠,距离有多远。所以对于 WGAN 而言,梯度消失的问题就不会如 SGAN 中那么容易出现。

WGAN-GP

WGAN-GP 主要解决的问题是 WGAN 中的 constraint 问题,确保 || T ||L < 1,目前有若干解决方案

1)weight clipping

2)gradient penalty

3)spectral normalization

其中 weight clipping 稳定性比较差,在大部分场景中已经不使用了,Spectral normalization 不仅仅是对于 WGAN,对于许多其他的 GAN 也有比较好的帮助与提升,但是它将 T 限制在了一个非常狭小的空间内,模型效率大打折扣。

目前来说最好的解决方案是 gradient penalty ,gradient penalty 中使用一些基准的 ||∇xT|| 来代替 ||T||L,并且作为一种处罚的形式开实现

(文章略读,大致流程如下)


GAN with Quadratic Potential

在前面对于 GAN 的探讨中,可以得出,一个好的散度定义不应该有太多的限制,如 WGAN,同时也应该在任何情况下都能衡量中两种分布的距离。

下面将定义一种新的散度

d(…) 为距离矩阵,常用 L1 或者 L2,

构造新的 GAN

对于 G 而言 可以直接取前面部分


问题

* 损失函数的构造原理

论坛博客中有提起 Lipschitz 约束的原理,根据约束公式得来

* 健壮的意义

指函数的值的变化与参数变化的敏感程度

官方解释:不用L约束又不会梯度消失的GAN,了解一下? - 科学空间|Scientific Spaces

Paper 作者自己的博客,看着省事很多

上一篇下一篇

猜你喜欢

热点阅读