GAN学习笔记(4)fGAN

ter)
fGAN 其实想要表达的就是一件事,不只是 JS Div,任何的 Div(统称为 f-Div)都可以
被放到 GANs 的架构中去。

fGAN 的证明。

设定 P 和 Q 是两个不同的分布, p(x)和 q(x)代表着分别从 P 和 Q 采样出 x 的几率,
则我们将 f-Div 定义为:
在这里插入图片描述
上述公式衡量 P 和 Q 有多不一样,公式里边的函数 f 可以是很多不同的版本,只要 f
满足以下条件:它是一个凸函数同时 f(1)=0 。
分析:

  1. 假设对于所有的 x 来说,都有 p(x)=q(x),则有D𝑓(P,Q)=0,也就是意味着两个分布
    没有区别,和假设一样。
  2. 同时 0 是D𝑓能取到的最小值:
    在这里插入图片描述
    也就是说,只要两个分布稍有不同,就能通过 D𝑓得到的正值反映出来。这个时候我们
    发现之前常用的 KL Div 其实就是 F Div 的一种。
    当你设置 f(x)=xlogx,即将 F Div 转换为了 KL Div 了。
    在这里插入图片描述
    当你设置 f(x)=−logx,即将 F Div 转换为了 Reverse KL Div。
    在这里插入图片描述
    当你设置 f(x)=(x − 1)2,即将 F Div 转换为了 Chi Square。
    在这里插入图片描述

生成函数列表

在这里插入图片描述
在这里插入图片描述

Fenchel 共轭(Fenchel Conjugate)

每一个凸函数 f(x)都有对应的一个共轭函数取作f ∗(x):
在这里插入图片描述
上述公式的意思就是给定 t 找出一个在 f(x)里边有定义的 x 使得 xt−f(x) 最大,当然
t 可以无限取值,那么假定我们取值 t=t1 和 t=t2 则有:
在这里插入图片描述
对于所有可能的变量 t ,xt−f(x) 对应了无数条直线:
在这里插入图片描述
这个时候给定某个 t 看看哪个 x 可以取得最大值:
在这里插入图片描述
如上图,当 t=t1 的时候,找到最大点 f ∗(t1),当 t=t2 的时候,找到最大点 f ∗(t2),遍
历所有的 t 即可得到红色的这条函数就是 f ∗(t):
在这里插入图片描述

例子

当 f(x)=x logx 时,可以将对应的f∗(t)画出来:
在这里插入图片描述
这个图实际上是一个指数函数,当 f(x)=x logx 时,f∗(t)=e t ^t t − ^- 1 ^1 1
由于
在这里插入图片描述
假设让 g(x)=xt−x logx,那么现在的问题就变成了:给定一个 t 时, 求 g(x)的最大值问题。对 g(x) 求导并让导数为 0:dg(x)/dx=t−logx−1=0,可解得 x=e t ^t t − ^- 1 ^1 1。再带入回原公式可得:
f∗(t)=e t ^t t − ^- 1 ^1 1×t−e t ^t t − ^- 1 ^1 1×(t−1)=e t ^t t − ^- 1 ^1 1

f-Div GAN

那我们怎么用上边的数学知识和 GAN 联系在一起呢? 我们首先要记得这条公式,关
于 f ∗(t) 和 f(x)的转换关系式:
在这里插入图片描述
利用这个关系,我们能够将 F Div 的定义变形为一个类似于 GAN 的式子。
在这里插入图片描述

解释一下上式:
  1. 第一行就是 F Div 的定义式;
  2. 第三行将 t 替换成 D(x) 并将 = 替换成 ⩾ 原因是:我们要求得的是给定 x 找到一
    个 t 使得式子最大,也就是说不管 D(x) 取什么值都一定小于或者等于第二行的式子;
  3. 最后一步就是,我要找到一个 D 使得,式子最大,上界就是等于第二行的式子。
    现在我们推导出关于 f Div 的变式:
    在这里插入图片描述
    我们知道,GAN 的目的是训练生成器 G,使其产生的数据分布 𝑃𝐺与真实数据的分布
    𝑃𝑑𝑎𝑡𝑎尽可能小。换言之,如果我们用 f-Div 来表达 𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎 的差异,则希望最小化
    在这里插入图片描述
    在这里插入图片描述
    对于生成器来说,我们就是要找到一个 𝑃𝐺使得有:
    在这里插入图片描述
    上述从数学推导上给出了 V(G,D) 的定义方式。但实际上要注意,此处的 V(G,D) 不一
    定就是原生 GAN 的形式。 f-Div GAN 是对 GAN 模型的统一,对任意满足条件的 f 都可
    以构造一个对应的 GAN。

分析

我们先考虑一下𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎的实际分布情况,我们会发现,大多数情况下 𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎
是没有重合的。因为一方面,从理论上来说,𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎都属于高维空间中的低维流形,二者具有重合的可能性是非常低的;另外一方面,从实际上来看,即算𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎的分布有了重合区域(如下左图),但是在实际训练中我们是从𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎中取的采样,这些采样形成的分布很有可能是互不相交的(如下右图),我们仍然能找到一条分割线将𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎完美分割开来(如右图中的黑线)。所以我们可以认为,大多数情况下 𝑃𝐺 与 𝑃𝑑𝑎𝑡𝑎是没有重合的。
在这里插入图片描述
在上图中可以看出,𝑃𝐺0与𝑃𝐺1都与𝑃𝑑𝑎𝑡𝑎没有交集,但是𝑃𝐺1与𝑃𝑑𝑎𝑡𝑎的距离比𝑃𝐺0与𝑃𝑑𝑎𝑡𝑎的距离近,然而用 JS Div 去衡量二者的距离却是一样的,都为 log2,这是我们认为 JS Div 不合理的地方,因为实际情况是Div(𝑃𝐺1 ,𝑃𝑑𝑎𝑡𝑎)应当比Div(𝑃𝐺0 ,𝑃𝑑𝑎𝑡𝑎)要小,才能反映出𝑃𝐺1与 𝑃𝑑𝑎𝑡𝑎比𝑃𝐺0与𝑃𝑑𝑎𝑡𝑎要靠的更近。有必要说明一下,为什么如果两个分布完全没有重合的话,那么这两个分布的 JS Div 会是一样的。前面有提到,JS Div 是通过判别器计算出来的,而判别器的本质是二分类器,只要𝑃𝐺与𝑃𝑑𝑎𝑡𝑎完全没有重合,判别器就能 100%地鉴别出𝑃𝐺(𝑥)与 𝑃𝑑𝑎𝑡𝑎(𝑥)的差异,因此二者的 JS Div 就是一样的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值