GAN系列基础知识

文章介绍了GANs的基础,包括原始GAN的值函数和WGAN的loss函数,强调了Wasserstein距离在解决优化饱和和坍缩模式中的作用。WGAN-GP通过GradientPenalty确保1-Lipschitz约束。此外,提到了DC-GAN的反卷积结构,ALI和BiGAN的双向转换,以及IRGAN的信息检索视角。CycleGAN则展示了风格迁移的实现,通过循环一致性损失保持内容的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

省流版的GAN loss函数

原始GAN的值函数是
minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]min_Gmax_DV(D,G) = E_{x \sim p_{data}(x)}[logD(x)]+E_{z \sim p_{z}(z)} [log(1-D(G(z)))]minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
这时候D(x)越接近于1,判别器越认为来自于真实样本

WGAN的loss函数是
minGmaxDEx∼pdata(x)[D(x)]−Ez∼pz(z)[D(z)]min_Gmax_D E_{x \sim p_{data}(x)}[D(x)]-E_{z \sim p_{z}(z)} [D(z)]minGmaxDExpdata(x)[D(x)]Ezpz(z)[D(z)]
这时候D变成了W距离,判别器希望拉大真实样本和生成样本的距离,而生成器要缩小距离

原始值函数

原始GAN的值函数是
minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]min_Gmax_DV(D,G) = E_{x \sim p_{data}(x)}[logD(x)]+E_{z \sim p_{z}(z)} [log(1-D(G(z)))]minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
其中Ex∼pdata(x)E_{x \sim p_{data}(x)}Expdata(x)表示从真实样本采样,Ez∼pz(z)E_{z \sim p_{z}(z)}Ezpz(z)表示从噪声样本中采样,D(x)D(x)D(x)是判别器,G(z)G(z)G(z)是生成器。D(x)越接近于1,表示判别器越把这个样本判别为真实样本,而log是个单调递增的函数,所以要maxDmax_DmaxD,这也是GAN迭代的第一阶段;第二阶段实际上只有后半部分
进一步将V(D,G)写成积分格式就是
V(G,D)=∫xpdata(x)log(D(x))dx+∫zpz(z)log(1−D(g(z)))dzV(G,D)=∫xpdata(x)log(D(x))dx+pg(x)log(1−D(x))dxV (G, D) = \int_xp_{data}(x) log(D(x))dx + \int_zp_z(z) log(1 − D(g(z)))dz \\ V (G, D) = \int_xp_{data}(x) log(D(x))dx + p_g(x) log(1 − D(x))dx V(G,D)=xpdata(x)log(D(x))dx+zpz(z)log(1D(g(z)))dzV(G,D)=xpdata(x)log(D(x))dx+pg(x)log(1D(x))dx
For any (a, b) ∈ R2, the function y → a log(y) + b log(1 − y) achieves its maximum at a/(a+b).

优化饱和

在实际训练中,早期G很差,G生成的样本很容易被D识别,使得D回传给G的梯度极小,达不到训练目标,这种现象叫做优化饱和。进一步解释一下优化饱和的原因,将D的sigmoid输出层的前一层记为o,那么D(x)=Sigmoid(o(x)),那么
∇D(x)=∇Sigmoid(o(x))=D(x)(1−D(x))∇o(x)\nabla D(x)=\nabla Sigmoid(o(x))=D(x)(1-D(x))\nabla o(x) D(x)=Sigmoid(o(x))=D(x)(1D(x))o(x)
所以训练G时候的梯度里包含的D(G(x))就趋近于0
解决方案是把log(1−D(G(z)))log(1-D(G(z)))log(1D(G(z)))改成log(D(G(z)))log(D(G(z)))log(D(G(z))),minGmin_GminG变成了maxGmax_GmaxG,整体函数从两阶段minmax变成了两阶段maxmax

JS距离

在这里插入图片描述

WGAN-GP

普通的GAN可以看做是优化JS距离,但是只用JS距离会进入坍缩模式(拿图片举例,反复生成一些相近或相同的图片,多样性太差。生成器似乎将图片记下,没有泛化,更没有造新图的能力,好比一个笨小孩被填鸭灌输了知识,只会死记硬背,没有真正理解,不会活学活用,更无创新能力)。猜测问题根源和JS距离维度低有关系,因此引入了Wasserstein距离(也叫推土机距离,Earth Mover distance)

