城南画馆里,学徒小张和评论家罗老师是一对出了名的冤家。小张每天画一幅画,罗老师就拿着放大镜找茬;小张连夜修改,罗老师又挑出新的毛病。日复一日,两人的本事确实都在长——可只要罗老师“火力全开”,小张就被批到怀疑人生;罗老师若是敷衍了事,小张又画得一团糟还自以为不错。这场“画师与评论家”的角力,正是生成对抗网络(GAN)训练的缩影:生成器负责以假乱真,判别器负责明察秋毫,两者在对抗中共同进步,却也最容易在失衡中双双垮掉。 好在,训练GAN的工程师们摸索出了一套“驯服之道”:给评论家戴上一副“稳态眼镜”(谱归一化),让师徒二人各按各的节奏进步(TTUR),把“一句话点评”升级为“结构性反馈”(特征匹配),再让学徒从素描一步步练到油画(渐进式训练)。这套组合拳,就是让生成器与判别器从“互相伤害”走向“平衡共舞”的核心心法。

岗位关联

掌握这些训练技巧,你就能把“永远在崩”的GAN调成稳定出片的利器——这是生成模型工程师最核心的硬技能。

目录
  1. 可视化演示
  2. 平衡之道:不稳定的根源
  3. 谱归一化:评论家的稳静态
  4. 学习率匹配:各跳各的节拍
  5. 特征匹配:从“像不像”到“神韵对不对”
  6. 渐进式训练:从素描到巨作
  7. 辅助稳定术:小道具大作用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

平衡之道:不稳定的根源

小张和罗老师之所以天天吵架,是因为两人的目标天然相反:小张想让自己的画被当成真迹,罗老师则要揪出每一处破绽。这种“一方得分另一方就失分”的关系,在博弈论里叫零和博弈——GAN的不稳定,根子就在这。你没法用监督学习里“losss一直降”的思维去理解它,因为这里没有单一赢家,只有动态均衡。

把画馆搬进神经网络,生成器G和判别器D共享同一个目标函数,方向却互为镜像。G想把判别器骗过,D想识破G的伪装。两者每轮都在互相调整,训练过程就像一场永不停歇的追逐赛,谁跑得太快或太慢,整场比赛都会失控。

如果判别器学得太好,生成器拿到的梯度会坍缩成近似零——这叫梯度消失,生成器从此“躺平”;如果生成器钻空子,只画几类单调图案就能骗过判别器,则叫模式崩溃,生成结果千篇一律。这两大事故,几乎贯穿了早期GAN的所有翻车现场。

想让小张和罗老师都发挥出水准,秘诀不是让谁更猛,而是把对抗烈度控制在一个双方都能承受的区间。接下来登场的四件套,就是给这对冤家量身定制的“训练规矩”。

min⁡Gmax⁡DV(D,G)=Ex∼pdata[log⁡D(x)]+Ez∼pz[log⁡(1−D(G(z)))]\displaystyle \min_{G}\max_{D} V(D,G) = \mathbb{E}_{x\sim p_{data}}[\log D(x)] + \mathbb{E}_{z\sim p_z}[\log(1 - D(G(z)))]
这个公式是GAN的“总剧本”:G拼命想把得分压低,D拼命想把得分抬高,两人在同一个目标函数里拉锯。
  1. 博弈符号min和max分别代表G和D的相反目标,G想压分,D想抬分,这是对抗结构的起点。
    min⁡Gmax⁡DV(D,G)\min_{G}\max_{D} V(D,G)
  2. 真实样本项从真实数据分布中取样本x,D给出的真概率越高,整体得分越高,这是D的“基本盘”。
    Ex∼pdata[log⁡D(x)]\mathbb{E}_{x\sim p_{data}}[\log D(x)]
  3. 生成样本项噪声z经G变成假图,D越能识破它,这一项的绝对值越大,而G的目标是让它变小。
    Ez∼pz[log⁡(1−D(G(z)))]\mathbb{E}_{z\sim p_z}[\log(1 - D(G(z)))]

谱归一化:评论家的稳静态

