标准 GAN 中生成器用 saturating loss:L_G = E_{z~p_z}[log(1 − D(G(z)))]。训练中你观察到判别器很快就能把真假样本分得很准(D(G(z)) 接近 0),同时 G 的 loss 居高不下、生成的样本几乎没有变化。请说明此时 G 的梯度为什么会接近 0(写出梯度里与 D(G(z)) 相关的因子),并给出两种具体改法。
面试官在考什么
是否真正理解 GAN 的 minimax 目标在判别器过强时导致生成器梯度消失的数学原因,而不是只会说“调学习率”。
回答框架 · 前两步
- saturating loss 对 G 参数的梯度中含因子 D(G(z))·(1−D(G(z)))(等价地写成 −D(G(z))(1−D(G(z)))·∂D/∂G 的链式形式),当 D(G(z))→0 时该因子趋近 0。
- 根本原因是 minimax 目标下的饱和损失:判别器越准,生成器拿到的学习信号越小,而不是网络本身没有梯度通路。
还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。
延伸阅读
想看这个方向的整体准备路线? 进入「CV 与多模态」方向页
同一能力域的其他题
- 你负责训练一个 128×128 动漫头像 GAN(DCGAN 类结构,生成器用 ConvTranspose2d(k=4,s=2,p=1) 逐级上采样)。训练到约 2 万步时,D 的 loss 掉到 0.01 左右,G 的 loss 从 3 涨到 8,采样出的图开始出现明显的棋盘格纹理,且不同 z 采样出的头像越来越像。请说明:① 你判断这里同时存在哪几类失效,各自依据是什么;② 给出你的排查顺序,每一步具体做什么操作、预期看到什么现象;③ 棋盘格和多样性下降是不是同一个原因,怎么分别验证。
- 你接手一个 GAN 训练任务:判别器 loss 长期低于 0.02,生成器 loss 从 2.1 一路涨到 8.4。用当前 checkpoint 采 4096 张图,distinct-1 从 0.72 掉到 0.31,肉眼能看到约 60% 的样本是少数几个模式的近重复。配置是 batch=64、D:G 更新比 1:1、损失用 WGAN-GP 的梯度惩罚。请给出你的诊断顺序和前三步具体动作,并说明为什么'先降低生成器学习率'不是正确的第一步。
- 你们已有一条基于 GAN 的 256×256 商品图生成流水线,线上跑了一年:清晰度尚可,但生成多样性差、审核通过率低。现在业务要求支持 1024×1024,并让生成多样性明显改善。你手上只有 8 张 A100、4 周时间、2 名工程师。请给出你的技术决策:先动分辨率还是先动多样性?你会优先改生成器、判别器、损失函数还是数据管线?为什么?并说明你如何验证改动有效,以及灰度上线的验收标准。
- 你在 512×512 数据上训 DDPM,采用线性 beta 调度、T=1000,推理用 250 步采样。整体图看着还行,但毛发、文字这类高频区域发糊。同事说“把 T 加到 2000 就好了”。请回答:① DDPM 前向加噪的闭式表达是什么,ᾱ_t 与信噪比是什么关系;② 为什么单纯增大 T 不一定改善细节;③ 你会改哪两个超参或设计来提升细节,说明预期效果与代价。
- 你的线上服务是 512×512 文生图,当前 DDIM 50 步,单张 A100 约 1.8s。产品要求把延迟压到 300ms 以内(大约 8 步),并接受 FID 相对 50 步基线退化不超过 10%,同时要求不重新训练基座模型,只给你 8 张 A100 40GB、3 天的后处理预算。请给出你的方案选择和取舍:走更高阶的 solver(DPM-Solver++/UniPC 这类)还是蒸馏成少步学生模型,或者两者结合?并说明你用什么验收指标来判定'退化不超过 10%'。
- 你们要在 3 周内用 64 张 A100 从零训练一个扩散模型,数据是 5 万张 512×512 的工业缺陷图,目标是生成能覆盖长尾缺陷类型的数据用于增强,且推理单张图生成时间要控制在 1 秒内。请给出你的技术选型:像素空间扩散还是潜空间扩散?噪声调度和采样器怎么定?采样步数如何压到 1 秒内?如果质量不达标,你会优先牺牲哪一项?