趋近智
标准变分自编码器(VAEs)处理连续潜变量,通常从高斯分布中采样。然而,在某些情况下,离散的潜表示更为自然或有益。例如,自然语言等领域,基本单位(词、字符)是离散的;或者我们需要更具结构、可能是符号化的潜空间的任务。此外,连续VAEs有时会遇到“后验坍塌”问题,即解码器学会忽略潜变量,尤其是在与强大的自回归解码器结合使用时。
向量量化变分自编码器(VQ-VAEs)通过向量量化引入离散潜空间来解决此问题。与标准VAE中将输入映射到连续分布的参数(如均值和方差)不同,VQ-VAE编码器将输入映射到连续向量,然后该向量被吸附到学习到的有限码本(也称嵌入空间)中最近的向量。
VQ-VAE由三个主要组成部分构成:
编码器: 类似于其他自编码器,该网络 f 接收输入 x 并生成一个连续输出向量(或张量)ze(x)∈RD。与标准VAE不同, ze(x) 不被解释为分布的参数,而是D维空间中的一个点。
码本(嵌入空间): 这是一个可学习的集合 E={ei}i=1K,其中每个 ei∈RD 是一个嵌入向量。码本的大小 K 决定了可能的离散潜状态数量。D 是每个嵌入向量的维度。
解码器: 该网络 g 接收码本中的一个向量,旨在重建原始输入 x。
核心操作是连接编码器输出与码本的量化步骤。对于给定的编码器输出 ze(x),我们使用欧几里得距离寻找最近码本向量 ek 的索引 k:
k=argimin∥ze(x)−ei∥22解码器的输入是所选码本向量本身,zq(x)=ek。这个 ek(或有时仅是索引 k)表示输入 x 的离散潜表示。
一个重要挑战立即出现:用于量化的 argmin 操作是不可微分的。选择最近的向量涉及一个硬决策,其梯度几乎处处为零,这会阻止训练期间通过标准反向传播从解码器到编码器的梯度流动。
VQ-VAEs 巧妙地通过一种**直通估计器(STE)**的变体来规避此问题。核心思路是:
这使得解码器的重建误差信号能够回流以更新编码器权重,尽管量化步骤本身没有可用的梯度。
训练VQ-VAE涉及同时优化编码器、解码器和码本向量。损失函数包含三个项:
重建损失 (Lrec): 这是标准的自编码器损失,衡量原始输入 x 与解码器输出 x^=g(zq(x)) 之间的差异。根据数据类型,这可以是连续数据的均方误差(MSE)或离散数据(如像素值被视为分类的图像)的交叉熵。
码本损失 (Lcodebook): 该项更新码本向量 ei。目标是将所选码本向量 ek 移近选择它的编码器输出 ze(x)。为防止编码器输出任意增大以使该项最小化(因为编码器权重不受此特定损失项更新),编码器输出使用停止梯度操作符(sg)被视为常数。
停止梯度 sg[v] 在前向传播时不变地传递 v,但在反向传播时梯度为零,有效截断通过 v 的梯度流动。
承诺损失 (Lcommit): 该项规范编码器输出,鼓励其保持接近所选码本向量 ek。这可以防止 ze(x) 波动过大,并确保编码器“承诺”于一个特定的码本向量。它也使用停止梯度操作符,但这次作用于码本向量,因此梯度只影响编码器。此损失通常由超参数 β 加权。
L承诺=β∥ze(x)−sg[ek]∥22β 的常见值在0.1到2.0之间。
总损失是这些部分的和:
L=L重建+L码本+L承诺注意,码本损失使嵌入 ek 靠近编码器输出 ze(x),而承诺损失使编码器输出 ze(x) 靠近嵌入 ek。STE 处理重建损失回流到编码器的梯度。
VQ-VAE的高级架构。前向传播计算编码器输出 ze(x),通过量化找到最近的码本向量 ek,从而得到 zq(x),然后进行解码。虚线箭头表示反向传播期间的梯度流动,直通估计器(STE)将重建梯度从 zq 复制到 ze。独立的梯度更新码本并强制执行承诺。
VQ-VAEs 提供以下几点益处:
总之,VQ-VAEs 通过采用向量量化学习到的离散潜空间,为标准VAEs提供了一个有说服力的替代方案。它们使用直通估计器克服了量化的不可微分性,并依赖于涉及重建、码本和承诺项的特定损失结构。它们学习有意义的离散表示的能力使它们成为强大生成模型的重要构成,特别是在图像和音频合成中。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造