1 归一化流的基本思想

1.1 从简单分布到复杂分布的可逆映射

归一化流的核心做法是构造一个由多层可逆变换组成的映射:先从一个容易采样的基分布出发(常见为高斯分布),再经过一串可逆函数得到目标分布。可逆性意味着既能把基样本“正向”变换成目标空间的样本,也能把目标空间的数据“反向”映射回基空间,从而同时支持生成(采样)与评估(似然计算)。

1.2 概率密度变换与似然计算

与一般只会产生样本的生成方法不同,归一化流在设计上强调“密度可计算”。当映射是可逆且可计算其概率密度变化时,可以通过变量替换公式得到目标空间的对数似然。这使得训练可以直接最大化数据在模型下的似然,而不是依赖需要额外判别器或近似下界的目标。

1.3 雅可比行列式重要性

在连续空间中,变量替换会引入雅可比行列式的绝对值。直观地说,它刻画了变换对局部体积的拉伸或压缩程度。归一化流的关键工程约束之一就是让该项在训练中能够高效、稳定地计算,或至少在结构上可分解成若干容易求值的量。

2 数学表述

2.1 变换序列与符号约定

设目标空间变量为 \(x\),基空间变量为 \(z\)。常用写法是用参数化的可逆映射 \(f\) 将基变量变到目标空间: \[ x = f(z) \] 由于 \(f\) 可逆,也可写反向映射 \(z=f^{-1}(x)\)。通常将 \(f\) 分解为若干层的复合: \[ f = f_K \circ f_{K-1} \circ \cdots \circ f_1 \] 对应的逆映射同理由各层逆函数复合而成。

2.2 单步变换的密度公式

考虑单步可逆变换 \(x=f(z)\)。依据变量替换公式,目标空间密度满足: \[

p_X(x)=p_Z(z)\left\det \frac{\partial f(z)}{\partial z}\right^{-1}

\] 等价地,若以反向映射 \(z=f^{-1}(x)\) 表示,也可写成: \[

p_X(x)=p_Z(f^{-1}(x))\left\det \frac{\partial f^{-1}(x)}{\partial x}\right

\] 实际实现中常选择最方便计算雅可比的方向。

2.3 多步复合的密度与log-likelihood

复合映射,雅可比行列式的乘积性质可用于整理: \[ \det \frac{\partial f(z)}{\partial z}=\prod_{k=1}^K \det \frac{\partial f_k(h_{k-1})}{\partial h_{k-1}} \] 其中 \(h_0=z\),\(h_k=f_k(h_{k-1})\)。取对数后,似然可写为“基分布对数密度 + 各层对数雅可比项”的和: \[

\log p_X(x)=\log p_Z(z)-\sum_{k=1}^K \log \left\det \frac{\partial f_k(h_{k-1})}{\partial h_{k-1}}\right

\] 因此训练时只需在前向(或反向)经过每一层并累积该项即可。

2.4 采样与推断(生成 vs 反向映射)

生成阶段:从基分布采样 \(z\sim p_Z\),通过 \(x=f(z)\) 得到模型样本。 推断/评估阶段:对给定数据 \(x\),使用逆映射求 \(z=f^{-1}(x)\),并按公式计算 \(\log p_X(x)\)。两者由同一套可逆结构支撑,使得模型同时具备生成与精确密度评估的能力

3 训练目标与优化

3.1 最大似然估计MLE)

归一化流通常采用最大似然估计。给定数据集 \(\{x_i\}\),目标是最大化平均对数似然: \[ \max_\theta \frac{1}{N}\sum_{i=1}^N \log p_\theta(x_i) \] 由于 \(\log p_\theta(x)\) 可由前述可计算雅可比项得到,训练不需要对密度进行额外的变分下界近似(仍可能有数值与工程层面的近似或技巧)。

3.2 损失函数的实现细节

实际优化一般最小化负对数似然: \[ \mathcal{L}(\theta)=-\frac{1}{N}\sum_{i=1}^N \log p_\theta(x_i) \] 实现中通常包括三部分计算:基分布对数密度、每层雅可比修正项、以及在反向/正向方向上的统一符号。框架实现往往需要保证各层的逆函数在数值上稳定,并确保雅可比项的计算与变换方向一致。

3.3 数值稳定性与常见技巧

雅可比相关计算可能带来尺度膨胀或梯度波动,常见做法包括:对变量进行归一化;在耦合层中使用受控的缩放参数(例如限制其输出范围);在网络初始化时尽量让初始变换接近恒等映射以降低训练初期的不稳定。同时,批归一化层归一化等技术也常用于缓解训练振荡,但需注意与可逆结构的相容性。

