变分自动编码器 - 了解潜在损失

机器算法验证 深度学习 验证 损失函数 自动编码器
2022-03-20 22:35:14

我正在研究变分自动编码器,我无法理解它们的成本函数。

我直观地理解了这个原理,但没有理解它背后的数学原理:在此处博客文章的“成本函数”段落中说:

换句话说,我们希望同时调整这些互补参数,以便在边缘化潜在变量 zz 之后,最大化 log(p(x|φ,θ)) - 在当前模型设置下所有数据点 xx 的对数似然。该术语也称为模型证据。

换句话说,我们希望从编码器/解码器参数 φ 和 θ 中求解对数似然函数,以便p从输入样本中找到更好地对其建模的概率分布。

之后

我们可以将这种边际似然表示为我们将称为变分或证据下限 LL 和近似和真实潜在后验之间的 Kullback-Leibler (KL) 散度 DKLDKL 的总和:log(p(x))=L( φ,θ;x)+DKL(qφ(z|x)||pθ(z|x))

这也只是此处段落中 KL 散度定义的数学计算。

现在重要的是它在定义上是非负的;因此,第一项作为总数的下限。因此,我们将下限 LL 最大化,作为模型下数据的总边际可能性的(计算上易于处理的)代理。

这对我来说也是合理的。

通过一些数学争论,我们可以将 LL 分解为以下目标函数:

在此处输入图像描述

我试图遵循链接的论文上的“数学争论” (2.2 - 变分界),但无法获得上述函数。

有人可以帮我弄清楚吗?

2个回答

要获得变分目标,请从边际似然开始:

p(x)=p(x,z)dz=q(z)q(z)p(x,z)dz

认识到这是一种期望:

=Eq[p(x,z)q(z)]

使用 Jensen 不等式

lnp(x)Eq[lnp(x,z)q(z)]

使用对数的条件概率和属性的 def:

=Eq[lnp(x|z)+lnp(z)lnq(z)]

使用 KL 散度的 def:

=Eq[lnp(x|z)]KL(q||p)

洒一些θϕ视情况而定,我们有所需的格式。的调理zx在他们的符号中qϕ(z|x) 恕我直言,有点不必要和令人困惑,因为q选择以最小化与后验的分歧(尽管我知道他们正在标记它是后验而不是先验的近似值)。

虽然上面的答案是完全正确的,但你可以通过玩弄 KL 散度来得出相同的结论。请参阅我的详细答案以及有关 VI 的一些不错的参考资料。

作为旁注,联合q(x,z)可能没有定义,但他们使用q(z|x)暗示对数据的依赖。他们在原始论文中选择的示例(Gaussian multivariate with the meanμ根据x) 可能对他们为什么使用他们使用的符号更有意义。