Java教程

GAN算法

本文主要是介绍GAN算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

生成对抗模型

论文地址

  • 有em算法思想

生成对抗网络(GAN)由2个重要的部分构成:
生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器
判别器(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”
主要流程:

第一阶段:固定“判别器D”,训练“生成器G”
我们使用一个还 OK 判别器,让一个“生成器G”不断生成“假数据”,然后给这个“判别器D”去判断。一开始,“生成器G”还很弱,所以很容易被揪出来。但是随着不断的训练,“生成器G”技能不断提升,最终骗过了“判别器D”。到了这个时候,“判别器D”基本属于瞎猜的状态,判断是否为假数据的概率为50%。

第二阶段:固定“生成器G”,训练“判别器D”
当通过了第一阶段,继续训练“生成器G”就没有意义了。这个时候我们固定“生成器G”,然后开始训练“判别器D”。
“判别器D”通过不断训练,提高了自己的鉴别能力,最终他可以准确的判断出所有的假图片。到了这个时候,“生成器G”已经无法骗过“判别器D”。

循环阶段一和阶段二:
通过不断的循环,“生成器G”和“判别器D”的能力都越来越强。最终我们得到了一个效果非常好的“生成器G”,我们就可以用它来生成我们想要的图片了。

GAN算法有两个特点:

  • 是一种无监督学习算法,不需要label
  • 用一个有监督学习(MLP)的损失函数来做无监督学习,算法效率会更高

总结:算法中涉及到生成模型和判别模型对抗思想,并且用到KL散度等数学知识,通过博弈来逼近最优结果。

这篇关于GAN算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!