罗老师最近眼力突飞猛进,小张画什么都被一眼识破。小张的画被批得一文不值,最后连笔都拿不稳——批评家太犀利,学生反而废了。要让罗老师保持“专业但不极端”,就得给她的评判系统装一个“缓冲阀”,让她对每一点笔触变化都不会反应过度。

谱归一化就是这个缓冲阀。它约束判别器每一层权重矩阵的“放大倍数”,让网络对输入扰动的传播有一个全局上限。数学上,权重矩阵W对单位向量的最大拉伸倍数就是谱范数σ(W)。把每层权重都除以谱范数,整条判别链路对扰动的放大就被死死摁在1以内,这就是Lipschitz约束的工程实现。

实现起来非常轻量:PyTorch里一行spectral_norm即可,训练开销几乎可忽略。加了谱归一化后,判别器的梯度变化平滑,生成器在任何阶段都能拿到有意义的反馈——不是“你全错了”,而是“你这里差一点”。它和正则化不同:正则化是给损失加惩罚项,谱归一化是直接约束网络结构本身。

就像给罗老师的“火眼金睛”加了一副恒定透镜:她依旧毒舌,但不会再因为一丁点笔触变化就暴跳如雷。小张终于能安心试错,画技开始稳步回升。

WSN=Wσ(W),σ(W)=max⁡∥v∥=1∥Wv∥\displaystyle W_{SN} = \frac{W}{\sigma(W)}, \quad \sigma(W) = \max_{\|v\|=1}\|Wv\|
谱范数就是权重矩阵的“最大拉伸能力”,除掉它,网络层就变成了一个不放大扰动的稳定器。
  1. 谱范数定义σ(W)衡量W能把单位向量拉长多少倍,等价于SVD分解里的最大奇异值。
    σ(W)=max⁡∥v∥=1∥Wv∥\sigma(W) = \max_{\|v\|=1}\|Wv\|
  2. 归一化操作每层权重整体除以谱范数后,最大拉伸倍数被压到1,梯度变化随之受限。
    WSN=Wσ(W)W_{SN} = \frac{W}{\sigma(W)}

学习率匹配:各跳各的节拍

小张有个习惯:每画五天才请罗老师点评,罗老师却一天一评。小张总觉得“才过半天,罗老师标准又变了!”两人节奏严重错位,谁也跟不上谁。TTUR要解决的,正是这种“节拍失配”——给双方各自配一个合适的学习率,让舞步合上拍。

TTUR的全称是双时间尺度更新规则(Two Timescale Update Rule),核心主张简单粗暴:判别器用较大学习率,生成器用较小学习率。直觉在于,判别器的任务更聚焦,应该先建立一个稳定的“审美标尺”;生成器在这把稳定的标尺下追赶,目标才不会来回漂移。如果两人用同样大的学习率,等于让两个醉汉互相搀扶,越走越歪。

实践里的常见配置是α_D取α_G的2到4倍,例如生成器用1e-4,判别器用4e-4。这几乎是零成本的技术,不需要改网络结构,只需写两行优化器配置。它对早期梯度消失、后期震荡都有明显缓解,因此成为GAN稳定化的“标配第一步”。

双人舞的精髓不是两人迈同样大的步子,而是领舞者大步流星、跟舞者小步快随。小张和罗老师各按各的节奏练习,合拍只是时间问题。

θD(t+1)=θD(t)−αD∇θDLD,θG(t+1)=θG(t)−αG∇θGLG,αD>αG\displaystyle \theta_D^{(t+1)} = \theta_D^{(t)} - \alpha_D \nabla_{\theta_D}L_D, \quad \theta_G^{(t+1)} = \theta_G^{(t)} - \alpha_G \nabla_{\theta_G}L_G, \quad \alpha_D > \alpha_G
判别器学习率大、生成器学习率小,两套更新步伐不同,反而在博弈中更容易收敛到均衡。
  1. 判别器更新步用较大的α_D更新参数,让审美标尺快速稳定下来。
    θD(t+1)=θD(t)−αD∇θDLD\theta_D^{(t+1)} = \theta_D^{(t)} - \alpha_D \nabla_{\theta_D}L_D
  2. 生成器更新步用较小的α_G缓慢追赶,减少目标漂移带来的震荡。
    θG(t+1)=θG(t)−αG∇θGLG\theta_G^{(t+1)} = \theta_G^{(t)} - \alpha_G \nabla_{\theta_G}L_G
  3. 节奏差约束判别器的学习率显著大于生成器,形成“以快带慢”的合拍节奏。
    αD>αG\alpha_D > \alpha_G

