GAN(Generitive Adversarial Network)为对抗生成网络的缩写,近来对其做了些研究,在此记录一下这段时间的学习成果,算是打个卡存个档(哈)!。
这篇文章先介绍一下其数学原理,主要来源于李宏毅老师的视频。
图像的生成有几种方法如autodecoder、GAN和flow等。他们的原理可以用如下的数学表达式来表示。
假设你有一堆真实图片(这堆图片其实服从某种高维的分布),现在你想用一个模型把来生成出跟这堆图片很相近的图片。我们先假设该生成模型为G(z),z是一个向量(通常是一组噪音向量其服从高斯分布或均匀分布等等),只要我们给G一个z它就会为我们产生一张图片假如为X,就有P=G(z),当我们不断给G不同的z,它就会产生一系列不同的X,如,如果给的z足够多也就是n足够大是就会发现,产生的图片X服从于某种分布。也就是说给定一个生成 模型G,它其实就是定义了一个特定的分布。我们设 该分布为
,其中x为通过G生成出来的图片,
为生成模型G的参数。也就是说对于不同的参数
,G会定义不同的分布
。
现在我们的问题是如何让G定义出来的分布于真实图片的分布尽可能的接近。因为只有跟那堆真实图片的分布非常接近我们G生成出来的图片才有可能跟真实的图片非常相似。现在设真实图片的分布为
,我们可以用最大似然估计来求解它,具体做法如下:
式子中采样自真实图片的分布,也就是每个
都是一张图片。约等于号暂时还理不大清,待日后再研究。