Flow Matching

Normalising Flows

\(\phi: \mathbb{R}^d \to \mathbb{R}^d\)\(\mathbb{R}^d\) 上的连续可微函数,其具有逆函数 \(\phi^{-1}: \mathbb{R}^d \to \mathbb{R}^d\)。令 \(q_0(x)\)\(\mathbb{R}^d\) 上的密度函数,令 \(p_1(\cdot)\) 为如下采样过程诱导的密度函数:

\[\begin{aligned} & x \sim q_0 \\ & y = \phi(x) \end{aligned} \]

人话:\(q_0\) 是基础分布,\(p_1\) 是由函数 \(\phi\) 转换得到的分布。\(x\)\(q_0\) 中采样的样本,\(y\)\(p_1\) 中采样的样本。

可以计算得到 \(p_1\) 的密度函数:

\[\begin{aligned} p_{1}(y) & = q_{0}\left(\phi^{-1}(y)\right)\left|\operatorname{det}\left[\frac{\partial \phi^{-1}}{\partial y}(y)\right]\right| \\ & = \frac{q_{0}(x)}{\left|\operatorname{det}\left[\frac{\partial \phi}{\partial x}(x)\right]\right|} \quad \text { with } x=\phi^{-1}(y)\end{aligned} \]

通过转换函数 \(\phi\) 将基础分布 \(q_0\) 转换为另一个分布 \(p_1\) 是有趣的,但这种转换在生成建模中的应用有限。因为生成建模的目标是仅使用可用样本来近似一个分布。因此,需要变换 \(\phi\) 将来自简单分布(如 \(\mathcal{N}(\mathbf{0}, \mathbf{I})\))的样本映射到大致的数据分布。简单的线性变换是不够的,因为数据分布具有高度非高斯特性。因此我们使用神经网络作为变换函数 \(\phi_\theta\)。现在关键任务是优化神经网络的参数 \(\theta\)

Learning Flow Parameters by Maximum Likelihood

我们使用 \(p_{1} \triangleq\left[\phi_{\theta}\right]_{\#} p_{0}\) 表示流 \(\phi_\theta\) 的参数密度函数。

学习参数 \(\theta\in\Theta\) 的一个自然的优化目标是考虑最大化模型的如下数据概率:

\[\operatorname{argmax}_{\theta} \mathbb{E}_{x \sim \mathcal{D}}\left[\log p_{1}(x)\right] \]

\(\phi_\theta\) 参数化为深度神经网络会导致几个限制:

  • 如何强制可逆性?
  • 如何计算逆函数?
  • 如何高效计算雅可比矩阵?

因此,设计流 \(\phi\) 需要在流的表达能力(以及模型的表达能力)与上述考虑之间进行权衡,以便流能够高效地训练。

Residual FLow

特别是,计算雅可比行列式通常计算昂贵(需要在流中进行 \(d\) 次自动微分传递),因此我们在 \(\phi\) 中施加结构。

Full-rank residual

image

To be continued

参考:An introduction to Flow Matching | Cambridge MLG Blog

posted @ 2025-08-17 17:07  Undefined443  阅读(8)  评论(0)    收藏  举报