特征匹配:从“像不像”到“神韵对不对”

罗老师以前的评语只有一句:“假的!”小张听了等于没听,只能闭着眼瞎改。小张真正需要的是具体反馈:“你这种构图太刻意”“笔触太均匀了”——特征匹配,就是要给生成器这种“结构化的细腻评语”。

判别器除了输出真/假概率,它的中间层其实藏着对图像的一整套抽象理解:边缘在哪、纹理如何、构图是否自然。特征匹配的做法是:让生成器不再只盯着最终的真假结论,而是把真实样本和生成样本都送进判别器中间层,让两者在该层特征上的均值尽量对齐。

这样一来,生成器的目标从“骗过罗老师”变成了“在罗老师看重的维度上接近真迹”。这有效避免了生成器走捷径——只靠少数几种固定图案骗过判别器,也就是模式崩溃。典型的做法是在损失函数里加一项特征均值的L2距离,权重通常设为几十的量级,让对抗损失和特征匹配损失形成合力。

罗老师从“一句话点评”升级为“结构化反馈”,小张的进步也从盲人摸象变成了按图索骥。特征匹配通常不需要开太高的权重,一个辅助量就能让整个训练稳一大截。

LFM=∥Ex∼pdataf(x)−Ez∼pzf(G(z))∥22\displaystyle L_{FM} = \left\|\mathbb{E}_{x\sim p_{data}} f(x) - \mathbb{E}_{z\sim p_z} f(G(z))\right\|_2^2
特征匹配损失计算真实图与生成图在判别器中间层特征上的平均距离,越接近说明“神韵”越对。
  1. 真图特征期望取真实样本在判别器中间层的特征向量求均值,相当于“真迹的平均神韵”。
    Ex∼pdataf(x)\mathbb{E}_{x\sim p_{data}} f(x)
  2. 假图特征期望取生成图像的中间层特征均值,代表小张目前的平均画风。
    Ez∼pzf(G(z))\mathbb{E}_{z\sim p_z} f(G(z))
  3. 铺平差异两个均值向量差的L2范数平方,迫使生成样本在特征层面贴近真实分布。
    ∥Ex∼pdataf(x)−Ez∼pzf(G(z))∥22\left\|\mathbb{E}_{x\sim p_{data}} f(x) - \mathbb{E}_{z\sim p_z} f(G(z))\right\|_2^2

渐进式训练:从素描到巨作

想让孩子直接临摹《最后的晚餐》?他只会涂出一团黑。小张的师父定的规矩是:先画线条,再画色块,再打磨光影,每个阶段换更大的画布。渐进式训练,就是给GAN立的同一套规矩——让网络从低分辨率画起,一步步长到高分辨率。

早期GAN直接生成高清大图,等于让初学者直接挑战巅峰难度,训练极不稳定。渐进式生成把任务拆解:先训练4×4或8×8的小图,等到生成小而清晰的图像后,再增加一层网络,把分辨率翻倍到16×16,如此递进到128×128甚至1024×1024。每一步的起点都是上一步已经稳定的权重,训练空间被大幅压缩。

新层加入时还有个关键细节:过渡期使用线性插值把低分辨率图和高分辨率版本混合展示,让新旧分辨率平滑切换,而不是突然把更模糊的图送到判别器眼前。这种“由浅入深”的策略,让高分辨率图像生成从“玄学”变成了工程实践,也奠定了PGAN、StyleGAN等一代经典架构的基础。

