GAN的统一架构与WGAN

GAN是让机器自动生成PG去接近Pdata。算法的关键是衡量分布PG,Pdata的差异,不同的衡量办法得到的V(G,D)不同,但是所有的衡量方法都可以归纳到一个统一的框架中:利用f-divergence衡量两个分布差异,利用Fenchel Conjugate将两个分布差异的问题转化到GAN的大框架中。 而近段异常流行的WGAN,便是将两个分布的差异用Earch Mover Distance衡量,然后用weight clippinggradient penalty优化梯度计算,取得了非常好的效果。

原始GAN

原始GAN的演算法如下,通过discriminator的loss与js divergence相关联。

统一架构

f divergence

衡量两个分布的差距有多种方法,这些方法基本上都属于同一个架构f divergence。如下,

通过包含f函数的积分评估了两个分布的差异:

ff函数满足的条件如下(满足这样的条件,Df(P||Q)D_f (P||Q)的最小值当且仅当两个分布完全相同时为0):

不同的f函数会得到不同的divergence,但是都属于f divergence这个大框架中,区别只是f函数的不同。

fenchel conjugate

每一个凸函数f,都有与其conjugate的函数f*,f*的定义如下:

举例如下:

connect with gan

那么一个问题随之而来:f divergence以及fenchel conjugate与GAN到底有什么联系呢?

首先,f divergence提供了一种度量两个分布差异的方式;然而,f divergence需要知道pdf,生成分布的pdf不容易得到;这时候通过f的fenchel conjugate对原来的差异公式进行变换,引入额外的变量D(也就是discriminator),转化成找到令值最大的D的问题,最终化成GAN类似的形式。具体化简过程如下:

总的来说,f divergence以及fenchel conjugate的价值在于:构建了两个分布的f divergence,通过fenchel conjugate将divergence转化为maxDV(G,D)的问题,自然而然地与GAN关联了起来。

其他

GAN的训练在原始paper中是两次循环,f-divergence的paper中是一次循环。

不同的f函数得到的分布差异也不一样,如下:

KLD与JSD相比,对多分布的拟合效果较好:

WGAN

介绍

前面介绍了用f-divergence去度量两个分布的差异,WGAN与传统GAN的区别就是度量分布差异的方式不同。WGAN使用了earth mover's distance,顾名思义,就是把一个分布变成另外一个分布需要花的力气。earth mover's distance的定义如下:

优势

WGAN的优势,主要在于earth mover's distanceearth mover's distance相比js divergence的优点是:当两个分布没有接触的时候,不管距离远近,js divergence的度量都是相同的,而earth mover's distance会考虑到两个分布的距离到底有多远,这样在训练的时候便更容易训练。

如果不使用WGAN,通常的做法是给分布加噪声,让分布有重叠,这样才更容易去训练。

因此,WGAN可以部分解决生成模型的评价问题,可以利用earth mover's distance来监控模型的好坏(更多处于实际操作方面而非理论loss)。

weight clipping

使用earth mover's distance后,WGAN度量分布差异的公式如下:

Lipschitz Function限制条件的作用是:一方面给D(x)加一些控制,不让它任意变大变小,否则都变成无穷值就没有意义了;另一方面限制D(x)的增长速度,提供足够的梯度保证,如下图:

那么问题来了,如何保证D(x)满足Lipschitz Function限制条件呢? 原始的WGAN采用了weight clipping方法,其思路是限制参数的梯度值在一定范围内,这样便通过倒数限制了D(x)的增长速度。这种方法的缺点是c值不好确定。

完整的算法如下:

gradient penalty

之前Lipschitz Function限制条件通过weight clipping解决,这里借助Lipschitz Function的梯度小于等于1的条件,增加过大梯度的惩罚项,具体如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

13:图像模糊处理

13:图像模糊处理 总时间限制: 1000ms 内存限制: 65536kB描述 给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1....

3325
来自专栏林欣哲

深度学习的训练

今天来聊聊深度学习的训练方法和注意事项 数据集的拆分: 首先要准备好已经处理好的数据集(注意数据集要满足独立同分布),分为训练集、验证集、测试集。可按80%,1...

3538
来自专栏Coding迪斯尼

用Python从零开始设计数字图片识别神经网络--搭建基本架构

1094
来自专栏专知

卷积神经网络的最佳解释!

1904
来自专栏算法channel

机器学习:对决策树剪枝

昨天推送中介绍了决策树的基本思想,包括从众多特征中找出最佳的分裂点,刚开始大家都是用选择这个特征后带来的信息增益为基本方法,后来发现它存在一个严重的bug,因此...

3128
来自专栏机器人网

常见算法优缺点比较

机器学习算法数不胜数,要想找到一个合适的算法并不是一件简单的事情。通常在对精度要求较高的情况下,最好的方法便是通过交叉验证来对各个算法一一尝试,进行比较后再调整...

3374
来自专栏机器学习算法全栈工程师

Batchnorm原理详解

作者:刘威威 小编:赵一帆 前言:Batchnorm是深度网络中经常用到的加速神经网络训练,加速收敛速度及稳定性的算法,可以说是目前深度网络必不可少的一部分。...

4665
来自专栏数值分析与有限元编程

雅可比矩阵(二)

假设在物理坐标系中由曲线y=x,y=3x,xy=1,xy=5围成一个单元区域D。如图所示: ? 四个点的坐标分别为 ? 要求该区域的面积,常规的做法是在默认的...

2844
来自专栏iOSDevLog

决策树

944
来自专栏GAN&CV

基础 | batchnorm原理及代码详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

621

扫码关注云+社区