平衡重建与 KL 损失变分自动编码器

机器算法验证 机器学习 计算机视觉 自动编码器
2022-01-21 03:04:04

我正在人脸数据集上训练条件变分自动编码器。当我将我的 KLL 损失设置为我的重建损失项时,我的自动编码器似乎无法生成不同的样本。我总是会出现相同类型的面孔: 在此处输入图像描述

这些样本很糟糕。但是,当我将 KLL 损失的权重减少 0.001 时,我得到了合理的样本: 在此处输入图像描述

问题是学习到的潜在空间并不平滑。如果我尝试执行潜在插值或生成随机样本,我会得到垃圾。当 KLL 项具有较小的权重 (0.001) 时,我观察到以下损失行为: 在此处输入图像描述 请注意,VggLoss(重建项)减少,而 KLLoss 继续增加。

我也尝试增加潜在空间的维度,但这也不起作用。

请注意,当两个损失项的权重相等时,KLL 项如何占主导地位但不允许重建损失减少:

在此处输入图像描述

这导致可怕的重建。关于如何平衡这两个损失项或任何其他可能的尝试,是否有任何建议,以便我的自动编码器在产生合理重建的同时学习平滑的插值潜在空间?

2个回答

在这里聚会有点晚了,你可能已经过去了,但是有充分的证据表明,你必须从零开始“热身”KL损失项,并在引入KL损失之前对重建损失进行一些训练,否则结果将不好。从你的帖子中不清楚你是否这样做了,但这是一个典型的例子,说明这些训练有多么棘手——有时我想知道它们在交叉验证时有多合适,因为这是非常强烈的反复试验,以及一些小精灵的灰尘和彩虹。

然而,当我将 KLL 损失的权重减少 0.001 时,我得到了合理的样本:(...) 问题是学习到的潜在空间并不平滑。

看起来像过拟合。请记住,潜在空间上的 KL 损失对应于正则化。

是否有关于如何平衡这两个损失项或任何其他可能的尝试的建议,以便我的自动编码器学习一个平滑的、可插值的潜在空间,同时产生合理的重建?

我最近偶然发现了这篇论文: -VAE: Learning Basic Visual Concepts with a Constrained Variational Framework(它实际上在一个示例中使用了您的数据集)。β

从论文(是您更改的参数):β

我们引入了一个可调节的超参数平衡约束与重建精度(...)通过使用弱标记数据的超参数搜索或通过对纯无监督数据的启发式视觉检查直接优化。βββ