画布从巴掌大慢慢换成整面墙,小张的画技在每一个尺寸上都被罗老师打磨过关,才敢迈向下一级。这种“由浅入深”的智慧,正是人类学艺的真谛,也成了训练超大GAN的指路明灯。

It=(1−α)Ilow+αIhigh,α=min⁡(1,tTtrans)\displaystyle I_t = (1 - \alpha) I_{low} + \alpha I_{high}, \quad \alpha = \min\left(1, \frac{t}{T_{trans}}\right)
过渡期把低分辨率图和高分辨率图按权重α混合,α在T步内从0线性升到1,避免网络被突变“惊到”。
  1. 过渡权重α在上过渡期内从0均匀爬到1,控制新旧分辨率切换的进度。
    α=min⁡(1,tTtrans)\alpha = \min\left(1, \frac{t}{T_{trans}}\right)
  2. 图像插值过渡期实际送入网络的是两张图按权重的线性混合,新层在不知不觉中就位。
    It=(1−α)Ilow+αIhighI_t = (1 - \alpha) I_{low} + \alpha I_{high}

辅助稳定术:小道具大作用

就算有了前面四件套,罗老师偶尔还是会“用力过猛”:小张明明画得很像了,她仍斩钉截铁地说“100%是假的!”这时需要一些小道具来软化局势——把极端标签换成软标签,再让小张时不时翻翻以前的作品集。

标签平滑的做法很简单:把真实样本的标签从1降为1-ε(如0.9),把假样本的标签从0抬到ε(如0.1)。判别器不再追求“百分百确定”,输出不再一头扎进sigmoid的饱和区,梯度因此不会趋近于零。经验回放则维护一个历史样本队列,让生成器不仅依赖当前batch的反馈,也参考以前学过的样本特征,减少“今天改、明天忘”的震荡。

此外,WGAN-GP的梯度惩罚也是一种常用辅助手段:要求判别器梯度的L2范数不超过1,从另一个方向约束评论家的“激烈程度”。但技巧不是越多越好:建议先上TTUR+谱归一化这个最小组合,观察训练曲线后再按需加入特征匹配,标签平滑可以全程开启。记得维护训练台账——生成图预览、多样性指标、两方loss曲线,它们是判断何时介入的仪表盘。

罗老师的“绝对语气”软化后,小张终于从“被巨浪拍打”变成“在微风中练笔”。这些辅助道具看似不起眼,却往往是压垮失衡局面的最后一根稻草。

yreal=1−ε,yfake=ε,ε∈(0,0.2)\displaystyle y_{real} = 1 - \varepsilon, \quad y_{fake} = \varepsilon, \quad \varepsilon \in (0, 0.2)
标签平滑把“绝对真/绝对假”的硬标签改成留有空间的软标签,让判别器不至于过度自信。
  1. 真实标签降一档把真样本的标签从1微降到0.9左右,D不再追求极端的输出分布。
    yreal=1−εy_{real} = 1 - \varepsilon
  2. 假标签抬一档把假样本的标签从0微抬到0.1左右,给生成器的错误留出可学习的梯度。
    yfake=εy_{fake} = \varepsilon
  3. 限幅区间ε通常取0到0.2之间,太小没效果,太大会让判别器失去区分能力。
    ε∈(0,0.2)\varepsilon \in (0, 0.2)

AI 应用场景

场景一:动漫头像生成平台的稳定化改造

阶段:模型训练与调优

解决的问题:团队用朴素GAN生成动漫头像,训练常在中途崩溃,生成图像要么糊成一片、要么全是同一张脸。引入谱归一化+TTUR后,判别器不再“一棒子打死”生成器,双方loss波动显著减小,出图成功率从四成提升到九成。

具体案例:某AIGC创业公司的头像生成服务,原本每周要人工重启三次训练任务。工程师把学习率改为生成器1e-4、判别器4e-4,并为判别器所有线性层加上谱归一化,训练一次跑通30个epoch,生成头像的多样性明显改善。

场景二:医疗影像数据集扩充

阶段:数据增强

解决的问题:医学影像标注样本稀缺,直接用GAN生成增强数据又容易模式崩溃——生成样本总是集中在少数几类病灶形态。特征匹配让生成器对齐判别器中间层特征,显著提升生成样本的多样性。

