本文的部分内容借鉴http://blog.csdn.net/sxf1061926959/article/details/54630462
生成模型和判别模型
理解对抗网络,首先要了解生成模型和判别模型。判别模型比较好理解,就像分类一样,有一个判别界限,通过这个判别界限去区分样本。从概率角度分析就是获得样本x属于类别y的概率,是一个条件概率P(y|x).而生成模型是需要在整个条件内去产生数据的分布,就像高斯分布一样,他需要去拟合整个分布,从概率角度分析就是样本x在整个分布中的产生的概率,即联合概率P(xy)。
GAN的思想
GANs简单的想法就是用两个模型,一个生成模型,一个判别模型。判别模型用于判断一个给定的图片是不是真实的图片(从数据集里获取的图片),生成模型的任务是去创造一个看起来像真的图片一样的图片,有点拗口,就是说模型自己去产生一个图片,可以和你想要的图片很像。而在开始的时候这两个模型都是没有经过训练的,这两个模型一起对抗训练,生成模型产生一张图片去欺骗判别模型,然后判别模型去判断这张图片是真是假,最终在这两个模型训练的过程中,两个模型的能力越来越强,最终达到稳态。(这里用图片举例,但是GANs的用途很广,不单单是图片,其他数据,或者就是简单的二维高斯也是可以的,用于拟合生成高斯分布。)
图片.png 图片.png1. 符号的定义和直观理解
这里细说一下(ps:简书什么时候能支持公式啊,暂时都用tex写法):
- x就是真实样本数据, 就是"真"数据,这个数据内部不再区分标签,所有"真"数据的标签都是1
- z就是噪声,比如高斯噪声,p(z)指的是噪声的概率密度,噪声的概率密度有自己的参数,比如高斯噪声有/mu,/sigma,所以p_z(z)有自己的参数p_z,并且噪声的自变量是z
- G(z;/theta_g),说明生成模型的参数是/theta_g,g代表生成,自变量是z,经过映射变换得到生成数据x^,这个生成数据的概率分布是p_g(x)
- D(s;/theta_d),说明判决模型的参数是/theta_d,d代表判决,接收输入s,输出样本标签0或者1,s应该可以是真实数据也可以是生成数据??
图片.png
2. 构建损失函数
- 首先考虑判别器D的损失函数
对于来自真实分布的样本,也就是样本的确是真的,希望全部判断成对的
图片.png同时,对于生成的样本,判别器希望全部判断成假的
图片.png解释一下:
当x满足真实样本的概率分布时,也就是x~p_data(x),判别器将输出1
判别器希望自己输出正确的情况尽可能的多,也就是均值尽可能的大
E{log[D(x)]}-->max
这里的log是对数似然的意思
G(z)的意思是,从噪声z通过生成器生成的样本,通过判别器D对其进行判别
D(G(z)),对其取对数似然,希望它尽可能的小,也就是等价于1-D(G(z))的对数似然尽可能的大
因为数据包括真实数据和生成数据两部分,所以要把两部分的概率加起来,即当生成器G给定时:
图片.png对于判别器D来说,希望V(G,D)尽可能的大
图片.png- 然后,考虑生成器G
生成器的目的是使得生成的数据能够以假乱真
图片.png实现方法是: 最大化D(G(z)),也就是最小化
图片.png构建损失函数
图片.png其中第一项对于判别器D固定时,是常数
图片.png- 综合考虑G和D,对抗过程是个极大极小博弈问题(Minimax Game)
图片.png 图片.png存在的疑问
GAN全局最优解的证明过程
1. 判别器D极值存在证明
2. 生成器G存在性证明
图片.png 图片.png 图片.png 图片.png 图片.png解释一下:
积分项对所有x进行积分最后等于1
图片.png
网友评论