IV · 计算机视觉

自动编码器

微软《AI for Beginners》 · 第 09 课 · 中文翻译 · 本地镜像

在训练 CNN 时,一个问题是我们需要大量的标注数据。在图像分类的情况下,我们需要将图像分成不同的类别,这通常需要手动完成。

课前测验

然而,我们可能希望使用原始(未标注)数据来训练 CNN 特征提取器,这被称为自监督学习。在这种情况下,我们将训练图像同时作为网络的输入和输出。自动编码器的核心思想是,我们会有一个编码器网络,将输入图像转换为某种潜在空间(通常是一个较小尺寸的向量),然后通过解码器网络来重建原始图像。

自动编码器 是“一种用于学习未标注数据高效编码的人工神经网络。”

由于我们训练自动编码器的目标是尽可能捕捉原始图像的信息以实现准确的重建,网络会尝试找到输入图像的最佳嵌入以捕捉其意义。

自动编码器示意图

图片来源:Keras 博客

自动编码器的应用场景

虽然重建原始图像本身似乎没有太大的实际用途,但在以下场景中,自动编码器特别有用:

变分自动编码器 (VAE)

传统的自动编码器通过某种方式降低输入数据的维度,从而提取输入图像的重要特征。然而,潜在向量通常没有太多意义。换句话说,以 MNIST 数据集为例,确定哪些数字对应于不同的潜在向量并不容易,因为相近的潜在向量不一定对应于相同的数字。

另一方面,要训练生成模型,最好对潜在空间有一定的理解。这一想法引导我们进入变分自动编码器 (VAE)。

VAE 是一种自动编码器,它学习预测潜在参数的统计分布,即所谓的潜在分布。例如,我们可能希望潜在向量呈正态分布,具有某个均值 zmean 和标准差 zsigma(均值和标准差都是某个维度 d 的向量)。VAE 的编码器学习预测这些参数,然后解码器从该分布中随机抽取一个向量以重建对象。

总结如下:

图片来源:Isaak Dykeman 的博客文章

变分自动编码器使用一个复杂的损失函数,该损失函数由两部分组成:

VAE 的一个重要优势是它可以相对轻松地生成新图像,因为我们知道从哪个分布中抽取潜在向量。例如,如果我们在 MNIST 数据集上用 2D 潜在向量训练 VAE,我们可以通过改变潜在向量的分量来获得不同的数字:

vaemnist

图片来源:Dmitry Soshnikov

观察图像如何相互融合,当我们从潜在参数空间的不同部分获取潜在向量时,图像开始逐渐变化。我们还可以将这个空间可视化为二维:

vaemnist cluster

图片来源:Dmitry Soshnikov

✍️ 练习:自动编码器

通过以下笔记本了解更多关于自动编码器的内容:

自动编码器的特性

课后测验

总结

在本课中,您学习了 AI 科学家可用的各种类型的自动编码器。您学习了如何构建它们,以及如何使用它们重建图像。您还学习了 VAE 以及如何使用它生成新图像。

🚀 挑战

在本课中,您学习了如何将自动编码器用于图像。但它们也可以用于音乐!查看 Magenta 项目的 MusicVAE 项目,该项目使用自动编码器学习重建音乐。使用该库进行一些实验,看看您能创造出什么。

课后测验

复习与自学

参考以下资源,了解更多关于自动编码器的内容:

作业

使用 TensorFlow 的自动编码器笔记本 的末尾,您会发现一个“任务”——将其作为您的作业。