基于流的生成模型

基于流的生成模型（flow-based generative model）是机器学习中的一类生成模型，利用归一化流（normalizing flow）显式建模概率分布。这是一种使用概率密度变量变换法将简单分布转换为复杂分布的统计方法。
直接建模似然函数具有很多优点。例如，可以直接计算得到负对数似然并将其作为损失函数最小化。此外，通过从初始分布中采样并应用流变换可以生成新的样本。
相比之下，变分自编码器、生成对抗网络等其他生成模型无法显式地表示似然函数。
方法.
考虑随机变量formula_1和formula_2，其中formula_3。对于formula_4，定义一系列由formula_2变换得到的随机变量formula_6。其中函数formula_7满足可逆性，即存在反函数formula_8。最终输出变量formula_9用于对目标分布进行建模。
formula_9的对数似然为（参见下方推导过程）：
为了高效计算对数似然，函数formula_7应既易于求逆，也易于计算其雅可比矩阵的行列式。在实践中，这些函数通常使用深度神经网络建模，并通过训练以最小化目标分布数据样本的负对数似然。这些架构一般设计为只需神经网络的正向传播即可完成逆运算与雅可比行列式的计算，例如NICE、RealNVP、Glow等。
对数似然的推导.
考虑formula_1与formula_2，两者之间满足formula_3。通过概率密度变量变换公式，formula_1的分布为：
其中formula_18是formula_19的雅可比矩阵的行列式。
由反函数定理可以得到
使用行列式性质formula_21（其中formula_22是可逆矩阵），则有：
对上式取对数后得到对数似然：
对于任意formula_25和formula_26都能得到类似结论。最终由递归关系可以得到：
训练方法.
与训练其他一些深度学习模型类似，归一化流的目标是最小化模型的似然分布与目标分布之间的KL散度。将模型的似然分布记为formula_28，要学习的目标分布记为formula_29，则（正向）KL散度为：
上式右边第二项表示目标分布的熵，与模型参数formula_31无关，因此在优化时可以忽略，留下需要最小化的项是目标分布下的负对数似然的期望。由于此项难以直接计算，可以通过重要性采样的蒙特卡洛方法来近似。若已从目标分布formula_32中独立采样得到的数据集formula_33从的样本，则该项可近似估计为：
因此，可以将学习目标
替换为
换句话说，最小化KL相度相当于最大化模型在观测样本下的似然。
训练归一化流的伪代码如下：
变体.
平面流.
平面流（planar flow）是最早的归一化流方法。给定某个激活函数formula_41，以及具有适当维度的参数formula_42，可以定义formula_43一般而言，逆映射formula_44没有解析解。
相应的雅可比行列式为formula_45 。
为保证其处处可逆，行列式必须在整个定义域内非零。例如当formula_46、formula_47时可以满足可逆性要求。
非线性独立成分估计（NICE）.
非线性独立成分估计（nonlinear independent components estimation，简称NICE）假设formula_48是偶数维变量，并将其从中间分成两部分。此时归一化流的定义为
其中formula_50是任何带有权重formula_31的神经网络。
其逆映射formula_44为formula_53，雅可比行列式为1，即该归一化流动是体积保持（volume-preserving）的。
当formula_54时，这一映身可以视为沿formula_55方向的一种曲线剪切。
实值非体积保持（Real NVP）.
实值非体积保持（real non-volume preserving，简称Real NVP）是NICE模型的一种推广，定义为：
其逆映射是formula_57，相应的雅可比行列式为formula_58。当formula_59时，退化为NICE模型。由于Real NVP映射将向量formula_60的两部分分开处理，通常需要在每一层后添加一个置换操作formula_61。
生成流（Glow）.
生成流（generative flow，简称Glow）模型中每层由三个部分组成：
生成流通过引入可逆1x1卷积，改进了Real NVP中仅仅置换前后两部分的方式，而是对所有层的通道进行总体上的置换。
掩码自回归流（MAF）.
掩码自回归流（masked autoregresssive flow，简称MAF）基于自回归模型，其定义了一个分布在formula_67上的随机过程：
其中formula_69和formula_70是定义自回归模型的固定函数。
使用，该自回归模型可以被推广为归一化流：
令formula_72 可以重新得到自回归模型。
正向映射由于是顺序性的因而会很慢，但反向映射因为可以并列而会比较很快。
相应的雅可比矩阵是下对角矩阵，其行列式为formula_73 。
通过反转formula_74和formula_44这两个映射，可以得到逆自回归流 (inverse autoregressive flow，简称IAF)。与MAF相反，IAF的正向映射较快、反向映射较慢。
连续归一化流（CNF）.
除了通过函数组合来构建流的方法，另一种方法是将流表示为连续时间动力学，得到连续归一化流（continuous normalizing flow，简称CNF）。设formula_2为具有分布formula_77的潜变量，使用以下流函数将此潜变量映射到数据空间：
其中formula_79是任意函数，可以使用神经网络等进行建模。其反函数为：
于是可以得到formula_60的对数似然：
由于上式中的迹仅取决于雅可比矩阵formula_83的对角线，这意味着对雅可比矩阵的形式没有任何限制。这与先前的离散归一化模型不同，后者将雅可比矩阵设计为上对角或下对角形式，以便更高效地计算其行列式。
其中的迹可以使用“哈钦森技巧”（Hutchinson's trick）来估计：给定任意矩阵formula_84以及满足formula_85的任意随机向量formula_86，可以得到formula_87 。
通常，随机向量formula_88可以从正态分布formula_89 或formula_90中进行采样。
当formula_79由神经网络实现时，需要使用神经常微分方程。实际上，CNF最早是与神经常微分方程在同一篇论文中提出的。
CNF主要存在两个缺陷：一是连续流必须是同胚的，从而保持方向性和（例如，不可能通过空间连续变形将左手翻转为右手，也不可能将球面外翻或解开一个结），二是学习到的流formula_79可能会由于退化而表现不佳（有无数个可能的formula_79都能解决同一问题)。
通过增加额外的维度，CNF可以获得足够的自由度来反转方向并突破环境同痕（类似于可以在三维空间中翻转一个多边形，或在四维空间中解开一个结），从而得到“增强神经常微分方程”。
通过结合流形的和神经网络的通用近似定理，能够证明formula_67的任何同胚可以由formula_95上的神经常微分方程近似。
还可以为流formula_79引入正则化损失，例如基于最优传输理论的正则化损失：
其中formula_98是超参数。第一项惩罚模型随时间变化流场的振荡，第二项则惩罚模型随空间变化流场的振荡。这两项共同引导模型生成在空间和时间上平滑的流。
缺点.
尽管归一化流在估计高维概率密度函数方面取得了成功，但其设计仍然存在一些缺陷。首先，归一化流的潜空间并不是一个低维空间，因此基于流的模型默认情况下不支持数据压缩，需要很大的计算量。不过，仍有办法可以用它们进行图像压缩。
此外，基于流的模型在估计分布外样本（即非训练集分布中抽取的样本）的似然值时通常表现不佳。学者提出了一些假设来解释这一现象，其中包括典型集假设、模型训练中的估计问题或由于数据分布熵引起的基础性问题 。
归一化流最有趣的特性之一是其学习到的双射映射的可逆性。这一特性通过模型设计中的约束得以保证，从而确保理论上的可逆性。逆映射对确保变量变换定理的适用性、雅可比行列式的计算以及模型采样都至关重要。然而在实践中，由于数值不精确性，这种可逆性可能被破坏，进而导致逆映射爆炸。
应用.
基于流的生成模型已应用于多种场景，例如：