GAN
GAN(Generative Adversarial Networks)是两个网络的的组合, 一个网络生成模拟数据, 另一个网络判断生成的数据是真实的还是模拟的。生成模拟数据的网络要不断优化自己让判别的网络判断不出来, 判别的网络也要优化自己让自己判断得更准确。 二者关系形成对抗博弈,因此叫对抗神经网络(生成对抗网络)。实验证明, 利用这种网络间的对抗关系所形成的网络, 在无监督及半监督领域取得了很好的效果, 可以算是用网络来监督网络的一个自学习过程。在GAN发明之前,变分自编码器被认为是理论完美、实现简单,使用神经网络训练起来很稳定, 生成的图片逼近度也较高, 但是人类还是可以很轻易地分辨出真实图片与机器生成的图片。
GAN原理
生成对抗网络包含了 2 个子网络: 生成网络(Generator, G)和判别网络(Discriminator,D), 其中生成网络负责学习样本的真实分布,判别网络负责将生成网络采样的样本与真实样本区分开来。
GAN架构图GAN网络结构
生成网络 G(𝐳) 生成网络 G 和自编码器的 Decoder 功能类似, 从先验分布中采样隐藏变量,通过生成网络 G 参数化的分布, 获得生成样本,如下图所示。 其中隐藏变量𝒛的先验分布可以假设属于某中已知的分布,比如多元均匀分布。
生成网络可以用深度神经网络来参数化, 如下图所示, 从均匀分布中采样出隐藏变量𝒛, 经过多层转置卷积层网络参数化的分布中采样出样本。
转置卷积构成的生成网络判别网络 D(𝒙) 判别网络和普通的二分类网络功能类似,它接受输入样本𝒙,包含了采样自真实数据分布的样本,也包含了采样自生成网络的假样本, 和共同组成了判别网络的训练数据集。判别网络输出为𝒙属于真实样本的概率,我们把所有真实样本的标签标注为1,所有生成网络产生的样本标注为0, 通过最小化判别网络预测值与标签之间的误差来优化判别网络参数。
生成网络和判别网络GAN的损失函数
我们的目标很明确, 既要不断提升判断器辨别真假图像样本的能力, 又要不断提升生成器生成更加逼真的图像,使判别器越来越难判别。
对于判别网络 D,它的目标是能够很好地分辨出真样本与假样本。即最小化图片的预测值和真实值之间的交叉熵损失函数:
其中代表真实样本在判别网络的输出, 为判别网络的参数集, 为生成样本在判别网络的输出, 为的标签,由于真实样本标注为真,故, 为生成样本的的标签,由于生成样本标注为假,故。 根据二分类问题的交叉熵损失函数定义:
因此判别网络的优化目标是:
去掉中的负号,把问题转换为问题,并写为期望形式:
对于生成网络G(𝒛),我们希望能够很好地骗过判别网络 , 假样本在判别网络的输出越接近真实的标签越好。也就是说,在训练生成网络时, 希望判别网络的输出越逼近 1 越好,此时的交叉熵损失函数:
把问题转换为问题,并写为期望形式:
再等价转化为:
GAN的优化过程不像通常的求损失函数的最小值, 而是保持生成与判别两股力量的动态平衡。 因此, 其训练过程要比一般神经网络难很多。
统一损失代价函数
把判别网络的目标和生成网络的目标合并,写成min-max形式:
原GAN论文中:
这里为了好理解,把各个符号梳理的更清晰了,注意符号和网络参数的对应。
理想情况下,会有更精确的鉴别真伪数据的能力,经过大量次数的迭代训练会使尽可能模拟出以假乱真的样本, 最终整个GAN会达到所谓的纳什均衡, 即对于生成样本和真实样本鉴别结果为正确率和错误率各占50%。下面具体从理论层面来推导。
纳什均衡
现在从理论层面进行分析, 通过博弈学习的训练方式,生成器 G 和判别器 D 分别会达到什么状态。 具体地,来看以下 2 个问题:
- 问题1:固定生成器 , 判别器 会收敛到什么最优状态?
- 问题2:在 鉴别器 达到最优状态后, 会收敛到什么状态?
首先我们通过一维正态分布的例子给出一个直观的解释,如下图所示,黑色虚线曲线代表了真实数据的分布, 为某正态分布, 绿色实线代表了生成网络学习到的分布, 蓝色虚线代表了判别器的决策边界曲线, 图中(a)(b)(c)(d)分别代表了生成网络的学习轨迹。在初始状态,如图 (a)所示, 分布与差异较大,判别器可以很轻松地学习到决策边界,即图(a)中的蓝色虚线,将来自的采样点判定为 0, 中的采样点判定为 1。 随着生成网络的分布越来越逼近真实分布,判别器越来越困难将真假样本区分开,如图 (b)(c)所示。 最后,生成网络性能达到最佳,学习到的分布,此时从生成网络中采样的样本非常逼真, 判别器无法区分,即判定为真假样本的概率均等,如图(d)所示。
直观解释问题1:判别器D状态
固定生成器G的参数,判别器D最佳能达到的状态:
证明:对于给定的生成器G,要让判别器D达到最优,我们的目标是最大化损失函数,其积分形式为:
对于给定的 ,真实分布始终是固定的,所以和都是定值,于是对于判别器D,要找出
的最大值,其中是判别器网络参数,对于函数,不难得到在处取得极大值且是最大值。因此可得的极值点也为
故判别器 能达到的最佳状态为定理中给出的式子。
问题2:生成器G状态
现在考虑第二个问题。
JS 散度(Jensen–Shannon divergence)
对于KL散度,,是不对称的。但JS散度是对称的。
当达到时,考虑此时和的散度:
考虑到判别网络到达时,此时的损失函数为:
于是我们可以得到:
对于生成网络而言,目标是最小化损失函数,由于,因此取得最小值仅在时(此时),取得最小值:
此时生成网络达到状态是:
即的学到的分布与真实分布一致,网络达到纳什均衡点,此时:
即对于生成器生成的图像有0.5的概率被判定为真,也有0.5的概率被判定为假。
GAN训练过程
算法过程参考资料
https://www.jianshu.com/p/058fd15cfa52
网友评论