机器学习入门:GAN 生成式对抗网络
想象一个在一个十字路口,上班高峰期大部分车向右转,下班高峰期向左转,我们用图片,使用神经网络训练,预测车子是向左还是向右转。结果我们会发现,训练之后生成的预测图像,车子可能会同时产生向右向左转的残影。这是因为神经网络在一张相似的图片中,既学习到了向左的车辆也学习到了向右的车辆,所以他会认为,同时发生向左向右都是可以的。为了解决这个问题,我们让 network 输出一个 simple distribution。让模型输出它学习的概率,而不是所有可能。
尤其是我们需要模型具有创造力时,需要模型有 simple distribution 的能力(即每次输出的答案是一个概率问题,并不是固定的)GAN(generative adversarial network)从而被引出。
1. GAN 的基本想法
GAN 的最大不同在于它的架构中不仅仅有一个 generator,还需要有一个 discriminator。GAN 的基本工作逻辑是 generator 首先生成一批图片,然后 discriminator对生成的图片进行打分,找出这批图片和目标值的差异。从而 generator 为了生成能够满足 discriminator 的图片,生成第二批图片,不断“进化”去满足 discriminator,第二批图像生成之后,discriminator 也会更新,提出更高的要求。两个模型不断对抗,提高生成质量。

2. GAN 的训练步骤
(一)初始化 generator 和 discriminator
首先我们用最原始的训练集训练初代的 generator ,让它去输出第一批图片。之后再用第一批图片和我们的目标图片二者进行比较,去训练 discriminator。
(二)generator 不断迭代训练对抗
discriminator 的参数是固定的,固定有一个打分的标准,然后不断更新 generator 的参数去训练,提高模型的符合度。
(三)反复上面两个步骤
反复训练 generator 和 discriminator,不断的互相更新迭代。
3. GAN 的理论

在之前的神经网络学习中,我们已经学会了怎么通过机器学习,生成一些图片,我们现在的目标是找一组 generator 的参数,让 PG 和 Pdata 之间的差异越小越好。但是现在GAN 遇到的问题是,Pdata 和 PG 是两组图片,我们很难用自己想象的一个函数去表达这两组图片的差距,在构造 discriminator 中会遇到一些问题。为了解决这个问题,我们可以训练一个 D*函数,我们要求它尽可能地大,于是输入 Pdata 的时候尽量高分,PG 时尽量给低分。



更多推荐
所有评论(0)