GAN模型
1.哪些经典的GAN模型跨过了周期,在AIGC时代继续落地使用?
GAN作为传统深度学习时代的主流生成式模型,在AIGC时代到来后,终于“退居二线”,成为Stable Diffusion模型的得力助手。Rocky认为这是GAN最好也是最合适的落地方式,所以Rocky持续梳理总结了在AIGC时代继续繁荣的GAN模型,为大家指明GAN快速学习入门的新路线:
- GAN优化:原生GAN、DCGAN、CGAN、WGAN、LSGAN等
- 图像生成:bigGAN、GigaGAN等
- 图像风格迁移:CycleGAN、StyleGAN、StyleGAN2等
- 图像编辑:Pix2Pix、GauGAN、GauGAN2、DragGAN等
- 图像超分辨率重建:SRGAN、ESRGAN、Real-ESRGAN、AuraSR等
- 图像修复/人脸修复:GFPGAN等
2.GAN的核心思想?
2014年,Ian Goodfellow第一次提出了GAN的概念。Yann LeCun曾经说过:“生成对抗网络及其变种已经成为最近10年以来机器学习领域最为重要的思想之一”。GAN的提出让生成式模型重新站在了深度学习这个浪潮的璀璨舞台上,与判别式模型开始谈笑风生。
GAN由生成器 G G G和判别器 D D D组成。其中,生成器主要负责生成相应的样本数据,输入一般是由高斯分布随机采样得到的噪声 Z Z Z。而判别器的主要职责是区分生成器生成的样本与 g t ( G r o u n d T r u t h ) gt(GroundTruth) gt(GroundTruth)样本,输入一般是 g t gt gt样本与相应的生成样本,我们想要的是对 g t gt gt样本输出的置信度越接近 1 1 1越好,而对生成样本输出的置信度越接近 0 0 0越好。与一般神经网络不同的是,GAN在训练时要同时训练生成器与判别器,所以其训练难度是比较大的。
在提出GAN的第一篇论文中,生成器被比喻为印假钞票的犯罪分子,判别器则被当作警察。犯罪分子努力让印出的假钞看起来逼真,警察则不断提升对于假钞的辨识能力。二者互相博弈,随着时间的进行,都会越来越强。在图像生成任务中也是如此,生成器不断生成尽可能逼真的假图像。判别器则判断图像是 g t gt gt图像,还是生成的图像。二者不断博弈优化,最终生成器生成的图像使得判别器完全无法判别真假。
GAN的对抗思想主要由其目标函数实现。具体公式如下所示:
上面这个公式看似复杂,其实不然。跳出细节来看,整个公式的核心逻辑其实就是一个min-max问题,深度学习数学应用的边界扩展到这里,GAN便开始发光了。
接着我们再切入细节。我们可以分两部分开看这个公式,即判别器最小化角度与生成器最大化角度。在判别器角度,我们希望最大化这个目标函数,因为在公示第一部分,其表示 g t gt gt样本 ( x ~ P d a t a ) (x ~Pdata) (x~Pdata)输入判别器后输出的置信度,当然是越接近 1 1 1越好。而公式的第二部分表示生成器输出的生成样本 ( G ( z ) ) (G(z)) (G(z))再输入判别器中进行进行二分类判别,其输出的置信度当然是越接近 0 0 0越好,所以 1 − D ( G ( z ) ) 1 - D(G(z)) 1−D(G(z))越接近 1 1 1越好。
在生成器角度,我们想要最小化判别器目标函数的最大值。判别器目标函数的最大值代表的是真实数据分布与生成数据分布的JS散度,JS散度可以度量分布的相似性,两个分布越接近,JS散度越小(JS散度是在初始GAN论文中被提出,实际应用中会发现有不足的地方,后来的论文陆续提出了很多的新损失函数来进行优化)
写到这里,大家应该就明白GAN的对抗思想了,下面是初始GAN论文中判别器与生成器损失函数的具体设置以及训练的具体流程:
在图中可以看出,将判别器损失函数离散化,其与交叉熵的形式一致,我们也可以说判别器的目标是最小化交叉熵损失。
3.面试常问的经典GAN模型?
- 原始GAN及其训练逻辑
- DCGAN
- CGAN
- WGAN
- LSGAN
- PixPix系列
- CysleGAN
- SRGAN系列
4.生成对抗网络GAN与传统神经网络有何不同?
生成对抗网络(GAN)的定义
- 生成对抗网络(Generative Adversarial Network,GAN)是一种深度学习架构,由生成器(Generator)和判别器(Discriminator)两个部分组成。
- 生成器的主要任务是学习数据的分布,并生成尽可能逼真的数据来欺骗判别器。例如,它可以学习人脸图像的数据分布,然后生成新的人脸图像。生成器接收一个随机噪声向量(通常是低维的)作为输入,通过一系列的神经网络层(如全连接层、卷积层等)将这个噪声转化为生成的数据样本。
- 判别器则用于区分真实数据和生成器生成的数据。它接收真实数据和生成数据作为输入,输出一个概率值,表示输入的数据是真实数据的概率。例如,对于一张图像,判别器会判断它是真实拍摄的人脸图像还是生成器生成的人脸图像,输出一个介于0到1之间的概率。
- 这两个部分在训练过程中相互对抗、相互学习。生成器试图让生成的数据尽可能地骗过判别器,而判别器则试图更好地分辨真实数据和生成数据,随着训练的进行,生成器生成的数据越来越逼真。
GAN与传统神经网络的不同点
- 网络结构
- 传统神经网络:通常是一个前馈网络(如多层感知机)或递归网络(如RNN、LSTM),主要用于完成分类、回归等任务。例如,在图像分类任务中,传统神经网络输入一张图像,通过一系列的卷积层和全连接层,最终输出图像所属的类别。它的结构相对比较单一,目的是学习输入到输出的映射关系。
- GAN:具有双模块结构,由生成器和判别器组成。这两个模块之间存在对抗关系,它们的训练过程是相互关联的。生成器的输出作为判别器的输入的一部分,两个模块的参数是交替更新的,而不是像传统神经网络那样只更新一个网络的参数。
- 训练目标
- 传统神经网络:训练目标比较直接。在监督学习的情况下,例如分类任务,训练目标是最小化预测类别与真实类别之间的交叉熵损失;在回归任务中,训练目标可能是最小化预测值与真实值之间的均方误差等。目标是使网络输出尽可能准确地符合给定的标签或目标值。
- GAN:训练目标是达到纳什均衡(Nash equilibrium)。生成器的目标是最小化生成数据被判别器识别为假数据的概率,即最大化判别器将生成数据判断为真实数据的概率;判别器的目标是最大化区分真实数据和生成数据的能力。这种对抗性的训练目标使得GAN的训练过程更加复杂和动态。
- 数据学习方式
- 传统神经网络:在监督学习中,依赖于带有标签的训练数据来学习输入和输出之间的映射关系。例如,在训练一个文本情感分类器时,需要大量的文本及其对应的情感标签(如正面、负面)来训练网络。在无监督学习的情况下,传统神经网络可能会学习数据的聚类等特征,但学习方式相对比较固定。
- GAN:通过生成器和判别器的对抗来学习数据的分布。生成器在没有直接看到真实数据标签的情况下,通过判别器的反馈来不断调整生成的数据,使其更接近真实数据的分布。例如,在生成手写数字图像的GAN中,生成器通过不断尝试生成能骗过判别器的手写数字图像,来学习真实手写数字图像的分布。
- 应用场景
- 传统神经网络:广泛应用于分类、回归、聚类、预测等领域。例如,在语音识别中,用于将语音信号转换为文本;在推荐系统中,用于预测用户对物品的喜好程度等。
- GAN:主要用于生成数据,如生成图像、音频、文本等。可以用于数据扩充,例如在医疗图像数据较少的情况下,通过GAN生成更多的类似图像来扩充数据集;还可以用于图像风格转换,如将真实照片转换为油画风格的图像等。