第4章 生成对抗网络(GAN)高频面试题:原理、训练技巧、模式坍塌、条件GAN
| 核心考点 | 关键要素 | 面试高频问题 |
|---|---|---|
| 基本原理 | 生成器 G、判别器 D、对抗损失 | GAN 的目标函数?纳什均衡? |
| 训练技巧 | 标签平滑、梯度惩罚、特征匹配、Mini-batch 判别 | 梯度消失怎么办?如何防止判别器过于强大? |
| 模式坍塌 | 生成样本多样性丧失、判别器过拟合 | 原因是什么?如何检测和解决? |
| 条件 GAN | cGAN、InfoGAN、辅助分类器 | 条件信息如何注入?应用场景? |
面试问题 1:请解释生成对抗网络(GAN)的基本原理,并写出目标函数。
面试官考察点: 是否真正理解对抗博弈思想;能否清晰表达生成器与判别器的交替训练过程;是否掌握原版损失函数。
回答框架: 核心概念(二人零和博弈)→ 网络结构(G 和 D)→ 训练流程(交替优化)→ 目标函数(min-max 形式)→ 收敛理想状态(纳什均衡)。
简短示例回答: GAN 由生成器 G 和判别器 D 组成。G 从随机噪声生成假图像,D 区分真图像与假图像。训练时固定一方优化另一方,目标函数为 min_G max_D V(D,G) = E[log D(x)] + E[log(1-D(G(z)))]。理想情况下 D 无法区分真假,达到纳什均衡。
可能追问: ① 训练时为什么要交替更新?② 目标函数中 log(1-D(G(z))) 梯度消失如何处理?③ 什么是 JS 散度?有何局限性?
避坑提醒: 不要只说“对抗”概念而不写公式;不要混淆 G 和 D 的损失函数;不要忽略早期 GAN 训练不稳定问题。
面试问题 2:GAN 训练有哪些常见难点和技巧?
面试官考察点: 实际调参经验;对梯度消失、模式坍塌等问题的理解深度;是否了解改进变体(WGAN、LSGAN 等)。
回答框架: 难点列举(梯度消失、不收敛、模式坍塌)→ 训练技巧(标签平滑、特征匹配、梯度惩罚、Mini-batch 判别)→ 损失函数改进(Wasserstein 距离、最小二乘损失)→ 实践建议(学习率、优化器选择)。
简短示例回答: 常见难点:梯度消失导致 G 更新慢;训练不稳定;模式坍塌。解决技巧:使用 WGAN-GP(梯度惩罚)替代原始损失;标签平滑(0.9/0.1)避免 D 过于自信;加入特征匹配损失约束 G 生成多样化样本;使用 Adam 优化器并控制学习率。
可能追问: ① 为什么 WGAN 要裁剪权重?② 梯度惩罚的具体实现?③ 如何判断 GAN 是否收敛(FID、Inception Score)?
避坑提醒: 不要只罗列术语而无原理;避免混淆 WGAN 裁剪和 WGAN-GP;建议给出具体数值(如学习率 2e-4)。
面试问题 3:什么是模式坍塌(Mode Collapse)?条件 GAN 如何改善?
面试官考察点: 对模式坍塌现象的本质理解;能否对比无条件 GAN 与条件 GAN 的差异;条件信息注入方法。
回答框架: 模式坍塌定义(生成样本多样性不足,仅覆盖少量数据模式)→ 原因(D 过拟合、G 只探索低风险区域)→ 检测方法(可视化生成样本、计算分类概率分布)→ 条件 GAN 改进:在 G 和 D 输入中加入条件(类别标签 / 文本 / 图像),约束生成空间 → 应用(图像翻译、文本生成图像)。
简短示例回答: 模式坍塌指 G 只生成少数几类样本,缺乏多样性。条件 GAN(cGAN)通过向 G 和 D 输入条件信息(如类别标签 c),迫使生成结果与条件对齐,从而特定条件对应特定模式,减少了模式坍塌风险。例如 cGAN 生成手写数字时,每类数字由对应标签约束,不会出现类内坍塌。
可能追问: ① cGAN 与 ACGAN 的区别?② 条件信息如何确保不被 G 忽略?③ 除了条件 GAN,还有哪些抗坍塌方法?(Mini-batch discrimination、Unrolled GAN)
避坑提醒: 不要误以为条件 GAN 完全解决模式坍塌;注意区分条件注入 G 和 D 的不同方式;举例说明条件 GAN 的实际效果。