具体案例:某医院科研团队用渐进式GAN生成高清病理切片,先从64×64开始训练,逐级生长到512×512,配合特征匹配损失,最终生成的高分辨率切片在病灶边缘纹理上与真实样本高度接近,下游分类模型AUC提升约5%。

场景三:电商虚拟试衣间的多样性保障

阶段:生成质量优化

解决的问题:虚拟试衣系统对不同款式服装的生成经常“偷懒”——只输出几套固定搭配蒙混过关。通过标签平滑+特征匹配组合,判别器不再过度自信,生成器对稀有款式也有足够的学习梯度。

具体案例:某电商平台的虚拟试衣功能,接入稳定化技巧后,服装款式的覆盖度从原来的60%提升到95%,用户上传一张人像即可试穿数百套新装,且生成耗时不变。

Python 演示

python80 行
import torchimport torch.nn as nnimport torch.optim as optimfrom torch.utils.data import DataLoader, TensorDataset  class Generator(nn.Module):    def __init__(self, z_dim=100, img_dim=784):        super().__init__()        self.fc = nn.Sequential(            nn.Linear(z_dim, 256),            nn.ReLU(True),            nn.Linear(256, img_dim),            nn.Tanh()        )     def forward(self, z):        return self.fc(z)  class Discriminator(nn.Module):    def __init__(self, img_dim=784):        super().__init__()        self.fc = nn.Sequential(            nn.utils.spectral_norm(nn.Linear(img_dim, 256)),            nn.LeakyReLU(0.2),            nn.utils.spectral_norm(nn.Linear(256, 1))        )     def forward(self, x):        return self.fc(x)  def build_optimizers(model_g, model_d, lr_g=1e-4, lr_d=4e-4):    # TTUR: 判别器学习率通常是生成器的 2-4 倍    opt_g = optim.Adam(model_g.parameters(), lr=lr_g, betas=(0.5, 0.999))    opt_d = optim.Adam(model_d.parameters(), lr=lr_d, betas=(0.5, 0.999))    return opt_g, opt_d  def train_epoch(model_g, model_d, opt_g, opt_d, loader, z_dim, fm_weight=40.0):    bce = nn.BCEWithLogitsLoss()    for real_img, _ in loader:        batch_size = real_img.size(0)        real_img = real_img.view(batch_size, -1)         # 判别器更新        opt_d.zero_grad()        real_loss = bce(model_d(real_img), torch.ones(batch_size, 1) * 0.9)        z = torch.randn(batch_size, z_dim)        fake_img = model_g(z).detach()        fake_loss = bce(model_d(fake_img), torch.zeros(batch_size, 1) + 0.1)        d_loss = real_loss + fake_loss        d_loss.backward()        opt_d.step()         # 生成器更新: 对抗损失 + 特征匹配        opt_g.zero_grad()        fake_img = model_g(z)        g_adv = bce(model_d(fake_img), torch.ones(batch_size, 1))        real_feat = model_d.fc[0](real_img).detach()        fake_feat = model_d.fc[0](fake_img)        fm_loss = (real_feat.mean(0) - fake_feat.mean(0)).pow(2).mean()        g_loss = g_adv + fm_weight * fm_loss        g_loss.backward()        opt_g.step()  if __name__ == "__main__":    torch.manual_seed(0)    z_dim, img_dim = 100, 784    # 实际项目中替换为真实数据集, 如 MNIST    fake_data = torch.randn(256, img_dim) * 0.5    loader = DataLoader(TensorDataset(fake_data, torch.zeros(256)), batch_size=64)    G = Generator(z_dim, img_dim)    D = Discriminator(img_dim)    opt_g, opt_d = build_optimizers(G, D)    for epoch in range(3):        train_epoch(G, D, opt_g, opt_d, loader, z_dim)        print("epoch", epoch + 1, "done")
目的:演示一个集齐谱归一化、TTUR、标签平滑、特征匹配四大稳定化技巧的GAN训练流水线,可直接替换为真实数据集。
  1. nn.utils.spectral_norm(nn.Linear(img_dim, 256))用谱归一化包装判别器线性层,限制其谱范数。
  2. opt_g = optim.Adam(model_g.parameters(), lr=lr_g, betas=(0.5, 0.999))生成器用小学习率,TTUR的“慢半拍”。
  3. opt_d = optim.Adam(model_d.parameters(), lr=lr_d, betas=(0.5, 0.999))判别器用4倍学习率,快速建立稳定标尺。
  4. real_loss = bce(model_d(real_img), torch.ones(batch_size, 1) * 0.9)真样本标签平滑为0.9,避免判别器过度自信。
  5. fake_loss = bce(model_d(fake_img), torch.zeros(batch_size, 1) + 0.1)假样本标签平滑为0.1,保留梯度信息。
  6. real_feat = model_d.fc[0](real_img).detach()提取真实样本的中间层特征并断开梯度,作为特征匹配模板。
  7. fake_feat = model_d.fc[0](fake_img)提取生成样本的中间层特征,参与特征匹配损失计算。
  8. fm_loss = (real_feat.mean(0) - fake_feat.mean(0)).pow(2).mean()对两类特征的均值做L2对齐。
  9. g_loss = g_adv + fm_weight * fm_loss生成器总损失由对抗损失和特征匹配损失组成。

