枢纽
物理感知
输入模态vision

VDB(Variational Discriminator Bottleneck):给判别器戴上「信息紧箍咒」

Xue Bin Peng, Angjoo Kanazawa, Sam Toyer, Pieter Abbeel, Sergey Levine(UC Berkeley)。ICLR 2019 / arXiv:1810.00821。 项目页 · 含视频 · motion_prioradversarial

🧠 一句话心智模型:对抗学习里判别器(D)经常「太聪明」——一眼看穿真假,梯度归零,生成器(G)学不到东西。VDB 给 D 装一个「信息瓶颈」:先让 D 把输入压成一个有信息预算的随机 latent z($I(X;Z) \le I_c$),再在这个 z 上做分类。由于二分类最少需要 1 bit 信息,把 $I_c$ 压到 1 以下,D 就无法完美分类——永远只能给「模糊但有梯度」的反馈,G 就能持续改进。

🎯 为什么重要:对抗训练的「D 太强」死穴

GAN、GAIL(模仿学习)、AIRL(逆向 RL)都是「判别器 D 教 生成器 G」的架构。这套架构有个老大难:D 太强 → 梯度消失

核心矛盾:Arjovsky & Bottou (2017) 证明——当真分布和假分布支撑集不交时,最优 D 能完美分类,梯度几乎处处为零。G 拿不到任何改进信号。
常见 hack 是给 D 输入加噪声(instance noise),但噪声大小极难调——太大糊弄不掉真差距,太小又没用。

VDB 的核心洞察是:与其手工调噪声,不如让网络自己学「该忽略什么」。用一个学出来的 encoder 把输入压到有信息瓶颈的 latent,动态地调整噪声——既保证真分布在 latent 空间有重叠(梯度非零),又让 encoder 专门去拟合「真假之间最有判别力的差异」。

(a)标准 GAN / GAIL:D 太强 真分布 p* 假分布 G(x) 锐利边界 D=100% 准确 → 梯度 ≈ 0 (b)VDB:信息瓶颈 < 1 bit Encoder E(z|x) latent z I(X;Z) ≤ Ic 软化边界 真/假有重叠 D < 100% → 梯度 ≠ 0 ✓ D(z) 线性 + sigmoid β 自适应对偶梯度下降保持 KL ≈ Ic
图 1:VDB 原理。左:标准对抗 D 把真/假完全分开,梯度消失;右:encoder 把输入压成信息受限的 z,分布不得不重叠,D 给出持续可用的梯度。

💡 核心思想:把信息瓶颈从监督学习搬到对抗判别器

VDB 借鉴 Alemi et al. (2016) 的 Variational Information Bottleneck (VIB)——本来是给分类器防过拟合用的。VDB 的巧妙在于:把它套到对抗学习的判别器上,让判别器「不能太聪明」,从而保持梯度。

输入 x state / image Encoder E(z|x) 输出高斯: N(μ_E(x), Σ_E(x)) 先验 r(z) = N(0, I) z 是 128 维 z 采样(reparam.) D(z) = σ(w·z+b) 线性 + sigmoid → 真/假概率 信息瓶颈约束(公式 7-9) E_{x~p̃}[KL(E(z|x) ‖ r(z))] ≤ I_c ,其中 p̃ = ½ p* + ½ G(x) β 自适应:β ← max(0, β + α_β · (KL − I_c)),α_β = 1e-5
图 2:VDB 的判别器结构(对应论文 Fig.2)。输入 → encoder 输出高斯 latent z → 线性分类。KL 受约束于 $I_c$,β 用对偶梯度下降自适应。

三个关键设计选择:

  • $I_c < 1$ bit:二分类最少需要 1 bit 信息才能完美区分。把 $I_c$ 压到 1 以下(实验中 $I_c = 0.5$),数学上就保证 D 无法完美分类,梯度非零。
  • 对偶梯度下降自适应 β(公式 9):用 $\beta \leftarrow \max(0, \beta + \alpha_\beta(\text{KL} - I_c))$ 自动调温度——KL 太大就加大 β 限制,KL 太小就松绑。论文 Fig.6 中显示:固定 β(不管多大或多小)都不如自适应 β
  • 采样的 z 同时提供「instance noise」效果:每次 forward 都从 $E(z|x)$ 采样一次,天然带来随机性。但与「输入加固定噪声」不同——这个噪声是由 encoder 学出来、专门对齐到判别性方向的。

