GAN的原理(李宏毅GAN笔记)

我们通常用GAN来做Gerneration。

对于一张图片x,其通常分布在高维空间中的一个流行上。在下图中,位于蓝色区域的点仅有很大的概率出现在我们的database中。

那么图像生成的主要任务是什么呢?

给定义原始数据的分布,再给定一个以\Theta作为参数的概率模型P_{G}(x,\Theta ),该模型可以由generator学习得到。我们希望的,便是找到相应的参数\theta,使得原始数据集中的样本x在由G所定义的概率分布P_{G}(x,\theta )中出现的概率尽可能大。

为了找到这样的参数,我们可以先从database中随机选出m个样本,并根据计算达到每个样本被生成的概率P_{G}(x^{\theta };\theta ),再将这m个样本对应的概率乘起来,即可得到相应的似然函数。

 进一步具体化似然函数,我们发现采用极大似然估计得到的参数\theta ^{*},也恰好使得real image与generated image的KL散度达到最小。

我们的generator本质上是一个network,这个network定义了一个概率分布P_{G}(x),我们希望的便是P_{G}(x)P_{data}(x)尽可能的接近。问题在于该如何得到P_{G}(x)呢? 

扫描二维码关注公众号,回复: 9299025 查看本文章

我们暂且放下先前的问题不管.我们把目光转向discriminator.

尽管我们不知道P_{G}(x)P_{data}(x)的具体形式,但是我们可以对真实图片与生成图片进行采样。

对于一个给定的generator,我们希望优化的损失函数如下图,其形式非常类似与二分类问题中的交叉熵损失函数。 

 我们发现当真实图片与生成图片具有较小的divergence时,discriminator难以辨别真实图片和生成图片。但是当两者具有较大的divergence时,discriminator还是比较容易地能够将其辨别出来的。

接下来,我们便来求解一下D^{*}: 

我们发现D^{*}恰好对应P_{data}P_{G}的JS divergence. 

发布了98 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chengsilin666/article/details/87870279
今日推荐