详细内容或原文请订阅后点击阅览
使用 VQ-VAE 和 TensorFlow Probability 进行离散表示学习
在考虑变分自动编码器 (VAE) 时,我们通常会将先验描绘为各向同性的高斯。但这绝不是必需的。van den Oord 等人的“神经离散表示学习”中描述的矢量量化变分自动编码器 (VQ-VAE) 具有离散潜在空间,可以学习令人印象深刻的简洁潜在表示。在这篇文章中,我们结合了 Keras、TensorFlow 和 TensorFlow Probability 的元素,看看我们是否可以生成与 Kuzushiji-MNIST 中的字母相似的令人信服的字母。
来源:RStudio AI博客大约两周前,我们介绍了 TensorFlow Probability (TFP),展示了如何创建分布并从分布中采样,并将其用于学习先验的变分自动编码器 (VAE)。今天,我们继续介绍 VAE 模型库中的另一个样本:神经离散表示学习 (Oord、Vinyals 和 Kavukcuoglu 2017) 中描述的矢量量化变分自动编码器 (VQ-VAE)。该模型与大多数 VAE 不同,其近似后验不是连续的,而是离散的 - 因此文章标题中的“量化”一词。我们将快速了解这意味着什么,然后直接深入研究代码,结合 Keras 层、eager 执行和 TFP。
引入了 TensorFlow 概率 (TFP) 分布 神经离散表示学习 (Oord、Vinyals 和 Kavukcuoglu 2017) Oord、Vinyals 和 Kavukcuoglu 2017离散代码
许多现象最好被认为是离散的,并被建模为离散的。这适用于语言中的音素和词素、图像中的高级结构(想想对象而不是像素)以及需要推理和规划的任务。然而,大多数 VAE 中使用的潜在代码是连续的 - 通常它是一个多元高斯。连续空间 VAE 在重建输入方面非常成功,但它们经常遭受所谓的后验崩溃:解码器非常强大,以至于它可以在给定任何输入的情况下创建逼真的输出。这意味着没有动力去学习富有表现力的潜在空间。
后验崩溃 任何然而,在 VQ-VAE 中,每个输入样本都会确定性地映射到一组嵌入向量中的一个。这些嵌入向量共同构成了潜在空间的先验。因此,嵌入向量包含的信息比均值和方差多得多,因此,解码器更难忽略它。
嵌入向量那么问题是:那顶神奇的帽子在哪里,让我们可以提取有意义的嵌入?