1.GAN模型
GAN利用生成网络和判别网络的之间的对抗来训练模型。具体来说就是,给你一张噪声图片(假定这部分图片数据集为Z),让它通过生成网络(G,i.e.generative net)最大可能的生成你期望得到的图片(假定这部分数据集为Data_x),此时我们这里就有了两类图片(一类是原本的Data_x,另一类是我们通过生成网络G得到的图片G(z)),接着将这两类图片(x=Data_x或者G(z))输入到判别网络(D,i.e.discriminative net)中,判别网络D就是用来判别输入给它的图片究竟是来自Data_x,还是G(Z)(噪声图通过生成网络G得到的图片),文章用D(x)表示x来自Data_x的概率。
接下来就是GAN的精髓所在了,我们的目的有二:
- 首先肯定是想让判别器判别的准了,判别器判别的准就说明它对Data_x数据分布拟合的好,之后通过对判别器的训练反训练生成器,请往下看
- 另外就是我们的最终目的,让生成器尽可能的可以生成类似Data_x的数据,这样做的等价结果就是让判别器无法准确判别给它输入的图片到底来自哪一个数据集。(给一个直观的理解,就是让判别器混乱,以假乱真,真假不分,就像熵最大那样,也就是判别器判断出来来自各个数据集的概率都等于1/2)。
为了精准的用数学式子表示这两个目的,GoodFellow在文章中提出了一个公式,也就是损失函数: