用双射搬运概率质量
设基随机变量 Z∈Rd 有可计算密度 pZ,可逆可微映射 fθ:Rd→Rd 产生 X=fθ(Z)。给定数据 x,必须能求 z=fθ−1(x),并计算相应Jacobian行列式。变量替换公式为
pX(x)=pZ(fθ−1(x))detJfθ−1(x).
若从正向 x=f(z) 计算,则
logpX(f(z))=logpZ(z)−log∣detJf(z)∣.
负号来自体积扩张:同一概率质量铺到更大体积后,单位体积密度下降。绝对值不可省略,因为密度非负,而可逆映射可以翻转方向。流要求输入与输出同维;非方Jacobian没有通常的双射行列式公式。
一维时,长度小区间满足 dx≈f′(z)dz,概率守恒 pX(x)dx≈pZ(z)dz,所以 pX(x)=pZ(z)/∣f′(z)∣。多维行列式正是局部体积缩放的对应量。
基分布和映射方向都是模型定义
基分布常取各维独立标准正态,因为采样和对数密度简单;这不是变量替换公式的要求。换成逻辑斯蒂分布、混合分布或带条件参数的基分布,会改变模型的尾部、支持和似然。训练与采样必须使用同一基分布及同一标准化,不能训练时按标准正态算密度、部署时再从另一噪声分布取样。
文献和代码可能把 f 定义为“数据到基变量”,也可能定义为“基变量到数据”。两种记法都成立,却让log-det符号和所谓正向、逆向交换。可靠账本应始终写出已知输入、输出和公式:若当前计算 z=f(x),则 logpX(x)=logpZ(z)+log∣detJf(x)∣;若当前计算 x=g(z),则使用 logpX(g(z))=logpZ(z)−log∣detJg(z)∣。
例 1:一维仿射流的精确对数密度
令 Z∼N(0,1),变换 X=2Z+3。观测 x=5 时,先求逆 z=(5−3)/2=1;正向导数绝对值为二,故
logpX(5)=−21log(2π)−21(1)2−log2≈−2.1121. 相应密度约为 e−2.1121=0.1210。若漏掉 −log2,会得到标准正态在一处的密度约 0.2420,总积分将变成二而非一。直接识别 X∼N(3,4) 也得到同一结果。
复合层把对数体积变化相加
实际模型把多个双射复合:z0f1z1f2⋯fKx。链式法则给出
JfK∘⋯∘f1(z0)=JfK(zK−1)⋯Jf1(z0).
行列式乘法使总对数绝对行列式成为
log∣detJf∣=k=1∑Klog∣detJfk(zk−1)∣.
这让每层只需报告自己的状态和log-det,避免形成整个高维Jacobian。若用一般稠密 d×d Jacobian,求行列式和求逆通常代价高;流层的核心设计目标就是让双射、逆和log-det都可计算。
对角、三角、正交和易分解的线性变换各有不同账本。对角层的log-det是各对角绝对值对数之和,但坐标间没有混合;三角层加入依赖而仍只需读对角;正交层体积绝对值为一,只旋转或反射;可逆稠密混合能一次连接全部坐标,却要用分解、参数化或缓存控制行列式成本。架构通常交替使用易缩放层与易混合层,而非期待一种层同时完成所有作用。
例 2:二维三角仿射变换
取
A=[2010.5],b=(1,−1)T,x=Az+b. 观测 x=(5,0)T。先由第二行 0=0.5z2−1 得 z2=2;第一行 5=2z1+z2+1 得 z1=1。三角矩阵行列式为 2×0.5=1,故log-det为零。
若基分布为二维标准正态,logpZ(1,2)=−log(2π)−(12+22)/2≈−4.3379,数据对数密度相同。变换虽然同时剪切、一个方向扩张并在另一个方向收缩,但净体积不变;只看单个对角尺度会误判密度变化。
仿射coupling用保留分块换取易求逆
把输入分成 xa,xb,一层仿射coupling写成
ya=xa,yb=xb⊙expsθ(xa)+tθ(xa).
因为 ya 原样保留,逆变换可显式写成
xa=ya,xb=(yb−tθ(ya))⊙exp(−sθ(ya)).
Jacobian是分块三角矩阵,对角块为单位阵和 diag(es),所以
log∣detJ∣=j∑sj(xa).
s,t 网络本身无需可逆,因为求逆时它们的输入 ya=xa 已知。单层不改变 a 分块,表达力有限;多层之间必须交换、置换或可逆混合分块,让所有维度最终都能被变换。置换的行列式绝对值为一,不贡献log-det,但会改变后续依赖。
例 3:coupling层的正向、逆向与log-det
二维输入分为 xa=1,xb=2,设 s(xa)=log2、t(xa)=−1。正向得到 ya=1,yb=2×2−1=3;log-det为 log2,表示局部面积扩大两倍。
从 y=(1,3) 求逆时,先取 xa=ya=1,重新计算同一 s,t,再得 xb=(3−(−1))/2=2。将正向和逆向串联恢复原输入,误差应只来自数值精度。若实现把缩放直接输出为可正可负的数而非指数,缩放为零时会破坏可逆性。
自回归流用三角依赖选择计算方向
一种三角变换可写成
yi=xiexpsi(x<i)+ti(x<i),i=1,…,d.
第 i 个输出只依赖当前和更早输入,Jacobian为下三角,对数行列式是所有 si 之和。若 x 已知,可用掩码网络并行计算全部条件参数和 y,适合密度求值;从给定 y 反求 x 时,xi 依赖刚恢复的 x<i,通常要顺序采样。这类依赖方向常用于描述密度评估快、采样慢的自回归流。
反过来设计条件依赖,可让从基变量到数据的采样并行,而数据到基变量的密度路径更顺序。名称并不能替代方向账本:必须写明哪一个变量是已知、条件网络读取哪一侧,以及训练和部署究竟调用正向还是逆向。
coupling层把逐坐标顺序改成分块更新,两个方向都较易并行,但每层只变换部分坐标,常需更多层。自回归层每层能为每个坐标使用更细条件,却让一个方向带有长度为 d 的依赖链。两者都以三角Jacobian换取线性时间log-det。
精确似然训练仍需数据合同
对连续训练样本 x(n),最大似然最小化
L(θ)=−N1n=1∑N[logpZ(z(n))+log∣detJf−1(x(n))∣].
这里没有变分下界:在数学模型和数值计算正确时,得到的是模型对连续输入的精确密度。但“精确”修饰对当前流模型的似然计算,不表示模型是真实分布,也不表示优化达到全局最优。
例 4:一个缩放参数的似然梯度更新
设一维流 x=eαz,基分布为标准正态,单个观测 x=2。逆变量为 z=2e−α,忽略与参数无关常数后,负对数似然为
L(α)=21x2e−2α+α, 梯度为 1−x2e−2α。初值 α=0 时梯度为 1−4=−3;学习率 0.1 的梯度下降给出 α1=0−0.1(−3)=0.3,尺度从一增至 e0.3≈1.350。此时梯度变为 1−4e−0.6≈−1.195,仍推动尺度增大,但幅度减小。只优化一个样本会把尺度朝该样本调整,不能代表总体估计。
图像token、类别和计数是离散变量,不能直接当作普通连续密度而忽略量化。常见做法先加入明确分布的去量化噪声,并在所定义的连续目标下训练;报告单位还要说明是自然对数、比特每维还是总负对数似然。不同去量化规则和预处理的密度值不可直接比较。
条件流仍要保持每个条件下可逆
若有标签或上下文 c,可以令变换和基密度依赖条件:x=fθ(z;c)、pZ(z∣c)。变量替换只对随机变量轴求Jacobian,条件被视为已给定,因而
logpX(x∣c)=logpZ(f−1(x;c)∣c)+log∣detJf−1(x;c)∣.
对每个允许的 c,映射关于 z 与 x 仍须双射。条件网络本身不必可逆,因为求逆时同一个 c 已知。若部署时条件缺失、含噪或来自另一个预测器,训练合同就已改变,应分别评价条件错误传播。把未来标签或数据切分信息放入条件会造成泄漏,精确似然并不能暴露这种语义错误。
条件采样时先固定 c,再从相应基分布取 z 并走生成方向;条件密度评估则用同一 c 走逆方向。若比较两个条件的密度,必须确认它们的基分布、预处理和单位一致,否则差异可能来自条件尺度而非样本适配。
可逆性同时带来表达限制
严格双射不允许两个潜变量映射到同一数据点,也不能改变维数。连续可逆映射及其连续逆保持拓扑连接性质:从具有全空间正密度的基分布出发,模型通常不能精确制造被零密度区域完全隔开的支持,只能用很低密度的狭窄桥近似。数据若集中在更低维流形上,普通同维连续密度还会遇到奇异分布问题,去量化或噪声模型改变的是建模对象。
易算log-det也限制层结构。仿射coupling每次只直接变换部分坐标,自回归流在一个方向必须顺序计算;为了提高表达力增加层数,会增加参数、激活、求逆误差和运行时间。宣称可逆层能节省激活内存时,还要计入重算、有限精度恢复误差和非可逆外围模块。
用双向资源账本比较架构
流模型有两条同等重要的执行路径。密度路径从数据出发,包含预处理、逐层求逆或正向变换、每层log-det和基密度;采样路径从基变量出发,包含随机数、反方向变换和后处理。应分别记录每样本延迟、批量吞吐、峰值内存和串行深度。只报告训练吞吐会隐藏自回归采样瓶颈,只报告一次采样又会隐藏大批量密度评价优势。
对 K 层、d 维coupling流,log-det通常随被缩放元素数近似线性增长,但条件网络的卷积或全连接成本可能占主导。自回归流即使log-det求和为 O(d),顺序采样的墙钟时间也可能因 d 次依赖调用而很高。复杂度阶数相同不表示硬件效率相同,还要检查内存访问、并行批量和编译实现。
架构增深前先做三项基线:单层仿射应复现解析正态变换;小维coupling应与显式Jacobian行列式一致;多层组合应在正逆两向恢复并保持log-det相消。通过这些不变量后,再根据留出似然与资源瓶颈决定增加混合、宽度或层数,才能把表达不足和实现错误分开。
例 5:两层流的对数体积账本
从某个基点出发,第一层正向log-det为 log2,第二层为 −log3,基对数密度为 −3。总正向log-det为 log(2/3)≈−0.4055,表示净体积收缩到三分之二。
数据点对数密度为 −3−(−0.4055)=−2.5945。若错误地把绝对行列式相加为 2+1/3,或忘记正向公式前的负号,都得不到概率质量守恒。逆向账本的两个log-det符号相反,总和为 log(3/2),代入逆公式仍给出 −2.5945。
数值核验与评价边界
每层至少检查 f−1(f(z))≈z、f(f−1(x))≈x、解析log-det与小维自动微分Jacobian一致,以及正向和逆向log-det互为相反数。尺度通常在对数域参数化,并对极端log-scale作有依据的限制;否则指数上溢、下溢或接近奇异会使似然和逆不稳定。
精确留出似然可比较同一预处理下的密度模型,但高似然未必对应更符合人类语义的样本,模型还可能偏好某些低层统计。评价应同时包含留出负对数似然、采样质量与覆盖、逆向重建误差、吞吐、峰值内存和异常输入行为。对域外检测尤其不能仅由“能算密度”推出可靠性。
练习
练习 1:一维变量替换
- 所属知识
- 密度缩放
- 难度
- 3/5
推导一维仿射流的密度公式。
查看提示
先求逆变量,再除以正向导数绝对值。
查看解答
若
x=az+b且a非零,则
z=(x−b)/a,
pX(x)=pZ(z)/∣a∣,对数形式为
logpZ(z)−log∣a∣;绝对值处理方向翻转。
练习 2:复合 log-det
- 所属知识
- 链式法则
- 难度
- 3/5
查看提示
Jacobian 相乘,行列式相乘,对数绝对值相加。
查看解答
对
f=fK∘⋯∘f1,总 log-det 为各层在对应中间状态处的
log∣detJ∣ 之和;数据对数密度等于基对数密度减正向总和。
练习 3:coupling求逆
- 所属知识
- 可逆层
- 难度
- 3/5
推导仿射coupling层的逆和log-det。
查看提示
保留分块先恢复,再重算缩放和平移。
查看解答
先令
xa=ya,再算
s(xa),t(xa),最后
xb=(yb−t(xa))exp(−s(xa));Jacobian三角,对数绝对行列式为s各分量之和。
练习 4:自回归方向
- 所属知识
- 计算复杂度
- 难度
- 4/5
解释为何一种自回归流会密度快而采样慢。
查看提示
分别问密度计算时和采样时哪些坐标已经已知。
查看解答
若条件参数依赖已知数据前缀,数据到基变量可用掩码网络并行评估,而从基变量求数据需逐坐标恢复;反向设计交换两种成本,必须按实际映射方向判断。
练习 5:离散数据
- 所属知识
- 建模合同
- 难度
- 4/5
说明图像像素进入连续流前需要什么处理。
查看提示
连续密度对单个离散点的概率质量不是同一对象。
查看解答
先定义去量化噪声和连续输入范围,在该连续分布上用变量替换训练,并报告预处理与密度单位;不同去量化合同下的似然不能直接比较。
练习 6:精确似然边界
- 所属知识
- 评价
- 难度
- 4/5
解释为什么精确似然不等于生成模型已经正确。
查看提示
区分计算无近似、模型正确与语义质量。
查看解答
精确似然表示给定流模型的密度可直接计算,不保证模型族包含真实分布、优化充分或高似然样本语义更好;还需采样覆盖、逆误差、资源和域外行为证据。
概念关系
资源
论文 · 2014Generative Adversarial Nets
Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio
用于核对原始对抗目标、最优判别器分析和实验结论范围。
打开官方来源
书籍 · 2016Deep Learning
Ian Goodfellow, Yoshua Bengio, Aaron Courville
适合作为反向传播和优化章节的完整参考。
打开官方来源