生成对抗网络原理

基本思想

假设有一种概率分布M,它相对于我们是一个黑盒子。为了了解这个黑盒子中的东西是什么,我们构建了两个东西G和D,G是另一种我们完全知道的概率分布,D用来区分一个事件是由黑盒子中那个不知道的东西产生的还是由我们自己设的*生的。

不断的调整G和D,直到D不能把事件区分出来为止。在调整过程中,需要:
1、优化G,使它尽可能的让D混淆。
2、优化D,使它尽可能的能区分出假冒的东西。

当D无法区分出事件的来源的时候,可以认为,G和M是一样的。从而,我们就了解到了黑盒子中的东西。

简单的例子说明

生成对抗网络原理
生成对抗网络原理
真实样本分布data、生成样本分布model、判别模型D分别对应左图的黑线、绿线、蓝线
[a]图表示初始状态。
[b]当我们固定生成模型,而优化判别模型时,我们发现判别模型会变得有很好的对黑线和蓝线的区分效果。
[c]当我们固定判别模型,改进生成模型时,我们发现生成模型生成的数据分布(绿线)会不断往真实数据分布(黑线)靠拢,也就如第三幅图,使得判别模型很难分离判断。
[d]进行a、b过程进行大量迭代后,我们会得到最后图的效果,生成样本数据分布和真实数据分布基本吻合,判别模型处于纳什均衡,做不了判断。
当data与model都为1的时候,D(x)=1/2,即d图中的蓝线
生成对抗网络原理

公式

生成对抗网络原理
要最大化D的区分度,最小化G和real数据集的数据分布
拆分为生成对抗网络原理
生成对抗网络原理
对判别模型来说:
log(D1(x))判断真实数据越接近于1,D性能越好,log值越接近0
D2(G(z))判断生成数据越接近0,D性能越好,1-D2(G(z))越接近1,log值就越接近0
加个负号就可以当loss了。
对于生成模型来说:
为了让D2判断不出来G(z)是生成的,即D2接近于1,log接近于0,加个负号就可以当loss。