本文主要是介绍【2023年】第34天 生成对抗网络 1(GAN,Generative Adversarial Networks),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. GAN,Generative Adversarial Networks的定义
1.生成式对抗网络是一种深度学习模型。
所以GAN是一种更好的生成模型
机器学习的模型可大体分为两类,生成模型(Generative Model)和判别模型(Discriminative Model)。
判别模型需要输入变量,通过某种模型来预测。
生成模型是给定某种隐含信息,来随机产生观测数据。
2.GAN原理
GAN主要包括了两个部分,即生成器generator与判别器discriminator。
生成器主要用来学习真实图像分布从而让自身生成的图像更加真实,以骗过判别器。
判别器则需要对接收的图片进行真假判别。
在训练过程中,生成器努力的让生成的图像更加真实,而判别器则努力地去识别出图像的真假,这个过程相当于一个二人博弈,随着时间的推移,生成器和判别器在不断的进行对抗。
最终两个网络达到了一个动态均衡:生成器生成的图像接近于真实图像分布,而判别器识别不出真假图像,对于给定图像的预测为真的概率接近0.5(相当于随机猜测类别)。
3.GAN概念部分的总结
(1)对于给定的真实图片,判别器要为其打上标签1;
对于给定的生成图片,判别器为其打上标签0;
对于生成器传给辨别器的生成图片,生成器希望辨别器打上标签1。
(2)训练过程中,生成网络G的目标就是尽量生成很靠近真实的图片去欺骗判别网络D。
而D的目标就是尽量把G生成的图片和真实的图片分别开来。
这样,G和D构成了一个动态的 “博弈过程”。
(3)博弈的结果是什么?
在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。
对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
目的:得到一个生成模型G,可以用来生成图片。
4.GAN的应用领域
2. GAN网络的算法流程
- G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记作G(z)。
- D是一个判别网络,判别一张图片是不是“真实的”。他的输入参数是X,X代表一张图片,输出D(X)代表X为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
- 在训练过程中,将随机噪声输入生成网络G,得到生成的图片;判别器接收生成的图片和真实的图片,并尽量讲两者区分开来。在这个计算过程中,能否正确区分生成的图片和真实的图片讲作为判别器的损失,而能否生成近似真实的图片并使得判别器生成的图片判定为真,将作为生成器的损失。
- 生成器的损失是通过判别器的输出来计算的,而判定器的输出是一个概率值,我们可以通过交叉熵计算。
- Goodfellow从理论上证明了GAN算法的收敛性以及在模型收敛时生成数据具有和真实数据相同的分布。
解释:
(1)公式中的x表示真实图片
(2)z表示输入G网络的噪声
(3)G(z)表示G网络生成的图片
(4)D(*)表示D网络判断图片是否真实的概率
- 对于判别器D,我们希望它可以正确识别真实数据,这便是GAN公式的前半部分。
解释:
(1)期望x从pdata中获取。
(2)x表示真实的数据(图片),Pdata表示真实数据的分布。
(3)判别器判别出真实数据的概率。我们的优化目标就是希望这个概率越大越好。也就是说,对于服从Pdata分布的图片x,判别器应该给出预测结果D(x) = 1。
解释:
(1)表示期望z是从Pz(z)分布中获取。
(2)z表示随机的噪声;
(3)Pz(Z) 表示生成随机噪声的分布。
(4)对于判别器D来说,如果其输入的是生成的数据,也即是D(G(z))判别器的目标是最小化D(G(z)),希望它被判定为0,也就是希望log(1-D(G(z)))
越大越好。
(5)这里对数函数在其定义域内是单调递增函数,数据取对数不改变数据间的相对关系,使用log后,可方法损失,便于计算和优化。
对于生成器G来说,它希望生成的数据被判别器识别为真,也就是希望是D(G(z)) = 1
, 也就是希望log(1-D(G(z)))
越小越好。
我们可以看出判别器和生成器的优化目标是相反的。
这篇关于【2023年】第34天 生成对抗网络 1(GAN,Generative Adversarial Networks)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!