赞
踩
目录
Condtitional GAN+Supervised learing
GAN(Generative Adversarial Network)由generator和discriminator组成。
generator就是输入一个向量输出图片(举例)
discriminator就是吃上一步输出的图片输出一个判别分数
generator为了骗过discriminator不断进化生成更复杂的图片,discriminator为了适应这种变化进化出更强的辨识能力
Generator和Discriminator是迭代交替训练的,首先Generator和Discriminator作为两个神经网络要进行初始化,接下来在每次迭代中都要先训练Discriminator再训练Generator,也就是完成以下两步:
Step1:固定住Generator,从一个高斯分布或者均匀分布(或者其他分布)随机抽样几个向量然后输入Generator中获取对应的生成的图片,同时也要从训练资料的数据库中随机抽样一部分真实的图片,然后让Discriminator学习如何鉴别真实的图片和生成的图片,具体的就是尽可能让Discriminator给真实的图片打高分,给生成的图片打低分,训练过程就当做一个分类或者回归任务来更新Discriminator的参数就好
Step2:固定Discriminator,调整Generator的参数,目标就是让Generator生成的图片输入到Discriminator后能够“骗”过Discriminator(尽可能地得到高分)。具体的过程就是将Generator和Discriminator看做一个巨大的神经网络,在训练时这个神经网络的Discriminator的参数是不变的,只会更新Generator的参数,这样的话Generator生成的图片就会越来越接近真实的图片。
我们的目标是让Generator产生的和真实数据越接近越好
我们可以计算Divergence来计算差距,但是Divergence不好算,我们可以train Discriminator看他的object function有多大。这个obejct fuction的值就和divergence有关
下图可以看出当散得很开时Discriminator就可以很好得分开:
计算divergence的方法有JS divergence但这个方法当低维向量在高维空间重叠得不多时效果不好,我们也可以采用wasserstein distance。
JS不能很好看出效果:
而WD能:
有直观的变化才能更好的train我的generator才能
图片上我们可以看出有许多相似的二次元头像,他们只是换了个发色但是这样就骗过了discriminator, 这样discriminator有盲点,然后generator一直利用盲点吃红利这就是模型坍塌。
Mode Dropping,指 GAN 能很好地生成训练集中的数据,但难以生成非训练集的数据,“缺乏想象力”。因为采样数量的局限性,现实中我们无法采集到全部可能的图像,即采集到所有可能的图像是不可能的(如果有能力采集到所有可能的图像,那么我们也就不需要 GAN 来生成图像了),所以通常我们会采样,采集一定数量的图像来代表整个图像分布。如图2所示,generated data 分布过于与训练集 real data 分布近似,但由于 real data 无法代表整体分布,生成器无法生成没见过的图像。可以看到在 iteration t 和 iteration t+1,生成器生成的图像除了颜色以外没有其他的变化。这就像是我们考试前不理解知识点而直接背答案一般,题目一变,就直接不会了。个人感觉这种现象也更像是过拟合于训练集,多样性不够!
使用分类器,平均起来比较集中就是多样性不够
比较平均就是多样性够!
防止Generator 只产生能过discriminator的图片而不看输入的condition,我们需要将成对的文字与图片进行输入.要图片要好而且图片和文字配的上我们才给高分
适用于没有成对的资料,cycle Gan加强结果,分别让真人转成2次元判断二次元的得分再让二次元转真人再让第一个真人和第二个真人比较。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。