type
Post
status
Published
date
Jun 11, 2026
slug
summary
tags
category
category (1)
icon
password
comment

背景——数据压缩

数据压缩是训练网络时的一个关键阶段。其理念是对数据进行压缩,使得相同的信息量能用更少的比特来表示。这也有助于解决维度灾难问题。包含大量属性的数据集在训练时更具挑战性,因为它容易导致模型过拟合。因此,在数据集用于训练之前,需要应用降维技术。
这就是自编码器(AE)和变分自编码器(VAE)发挥作用的地方。它们是用于压缩输入数据的端到端网络。自编码器和变分自编码器都用于将数据从高维空间转换为低维空间,本质上实现了数据压缩。

自编码器 — AE

什么是自编码器?

自编码器用于学习针对给定网络配置下未标注数据的高效嵌入表示。自编码器由编码器和解码器两部分组成。编码器将数据从高维空间压缩到低维空间(也称为潜在空间),而解码器则执行相反操作,即将潜在空间数据还原回高维空间。解码器通过强制输出与输入相同的数据,确保潜在空间能够捕获数据集空间中的大部分信息。
下方的框图展示了其结构
notion image
在训练过程中,输入数据 x 被送入编码器函数 e_theta(x)。该数据经由一系列以变量 theta 为参数的层处理后,其维度逐步降低,最终形成压缩后的潜在向量 z。其中层数、层类型、层大小以及潜在空间维度均为用户可控参数。当潜在空间维度小于输入空间维度时即实现压缩,本质上是消除了冗余特征。
解码器 d_phi(z) 通常(但不一定)由编码器所用层的近互补层按相反顺序构成。某一层的近互补层是指能在一定程度上撤销原层操作的结构,例如转置卷积层对应卷积层、池化层对应反池化层、全连接层对应全连接层等。

损失函数

整个编码器-解码器架构通过损失函数进行联合训练,该损失函数鼓励在输出端重建输入。因此,损失函数是编码器输入与解码器输出之间的均方误差。
notion image
其核心思想是让潜在空间维度尽可能低,以实现最大程度的压缩,但同时将误差控制在足够小的范围内。若将潜在空间的维度降低到特定值以下,将导致显著的信息损失。
潜在空间的值/分布没有任何约束。只要解码器函数作用于其上时能够重建输入,它可以取任意形式。

潜在空间可视化

以下是在MNIST数据集上训练网络生成的潜在空间示例。
notion image
可以看出,相同数字倾向于在潜在空间中聚集。另一个重要现象是,潜在空间中存在不对应任何数据点的区域。将这些区域作为编码器输入时,输出结果将不像MNIST数据集中的任何数字。这就是我们所说的潜在空间未正则化。这种潜在空间仅有少数区域/聚类具备生成能力,意味着在潜在空间中采样属于某个聚类内的任意点,都将生成该聚类所属数据的变体。但整个潜在空间并不具备生成能力。不属于任何聚类的区域会产生无意义的输出。当网络训练完成后且训练数据被移除时,我们无法判断解码器通过随机采样的潜在向量生成的输出是否有效。因此自编码器主要应用于数据压缩领域。
对于有效的输入,自编码器(AE)能够将其压缩至更少的比特位,从而消除冗余(编码器),但由于潜在空间未经过正则化,解码器无法从潜在空间中随机采样的向量生成有效的输入数据。

为何使用自编码器进行压缩?

线性自编码器的潜在空间与主成分分析中数据的特征空间高度相似。当输入空间维度为n、潜在空间维度设为m<n时,线性自编码器所张成的向量空间与PCA前m个特征向量张成的空间完全一致。既然自编码器与PCA类似,为何还要使用自编码器?其优势在于非线性特性。通过引入非线性(如非线性激活函数和更多隐藏层),自编码器能够在更低维度上学习输入数据的高效表征,且信息损失大幅降低。

变分自编码器

什么是变分自编码器?

变分自编码器解决了自编码器中潜在空间缺乏正则化的问题,并为整个空间赋予了生成能力。自编码器中的编码器输出的是潜在向量。与在潜在空间中输出向量不同,VAE的编码器对每个输入都输出预定义分布在潜在空间中的参数。随后VAE会对此潜在分布施加约束,迫使其成为正态分布。这一约束确保了潜在空间的正则化。
VAE的框图如下所示。在训练过程中,输入数据x被送入编码器函数e_theta(x)。与AE类似,输入数据会经过一系列由参数theta定义的层级,逐步降低维度以得到压缩后的潜在向量z。但编码器的输出并非潜在向量,而是每个潜在变量的均值与标准差。随后从该均值和标准差中采样得到潜在向量,再将其送入解码器进行输入重构。VAE中的解码器工作原理与AE中的解码器相似。
notion image

损失函数

VAE的目标定义了损失函数。VAE具有两个目标。
1、重构输入
2、隐空间应服从正态分布
因此,变分自编码器的训练损失定义为重建损失与相似度损失之和。与自编码器相同,重建误差指输入与重建输出的均方误差。相似度损失则采用隐空间分布与标准高斯分布(均值为零、方差为一)之间的KL散度表示。最终损失函数即为这两项损失之和。
如前所述,潜在向量是在送入解码器之前从编码器生成的分布中采样得到的。这种随机采样使得编码器的反向传播难以进行,因为我们无法通过这种随机采样追溯误差。因此,我们使用重参数化技巧来建模采样过程,使误差能够在网络中传播。潜在向量z被表示为编码器输出的函数。
notion image

潜在空间可视化

训练过程力求在两种损失之间找到平衡,最终得到的潜在空间分布呈现为单位范数形态,其中相似输入数据点会聚集成簇。单位范数条件确保了潜在空间分布均匀,簇与簇之间不会出现明显空隙。实际上,外形相似的数据输入所形成的簇通常会在某些区域发生重叠。下图展示了使用与之前AE潜在空间可视化相同的MNIST数据集训练网络后生成的潜在空间。注意簇之间已无空隙,且整个空间呈现单位范数分布的特征。
notion image
需要注意的是,当从重叠聚类区域采样潜在向量时,会得到融合数据。当我们在潜在空间中从一个聚类移动到另一个聚类进行采样时,解码器的输出会出现平滑的过渡。
notion image

VAE算法参考资料

0xGame2024KL散度
Loading...