GAN的基本理论

0 Warning

本章数学推导极多,难度也较高

1 用数学推导Generator的求解原理

把图像数据看做一个高维向量,其实其是有分布的,因为在图像向量所在的高维空间中只有非常少的部分sample出来的image看起来像人脸:
在这里插入图片描述
真实人脸的分布Pdata(x)是存在的,但是我们不知道,我们希望寻找一个分布PG(x;θ)与Pdata越接近越好,其中PG(x;θ)的分布由θ决定,我们从Pdata(x)中sample一组图片,计算在分布PG(x;θ)中sample该组图片的概率L,我们的目标就是求一组θ最大化L。
在这里插入图片描述

1.1 如何最大化L

其中最大化L可以化为下式:
在这里插入图片描述
这就相当于求从Pdata(x)中采样出x,并将其表示为logPG(x;θ)的期望,即约等于最大化序列{logPG(x1;θ), logPG(x2;θ), …, logPG(xm;θ)}的数学期望。[注意:这里运用了大数定律(算术平均值去表示数学期望),以及省略了1/m]:
在这里插入图片描述
注意上式中是约等号,将其变为连续型的表达:
在这里插入图片描述
在上式后面增加一项和θ无关的常数项(这一步是为了凑KL散度):
在这里插入图片描述
注意最后是求最小值。补充一个KL divergence的计算公式:
在这里插入图片描述
即我们的目标就是求得一组θ,可以最小化Pdata(x)和PG的KL Divergence,而Generator就是由这组参数θ控制的但是我们不知道Pdata(x)和PG的具体表达式,就不能用传统数学上的梯度下降求解θ,那我们该怎么呢?当然是让GAN来解决问题辣!

1.2 如何使用GAN来解决上述问题

注意到我们近似的Generator是一个NN,如何表示一个NN输出一个图像的概率呢?文献中给出下列方法,将一系列付出Normal Distribution的序列z输入NN,输出的图像x就是PG(x;θ)的分布。 我们的目标又可以表示为求一个Generator,可以最小化Pdata(x)和PG的区别:
在这里插入图片描述
但是其实我们依旧不知道如何计算Div(Pdata,PG),因为我们不知道两者的公式,这就要体现出GAN的神奇之处了→下图中从PG中sample的方法是随机生成一组向量输入到Generator中输出的图像就是sample。
在这里插入图片描述
这里就要请出我们的工具人Discriminator了,我们使用Discriminator就可以衡量Div(Pdata,PG),因为Discriminator希望Pdata得分高,PG得分低。求解Discriminator如下图所示,我们可以发现V(G, D)和训练一机器学习中的二分类分类器的代价函数一样,只不过是要最大化,所以使用梯度上升:
在这里插入图片描述

1.3 数学证明为什么max V(D, G)和divergence有关

在这里插入图片描述
因为我们上图中假设了D(x)可以表示任何函数,那么其实各个x就独立开了,因为每一个x都可以让D(x)输出任何值,我们只需要令每一个x的取值Pdata(x)logD(x) + PG(x)log(1-D(x))最大即可:
在这里插入图片描述
我们可以轻易的检查出此时V的值是一个极大值,即我们只需要将D*(x)代上图中算出的值就可以让V最大。带入,经过一些变形发现此时就是JS Divergence:
在这里插入图片描述
在这里插入图片描述
即我们在训练Discriminator时就是在求Pdata和PG的JS Divergence,前提是目标函数要按V的形式定义
上文中我们曾说Div(Pdata, PG)没法算,现在其实就是max V(D, G)
在这里插入图片描述
即下图所示:
在这里插入图片描述
假设我们只有3个Generator可选,每一个Generator下,横坐标的变化表示D的不同(神经网络D简化为仅由一个参数控制),纵坐标表示V,则我们最后选择的G3,D在红点处:
在这里插入图片描述
其实第一篇博客中训练G和D的过程就是在解G*=arg min max V(G,D)。

2 为什么训练算法就是在解G*

令蓝色框框里等于L(G),对其做微分:
在这里插入图片描述
因为G很可能是分段的,则我们初始化一个G0首先看看它在哪个段,就对应该该段的D0*
在这里插入图片描述
实际操作中我们使用均值代替数学期望:
在这里插入图片描述
总结:
在这里插入图片描述
为了训练时时梯度消失,我们做一个变形:
在这里插入图片描述

3 最后讲一些Intuition的东西

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值