标准自动编码器及其正则化形式(如去噪或稀疏自动编码器)的主要目标是高效的数据压缩和重建。编码器网络$E_\phi$将输入$x$映射到确定性潜在编码$z = E_\phi(x)$,解码器网络$D_\theta$尝试将原始输入重建为$\hat{x} = D_\theta(z)$。训练过程会最小化重建损失,以确保$\hat{x}$与$x$接近。尽管这种确定性设置在降维和特征学习方面表现出色,但当我们的目标转向生成与训练分布相似的新数据样本时,它会带来显著挑战。例如,我们如何生成一张新颖的图像?最直接的想法是:在数据集上训练一个标准自动编码器(例如,人脸图像)。从潜在空间$\mathcal{Z}$中选择一个点$z$。将这个$z$通过训练好的解码器$D_\theta$以获取新的样本$\hat{x} = D_\theta(z)$。问题在于第2步:我们如何选择一个“好”的$z$?我们能简单地随机选择一个向量$z$并期待得到一个真实的结果吗?通常情况下,答案是否定的。标准自动编码器仅仅为了重建而优化,其产生的潜在空间往往不利于生成。主要原因如下:缺乏连续性和平滑性编码器$E_\phi$学习将训练输入$x_i$映射到潜在空间中的特定点$z_i$。解码器$D_\theta$学习将这些特定的$z_i$映射回$\hat{x}_i \approx x_i$。然而,自动编码器的目标函数并未明确要求潜在空间必须是连续的或平滑的。这意味着:插值问题:如果您取两个潜在编码$z_1$和$z_2$,它们分别对应有效的输入$x_1$和$x_2$,那么在它们之间进行插值(例如,$z_{interp} = 0.5 z_1 + 0.5 z_2$)并不能保证解码时会产生有意义或真实的结果。解码器可能只在它训练时看到的精确点(或非常接近这些点的区域)上表现良好。任意采样:从潜在空间中某个假设的范围内随机采样一个点$z_{rand}$,很可能会落入一个与训练集学到的任何合理数据流形结构不对应的区域。将$z_{rand}$通过解码器$D_\theta$可能会导致输出$\hat{x}_{rand}$与原始数据完全不同(例如,模糊、无意义或充满伪影)。潜在空间中的“空洞”和“间隙”潜在空间中编码点${z_i = E_\phi(x_i)}$的分布可能相当不规则。它可能由不连接的簇组成,或者遵循复杂、稀疏的流形结构。在对应有效数据表示的区域之间,可能会存在大的“空洞”或间隙。{"data": [{"x": [1, 1.2, 0.8, 1.1, 0.9, -1, -1.2, -0.8, -1.1, -0.9], "y": [1, 0.8, 1.2, 0.9, 1.1, -1, -0.8, -1.2, -0.9, -1.1], "mode": "markers", "type": "scatter", "name": "编码点 (类别 A)", "marker": {"color": "#228be6", "size": 8}}, {"x": [3, 3.2, 2.8, 3.1, 2.9, 5, 5.2, 4.8, 5.1, 4.9], "y": [-1, -0.8, -1.2, -0.9, -1.1, 1, 0.8, 1.2, 0.9, 1.1], "mode": "markers", "type": "scatter", "name": "编码点 (类别 B)", "marker": {"color": "#fab005", "size": 8}}, {"x": [0, 2.5, 4], "y": [0, 0, 0], "mode": "markers", "type": "scatter", "name": "采样点", "marker": {"color": "#fa5252", "size": 10, "symbol": "x"}}], "layout": {"title": "标准自动编码器的潜在空间", "xaxis": {"title": "潜在维度 1 (z1)", "range": [-2, 6]}, "yaxis": {"title": "潜在维度 2 (z2)", "range": [-2, 2]}, "showlegend": true, "width": 600, "height": 400, "legend": {"yanchor": "top", "y": 0.99, "xanchor": "left", "x": 0.01}}}标准自动编码器的潜在空间通常包含与训练数据对应的簇,但这些簇之间的区域(如红色叉号)可能无法解码为有意义的输出。如果我们随机采样一个$z$,使其落入这些间隙之一(如上图中的红色'x'标记),解码器由于从未在该区域的输入上进行训练,因此没有动力产生连贯的输出。缺乏明确的概率结构标准自动编码器缺乏潜在空间的概率设定。编码器为每个输入$x$提供一个单一的点估计$z$。没有机制来建模可能潜在编码的分布$p(z)$或条件分布$p(z|x)$。如果没有一个明确定义的分布来采样,生成新数据就会变成一个随机过程。除了从训练数据本身编码的位置之外,我们不知道有效编码在潜在空间的何处。稀疏性或去噪等正则化技术轻微修改了潜在空间属性,但并未根本解决这种生成局限。稀疏自动编码器鼓励大多数潜在单元处于非活跃状态,而去噪自动编码器学习将受损输入映射到更清晰的重建,可能会轻微平滑表示,但两者都没有施加可靠采样和生成所需的概率结构。为了解决这些局限并构建有效的生成模型,我们需要一种不同的方法。我们需要一种方法来:确保潜在空间结构化且足够连续,以便进行有意义的插值和采样。在潜在空间上定义一个可以采样的概率分布,以生成新数据。这正是变分自动编码器(VAEs)的设计目的。它们为编码器和解码器引入了概率视角,明确地将潜在变量建模为分布,并优化一个目标函数,该函数既鼓励良好的重建,又促进形成适合生成的结构化潜在空间。我们将在后续章节中审视这个概率框架。