1 引言
生成对抗网络由Goodfellow在2014年提出。GAN由生成器和判别器组成。生成器的功能是输入一个样本将其输出成一个逼真的样子,判别器来判断输入的样本是真的还是伪造的。
判别网络的目的:就是能判别出来属于的一张图它是来自真实样本集还是假样本集。例如输入的是真样本,网络输出就接近1,输出的是假样本,网络输出接近0。
生成网络的目的:生成网络是造样本,它的目的就是使得自己造样本的能力尽可能强,强到什么程度呢,判别网络没法判断我是真样本还是假样本。
2 GAN原理
GAN强大之处在于可以自动的学习原始真实样本集的数据分布
传统机器学习方法,会定义一个什么模型让数据去学习,假设我们知道原始数据属于高斯分布,只是不知道高斯分布的参数,这个时候我们会定义高斯分布,然后利用数据去学习高斯分布的参数得到最终的模型。
然而从随机噪声到图片应该服从什么分布,我们不知道,然而GAN机制可以学习到,也就是说GAN通过生成器,不断逼近真实分布,学习到了真实样本集的数据分布。
2.1 生成器训练
GAN的优化最终想要的效果是生成器(generator)的输出给判别器(discriminator)时很难判断是真实的还是伪造的。
从概率统计来讲,就是实现分布散度的趋同。
**也就是最小化生成数据分布和真实数据分布之间的差异。**
生成器的训练就是找到最小化Div
2.2 训练样本分布的解决
那么首先就是如何定义真实数据和噪声数据的分布?
只有能表示分布,才能计算二者之间的散度。
**解决方法是通过采样的方式**
无法确切知道到底如何表示,但对于一定batch的采样可以代替真实分布。
接下来就是如何定义二者之间的散度。
3散度的定义
3.1 判别器的训练
首先定义了判别器D的目标函数,使得目标函数值越大,说明判别器越强大,越能区分开真假数据。
此函数的意义类似训练一个二值逻辑回归分类器:当从真实数据中采样时(服从真实分布),值为1;
当从生成数据中采样时(服从生成分布),值为0.
训练目标就是,使得目标函数值越大。
3.2 判别器的目标函数最大等价与分布散度值
通过一系列证明,最大化判别器的目标函数值,就是散度。
这样,最初的问题
就转换为了:
3.3 训练过程
因此可以通过,训练判别器,生成器的不断迭代实现最小化二者散度。
4 具体算法
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:2 李宏毅生成对抗网络学习———GAN原理 - Python技术站