最近的一篇Wasserstein GAN火遍朋友圈,相关的文章也拿来读一读,赶个时髦
简介
文章用博弈论,令生成模型和判别模型的相爱相杀后,得到与训练数据分布尽可能接近的生成模型,一个扮演打假者,一个扮演造假者,前者试图在真货与假货中辨别哪个样本是假货(生成的),哪个是真货(真实样本),后者不断提高自己的制假水平,不让前者辨别出来
文章全名:Generative Adversarial Nets
这是生成对抗网络的开山之作,发表之后,无数相关论文雪花般飘落
训练目标与过程
判别模型可以认为就是一般的二分类模型,分辨真伪,因此,当生成模型一定时,最优值即为下式
分子为真实数据,分母的右侧为生成模型造出的数据
生成模型要使得差别模型尽可能无法识别,因此目标函数同时包含二者的成分,即最小化下式
或最大化
所以,综合目标为
训练过程分为两步:
1、训练判别模型,迭代k次
2、训练生成模型,只迭代1次
两个模型都是神经网络,对数据的分布不作假设,因此极易过拟合,所以两个步骤的训练都采用了不充分的训练,特别是生成模型,尽量让拟合速度慢下来,拟合的过程如下图:
黑点代表训练数据分布,蓝色是判别界面,绿色是生成数据分布。如(a)所示,一开始两个模型都是离各自目标比较远的,在(b)中,判别模型首先发力,取得了更为清晰的判别面,在(c)中,生成模型与之对抗,生成模型与训练数据越来越像,最后,如(d),生成数据分布与训练数据完全重合,判别模型的预测结果是50%-50%,完全不能区分。
具体的训练过程:
效果示例
四组示例的最右边一列,是临近的左侧的生成图片的最接近实际样本,所有数据均是随机给出,并非精心挑选