常见误区

误区训练时把判别器准确率冲到99%,说明它鉴伪能力很强,生成的图肯定越来越真。谁强就增强谁,总没错吧?

正解GAN是博弈而非监督学习,判别器过强会让生成器梯度饱和消失,一步都学不动。谱归一化和TTUR本质上都在“压制”判别器的锋芒,让双方势均力敌、交替进步,而不是单向增强某一方。

为何常见:我们习惯了“模型越准越好”的监督学习思维,但GAN的胜者通吃恰恰是最糟糕的结局。

误区我盯着生成器损失曲线,它一直在下降,训练应该没问题吧?那我不需要再看其他指标了。

正解GAN中双方loss此消彼长,单条曲线下降完全可能是模式崩溃的假象。要综合看生成样本的多样性、清晰度、两方loss的相对走势,定期人工检查生成图,才能判断是否真的健康。

为何常见:监督学习“loss降即变好”的惯性思维深入人心,而GAN根本没有单一收敛指标。

误区谱归一化、TTUR、特征匹配、标签平滑都是稳定技巧,全部加上肯定最稳,最好论文里能用的技巧全都搬进来。

正解技巧各有适用场景,盲目叠加会互相干扰。特征匹配权重过大会拖慢生成速度,标签平滑过度会让判别器失去鉴别力。推荐从谱归一化+TTUR最小组合起步,观测诊断指标后再逐步加码。

为何常见:把论文当“菜谱”,却忽略了每个trick背后都有前提条件和负作用。

误区GAN训练就是让loss慢慢降,等训练完再看生成效果,如果崩了再从头调参也不迟。

正解GAN一旦进入模式崩溃,很难自发跳出,越晚干预越难救。正确做法是在训练过程中实时监测生成样本的多样性,发现崩溃立刻干预——降低判别器强度、开启特征匹配或调整学习率,趁早纠偏。

为何常见:误以为GAN像普通神经网络那样有唯一的稳定解,忽视了博弈过程的临界点效应。

面试题

Q1. GAN中生成器的训练目标是什么?

单选题 · easy

  • A.让判别器把假图判为假
  • B.让判别器把假图判为真← 正确答案
  • C.让判别器的能力不断变强
  • D.让判别器消失不再干扰

答案:B。生成器的目标是以假乱真,让判别器把假图识别为真图,对应训练时把假图标签设成1。A是判别器对假图的目标,C与生成器的直接目标无关,D更不是训练目标。

Q2. GAN训练不稳定的根本原因是什么?

单选题 · easy

  • A.可用的数据量太少
  • B.双方目标相反的博弈← 正确答案
  • C.学习率设置得太高
  • D.生成网络层数太深