🛠️ 同一个套路,三个应用:VAIL / VAIRL / VGAN

VDB 是个「即插即用」的判别器正则化方法。论文把它套到三种对抗学习上,每种都用同一个信息瓶颈约束:

变体套到哪判别器在分什么典型用途
VAIL
(§4.2)
GAIL(Ho & Ermon 2016)目标策略状态 $\pi^*(s)$ vs 智能体策略状态 $\pi(s)$从 mocap 或视频学动作技能(后空翻、跑、舞)
VAIRL
(§4.3)
AIRL(Fu et al. 2017)同样分状态,但 D 的形式 $D=\frac{e^f}{e^f + \pi(a|s)}$ 可恢复奖励函数学到能迁移到新环境的奖励
VGAN
(§4)
标准 GAN真图像 vs 生成图像CIFAR-10 / CelebA / CelebAHQ 图像生成

训练细节(PDF 溯源)

维度设置
人物模型34 自由度仿真人形(仿 Peng et al. 2018);每个技能从单条mocap 演示学(约 100 样本)
编码维度z 是 128 维;$I_c = 0.5$(所有技能);对偶步长 $\alpha_\beta = 10^{-5}$
策略学习PPO(Schulman et al. 2017)
视频模仿64×64 RGB 帧;奖励 $r_t = -\log(1 - D(\mu_E(s)))$,用 encoder 均值近似
迁移任务C-maze / S-maze(Fu et al. 2017),把奖励用到左右翻转的镜像迷宫
对照基线GAIL(同架构无 VDB)、GAIL + instance noise、GAIL + 梯度惩罚(GP)、Merel et al. 2017、手工奖励(Peng 2018)、行为克隆 BC
🔮 直觉:为什么「instance noise」不够,非要学出来的 encoder?
论文 Table 1 对比了「GAIL-noise」(输入加噪)、「GAIL-noise z」(隐层加噪)和 VAIL。结果:简单加噪效果远不如 VDB。原因是网络可以学一个表示让固定噪声变得无效——网络把噪声「绕过去」了。VDB 的 KL 约束直接限制信息量,网络无法绕过——只能挑最有判别力的 0.5 bit 信息保留。

📊 关键结果(PDF Table 1 / Fig.7 / Fig.8)

VAIL:人形动作模仿(平均关节旋转误差,弧度,越低越好)

方法BackflipCartwheelDanceRunSpinkick
BC(行为克隆,10k 样本)3.012.882.932.632.88
Merel et al. 20171.331.472.610.521.82
GAIL0.740.841.310.171.07
GAIL + noise0.420.920.960.210.95
GAIL + GP0.620.690.800.120.64
VAIL(ours)0.360.400.400.130.34
VAIL + GP(ours)0.460.310.150.100.31
手工奖励(Peng 2018,上限参考)0.260.210.200.140.19
关键洞察:VAIL 全面碾压所有对抗方法;VAIL+GP 在 4/5 个技能上达到最佳,已逼近手工奖励(Peng 2018)的水平。BC 用了 100× 数据却完全学不会——说明这不是「数据量」问题,而是对抗训练稳定性问题。

视频模仿:只有 VAIL 学会了

从 64×64 RGB 视频直接学跑步——像素距离损失和 GAIL 都学不会,只有 VAIL 成功。Fig.5 的 saliency map 显示:VAIL 的判别器关注空间连贯的人物区域,而 GAIL 的关注点散乱;VAIL 梯度幅度也显著更大。

VAIRL:奖励迁移到镜像迷宫(5 次平均回报 ± std)

