OT-Flow

Huang Ruizhi
November 2, 2025

概述

OT-Flow 是用最优传输(optimal transport, OT)理论求解归一化流(normalizing flow)的一种方法.

归一化流

什么是归一化流

归一化流是一个可逆映射 $f:\mathbb{R}^d→\mathbb{R}^d$, 可以将一个概率分布变换为标准正态分布. 核心是满足公式

$$\begin{equation} \log ρ_0(\mathbf{x}) = \log ρ_1(f(\mathbf{x})) + \log |\det J_f(\mathbf{x})|. \end{equation}$$

求归一化流的方式

1. 组合可逆层形成神经网络并训练其权重

这个看上去求出来的就是所谓的“离散归一化流”, 但是我没有很清楚.

2. 通过神经常微分方程 (Neural ODE) 求解

论文中说在连续归一化流(CNF)的情况下可以使用 Neural ODE 来求解. 但是我的疑惑在于是不是对于所有的概率分布都能用 Neural ODE 来求解? 还是说只能求解某一类概率分布? (因为感觉在归一化流在求解出来之前不太好给它分类说是不是 CNF)

Neural ODE 如下:

$$\begin{equation} \partial_t \begin{bmatrix} \mathbf{z}(\mathbf{x},t) \\[4pt] \ell(\mathbf{x},t) \end{bmatrix} = \begin{bmatrix} \mathbf{v}(\mathbf{z}(\mathbf{x},t), t; \boldsymbol{\theta}) \\[4pt] \operatorname{tr}\!\big(\nabla \mathbf{v}(\mathbf{z}(\mathbf{x},t), t; \boldsymbol{\theta})\big) \end{bmatrix}, \qquad \begin{bmatrix} \mathbf{z}(\mathbf{x},0) \\[4pt] \ell(\mathbf{x},0) \end{bmatrix} = \begin{bmatrix} \mathbf{x} \\[4pt] 0 \end{bmatrix}. \end{equation}$$

这个玩意有两个变量但是却是 ODE 应该是因为我们是可以对于每一个 $x$ 单独去求解.

这里多的一个 $l(\mathbf{x},t)$ 分量我感觉很奇特, 因为按照我一开始的想法, 有了 $z$ 按道理说就知道了流长什么样子, 求 $z$ 的时候也没用到 $l$, 说明这个 $l$ 在理论上是多余的.

往后看我知道这个 $l$ 是为了帮助我们用模型去训练参数 θ ($l$ 在训练目标中出现).

问题: z 是怎么被求出来的?

我目前没想通的一个点: 为什么要训练出来一个特定的 $f$, 解出来的随便的一个 $f$ 不行吗?

背景知识补充: 对数似然与负对数似然

在机器学习, 特别是密度估计和生成模型中, 对数似然 (log-likelihood) 和负对数似然 (negative log-likelihood, NLL) 是衡量模型好坏的核心指标.

  1. 似然
    设模型由参数 $θ$ 描述, 给出一个概率分布 $p_M(x;θ)$. 似然函数定义为在给定参数 $θ$ 下, 观测数据 $D={x_1,x_2,...,x_n}$ 出现的概率: 假设数据点独立同分布, 则似然函数为 $$\begin{equation} L(θ;D) = \prod_{i=1}^n p_M(x_i;θ). \end{equation}$$

  2. 对数似然
    似然的缺点是数值上可能非常小, 容易导致浮点数下溢. 为了克服这个问题, 通常使用对数似然函数: $$\begin{equation} \log L(θ;D) = \sum_{i=1}^n \log p_M(x_i;θ). \end{equation}$$ 对数似然将乘积转化为求和, 计算更加稳定.

  3. 负对数似然
    在机器学习中, 大家习惯于最小化损失函数, 于是通常使用负对数似然: $$\begin{equation} \text{NLL}(θ;D) = -\log L(θ;D) = -\sum_{i=1}^n \log p_M(x_i;θ). \end{equation}$$

  4. 期望负对数似然
    当数据量非常大或者从一个真实数据分布 $p_0(x)$ 中采样数据时, 常考虑期望的负对数似然: 从真实分布 $p_0(x)$ 中随机抽取一个数据点 $x$ 时, 它在模型下的负对数概率的平均值是多少, 即 $$\begin{equation} \mathbb{E}_{x∼p_0}[-\log p_M(x;θ)] = -\int p_0(x) \log p_M(x;θ) \, dx. \end{equation}$$

背景知识补充: KL (Kullback-Leibler) 散度

KL 散度 $D_{KL}(p_0 || p_M)$ 衡量两个概率分布 $p_0$ 和 $p_M$ 之间的差异. 它定义为 $$\begin{equation} D_{KL}(p_0 || p_M) = \mathbb{E}_{x∼p_0}\left[\log \frac{p_0(x)}{p_M(x;θ)}\right] = \int p_0(x) \log \frac{p_0(x)}{p_M(x;θ)} \, dx. \end{equation}$$