3.4 正则化与约束(可逆性与可计算性

归一化流训练并非只靠“让损失变小”。更重要的是保持可逆层结构满足可计算雅可比的性质。常见约束体现在:耦合层中保留可分解形式;自回归结构通过掩码保证三角雅可比;连续时间模型通过特定求解器与参数化方式保证可积与数值可逆性。正则化更多用于提升泛化和稳定性,而“结构约束”则直接决定模型能否计算密度。

4 常见结构与模型族

4.1 自回归流(MAF/IAF等)

4.1.1 结构动机与掩码/条件化

自回归流利用“逐维条件”的思想,使得雅可比矩阵具有三角结构,从而行列式可高效计算。实现上通常对输入/输出维度进行掩码与排序,让每个维度只依赖部分其他维度或通过条件网络进行调制。不同家族(如MAF、IAF)主要差别在于采样与似然计算时采用的方向(正向/逆向)以及因此带来的计算复杂度差异。

4.1.2 计算雅可比的方式(通常可分解)

三角雅可比的关键性质是:其行列式等于对角线元素的乘积。于是对数行列式可以分解为各维对数导数项之和。为了获得该结构,可逆层的参数化通常使用可控的仿射变换(或带非线性参数的仿射形式),并用掩码保证依赖关系不破坏可分解性。

4.2 耦合层流(RealNVP/Glow等)

4.2.1 分块/分段的设计原则

耦合层将输入向量划分为两部分(或多部分)。其中一部分通过条件网络生成对另一部分的变换参数(如缩放与平移),而被条件化的部分保持不参与参数生成,从而保证整体变换可逆。由于变换参数只影响一部分,雅可比矩阵通常呈块结构或可分解形式。

4.2.2 维度分裂与可计算变换

常见做法是在每层中交替使用不同维度切分方式,避免模型过度依赖固定分区导致表达受限。缩放项通常需要在数值上受到约束以避免过大或过小的体积变化。只要缩放与平移的参数由网络输出且形式保持可逆,雅可比项即可在训练中高效计算。

4.3 多尺度与分层建模

4.3.1 条件建模与特征通道处理

多尺度流通常引入“逐层分解变量”的机制:在若干层之后,部分中间变量被分流到基分布或单独的子目标中,其余变量继续通过后续变换。这样做有助于提升表达能力并改善训练效率。实现上往往结合条件化(例如用前层特征作为条件)与通道处理(如在卷积结构中对特征通道进行切分)。

4.4 置换与混合Permutation/Mixing

由于可逆层在局部结构上可能只对某些维度进行显式变换,置换或混合操作用于打破维度之间的静态分工。常见包括固定的维度置换或通过可学习方式进行混合。它们与后续耦合/自回归层配合,使得每个维度最终能受到充分的跨维交互影响。

4.5 连续时间归一化流(CNF)

4.5.1 神经常微分方程视角

连续时间归一化流把离散的多层复合看作时间演化过程。可以将变量随时间 \(t\) 的变化表示为常微分方程或其神经参数化形式: \[ \frac{dz(t)}{dt}=v_\theta(z(t),t) \] 通过数值积分得到从基分布到目标空间的映射。该视角使模型能用更自然的“流”概念描述复杂变换,并允许在精细控制下提升逼近能力。

4.5.2 体积变化与迹估计

在连续时间中,密度变化与速度场的散度(对雅可比的迹)相关。对数密度修正可通过积分形式表达,而散度往往难以直接计算。实际中常用迹估计(如基于随机向量的估计方法)来近似散度,从而在可接受的计算成本下完成似然训练。

5 关键性质与评估指标

5.1 表达能力与可逆性

只要每一层的可逆变换足够灵活,且层与层之间的组合能够覆盖目标分布所需的几何变换,归一化流就具备较强的表达能力。可逆性保证密度评估与采样互相一致,不会出现某些隐式模型常见的“采样好看但密度不可用”问题。

5.2 计算代价:训练与采样的复杂度

成本主要来自两类计算:网络前向/反向的开销,以及雅可比相关项的求值。自回归与耦合层在不同方向上可能呈现不同的计算复杂度取舍:有的结构采样更快但似然更慢,反之亦然。连续时间模型还引入数值积分器的步数开销,使得训练与推断都与求解精度相关。

5.3 似然评估与校准思路

由于模型直接优化对数似然,似然值常被用作评估指标的一部分。良好的校准可以理解为:模型给出的概率质量与真实数据的统计复杂度相匹配。在实践中通常还需配合可视化或下游任务表现,避免仅凭似然比较忽略数据预处理与建模假设差异。

5.4 样本质量的常见度量(如FID等)

虽然归一化流以似然训练为主,生成样本的视觉或特征质量仍常用成熟指标衡量。以图像任务为例,常见使用如FID(通过特征分布差异衡量样本与真实数据的接近程度)。对非图像数据则可能采用任务相关的统计距离或分类/回归辅助指标。

6 典型应用场景

6.1 密度估计与概率建模

归一化流可用于对连续数据的概率密度建模,例如表格型特征的连续分布建模、低维或中维嵌入空间的密度估计等。由于能直接计算 \(\log p(x)\),它也适合需要概率解释或不确定性量化的场景。

6.2 生成建模与表示学习

在学习表示时,归一化流可把复杂数据分布映射到更简单的潜空间,使得潜变量具有相对清晰的概率意义。生成建模方面,它能通过从基分布采样生成新样本,并在一定条件下支持对数据结构的精确概率学习。

6.3 异常检测与似然驱动评估

异常检测常用“低似然意味着不常见”。归一化流通过对数似然或其阈值策略来衡量样本的“离群程度”。相较只做判别的检测方法,似然驱动的方式在数据分布可建模且噪声来源相对明确时更具解释性。

6.4 条件生成与可控生成

在条件归一化流中,变换的参数依赖额外信息(如类别标签或某种观测)。这样可以在保持似然建模能力的同时,实现条件采样:给定条件输入,模型将生成与该条件一致的样本,并通过条件似然对生成合理性进行约束。

7 变体与扩展方向

7.1 更灵活的可逆层设计

为了提升表达能力,研究者会探索更通用的可逆层类型,例如更复杂的耦合变换、可逆卷积或融合结构等。设计目标通常围绕两点:增强对复杂分布的拟合能力,同时保持雅可比可计算或可近似计算。

7.2 更高效的雅可比/迹计算

雅可比或散度的计算效率直接影响可训练性与可扩展性。扩展方向包括改进分解结构以减少计算量、采用更低方差的迹估计、以及在连续时间模型中优化数值求解策略(如自适应步长等)。

7.3 离散数据的处理策略

原生归一化流通常面对连续变量更直接。对于离散数据,一种常见思路是对离散变量做去量化(dequantization),把离散值映射到连续空间,再在连续空间中建模密度。另一类方法是使用专门的离散化/连续化设计,使得映射结构与可逆性要求尽量兼容。

7.4 与扩散模型/其他生成模型的对比

扩散模型通常通过逐步去噪生成,训练目标与采样过程不同,且需要多步采样;而归一化流一次采样通常更直接,并且训练时可利用精确似然。但归一化流在高维复杂数据上可能面临结构设计与雅可比计算的挑战。两类方法在优缺点上形成互补:扩散模型在某些视觉任务上表现突出,而归一化流在密度评估与可解释概率方面更有优势。

8 实现要点与工程实践

8.1 选择基分布与初始化

基分布一般选择简单分布(如标准高斯),以保证采样与对数密度计算便捷。初始化上常让早期层近似恒等变换,例如把缩放偏置为接近 0,使模型初始阶段不会产生极端的体积变化,从而减少梯度爆炸或训练发散风险。

8.2 网络结构配置与超参数

模型深度(层数)、每层的隐藏维度、耦合层内部网络(如MLP或卷积结构)、以及条件信息的注入方式都会影响容量与效率。对于自回归与耦合两类结构,还需要在切分策略、掩码配置、以及置换规则上做选择,以平衡表达与可计算性。

8.3 训练流程与加速策略

常见流程包括:数据预处理(归一化/去量化)、构建可逆层堆叠、按 batch 计算 \(\log p(x)\) 并反向传播。加速策略可能涉及混合精度训练、减少无用的重复计算、以及在连续时间模型中选择更合适的求解器或误差容忍度。

8.4 常见坑:数值问题与不可逆风险

数值问题主要来自缩放项导致的体积变化过大、雅可比项计算不稳定或浮点误差累积。不可逆风险通常不会来自理论结构本身,而来自工程实现偏离了保证可逆的形式(例如在某些层中无意改变了结构约束)。因此实现时需要严格遵循层的可逆定义,并配合单元测试验证正反向映射的一致性。

9 轻量级“梗”与直观比喻

9.1 “把橡皮泥压成方形”:可逆变换的直觉

可以把归一化流想成反复对“橡皮泥”做塑形:你先把一团容易处理的形状揉成目标形状。关键在于手法必须“可逆”,也就是你能再把方形理回原来的圆润状态。可逆性保证了既能塑形(采样),也能反推原始状态并知道形状变化对密度的影响(似然)。

9.2 “雅可比就是通行费”:为什么必须可计算

当橡皮泥被拉伸或压缩,单位体积对应的“密度空间”会发生变化。雅可比行列式就像过桥的通行费:不付这笔“体积修正”,你就无法把基空间的概率正确搬运到目标空间。归一化流之所以能做精确似然,正是因为这笔通行费能算清楚。

9.3 训练像拼乐高:层的复合与条件化

每一层像一块乐高:单块不一定能拼出最终造型,但按规则连接起来就能形成复杂结构。条件化则相当于换了“说明书的颜色”:同一套积木,因条件不同会产生不同的拼法,从而实现可控的生成与概率建模。