均值场近似,$q_\phi(z|x) = \prod_i q_\phi(z_i|x)$,通过假设在给定输入 $x$ 的情况下,潜在变量 $z_i$ 之间相互独立,大幅简化了 VAE 的训练。然而,这个假设往往限制性过强。真实后验 $p_\theta(z|x)$ 可能在潜在维度之间显示出复杂的依赖关系,而强制 $q_\phi(z|x)$ 因子化会使其无法准确地建模这些关联。这种差异,通常是“摊销差距”的一部分,可能会限制 VAE 学习丰富表示和生成高保真数据的能力。结构化变分推断提供了一种方法,通过明确地建模近似后验中的依赖关系来处理此限制。在近似后验中建模依赖关系结构化变分推断旨在通过允许潜在变量 $z_1, \dots, z_D$ 之间存在关联来丰富分布族 $q_\phi(z|x)$。并非完全因子化的形式,$q_\phi(z|x)$ 旨在捕获一些统计结构。这使得 $q_\phi(z|x)$ 可以更准确地近似真实后验 $p_\theta(z|x)$,从而可能带来更紧密的证据下界(ELBO)和更好的模型表现。核心思想是使用能够表示依赖关系的模型来定义 $q_\phi(z|x)$。常见方法包含自回归模型和归一化流,两者都允许灵活且富有表现力的后验分布。digraph G { rankdir=TB; node [shape=circle, style=filled, fillcolor="#a5d8ff", fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=9]; subgraph cluster_mean_field { label="均值场 q(z|x)"; labelloc="t"; fontsize=11; bgcolor="#e9ecef"; style="rounded"; x_mf [label="x", shape=ellipse, fillcolor="#96f2d7", fontsize=10]; z1_mf [label="z₁"]; z2_mf [label="z₂"]; z3_mf [label="z₃"]; x_mf -> z1_mf [penwidth=1.5]; x_mf -> z2_mf [penwidth=1.5]; x_mf -> z3_mf [penwidth=1.5]; {rank=same; z1_mf; z2_mf; z3_mf;} labeljust="c"; } subgraph cluster_structured { label="结构化 q(z|x) (自回归)"; labelloc="t"; fontsize=11; bgcolor="#e9ecef"; style="rounded"; x_s [label="x", shape=ellipse, fillcolor="#96f2d7", fontsize=10]; z1_s [label="z₁"]; z2_s [label="z₂"]; z3_s [label="z₃"]; x_s -> z1_s [penwidth=1.5]; z1_s -> z2_s [xlabel=" q(z₂|z₁,x)", penwidth=1.5]; z2_s -> z3_s [xlabel=" q(z₃|z₂,x)", penwidth=1.5]; edge [style=dashed, constraint=false, color="#495057", penwidth=1]; x_s -> z2_s; x_s -> z3_s; labeljust="c"; } }均值场和结构化(自回归)近似后验的比较。在均值场情况中,潜在变量 $z_i$ 在给定 $x$ 的情况下是条件独立的。在结构化自回归情况中,$z_i$ 依赖于前面的 $z_j$ (对于 $j<i$) 和 $x$。用于 $q_\phi(z|x)$ 的自回归模型引入结构的一种有效方法是以自回归方式建模 $q_\phi(z|x)$。这意味着潜在向量 $z = (z_1, \dots, z_D)$ 上的分布被分解为条件分布的乘积: $$ q_\phi(z|x) = q_\phi(z_1|x) \prod_{j=2}^D q_\phi(z_j | z_{<j}, x) $$ 此处,$z_{<j}$ 表示 $(z_1, \dots, z_{j-1})$。每个条件分布 $q_\phi(z_j | z_{<j}, x)$ 可以由一个神经网络参数化,该网络以 $x$ 和先前采样的潜在变量 $z_1, \dots, z_{j-1}$ 作为输入。例如,如果每个 $q_\phi(z_j | z_{<j}, x)$ 是高斯分布,它的均值 $\mu_j$ 和标准差 $\sigma_j$ 将是 $x$ 和 $z_{<j}$ 的函数: $$ \mu_j, \log \sigma_j = f_j(x, z_{<j}; \phi_j) $$ 这种结构允许 $q_\phi(z|x)$ 捕获任意依赖关系,只要条件神经网络 $f_j$ 具有足够的表达能力。从这样的模型中采样是顺序的:首先采样 $z_1 \sim q_\phi(z_1|x)$,然后 $z_2 \sim q_\phi(z_2|z_1, x)$,依此类推。虽然计算密度 $q_\phi(z|x)$ 很直接($D$ 个项的乘积),但如果 $D$ 很大,顺序采样可能会很慢。诸如逆自回归流(IAF)等技术(您可能在第 3 章中回顾过),提供了一种实现此类富有表现力的自回归模型的方法,使得采样能够并行化,从而大幅加快此过程。在 IAF 中,$z$ 通过使用自回归变换,从噪声向量 $\epsilon$(其中 $\epsilon_j$ 相互独立)变换而获得:$z_j = g_j(\epsilon_j; h_j(x, \epsilon_{<j}))$。使用归一化流实现富有表现力的后验归一化流,也在第 3 章中讨论过(第 3.5 节“用于灵活先验和后验的归一化流”),提供了另一种通用且强大的框架,用于构建复杂的后验分布。归一化流通过一系列可逆变换 $f_1, \dots, f_K$ 变换一个简单的基础分布 $q_0(u)$(例如,一个标准多元高斯分布): $$ z = f_K \circ \dots \circ f_1(u), \quad u \sim q_0(u) $$ $z$ 的密度可以使用变量变换公式计算: $$ q_\phi(z|x) = q_0(u) \left| \det \left( \frac{\partial (f_K \circ \dots \circ f_1)}{\partial u} \right) \right|^{-1} $$ 这些变换 $f_k$ 的参数(以及潜在的基础分布 $q_0$)作为 $\phi$ 的一部分进行学习,并且通常以 $x$ 为条件。这使得 $q_\phi(z|x)$ 能够学习高度灵活的分布。重点是,变换 $f_k$ 的设计使得其雅可比矩阵(以及行列式)计算上是可处理的。例子包含平面流、径向流以及更复杂的流架构,如 RealNVP、MAF 和 IAF。为 $q_\phi(z|x)$ 使用归一化流可以显著提高推断网络的表达能力,使其能更好地匹配真实后验,从而收紧 ELBO。影响与权衡采用结构化变分推断有几个重要影响:ELBO 和模型质量的改进:更灵活的 $q_\phi(z|x)$ 可以为真实对数似然 $\log p_\theta(x)$ 提供更紧密的下界。这通常意味着更好的生成表现,例如更清晰的生成样本和测试数据上更高的似然分数。潜在空间中学习到的表示也可能变得更有意义,因为推断网络更好地捕获了底层数据流形。计算复杂度的增加:主要的权衡是计算成本。训练:参数化和优化结构化的 $q_\phi(z|x)$ 涉及更多参数,并且通常每次迭代的计算更复杂(例如,计算流的雅可比行列式或自回归模型的顺序条件)。推断:从某些结构化后验(如标准自回归模型)中采样,如果无法并行化,可能会更慢。模型设计选择:您现在在 $q_\phi(z|x)$ 的架构方面有更多选择。对于自回归模型,这包含潜在变量的排序以及条件网络的架构。对于归一化流,它涉及选择流层的类型和数量。这些选择会影响表现和计算负载。KL 散度项:ELBO 中的 KL 散度 $D_{KL}(q_\phi(z|x) || p(z))$ 可能会变得更具挑战性。如果 $p(z)$ 是标准高斯分布,并且 $q_\phi(z|x)$ 是复杂分布(例如,来自归一化流),KL 散度可能不再有解析解。在这种情况下,通常需要进行估计,例如,通过采样 $z \sim q_\phi(z|x)$ 并计算 $\mathbb{E}{q\phi(z|x)}[\log q_\phi(z|x) - \log p(z)]$。何时考虑结构化推断结构化变分推断在以下情况中特别有益:您怀疑您的数据中真实潜在变异因子之间存在强关联或依赖关系,而均值场 VAE 无法捕获这些关系。标准 VAE 产生不理想的结果,例如过度平滑或模糊的生成样本,或低似然,并且您假设推断网络是瓶颈。应用要求高准确度的后验推断,例如在潜在变量本身是直接关注对象的场景中。虽然引入结构会增加复杂性,但模型表达能力和表现方面的潜在提升通常能弥补额外开销,特别是对于具有挑战性的数据集或目标是先进结果时。此处讨论的技术,例如用于 $q_\phi(z|x)$ 的自回归模型和归一化流,对于构建更复杂、更强大的 VAE 来说是根本。随着我们的前进,您会看到这些改进的推断机制如何与其他高级 VAE 组件结合。