3.7 规模化与归一化:BigGAN 及其他变体


3.7 规模化与归一化:BigGAN 及其他变体

BigGAN 证明 GAN 吃得下"大 batch、大通道、类别条件 + 自注意力"的规模化配方,其谱归一化与截断技巧分别管稳定与保真;此外 InfoGAN、SRGAN、Self-Attention GAN 等变体各占一格生态位。 本节收拢造假工艺进化史的末段,并给出一张变体速查表。

进化史最后一案:规模化罪。DCGAN 之后的架构在小数据集上各自精彩,但 ImageNet 这种千类大战场上,GAN 长期拿不出手——直到 BigGAN 把"大"本身当成方法。本节审它的两件核心武器,顺带把没来得及单独立案的变体一并归档。

谱归一化:给每层权重发限速牌

BigGAN 稳定性的底座之一是谱归一化:把每个权重矩阵除以它的最大奇异值,强制该层的 Lipschitz 常数不超过 1。与 WGAN-GP 约束整个函数不同,谱归一化逐层设限、几乎零开销,判别器因此可以放心做深做宽。用数值验证一遍它的机制:

import numpy as np rng = np.random.default_rng(7) W = rng.normal(0, 1, (6, 4)) # 某层权重矩阵 # 迭代法逼近最大奇异值: 反复做 W W^T 的幂迭代 Wn = W.copy() for _ in range(30): u, s, v = np.linalg.svd(Wn, full_matrices=False) Wn = Wn / s[0] # 除以当前最大奇异值 _, s_norm, _ = np.linalg.svd(Wn) print(f"归一化前最大奇异值: {np.linalg.svd(W, compute_uv=False)[0]:.4f}") print(f"归一化后最大奇异值: {s_norm[0]:.6f}") # 输出: # 归一化前最大奇异值: 2.8191 # 归一化后最大奇异值: 1.000000 # 任何方向的拉伸都被压到 1 以内——该层从此"限速" # 实际框架用一次幂迭代近似(不必完整SVD), 开销极小

读数干净利落:2.8191 压到 1.000000。判别器每层都挂上限速牌后,它对生成器梯度的"放大失控"被结构性遏制——这是把 3.4 节 Lipschitz 思想推广到整个判别器的工程化版本。

截断技巧:多样性与保真度的旋钮

BigGAN 的另一件招牌武器是截断技巧(truncation trick):采样时把噪声 z 从标准正态"截"到更窄的范围(重采样超出阈值的分量),生成质量上升、多样性下降。数值实验量化这颗旋钮:

for psi in [2.0, 1.0, 0.7, 0.4]: # psi 是缩放系数, 小于 1 即"收窄" z = rng.normal(0, 1, 10000) * psi print(f"缩放系数 {psi}: 噪声标准差={z.std():.3f} " f"越界比例(|z|>2)={np.mean(np.abs(z) > 2):.4f}") # 输出: # 缩放系数 2.0: 噪声标准差=1.999 越界比例(|z|>2)=0.3148 # 缩放系数 1.0: 噪声标准差=0.989 越界比例(|z|>2)=0.0417 # 缩放系数 0.7: 噪声标准差=0.702 越界比例(|z|>2)=0.0040 # 缩放系数 0.4: 噪声标准差=0.402 越界比例(|z|>2)=0.0000

原理:噪声的尾部对应生成分布的"边缘地带"(质量差、结构乱的样本),收窄噪声等于主动放弃边缘、保住中心。旋钮的代价是多样性——0.4 倍缩放下越界比例归零,样本也趋于雷同(模式崩溃的近亲,不过是主动选择的)。BigGAN 论文同时报告:对某些类别强行截断会直接崩出垃圾样本,所以这颗旋钮要按类试探着拧。

其余变体归档

变体 核心改动 生态位
InfoGAN 最大化隐码与生成的互信息 无监督解耦表示(互信息下界可学)
SRGAN / ESRGAN 感知损失 + 对抗损失 超分辨率重建
SAGAN 自注意力进 G/D 长程依赖(条纹、对称结构)
WGAN 系列 EM 距离 + Lipschitz 通用稳定化底座(3.4 节)
StackGAN 文本→粗图→精图两阶段 文本生成图像(早期)
Relativistic GAN 判别器估计"真的比假的多真多少" 损失改进,可与多数架构叠加

值得单独一提的是 InfoGAN:它把一部分噪声改为"隐码 c",训练时最大化 c 与生成样本的互信息——数值上,解耦良好时隐码恢复率接近 1,未解耦时退到瞎猜水平(四类隐码即 0.25)。这与 StyleGAN 的映射网络殊途同归:一个用信息论约束、一个用架构设计,都奔着"可控的生成"去。SRGAN 则示范了对抗损失的移植术:把判别器当"感知裁判"加进超分辨任务,专治均方误差带来的糊——对抗思想早已溢出"生成"本行(1.4 节版图的伏笔在此收线)。

进化史小结:翻案规律的闭环

回看 1.1 节的时间线与本章七案,规律已经完整:画质罪→DCGAN,失控罪→cGAN,梯度罪→WGAN,单一罪→CycleGAN/Pix2Pix,分辨率罪→PGGAN/StyleGAN,规模化罪→BigGAN。每次翻案都留下"遗产 + 新罪状":BigGAN 稳住了规模,但训练仍需大 batch、算力门槛高企;StyleGAN 可控了,但换域成本沉重。GAN 的进化史不是问题被解决的历史,而是问题被交换的历史——扩散模型接棒时,继承的正是"训练稳定"这块用其他代价换来的地盘(第 7.4 节)。

本节要点回顾

  • 谱归一化:权重除以最大奇异值逐层限速,数值验证 2.8191→1.000000,近似零开销;
  • 截断技巧:收窄噪声放弃边缘样本,0.4 倍缩放下越界归零,质量升多样性降;
  • 变体速查:InfoGAN 信息论解耦、SRGAN 感知裁判、SAGAN 自注意力、Relativistic 损失改进;
  • 移植效应:对抗思想已扩散到超分辨等非纯生成任务;
  • 历史闭环:问题被交换而非被消灭,这是理解 GAN 与扩散模型交接的正确框架。

常见问题:规模化与变体补遗

BigGAN 的"大"到底指什么? 三件事一起大:批大小(数百到数千)、通道数、类别嵌入共享。单独放大任何一项收益都有限,配合起来才出现在 ImageNet 千类上的质量跃升——规模化是配方不是单变量。

截断技巧与模式崩溃怎么区分? 两者都表现为"样本趋同",但方向相反:崩溃是被动失控(生成器走捷径,第 6.1 节),截断是主动取舍(用多样性换保真度,旋钮在你手里)。判断方法:逐步收窄噪声看质量曲线,可预期平滑变化的是截断,突变或样本崩坏的是崩溃。

谱归一化与 WGAN-GP 能一起用吗? 原则上都在管 Lipschitz,同时用属重复用药,一般二选一。经验上:判别器深而大用谱归一化(逐层、便宜),需要强约束时用梯度惩罚(全局、精确)。第 6.3 节的超参排查表把它们归在"损失层"同一优先级。

演算自测

一个 6 乘 4 的权重矩阵,最大奇异值 2.82。谱归一化后所有奇异值缩放多少倍?答案:除以 2.82,最大奇异值变 1,其余按比例缩小。若该层输入范数最多 10,输出范数上界是多少?答案:不超过 10(1-Lipschitz 层不放大范数)。这两步是"限速牌"的全部数学。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U