归一化流(Normalizing Flows)的概率分布变换原理与可逆神经网络结构
题目描述
归一化流(Normalizing Flows)是一种基于可逆变换的生成模型,其核心目标是通过一系列可逆且易于计算的映射,将简单先验分布(如高斯分布)转换为复杂目标分布。该技术需解决两个关键问题:1)如何设计可逆且雅可比行列式易计算的双射函数;2)如何通过变量变换公式实现概率密度的精确转换。本题要求详细解释归一化流的概率分布变换原理、链式变换的推导过程,以及耦合层(Coupling Layer)等可逆神经网络结构的具体实现。
解题过程
- 基础变量变换公式
若存在随机变量\(z\)(先验分布)和\(x\)(目标分布),且两者通过可逆映射\(x = f(z)\)关联,则概率密度变换公式为:
\[ p_x(x) = p_z(z) \left| \det \frac{\partial f}{\partial z} \right|^{-1} \]
其中\(\det \frac{\partial f}{\partial z}\)是函数\(f\)的雅可比行列式。该公式要求\(f\)必须是双射且雅可比行列式易计算,否则密度转换将不可行。
- 链式变换的推导
归一化流通过多次可逆变换构造复杂映射:
\[ x = f_K \circ f_{K-1} \circ \cdots \circ f_1(z_0) \]
其中每步变换\(z_k = f_k(z_{k-1})\)均可逆。根据链式法则,最终分布的对数密度为:
\[ \log p(x) = \log p(z_0) - \sum_{k=1}^K \log \left| \det \frac{\partial f_k}{\partial z_{k-1}} \right| \]
该推导通过对每一步的雅可比行列式取对数并求和,将复杂计算分解为可处理的局部计算。
- 可逆结构设计:耦合层
为满足可逆性和雅可比行列式高效计算,RealNVP等模型采用耦合层:- 分割操作:将输入向量\(z\)拆分为两部分\(z = [z_A, z_B]\)。
- 变换设计:对\(z_A\)直接复制,对\(z_B\)施加仿射变换:
\[ x_A = z_A, \quad x_B = z_B \odot \exp(s(z_A)) + t(z_A) \]
其中$ s(\cdot) $和$ t(\cdot) $为由神经网络计算的缩放和平移函数。
- 可逆性证明:逆变换可通过以下公式实现:
\[ z_A = x_A, \quad z_B = (x_B - t(x_A)) \odot \exp(-s(x_A)) \]
- 雅可比行列式计算:因变换是分块三角矩阵,其行列式为\(\exp(\sum_j s(z_A)_j)\),仅需对缩放因子求和,计算复杂度为\(O(n)\)。
- 多尺度架构与训练
为提升表达能力,常引入多尺度框架:- 通过交替耦合层和重塑操作(如棋盘掩码或通道掩码)逐步变换分布。
- 训练时最小化负对数似然损失:
\[ \mathcal{L} = -\mathbb{E}_{x \sim p_{\text{data}}} \log p(x) \]
其中\(\log p(x)\)由链式变换公式计算,通过梯度下降优化耦合层中的神经网络参数。
总结
归一化流通过可逆变换链将概率密度转换分解为局部可计算步骤,耦合层等结构确保了可逆性与高效雅可比行列式计算。该方法的优势在于能精确计算似然值,但需注意变换函数的表达能力与计算效率的平衡。