生成对抗神经网络
本文的部分内容借鉴http://blog.csdn.net/sxf1061926959/article/details/54630462
生成模型和判别模型
理解对抗网络,首先要了解生成模型和判别模型。判别模型比较好理解,就像分类一样,有一个判别界限,通过这个判别界限去区分样本。从概率角度分析就是获得样本x属于类别y的概率,是一个条件概率P(y|x).而生成模型是需要在整个条件内去产生数据的分布,就像高斯分布一样,他需要去拟合整个分布,从概率角度分析就是样本x在整个分布中的产生的概率,即联合概率P(xy)。
GAN的思想
GANs简单的想法就是用两个模型,一个生成模型,一个判别模型。判别模型用于判断一个给定的图片是不是真实的图片(从数据集里获取的图片),生成模型的任务是去创造一个看起来像真的图片一样的图片,有点拗口,就是说模型自己去产生一个图片,可以和你想要的图片很像。而在开始的时候这两个模型都是没有经过训练的,这两个模型一起对抗训练,生成模型产生一张图片去欺骗判别模型,然后判别模型去判断这张图片是真是假,最终在这两个模型训练的过程中,两个模型的能力越来越强,最终达到稳态。(这里用图片举例,但是GANs的用途很广,不单单是图片,其他数据,或者就是简单的二维高斯也是可以的,用于拟合生成高斯分布。)
1. 符号的定义和直观理解
![](https://img.haomeiwen.com/i7937005/b24d33b567718c0c.png)
![](https://img.haomeiwen.com/i7937005/de331f66d361dabd.png)
这里细说一下(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应该可以是真实数据也可以是生成数据??
![](https://img.haomeiwen.com/i7937005/c236a7f174a6791c.png)
2. 构建损失函数
- 首先考虑判别器D的损失函数
对于来自真实分布的样本,也就是样本的确是真的,希望全部判断成对的
![](https://img.haomeiwen.com/i7937005/2f50203024f56b72.png)
同时,对于生成的样本,判别器希望全部判断成假的
![](https://img.haomeiwen.com/i7937005/edff5e88969fea38.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给定时:
![](https://img.haomeiwen.com/i7937005/f0be2d756408778d.png)
对于判别器D来说,希望V(G,D)尽可能的大
![](https://img.haomeiwen.com/i7937005/5c3c698e1c77156c.png)
- 然后,考虑生成器G
生成器的目的是使得生成的数据能够以假乱真
![](https://img.haomeiwen.com/i7937005/8f7c96ed53681f87.png)
实现方法是: 最大化D(G(z)),也就是最小化
![](https://img.haomeiwen.com/i7937005/7855f6ddbcbc1d49.png)
构建损失函数
![](https://img.haomeiwen.com/i7937005/11d954cb1cde1a65.png)
其中第一项对于判别器D固定时,是常数
![](https://img.haomeiwen.com/i7937005/e2298f9b9a2d9882.png)
- 综合考虑G和D,对抗过程是个极大极小博弈问题(Minimax Game)
![](https://img.haomeiwen.com/i7937005/d1cdeb2480a3ca2a.png)
![](https://img.haomeiwen.com/i7937005/9a2cb3e6ce31aae9.png)
![](https://img.haomeiwen.com/i7937005/7ff180d4c4994bef.png)
存在的疑问
![](https://img.haomeiwen.com/i7937005/c0c2ab64b21b333f.png)
![](https://img.haomeiwen.com/i7937005/56dca7b3682cbf4d.png)
GAN全局最优解的证明过程
1. 判别器D极值存在证明
![](https://img.haomeiwen.com/i7937005/066951cd70e2dbc3.png)
![](https://img.haomeiwen.com/i7937005/8dcdedfc386d9367.png)
![](https://img.haomeiwen.com/i7937005/b82f4cb864451388.png)
![](https://img.haomeiwen.com/i7937005/76dc1054ba9d9f7d.png)
![](https://img.haomeiwen.com/i7937005/9c81b7ba1cb7a4d4.png)
2. 生成器G存在性证明
![](https://img.haomeiwen.com/i7937005/638bd2af17bb8925.png)
![](https://img.haomeiwen.com/i7937005/9cc39e5a28e82b1f.png)
![](https://img.haomeiwen.com/i7937005/c5ec1bfae05344c7.png)
![](https://img.haomeiwen.com/i7937005/b9596c60192b0f3d.png)
![](https://img.haomeiwen.com/i7937005/ac5c251312916ea8.png)
解释一下:
积分项对所有x进行积分最后等于1
![](https://img.haomeiwen.com/i7937005/73fb9d96143722a9.png)