为什么Wasserstein距离能克服JS距离解决不了的问题?理论上的解释很复杂(从下面黑色截图里的例子来看,简单来说就是推土机距离可以比较好解决没有overlap和完全overlap时候的问题),需要证明当生成器分布随参数θ变化而连续变化时,生成器分布与真实分布的Wasserstein距离也随θ变化而连续变化,并且几乎处处可导,而JS距离不保证随θ变化而连续变化
推土机距离原始的表达式如下图:
在这里插入图片描述
其中x表示从真实样本PrP_rPr中采样,y表示从生成样本PθP_\thetaPθ中采样,inf表示infimum, also known as greatest lower bound,即最大下界
在这里插入图片描述
以上两张图都来自Wasserstein GAN这篇论文(https://arxiv.org/pdf/1701.07875v3.pdf),展示的是根据Kantorovich-Rubinstein duality(对偶) 得到的Wasserstein距离对偶式,其中PrP_rPr表示真实样本,PθP_\thetaPθ表示生成样本,∣∣f∣∣L<=1||f||_L<=1∣∣fL<=1是1-Lipschitz函数(对于函数f(x),若其任意定义域中的x1,x2,都存在L>0,使得|f(x1)-f(x2)|≤L|x1-x2|。 大白话就是:存在一个实数L,使得对于函数f(x)上的每对点,连接它们的线的斜率的绝对值不大于这个实数L),上面这个其实就是把原始GAN值函数的Log也去掉。supremum is the opposite of infimum, we want to measure the least upper bound,也就是最小上界。
在这里插入图片描述
下图来自Improved Training of Wasserstein GANs(https://arxiv.org/pdf/1704.00028.pdf)这篇论文,“鉴别器”不再是区分假样本和真样本的直接批评者,而是希望让真假样本距离尽量拉大,而生成器希望这个距离尽量小:
在这里插入图片描述
实际中发现The interaction between the weight constraint and the loss function makes training of WGAN difficult and leads to exploding or vanishing gradients.解决方案直接把1-Lipschitz的约束变成了Gradient Penalty(The idea of Gradient Penalty is to enforce a constraint such that the gradients of the critic’s output w.r.t the inputs to have unit norm)。因此最终的目标函数最小化下面的表达式。注意下图里真实样本、生成样本的顺序刚好反了,所以从上图中的最大化变成了下图中的最小化,下图来自Improved Training of Wasserstein GANs(https://arxiv.org/pdf/1704.00028.pdf)这篇论文
在这里插入图片描述
关于WGAN的介绍有一篇很好的博客:
在这里插入图片描述
上述截图来自于:

  1. https://lilianweng.github.io/posts/2017-08-20-gan/ 解释WGAN的原理
  2. Kantorovich-Rubinstein 对偶 解释KR对偶

判别器也换了一个名字叫做Critic评分器
在这里插入图片描述

Spectral Normalization

为了让判别器函数满足 1-Lipschitz continuity,W-GAN 和之后的 W-GAN GP 分别采用了 weight-clipping 和 gradient penalty 来约束判别器参数。这里的谱归一化,则是另一种让函数满足 1-Lipschitz continuity 的方式。谱归一化会对每一层的权重做奇异值分解,并对奇异值做归一化以将其限制在1以内

IPM(Integral Probability Metrics)-GAN

IPM-GAN基于积分概率度量两个分布的距离,WGAN是一种典型的IPM-GAN,另外一种典型的IPM-GAN叫做McGAN(Mean and Covariance Feature Matching GAN)。它从最小化IPM的角度将分布之间距离的度量定义为有限维度特征空间的分布匹配。

首先,分类超平面搜索;然后,判别器向远离超平面的方向更新;最后,生成器向超平面的方向更新。实际上,这种几何解释同样可以应用在其他GAN上,包括f-GAN、WGAN等。各种GAN之间的主要区别就在于分类超平面的构建方法以及特征向量的几何尺度缩放因子的选择

DC-GAN

DCGAN全称Deep Convolutional GAN,发表于ICLR2016。DCGAN的主要贡献反卷积操作又称为“分数步长卷积”(fractional-strided convolution)或“转置卷积”(transposed convolution),可以视为一种与正常卷积“相反”的操作,这里不是指反卷积是卷积的逆变换,而是使用一种类似卷积的方法实现了上采样

ALI(Adversarially learned inference)

Adversarially Learned Inference(简称ALI)与Adversarial feature learning(简称BiGAN)类似,GAN中的生成器实现了从Latent向量空间z到图像空间x的转换,ALI和BiGAN模型则添加了图像空间x到Latent向量空间z的转换。判别器不仅需要学习区分生成的样本和真实的样本,还需要区分两个不同的数据和潜在变量联合分布。

IRGAN(Information Retrieval)

给定q,生成模型会在整个文档集中按照概率分布pθ(d∣q)p_\theta(d|q)pθ(dq)挑选出文档dθ,它的目标是逼近真实数据的概率分布ptrue(d|q),进而迷惑判别器;同时,判别模型试图将生成器伪造的(q,dθ)从真实的(q,dtrue)中区分出来。原本的判别模型是用来鉴别与Query相关或不相关的文档,而在GAN框架下判别模型的目标发生了微妙变化,区分的是来自真实数据的相关文档和模拟产生的潜在相关文档。当然,最终的判别模型仍可鉴别与Query相关或不相关的文档。我们用一个MiniMax目标函数来统一生成模型和判别模型。最终利用强化学习中策略梯度求期望和重参数技巧显式地表达pθ(d∣q)p_\theta(d|q)pθ(dq)

CycleGAN(风格迁移)

cycleGAN包含两个生成器G和F,对应两个判别器DX和DY,下面以生成器G和判别器DY进行分析(F和DX的原理与之相同)

cycleGAN的生成器G的输入不再是噪声z,而是域X的图片x(斑马),生成器G的目标是其生成的样本G(x)(把斑马转换为马,伪造的马)和域Y(马)中的样本尽可能相似(可以把x假想为噪声z,这样就和经典GAN的原理相同了),判别器DY的输入有两种:域Y(马)的样本y和G(x)(伪造的马),判别器DY的优化目标是尽可能区分出y和G(x),损失函数表达如下:
在这里插入图片描述
对于生成器F和判别器DX,原理和上述相同:F输入y(马)输出G(y)(伪造斑马),其目标是伪造的斑马G(y)和真实的斑马x尽可能相似;DX输入为伪造斑马G(y)和真实斑马x,DX优化目标是尽可能正确的区分二者。
尽管上述的对抗性损失能够让生成器G和生成器F学习到域Y和域X的分布,但是却没有保证从x得到G(x)时图像的内容不变,因为G(x)只需要符合域Y分布即可,并没有对其施加约束,所以x到G(x)包含很多种可能的映射。

为此,作者提出使用循环一致性损失来作为约束,使得G生成的G(x)在内容上仍然能和x保持一致。循环一致性的表述为:从斑马x得到伪造马G(x)以后,再次将伪造马送入生成器F获得重构斑马F(G(x)),同时约束重构斑马F(G(x))=x,这就是论文中的循环一致性(同理,约束G(F(y))=y),公式如下:
在这里插入图片描述
cycleGAN的损失函数为对抗性损失和循环一致性损失的总和:
在这里插入图片描述
cycleGAN的核心思想为“cycle”,即某个域X的样本x可以映射到域Y的分布x2y(其中2表示to),这个x2y应该还能映射回原始的X域样本x2y2x,这个过程就是循环一致过程。代码实线和视觉分析结果请看:让算法拥有想象力的cycleGAN(一)pytorch实现。

GAN训练不稳定的原因分析

  • 不平衡的训练:生成器和判别器的训练速度不匹配也会导致不稳定。如果判别器学习得太快或太慢,都会影响GAN的训练效果。
  • 纳什均衡问题:GANs 的训练本质上是一个寻找纳什均衡的过程,生成器和判别器需要达到均衡状态。这种动态对抗关系使得训练过程复杂且不稳定。
  • 模式崩溃(Mode Collapse):在某些情况下,生成器开始生成极少数类型的样本,而忽略数据分布的其他部分。这导致生成的多样性极低。
  • 梯度消失:当判别器过于强大时,生成器的梯度可能会消失,使得生成器无法继续学习和改进。
  • 超参数敏感性:GANs 对超参数设置非常敏感,不当的学习率、批量大小等都可能导致训练失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值