追求解耦表示是构建更易理解和可控的生成模型的重点。主要目标是学习一个潜在空间 $z$,该空间内的每个维度 $z_i$ 与数据 $x$ 中独立、可解释的变动因素 $y_j$ 相对应。例如,在一个人脸数据集中,一个潜在维度可能只控制姿态,另一个控制光照,还有一个控制表情,同时其他因素保持不变。然而,实现这一理想充满了挑战,首先是如何精确地定义“解耦”。什么是解耦?解耦表示的核心是,如果我们识别出数据的真实、潜在生成因素,例如 $y = (y_1, y_2, ..., y_K)$,那么我们学习到的表示 $z = (z_1, z_2, ..., z_M)$ 中的每个潜在变量 $z_i$ 理想情况下应与单个 $y_j$ 相关联。改变 $z_i$ 只应影响生成输出中对应的 $y_j$,而使其他因素 $y_{k \neq j}$ 不变。设想一个3D形状数据集,其生成因素包括形状类型(立方体、球体、圆柱体)、颜色(红色、绿色、蓝色)和大小(小、中、大)。一个完全解耦的VAE可能会学习到一个潜在空间,其中:$z_1$ 控制形状类型:遍历 $z_1$ 会使生成对象从立方体变为球体,再变为圆柱体,同时颜色和大小保持不变。$z_2$ 控制颜色:遍历 $z_2$ 会改变对象的颜色,而不改变其形状或大小。$z_3$ 控制大小:遍历 $z_3$ 会缩放对象,而不影响其形状或颜色。这种一对一的映射提供了几个优点:可理解性:我们可以理解模型内部表示的每个部分学习到了什么。可控性:我们可以通过改变单个潜在变量来操控生成数据的特定属性。泛化能力:具有解耦表示的模型可能在未曾见过的因素组合上表现出更好的泛化能力。公平性:敏感属性可以被隔离和控制,有助于减轻偏见。然而,当试图将其形式化时,这种直观的理解很快会遇到复杂性。digraph G { rankdir=LR; fontname="Arial"; node [shape=box, style=rounded, fontname="Arial", fontsize=10, margin="0.15,0.08"]; edge [fontname="Arial", fontsize=9]; subgraph cluster_factors { label = "真实生成因素(未知)"; labeljust="l"; style="filled"; color="#e9ecef"; y1 [label="姿态", shape=ellipse, color="#495057", style=filled, fillcolor="#f8f9fa"]; y2 [label="颜色", shape=ellipse, color="#495057", style=filled, fillcolor="#f8f9fa"]; y3 [label="身份", shape=ellipse, color="#495057", style=filled, fillcolor="#f8f9fa"]; } subgraph cluster_entangled { label = "纠缠潜在空间 z'"; labeljust="l"; style="filled"; color="#ffc9c9"; z_prime1 [label="z'_1", color="#fa5252"]; z_prime2 [label="z'_2", color="#fa5252"]; } subgraph cluster_disentangled { label = "解耦潜在空间 z"; labeljust="l"; style="filled"; color="#b2f2bb"; z1 [label="z_1", color="#37b24d"]; z2 [label="z_2", color="#37b24d"]; z3 [label="z_3", color="#37b24d"]; } // 纠缠关系的边 y1 -> z_prime1 [color="#d6336c", arrowhead=vee, penwidth=1.5]; y1 -> z_prime2 [color="#d6336c", style=dashed, arrowhead=vee, penwidth=1]; y2 -> z_prime1 [color="#7048e8", style=dashed, arrowhead=vee, penwidth=1]; y2 -> z_prime2 [color="#7048e8", arrowhead=vee, penwidth=1.5]; y3 -> z_prime1 [color="#1c7ed6", arrowhead=vee, penwidth=1.5]; y3 -> z_prime2 [color="#1c7ed6", style=dashed, arrowhead=vee, penwidth=1]; // 解耦关系的边 y1 -> z1 [color="#f76707", arrowhead=vee, penwidth=1.5]; y2 -> z2 [color="#0ca678", arrowhead=vee, penwidth=1.5]; y3 -> z3 [color="#4263eb", arrowhead=vee, penwidth=1.5]; {rank=same; y1; y2; y3;} {rank=same; z_prime1; z_prime2;} {rank=same; z1; z2; z3;} }数据中真实变化的生成因素(左)可以以纠缠方式(中)表示,这时潜在维度捕获多个因素的混合;也可以以解耦方式(右)表示,这时每个潜在维度理想情况下隔离单个因素。解耦的公式化:一个棘手的任务尽管它具有直观的吸引力,但一个单一的、普遍接受的解耦数学公式仍然难以获得。核心挑战源于几个固有的不明确之处:未知的真实因素:在大多数情况下,真实的生成因素 $y_j$ 是未知的。我们通常只拥有观测到的数据 $x$。如果我们不知道这些因素是什么,我们如何声称已经将它们解耦?大多数研究依赖于因素已知的人工数据集或人类判断来进行可理解性评估。对应关系的性质:“对应”意味着什么?轴对齐:是否要求每个 $z_i$ 与一个 $y_j$ 完美对齐?如果真实因素是由多个 $z_i$ 的线性组合(旋转)表示呢?当前大多数定义为了简单起见,隐式地假设了轴对齐,这意味着在保持其他 $z_k$ ($k \neq i$) 不变的情况下改变 $z_i$ 只应改变一个 $y_j$。函数形式:如果 $z_i$ 捕获 $y_j$,那么 $z_i = y_j$ 是必需的吗,还是对于某个简单、可逆(通常是单调的)函数 $f$ 来说,$z_i = f(y_j)$ 就足够了?后者通常被认为是可接受的。统计独立性:一个常见的要求是,聚合后验 $q(z) = \int q(z|x)p(x)dx$(或有时是先验 $p(z)$)中的潜在变量 $z_i$ 应该是统计独立的。如果 $p(z)$ 是一个各向同性高斯分布 $\mathcal{N}(0, I)$,这会得到鼓励。然而,$z$ 中的独立性并不能自动保证这些独立的 $z_i$ 映射到语义上不同的因素 $y_j$。信息含量:信息量:每个应该表示一个因素的 $z_i$ 实际上应该编码关于该因素的重要信息。一个常数或嘈杂的潜在维度是没有用的。完备性:学习到的 $z_i$ 是否捕获了数据中 所有 相关的变动因素?这是一个严格的要求,通常无法完全满足。紧凑性:表示应该简洁,理想情况下使用最少数量的潜在维度。因素的粒度:“单一”因素的构成通常是主观的。对于人脸来说,“发型”是一个单一因素,还是“头发长度”、“发色”和“头发质地”应该是单独的因素?解耦的定义可能取决于所选择的抽象级别。早期定义解耦的尝试通常集中于这样的想法:干预一个潜在变量 $z_i$(即,改变其值而保持其他变量不变)应只导致一个生成因素 $y_j$ 的改变。相反,如果一个真实因素 $y_j$ 改变,它应只影响单个 $z_i$。这是一个有吸引力的想法,但在没有机制控制真实因素或直接观测它们的情况下,很难进行测试。实现解耦的固有难题除了定义上的挑战,学习解耦表示,特别是在纯无监督方式下,面临着重要的理论和实践障碍。无监督解耦的“没有免费午餐”: Locatello 等人(2019)的里程碑式论文《挑战无监督解耦表示学习中的常见假设》提供了强有力的理论和实验证据,表明如果没有归纳偏置,无监督解耦从根本上是不可能的。这意味着,如果不对结构(数据分布)或学习过程(模型架构和目标函数)进行具体假设,任何学到的潜在表示都可以与另一个同样好的表示(就模型目标而言,如ELBO)任意纠缠,而该表示不共享任何解耦轴。归纳偏置:这些是模型从有限数据中泛化所做的假设。对于VAE来说,这包括:选择因子化先验 $p(z)$(例如,$\mathcal{N}(0,I)$)。编码器 $q_\phi(z|x)$ 和解码器 $p_\theta(x|z)$ 的结构。目标函数中的正则化项(例如,KL散度项,或像 $\beta$-VAE 中的修改)。数据本身的性质(例如,如果因素在数据生成过程中是固有独立的)。这一结果意味着,追求一种适用于任何数据集的“开箱即用”的无监督解耦算法很可能是徒劳的。相反,成功取决于仔细选择与数据属性和所需因素相符的适当归纳偏置。对数据的依赖性: 数据集的统计特性对解耦能力有很大影响。如果真实潜在因素在观测数据中高度相关(例如,如果小物体总是蓝色,大物体总是红色),那么任何模型在没有额外信息或偏置的情况下,都极难将它们分开。模型可能会学习到一个单独的潜在变量,共同表示“大小和颜色”。模型架构和容量: 编码器和解码器的神经网络架构选择、潜在空间 $M$ 的维度以及模型的整体容量都扮演着一定角色。潜在空间太小可能会强制产生纠缠,而太大可能会导致非信息性或冗余维度。优化与正则化: VAE目标(ELBO)包含一个重构项和一个KL散度项,后者将近似后验 $q_\phi(z|x)$ 正则化向先验 $p(z)$。虽然因子化先验 $p(z) = \mathcal{N}(0,I)$ 鼓励潜在维度之间的独立性,但其对语义解耦的精确影响是复杂的,并且不总是直截了当。简单优化标准ELBO通常不足以实现强解耦。可识别性: 即使模型成功地学习将潜在因素分离到不同的潜在维度中,在没有进一步约束或无法获得真实因素标签的情况下,这些维度通常在置换和简单可逆变换下是不可识别的。例如,$z_1$ 可能编码颜色,$z_2$ 编码形状,反之亦然。或者 $z_1$ 可能编码颜色,但其尺度可能是任意的。这使得比较不同模型或运行之间的解耦表示具有挑战性。这些难题凸显了解耦表示学习为何是一个活跃的研究领域。它不仅仅是关于构建一个VAE;它更是关于如何灌输正确的偏置并有效评估结果。本章随后的部分将考察旨在促进解耦的特定VAE变体,例如 $\beta$-VAE、FactorVAE 和 TCVAE,以及为量化已实现的解耦程度而开发的度量,使我们从直观定义转向更具体但仍在演变中的实践。