4.5.1 训练准则的谱系:下界、对抗与精确似然
4.2 节立起自回归骨架,4.3–4.4 节用回报训练它。本节换一副目标:回到极大似然,而且要算得准——逐样本的 log p(x) 不许有下界、不许有近似。深度生成模型按训练准则排成一条谱系。变分自编码器(Kingma & Welling, 2014)引入潜变量 z,边际似然要对 z 积分,积分不可解,只好退而最大化证据下界(evidence lower bound, ELBO):
凡下界必有缺口:容量再大,优化到达的也只是下界,训练曲线无法回答「真实似然到了什么水平」。生成对抗网络走另一极端,干脆放弃似然:无似然(likelihood-free)的对抗训练让判别器与生成器互相施压,训练结束后密度本身没有定义,模型之间只能靠样本与 4.1 节的评估指标间接比较。4.3–4.4 节的策略梯度按回报优化,同样不在似然谱系之内。流模型(normalizing flow)走第三条路:直接给出精确对数似然(exact log-likelihood),无下界、无近似、逐样本可算(Rezende & Mohamed, 2015;综述见 Papamakarios et al., 2021)。三条路的取舍列于表 4.5-1。
| 模型 | 训练准则 | 单样本似然 | 采样 | 主要代价 |
|---|---|---|---|---|
| VAE | 最大化 ELBO(式 4.5-1) | 只有下界,真值不可见 | 一次解码 | 下界缺口;样本偏模糊 |
| GAN | 判别器—生成器对抗 | 无似然,密度未定义 | 一次前向 | 训练不稳;无法以 NLL 互相比较 |
| 流模型 | 极大精确对数似然(式 4.5-4) | 精确可算 | 一次逆变换 | 可逆约束限制架构(4.5.4 节起) |
分子生成在乎精确似然,理由有三。其一,训练有了逐样本的监控信号:哪个分子被模型认为「不像」,数值直接可见。其二,不同模型在同一把尺上可比,负对数似然是与 4.1 节各项指标互补的硬通货。其三,似然目标与性质奖励可以叠加以外的次序组合——先以纯似然预训练、再以奖励微调,GraphAF(4.6 节)正是这么做的。天下没有免费的精确:密度能算准的前提,是生成过程必须整体可逆;可逆性会反过来捆住架构的手脚。这份账单先挂在这里,4.5.4 节起逐项清点。
4.5.2 一维:概率质量守恒与变量替换
一切从一维开始。设随机变量 X 在数据空间取值,密度 pₓ(x);取映射 z = f(x),f 逐点可微且严格单调。严格单调保证双射(bijection):每个 x 对应唯一 z,反之亦然;可微保证导数存在,单调则排除导数变号过零的麻烦。在这组假设下,px 与 pz 之间有一个完全确定的换算关系。推导只靠一件事:概率质量在变换下守恒——变换搬运的是随机变量的取值,搬不动概率本身。
取小区间 [x0, x0+Δ],Δ 小到 px 在其上近似恒定。事件 {X ∈ [x0, x0+Δ]} 与事件 {Z ∈ [f(x0), f(x0+Δ)]} 是同一个事件——f 一一对应,x 落进区间当且仅当 z 落进像区间。同一事件,两种记账。左端按数据空间的密度记账:
右端按潜空间的密度记账,像区间的长度由一阶泰勒展开给出:f(x0+Δ) − f(x0) ≈ f′(x0)·Δ,故
两笔记的是同一笔账,相等,约去 Δ,得变量替换(change of variables)公式:
变量替换公式(一维)。设 f: X → Z 为双射,逐点可微,且 f′ 处处非零,则随机变量 Z = f(X) 的密度与 X 的密度满足 pₓ(x) = pz(f(x))·|f′(x)|。三条假设各司其职:双射保证事件一一对应(质量守恒有意义);可微保证局部缩放率存在;f′ 非零保证逆映射也可微、密度不发散。三者合起来,就是后文「可逆 + 行列式非零」架构约束的一维原型。
三句直觉把公式焊牢。第一,密度不是不变量。守恒的是概率质量,密度是「单位长度的质量」;换一把被拉长的尺,同一份质量的线密度自然变稀。|f′| 就是这把尺的拉伸倍数,公式里的乘除全是对度量变换的补偿。第二,压缩则密度升高。取 f(x) = 2x(即 x = z/2):z 上的标准正态搬回 x 轴,宽度减半、峰高翻倍——px(0) = 2·pz(0)。同一份概率质量装进更短的区间,密度必须升。第三,可逆性不是装饰。若 f 非单射(如 x²),两个 x 挤进同一 z,质量从两处汇到一处,单凭 z 与 f 无法分摊回去,公式失效;若 f′ 在某点为零(如 x = z³ 在原点),该处压缩无穷,密度发散。两类毛病正是定义框里三条假设要防的对象。图 4.5-1 把双向关系与质量守恒画在一处。
4.5.3 多维推广:雅可比行列式作为体积缩放因子
分子不是一维数,向量 x ∈ Rn 的变换 f: Rn → Rn 没有「导数」可用,接替者是雅可比矩阵(Jacobian matrix) Jf(x),其第 (i, j) 元为 ∂fi/∂xj。微积分的标准结论:f 在 x0 附近的最优线性近似是 f(x0+δ) ≈ f(x0) + Jδ。一维推导里的「长度缩放率」,在多维由这个线性映射接管。
线性映射把单位立方体映为平行多面体,n 维体积恰为 |det J|——这是行列式的几何定义,也是全部流模型数学的支点。把一维推导逐句翻译:取以 x0 为中心的小体积元,体积 δV;像体积为 |det Jf(x0)|·δV;事件等价、质量守恒、约去 δV,得
训练与数值实现都放在对数域。基础分布 pz 通常取各维独立的标准正态,对数密度按维可加,于是
最后一步组合。「流」指一串可逆变换的复合:f = fL ∘ … ∘ f2 ∘ f1,中间变量 hℓ = fℓ(hℓ−1)。复合的雅可比按链式法则相乘,行列式随之分解:
至此训练闭环:最大化 Σx log pθ(x),梯度经自动微分穿过可逆层,无下界、无近似。剩下唯一的、也是致命的障碍——第二项怎么算。
4.5.4 行列式困境:精确似然的入场费
给一个任意的深度网络 fθ,式 (4.5-6) 的第二项算得动吗?算 |det J| 先要拿到整个 n×n 雅可比:反向传播一次给一个方向的梯度,凑齐 n 列要 n 次反向传播(或 n² 次前向偏导);随后 LU 分解再花 O(n³)。分子图的特征维数以十计尚可承受,图像上千维则彻底不可行——而训练每一步、每个样本都要重复整件事。数值开销还不是根子上的病:任意网络根本不保证双射,行列式非零也不保证全局一一对应。「表达力不受限的任意网络」与「可逆且行列式可解析的网络」,两个要求几乎不相交。
出路只有一条:不改造任意网络,反其道行之——从可逆与行列式可解析出发,设计特殊结构,再靠堆叠补足表达力。两条主干道:耦合层(4.5.5 节),一半维度恒等、一半仿射,行列式解析、两头都快;自回归流(4.5.6 节),按链式法则逐维变换,雅可比天然下三角。代价与收益并存,先立警示。
可逆约束的表达力代价。双射要求维数守恒:潜空间维数必须等于数据维数,VAE 那种压到二维、三维做可视化的低维瓶颈,流模型给不了。常用组件大半出局:ReLU 在负半轴折叠信息、max-pooling 丢弃信息、dropout 随机置零,皆不可逆。耦合层每层又有一半维度原样通过,单层表达力再打折扣。表达力只能靠深度、靠交替结构、靠更大的 s、t 网络往回挣——同等参数量下,可逆网络的拟合上限一般低于不受约束的网络。精确似然是一张门票,票价写在架构上。
4.5.5 耦合层:一半复制,一半仿射
耦合层(coupling layer)出自 NICE 的加性原型(Dinh et al., 2015),定型于 RealNVP 的仿射形式(Dinh et al., 2017)。思路一句话:把维度劈成两半,一半动、一半不动——不动的一半保证可逆性收发自如,动的一半保证变换有实质内容。设 x = (xA, xB)(按坐标前一半、后一半劈分,或按掩码选取),正向变换为
可逆性一眼可验。从 y 反解 x:xA = yA(恒等);而 s、t 只依赖 xA——xA 既已到手,缩放与平移的系数便是已知数,逐元素反解即可:
行列式的账同样干净。把 y = (yA, yB) 对 x = (xA, xB) 排成分块雅可比:yA 恒等于 xA,故左上块是单位阵 I、右上块是零(yA 与 xB 无关);yB 对 xB 逐分量仿射,右下块是对角阵 diag(exp si);左下块 ∂yB/∂xA 稠密——s、t 是任意网络——但分块三角矩阵的行列式不含它:
「一半维度不动」是耦合层的软肋:任何一层里都有一半输入原样通过。补救办法是交替。相邻层换一种劈分——反转坐标次序、换掩码模式,或经可逆的 1×1 可逆混合后再劈(Kingma & Dhariwal, 2018)——上一层当 xB 的维度,这一层轮值 xA。堆叠 L 层后,每个维度都反复在「变换者」与「供料者」之间轮换,深度的复合弥补单层的保守。构造要点收进方法框。
仿射耦合层的构造步骤。① 选劈分:固定劈半、棋盘或通道掩码,或先做可逆 1×1 混合再劈;② 让 xA 通过两个任意网络,得缩放 s(xA) 与平移 t(xA);③ 正向:yA = xA,yB = xB ⊙ exp(s) + t;④ 逆向:按式 (4.5-9) 逐元素解析反解;⑤ 对数行列式直接取 Σ si(xA),不算行列式;⑥ 换掩码交替堆叠多层,层间可夹 ActNorm 稳定尺度(4.5.7 节)。训练与采样两个方向各一次前向,代价对称——这是耦合层对自回归流的最大优势。
习题 4.5-1
设二维线性变换 f(x) = Ax,A = [[2, 0], [0, 3]],基础分布 pz 为标准二维正态 N(0, I)。(1) 求 Jf、det J 与 log |det J|。(2) 写出 pₓ(x) 的表达式,指出 x 各维服从什么分布。(3) 求 px(0, 0),与 pz(0, 0) 比较,并解释比值。(4) 若换 A′ = [[2, 0], [0, 1/3]],log |det J| 变为多少?它是似然的加分项还是减分项?
参考解答(1) 线性变换的雅可比就是 A 本身;det A = 2×3 − 0×0 = 6,log |det J| = log 6 ≈ 1.79。(2) 由式 (4.5-5),pₓ(x) = N(Ax; 0, I)·6 = 6·(1/√(2π))e−(2x₁)²/2·(1/√(2π))e−(3x₂)²/2。即 z₁ = 2x₁、z₂ = 3x₂ 各服从 N(0,1),反解得 x₁ ~ N(0, 1/4)(σ = 1/2)、x₂ ~ N(0, 1/9)(σ = 1/3),两维独立:分布仍是正态,协方差为 A−1A−T = diag(1/4, 1/9)。(3) px(0,0) = 6/(2π) = 3/π ≈ 0.955,而 pz(0,0) = 1/(2π) ≈ 0.159,恰为 6 倍。A 把 z 空间的概率质量压进体积只有六分之一的一块区域,同一份质量装进更小的体积,密度必须升到六倍。(4) det A′ = 2/3,log |det A′| = log(2/3) ≈ −0.41,对数行列式为负——单独看是减分项:这一变换在第二维把体积放大,密度被摊薄。但似然由两项共同决定(log px = log pz(Ax) + log|det A|):变换同时把点搬到了 pz 取值不同的位置,两项之和才是最终得分。判断一个流的好坏,永远看两项之和,不看单项。
习题 4.5-2
证明仿射耦合层(式 4.5-8)可逆,给出逆的解析式;并证明其雅可比行列式恒正且 log |det J| = Σi∈B si(xA)。
参考解答可逆性:设 y = (yA, yB) 已知。第一半直接得 xA = yA(恒等)。第二半的系数 s、t 只以 xA 为输入,xA 既已还原,s(yA)、t(yA) 便是已知数,逐元素反解:xB = (yB − t(yA)) ⊙ exp(−s(yA))。指数函数恒正,exp(−s) 处处存在,除法逐点可行,无须解任何非线性方程组。把逆式代回正向式验证:[(xB⊙exp s) + t − t] ⊙ exp(−s) = xB,闭合。正逆复合均为恒等,双射成立。行列式:按 (yA, yB) 对 (xA, xB) 排序分块。由 yA = xA 得 ∂yA/∂xA = I、∂yA/∂xB = 0;由 yB 的第 i 个分量只依赖 xB 的第 i 个分量(仿射系数只随 xA 变),得 ∂yB/∂xB = diag(exp si(xA)),对角;∂yB/∂xA 为某稠密块,记作 ∗。于是 J = [[I, 0], [∗, D]],D = diag(exp si)。分块下三角矩阵的行列式等于对角块行列式之积:det J = det(I)·det(D) = ∏i∈B exp si = exp(Σi∈B si) > 0。恒正,故绝对值可去掉,log |det J| = Σi∈B si(xA)。证明的要害在两处:上右块为零(yA 与 xB 无关),下右块为对角(yB 逐分量依赖 xB);稠密的 ∗ 块不入行列式——「s、t 可取任意网络而代价为零」的机关正在于此。
4.5.6 自回归流:链式法则的条件变换版
第二条主干道把 4.2 节的链式法则直接搬进流框架。联合密度按任意固定次序分解为 p(x) = ∏i p(xi | x<i);自回归流(autoregressive flow)(Papamakarios et al., 2017)给每个条件分布换一种写法——不再是离散类别上的 softmax,而是一次标量变换(scalar transformation)加一维基础分布:网络读前缀 x<i,输出变换参数 μi、σi(σi > 0),令
两套语言在此完全等价。联合变换 z = f(x) 的雅可比是下三角阵——zi 只依赖 x≤i,对 xj(j > i)的偏导为零;对角元为 ∂zi/∂xi = 1/σi,故 log |det J| = −Σ log σi,与式 (4.5-11) 逐项相扣。链式法则天然把联合密度的变量替换拆成每维一个标量替换——一维公式(式 4.5-4)用 n 次即得全部。与 4.2 节自回归生成的同构也一目了然:那边每步输出「动作的条件分布」,这边每维输出「条件变换+基础分布」;骨架同为链式法则,条件分布的载体从 softmax 换成了可逆标量变换。GraphAF(4.6 节)做的正是这次置换,再把条件网络的输入换成逐步长大的分子图。
训练与采样的不对称是自回归流的性格。训练沿 x → z 正向:给定数据 x,各维条件只依赖 x 的真实前缀——与 4.2.4 节的 teacher forcing 同源——一遍前向即可并行算出全部 zi、σi 与对数似然。采样沿 z → x 反向:xi = μi(x<i) + σi(x<i)·zi,第 i 维要等前 i−1 维全部造完,只能逐维串行。若把条件改装在 z 的前缀上,快慢两向恰好对调。耦合层则两头各一次前向,训练采样对称。这一处差别,选型时常常比表达力更要紧。
耦合层(RealNVP 型)
- 每层一半维度变换、一半恒等;
- 训练与采样各一次前向,代价对称;
- 表达力靠交替劈分与深度堆叠补偿。
自回归流(MAF 型)
- 每维一个条件标量变换,雅可比下三角;
- 训练并行(teacher forcing 式)、采样逐维串行;
- 与 4.2 的生成骨架同构,GraphAF 的直接原型。
4.5.7 流的代价清单与去向
精确似然不是白来的。把全节的账合在一处,四项。
其一,架构约束。可逆与行列式可解析写进结构,代价已在 4.5.4 节的警示框立账:维数守恒、常用组件出局、单层保守。深度与交替结构能补,但同等参数量下可逆网络的拟合上限一般偏低。
其二,数值稳定。exp(s) 过大则 yB 溢出、过小则梯度消失;对数行列式与密度一律在 log 域累加(式 4.5-6、4.5-7),s 的幅值常加软限制。工程上再配ActNorm(activation normalization)一类可逆的逐通道仿射归一化,以数据驱动的初始化稳住各层尺度(Kingma & Dhariwal, 2018)——它本身就是一次行列式已知的小变换,不破坏精确性。
其三,离散数据。变量替换是连续密度的定理;像素、词、原子类型都是离散量。图像流的办法是去量化(dequantization):给整数值加连续噪声嵌入实数空间,并在似然里扣除相应的体积修正。分子更棘手:原子类型与键型是类别变量,图又离散且不定长。GraphAF 的处置是每维类别配一个条件高斯——从流中采出连续标量,按所落区间离散成类别,类别概率即高斯在该区间上的积分;既守住流的可逆框架,又把离散化显式写进密度(4.6 节展开)。
其四,方向成本。两个方向都要解析、都要高效。耦合层天生对称;自回归流一头并行一头串行,采样慢是结构性短板,只能靠缓存与蒸馏缓解。
小结。本节把流模型的数学立了起来:概率质量守恒给出变量替换公式,雅可比行列式量度体积缩放,深流按层分解行列式;任意网络算不动行列式,耦合层与自回归流以结构换解析,精确似然由此到手;代价是维数守恒、组件受限与数值纪律。4.6 节把自回归流装上 4.2 节的图骨架,配上价约束掩码与预训练—微调范式,得到 GraphAF——本节数学的第一次分子级实战。
习题 4.5-3
论述:流模型与 VAE 都以潜变量组织生成、都能训练与采样,为何一个能给出精确似然、另一个只能给下界?从映射是否双射、维数能否压缩、密度是否有解析定义三点展开,并结合分子生成场景回答:需要低维连续潜空间做性质优化时选谁?需要精确监控训练、与其他模型比对 NLL 时选谁?
参考解答第一点,映射性质。VAE 的编码器 q(z|x) 输出分布而非点,解码 p(x|z) 又是随机的:x → z → x 的回路两次引入随机性,不构成双射,变量替换公式无从谈起,边际似然的积分不可解,只能以 ELBO 近似。流模型的 f 是确定的双射,正逆两个方向都有解析式,密度经变量替换精确可得——精确性直接来自双射性。第二点,维数。双射要求维数守恒,流的潜空间只能与数据同维,压不成二维、三维的连续潜空间;VAE 恰可自由设窄瓶颈,得到紧凑、可插值、可做梯度引导的潜表示。第三点,密度。VAE 的数据密度没有解析形式,估计要靠重要性采样一类手段;流的逐样本对数似然随手可算,训练监控与模型比较直接。落到场景:要做性质导向的连续优化——在潜空间里以梯度爬性质面——选 VAE 式编码—解码结构(或第 2 章 Gómez-Bombarelli 一系的连续表示);要精确的似然目标做预训练与模型比对,选流模型一系(GraphAF)。两条路线并不互斥:以流精化 VAE 的后验(Rezende & Mohamed, 2015 的原始动机)就是一例融合。
关键术语
- 流模型 (normalizing flow)
- 以一串可逆变换把简单基础分布弯成数据分布的生成模型,对数似然精确可算。
- 变量替换 (change of variables)
- 密度在双射下的换算规则:新密度=基础密度×体积缩放因子的绝对值。
- 雅可比行列式 (Jacobian determinant)
- 变换局部线性化的体积缩放率;进入对数似然的修正项,流模型的核心难点。
- 基础分布 (base distribution)
- 流的源头分布,通常取各维独立的标准正态。
- 双射 (bijection)
- 一一对应且满射的映射;变量替换公式与可逆采样的前提。
- 证据下界 (evidence lower bound, ELBO)
- VAE 优化的似然下界,与真值之间的缺口来自后验近似。
- 精确对数似然 (exact log-likelihood)
- 无下界、无近似的逐样本对数密度;流模型的标志性能力。
- 耦合层 (coupling layer)
- 一半维度恒等复制、另一半做条件仿射的可逆层;雅可比分块三角,行列式解析。
- 仿射耦合层 (affine coupling layer)
- 耦合层的尺度—平移形式 yB = xB⊙exp(s)+t;对数行列式等于 s 之和。
- 自回归流 (autoregressive flow)
- 按链式法则逐维做条件标量变换的流;训练可并行、采样须串行。
- ActNorm (activation normalization)
- 可逆的逐通道仿射归一化,稳定各层尺度与 log-det 的数值。
- 去量化 (dequantization)
- 给离散数据加连续噪声嵌入实数空间,使连续密度的变量替换可用。
参考文献与延伸阅读
- Kingma DP, Welling M. 2014. Auto-encoding variational Bayes. International Conference on Learning Representations (ICLR 2014).
- Rezende DJ, Mohamed S. 2015. Variational inference with normalizing flows. Proceedings of the 32nd International Conference on Machine Learning (PMLR 37): 1530–1538.
- Dinh L, Krueger D, Bengio Y. 2015. NICE: non-linear independent components estimation. International Conference on Learning Representations (ICLR 2015), Workshop Track. arXiv:1410.8516.
- Dinh L, Sohl-Dickstein J, Bengio S. 2017. Density estimation using Real NVP. International Conference on Learning Representations (ICLR 2017).
- Papamakarios G, Pavlakou T, Murray I. 2017. Masked autoregressive flow for density estimation. Advances in Neural Information Processing Systems 30 (NeurIPS 2017).
- Kingma DP, Dhariwal R. 2018. Glow: generative flow with invertible 1×1 convolutions. Advances in Neural Information Processing Systems 31 (NeurIPS 2018).
- Shi C, Xu M, Zhu Z, Zhang W, Zhang M, Tang J. 2020. GraphAF: a flow-based autoregressive model for molecular graph generation. International Conference on Learning Representations (ICLR 2020).
- Papamakarios G, Nalisnick E, Rezende DJ, Mohamed S, Lakshminarayanan B. 2021. Normalizing flows for probabilistic modeling and inference. Journal of Machine Learning Research 22(57):1–64.