归一化流(Normalizing Flows)中的三角映射(Triangular Map)原理与可逆变换机制
归一化流(Normalizing Flows)是一种生成模型,其核心思想是通过一系列可逆变换将简单分布(如高斯分布)逐步映射到复杂数据分布。三角映射是实现可逆变换的关键工具之一,它通过特殊的结构设计保证变换的可逆性和高效雅可比行列式计算。以下将逐步讲解三角映射的原理与实现机制。
1. 归一化流的基本思想
归一化流的目标是建立一个可逆映射 \(f: \mathbb{R}^d \to \mathbb{R}^d\),将随机变量 \(\mathbf{z} \sim p_Z(\mathbf{z})\) 转换为数据变量 \(\mathbf{x} \sim p_X(\mathbf{x})\)。根据概率论中的变量变换公式:
\[p_X(\mathbf{x}) = p_Z(\mathbf{z}) \left| \det \frac{\partial f^{-1}}{\partial \mathbf{x}} \right|, \]
其中 \(\mathbf{z} = f^{-1}(\mathbf{x})\)。为了高效计算概率密度,需要满足两个条件:
- 可逆性:\(f\) 必须可逆,且 \(f^{-1}\) 容易计算。
- 雅可比行列式易计算:\(\det \frac{\partial f}{\partial \mathbf{z}}\) 需高效计算(例如复杂度为 \(O(d)\))。
三角映射通过其特殊的结构同时满足这两点。
2. 三角映射的定义与结构
三角映射是一种分量的变换函数,其第 \(i\) 个输出分量仅依赖于前 \(i\) 个输入分量。具体分为两类:
- 下三角映射:\(x_i = f_i(z_1, z_2, \dots, z_i)\)。
- 上三角映射:\(x_i = f_i(z_i, z_{i+1}, \dots, z_d)\)。
以下三角映射为例,其函数形式为:
\[\begin{aligned} x_1 &= f_1(z_1), \\ x_2 &= f_2(z_1, z_2), \\ &\vdots \\ x_d &= f_d(z_1, z_2, \dots, z_d). \end{aligned} \]
这种结构使得雅可比矩阵 \(J = \frac{\partial \mathbf{x}}{\partial \mathbf{z}}\) 为下三角矩阵,其行列式仅为对角线元素的乘积:
\[\det J = \prod_{i=1}^d \frac{\partial f_i}{\partial z_i}. \]
计算复杂度从 \(O(d^3)\) 降至 \(O(d)\)。
3. 可逆性的保证
三角映射的可逆性通过以下设计实现:
- 分量逐层求解:逆变换 \(\mathbf{z} = f^{-1}(\mathbf{x})\) 可通过顺序求解每个分量得到:
\[\begin{aligned} z_1 &= f_1^{-1}(x_1), \\ z_2 &= f_2^{-1}(x_1, x_2; z_1), \\ &\vdots \\ z_d &= f_d^{-1}(x_1, \dots, x_d; z_1, \dots, z_{d-1}). \end{aligned} \]
- 单调性约束:每个函数 \(f_i\) 需关于 \(z_i\) 严格单调(例如使用单调神经网络或可逆激活函数),确保逆函数存在。
4. 具体实现方法
4.1 仿射三角映射
以RealNVP中的仿射耦合层为例,它将输入分为两部分 \(\mathbf{z} = [\mathbf{z}_A, \mathbf{z}_B]\),并仅对 \(\mathbf{z}_B\) 进行变换:
\[\begin{aligned} \mathbf{x}_A &= \mathbf{z}_A, \\ \mathbf{x}_B &= \mathbf{z}_B \odot \exp(s(\mathbf{z}_A)) + t(\mathbf{z}_A), \end{aligned} \]
其中 \(s(\cdot)\) 和 \(t(\cdot)\) 是神经网络。这种变换是下三角映射的特例,其雅可比矩阵的对角线元素为 \(1\)(对应 \(\mathbf{z}_A\))和 \(\exp(s(\mathbf{z}_A))\)(对应 \(\mathbf{z}_B\))。
4.2 神经自回归流(NAF)
NAF使用神经网络建模每个 \(f_i\),并通过掩码强制其仅依赖前 \(i-1\) 个输入(如MADE网络)。例如:
\[x_i = \sigma^{-1}\left( \text{NN}_i(z_1, \dots, z_{i-1}) \right) \cdot z_i + \mu_i(z_1, \dots, z_{i-1}), \]
其中 \(\sigma^{-1}\) 确保单调性。
5. 三角映射的优势与局限性
优势:
- 高效密度计算:雅可比行列式仅需计算对角线元素。
- 灵活的表达能力:可通过堆叠多个三角映射逼近复杂分布。
局限性:
- 顺序依赖:变换需按分量顺序计算,无法并行化。
- 表达能力受限:若依赖关系过于简单,可能需要深层网络补偿。
6. 总结
三角映射通过限制每个输出分量仅依赖部分输入分量,实现了可逆变换与高效雅可比计算。它是归一化流中RealNVP、MAF等模型的基础,通过堆叠此类映射可逐步将简单分布转换为数据分布。理解三角映射有助于掌握归一化流的核心设计思想,并为解决概率密度估计、生成建模等问题提供工具。