趋近智
训练生成对抗网络时,最常遇到也最令人沮丧的问题之一是模式坍塌。它出现于,当生成器G学会只生成能够欺骗判别器D的可能输出中非常有限的一部分时。生成器没有捕获真实数据分布pdata的完整多样性和复杂性,而是收敛到只生成数据的一个或几个“模式”,完全忽略了其他模式。设想在一个手写数字(0-9)数据集上训练GAN;严重的模式坍塌可能导致生成器只生成令人信服的数字“1”的图像,无论输入噪声向量z是什么。
模式坍塌与GAN目标函数描述的最小-最大博弈的动态变化紧密相关:
GminDmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]考虑训练过程:
当判别器相对于生成器变得过于熟练,或者当生成器找到欺骗当前判别器的“捷径”时,模式坍塌常会发生。如果G发现一个或一小组输出,当前D始终将其错误分类为真实,则优化过程会提供强大的梯度,促使G 只生成这些特定输出。如果生成器已经可以通过坚持这几个模式来有效最小化损失,那么它就没有太多动力去学习数据分布的其他部分。
这可能导致一个循环:D最终学会检测G生成的有限模式,更新其参数,然后G又找到另一组有限的输出来欺骗更新后的D。生成器可能在几个模式之间跳跃,而从未学习到完整的数据分布。当判别器变得过于准确时,标准GAN损失的梯度可能会消失或表现不佳,这会进一步阻碍生成器学习完整分布的能力。
这是目标多模态分布与遭受模式坍塌的生成器进行比较的视觉呈现:
蓝色圆圈代表目标数据分布中不同的模式。红色叉号表示生成器的输出,它们紧密聚集在目标模式之一周围,这表明发生了模式坍塌。
已经开发出几种技术来对抗模式坍塌,并鼓励生成器产生更多样化的样本集。
与判别器独立评估每个样本不同,小批量判别允许判别器查看同一小批量中样本之间的关系。其核心思想是为小批量中的每个样本计算一个特征向量,然后衡量这些特征向量在整个批次中的相似性。
如果生成器正在生成非常相似的样本(即坍塌),判别器可以检测到批次内这种多样性不足的情况,并惩罚生成器。这鼓励G生成彼此不同的样本批次。
实现上通常涉及在判别器中添加一个特定层。该层计算小批量中样本之间距离的汇总统计量,并在最终分类层之前将此信息连接到中间特征。令f(xi)∈RA为判别器D中样本xi的中间层输出。小批量判别从f(xi)计算一个矩阵M∈RB×C,计算批次中所有样本i,j的Mi和Mj行之间的L1距离,应用负指数cb(xi,xj)=exp(−∣∣Mi,b−Mj,b∣∣L1),将每个样本i的这些距离在其他样本j上求和:o(xi)b=∑j=1ncb(xi,xj),并将结果向量o(xi)=[o(xi)1,o(xi)2,...,o(xi)B]连接到下一层的输入特征f(xi)。这为判别器提供了关于批次多样性的明确信息。
这种技术修改了生成器的更新步骤。生成器不再仅仅根据D的当前状态来优化G,而是通过模拟判别器的多次更新来“向前看”。G优化其参数,不仅是为了欺骗当前的D,也是为了欺骗未来的D版本。
通过展开优化,G被阻止进行那些可能有效欺骗当前D但D经过几次更新后很容易被检测到的更新。这种预见性有助于防止生成器坍塌到只在短期内有效的模式。尽管这种方法效果好,但展开操作会大幅增加计算成本,因为它在一个生成器更新步骤中需要多次判别器更新。
正如下一节讨论的,某些损失函数本质上比原始的最小最大损失更稳定,并且更不容易发生模式坍塌。
使用这些替代损失函数(将在“替代损失函数(WGAN, WGAN-GP, LSGAN)”一节中详细介绍)通常是提高训练稳定性和缓解模式坍塌最有效的方法之一。
特征匹配修改了生成器的目标函数,而不是最大化判别器的输出。目标是匹配判别器中间层提取的真实样本与生成样本的特征统计量。生成器的目标是最小化差异,这通常通过平均特征激活的平方差来衡量:
∣∣Ex∼pdataf(x)−Ez∼pzf(G(z))∣∣22其中f(x)表示判别器中间层的激活。这可以防止生成器在当前判别器上过度训练,并鼓励它生成在各种特征上与真实数据统计量相似的样本。
诊断和处理模式坍塌通常涉及实验。在整个训练过程中监测生成样本的多样性,并尝试不同的稳定化技术,是构建成功GAN模型的重要步骤。这里讨论的方法,特别是替代损失函数和如小批量判别等技术,为应对GAN训练中这个常见挑战提供了有效工具。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造