GAN该部分知识点主要参考网上的视频资料,并用文字整理下来,方便以后查看。
在学习GAN之前需要知道这么一句话:“what I cannot create, I do not understand”
意思是 我们需要实战写一个GAN模型,才能理解GAN。
1 数据分布 p ( x ) p(x) p(x)
在说GAN之前需要了解什么是数据分布。
我们的目的是需要掌握数据的分布 p ( x ) p(x) p(x),才能创造该类型的数据。
那么对于一个数据集 p ( x ) p(x) p(x)是什么样子的呢?我们之前学过的高斯
、泊松
、伯努利
这些简单的分布不再适合大数据集。
可以断定 p ( x ) p(x) p(x)不是我们已知的分布函数,长什么样子、参数我们也不知道,但是为了便于公式推导和模型算法描述,通常我们用 p ( x ) p(x) p(x)来表示一个数据集的分布,仅仅是一个表示和辅助性的推理。(没人知道分布是什么
)
即使是MINST数据集,我们也不知道 p ( x ) p(x) p(x)分布表达式是什么。通过降维到3维度,可以勉强画出来该数据集的分布 p ( x ) p(x) p(x),如下:
2 如何学习 p ( x ) p(x) p(x)
通过神经网络去逼近分布 p ( x ) p(x) p(x),一般是用生成器来生成,并用判别器来对抗训练。一个简单的GAN流程图为下,最后达到纳什均衡点。
最后使得生成器生成的 p g ( x ) ∼ p r ( x ) p_g(x)\sim p_r(x) pg(x)∼pr(x)
3 GAN损失函数
怎么训练呢?损失函数为:
首先明白 min