方法C-maze(翻转)S-maze(翻转)
GAIL-24.6 ± 7.21.0 ± 1.3
VAIL-65.6 ± 18.920.8 ± 39.7
AIRL-15.3 ± 7.8-0.2 ± 0.1
AIRL + GP-9.14 ± 0.4-0.14 ± 0.3
VAIRL(β=0,禁用 KL)-25.5 ± 7.262.3 ± 33.2
VAIRL(ours)-10.0 ± 2.274.0 ± 38.7
VAIRL + GP(ours)-9.18 ± 0.4156.5 ± 5.6
TRPO expert(上限)-5.1153.2
🔮 直觉:VAIRL 在 S-maze 上的奇迹——VAIRL+GP 拿到 156.5,超过了 TRPO expert 的 153.2!为什么?因为 VDB 让学到的奖励函数「平滑」,不沾迷宫特定墙位的 idiosyncrasy,所以镜像后还能用;AIRL 学的奖励「过拟合」原迷宫墙位,迁移就崩。注意禁用 KL(β=0)VAIRL 掉到 62.3——说明是信息瓶颈本身在起作用,不是采样噪声。

VGAN:CIFAR-10 图像生成(FID,越低越好)

方法FID ↓
原始 GAN63.6
Instance Noise30.7
SN(谱归一化)23.9
GP(梯度惩罚)22.6
WGAN-GP19.9
VGAN(ours)24.8
VGAN-SN(ours)71.8
VGAN-GP(ours)18.1

VGAN+GP 拿到 CIFAR-10 上的 SOTA(18.1)。注意 VDB 和 GP 互补:VDB 防梯度消失,GP 防梯度爆炸。但 VGAN-SN 反而变差(71.8),说明不同正则化之间并非任意可叠加。

🌐 在领域中的位置

原始 GAN / GAIL(D 太强) instance noise / WGAN-GP / 谱归一化(手工正则) VDB(学习式信息瓶颈)⭐ AMP / ASE(对抗动作先验,游戏/动画技能学习) diffusion policy / flow matching(避开对抗的训练范式)

VDB 是 2018-2019 年「对抗训练稳定化」一长串工作中的优雅一站。它的精髓——「限制判别器信息量,让它永远给有梯度的反馈」——对后续 AMP(Adversarial Motion Priors)等游戏/动画领域的对抗技能学习有直接影响。今天 diffusion policy 等非对抗范式崛起后,对抗方法不再那么热门,但 VDB 的「信息瓶颈防过强」思想仍出现在很多自监督和表示学习工作中。

❓ 常见误区

VDB 训练了两个网络吗?

训练三个:encoder $E(z|x)$、判别器 $D(z)$、生成器/策略 $G$(或 $\pi$)。encoder 和 D 一起构成「带瓶颈的判别器」;它们一起对 G 提供梯度。

为什么 $I_c = 0.5$?是怎么选的?

论文选 $I_c < 1$ 是因为二分类最小信息量是 1 bit——低于这个值,D 数学上无法完美分类,分布必然有重叠。具体 0.5 是经验值,所有技能共用。$I_c$ 越小,D 越弱、梯度越大但反馈越糊;$I_c$ 越大,D 越强、可能梯度消失。

它和 instance noise 到底差在哪?

instance noise 是「输入端加固定方差噪声」。网络会学一个表示把噪声绕过去——Table 1 的 GAIL-noise / GAIL-noise z 都明显不如 VAIL。VDB 直接限制信息量(KL 上界),网络无路可绕。论文 §1 把 VDB 描述为「自适应的 instance noise」——噪声大小由 encoder 学,并施加在专门拟合判别方向的压缩表示上。 β 为什么要用对偶梯度下降,不能固定吗?

试过。Fig.6 middle 比较了不同固定 β 和自适应 β——固定 β 不管多大或多小都不如自适应。固定小 β → 退化为 GAIL;固定大 β → 早期快但收敛差。原因是训练过程中真/假分布的距离在变,需要的「噪声强度」也在变,必须动态调。

局限?

(1) 仍是对抗训练,没摆脱不稳定性,只是缓解——今天 diffusion 等非对抗范式更稳;(2) 对偶梯度下降引入额外超参($\alpha_\beta$、$I_c$);(3) VGAN-SN 退化说明 VDB 和其他正则化并非总兼容;(4) 视频模仿只在跑步一个技能上验证,泛化性未充分检验。