答案:B。GAN的损失函数是min-max博弈,生成器与判别器目标互相排斥,梯度天然角力,这是不稳定的根源。数据量、学习率、层数只是加剧或缓解因素,并非根因。

Q3. 标签平滑的作用是什么?

单选题 · easy

  • A.提升判别器的置信度
  • B.防止判别器过度自信← 正确答案
  • C.加快对真图的学习
  • D.帮助生成器变强大

答案:B。标签平滑把硬标签0/1换成0.9/0.1等软标签,避免判别器输出极端置信度,防止梯度进入饱和区归零。它并不会提升判别器自信,也不是直接增强生成器。

Q4. 谱归一化在判别器上做了什么操作?

单选题 · mid

  • A.权重矩阵除以谱范数← 正确答案
  • B.对特征图做归一化
  • C.使用不同的激活函数
  • D.对梯度做全局裁剪

答案:A。谱归一化把每层权重矩阵W除以它的谱范数σ(W),使最大奇异值为1,从而限制网络的Lipschitz常数。B是批量归一化,C是激活函数问题,D是梯度裁剪,都不是谱归一化。

Q5. TTUR中生成器与判别器的学习率关系是?

单选题 · mid

  • A.生成器学习率小于判别器← 正确答案
  • B.两者应该保持完全相等
  • C.生成器学习率大于判别器
  • D.学习率彼此没有关系

答案:A。TTUR主张判别器用较大学习率、生成器用较小学习率(α_D > α_G),让判别器先建立稳定标准,生成器慢步追赶。相等会导致目标漂移,反向设置则标准不稳。

Q6. 特征匹配损失主要计算什么的对齐?

单选题 · mid

  • A.最终输出的概率分布
  • B.中间层特征的统计量← 正确答案
  • C.输入图像的像素数值
  • D.模型参数量的大小

答案:B。特征匹配把真实样本与生成样本都送入判别器中间层,计算该层特征向量均值的L2距离,让生成器在抽象特征层面贴近真实分布,而不是只匹配最终真伪概率。

Q7. 渐进式训练从什么分辨率开始?

单选题 · mid

  • A.低分辨率再到高分辨率← 正确答案
  • B.直接训练高分辨率图
  • C.从随机噪声直接成像
  • D.用预训练大模型微调

答案:A。渐进式训练先从4×4或8×8低分辨率起步,待该阶段稳定后再逐层生长到16×16、128×128等更高分辨率。直接训练高分辨率正是它要避免的难点。

Q8. 为什么判别器太强会导致生成器梯度消失?

单选题 · extreme

  • A.输出概率进入饱和区梯度趋向零← 正确答案
  • B.判别器参数的数值出现爆炸
  • C.生成器网络出现了过拟合
  • D.输入图片的分辨率太低

答案:A。判别器对假图输出概率接近0时,交叉熵损失在尾部区域的梯度几乎为0,反向传播到生成器后信号被“磨平”,生成器收不到有效反馈。判别器参数爆炸是另一种问题,过拟合与分辨率都不是梯度消失的直接原因。

Q9. 关于模式崩溃的表现,哪些说法正确?

多选题 · hard

  • A.生成样本多样性显著降低← 正确答案
  • B.生成器找到骗过判别器捷径← 正确答案
  • C.判别器能力完全保持固定
  • D.生成图像的画质越来越模糊

答案:AB。模式崩溃是生成器只输出少数几类能骗过判别器的样本,多样性骤降,本质是找到了一条“偷懒捷径”。判别器固定是结果而非表现,画质模糊也不是模式崩溃的典型标志。

Q10. 谱归一化能带来哪些好处?

多选题 · mid

  • A.限制判别器的Lipschitz常数← 正确答案
  • B.让判别器战斗力不过度强← 正确答案
  • C.给生成器提供平滑的梯度← 正确答案
  • D.让训练的总时间大幅缩短

答案:ABC。谱归一化把权重谱范数限制为1,因此限制了Lipschitz常数,避免判别器反应过激,从而使生成器获得平滑梯度。它并不直接压缩训练时间,D属于夸大其词。