《GANs in action》读书笔记——第二章——介绍生成模型:自动编码器

本章包括

  • 将数据编码到 latent space(降维)并随后扩展维数
  • 了解变式自动编码器中生成建模的挑战
  • 使用Krase 和 自动编码器生成手写数字
  • 了解自动编码器的局限以及GANs的设计动机

添加本章的几个重要原因
1.生成模型对大多数人来说是个比较新的陌生的领域,不是很好理解。因此本章给出自动编码器这一生成模型的相关研究。如果读者想直接学习GANs的部分大可放心跳过本章。
2.生成模型是一个十分具有挑战的模型。比如如何评估生成样本质量。
3.这个依然是很活跃的研究领域。

2.1 生成模型简介

现有三个包含像素值的矩阵(每一个对应图像的色彩通道),然后通过一个翻译系统将这些矩阵在最后翻译成单独的数字。如果将这个过程反过来呢?
我们将想要得到的进行预描述并在翻译系统的另一端终点得到一张图像。这就是生成模型最简单平常的模式。本书会进行更深的讲解。
latent space 是数据点更简单、更隐藏的表示。

2.2 How do autoencoders function on a high level?

自动编码器由编码器和解码器两个部分组成。举一个“压缩”的例子来帮助理解自动编码器。
假设你要给得了健忘症的祖父母解释你的机器学习工程师的工作,要在有限的篇幅中解释所有的术语。假设他们依然可以阅读并理解基础的概念。换句话说,他们学习的从潜在空间z到x的翻译已经几乎随机初始化。在你解释之前,你必须先对他们的大脑结构进行再训练。你必须通过传递概念x来训练他们的自动编码器,看看他们是否能以一种有意义的方式把它们(x)复制回来。这样,就可以测量它们的误差,称为重建损失(||x-x||。样本x先解码,再编码得到x,前后两个样本求重建误差。

生活中我们不会花时间解释已知的概念。人类交流活动中充满了自动编码的过程。我们不必解释什么是机器学习工程,只需要描述他们的自动编码器可以理解的概念。
我们可以压缩,因为将某些重复出现的概念简化为我们已经同意的抽象(例如,职务)是很有用的。自动编码器可以系统的自动的涵盖信息有效的模式,并定义和使用。最后,我们只需要传送维度很低的数据z,因此可以节省带宽。
定义:
latent space是数据的隐藏表达。自动编码器根据对数据的理解对其进行压缩和聚类。

2.3 What are autoencoders to GANs?

自动编码器的主要区别之一是,我们使用一种损失函数端到端训练整个网络,而GAN对于生成器和鉴别器具有独特的损失函数。如图2.1的生成模型都是AI和ML的子集。
《GANs in action》读书笔记——第二章——介绍生成模型:自动编码器_第1张图片
GANs有两个相互竞争的目标,不能用一个函数来表达。

2.4 What is an autoencoder made of?

像机器学习中的许多进步一样,自动编码器的高级概念很直观,并且遵循这些简单的步骤,如图2.2所示

《GANs in action》读书笔记——第二章——介绍生成模型:自动编码器_第2张图片

  1. 编码器网络:取一个y维的数据代表x(比如图像),然后通过一个已学习的编码器从y维降维到z维。
  2. Latent space (z):latent space好比是低维数据的表示或者动作的中间步骤。
  3. 解码器网络:我们使用解码器将原始对象重构为原始维度。这通常是由神经网络完成的,该神经网络是编码器的镜像。 这是从z到x *的步骤。 我们应用编码的逆过程来获取例如来自潜在空间的256个像素值长向量的784个像素值长的重构向量(28×28图像)。

训练自动编码器的例子:

  1. 取图像x并输入到自动编码器中
  2. 得到x*,重建图像
  3. 测量重建损失,即,原图像x与重建图像x*之间的差异
  •   测量两图像像素之间的距离(例如平均误差)
    
  • 有一个可优化的显示目标函数( || x –x* || )

所以找到编码器和解码器的参数可以使得通过梯度下降得到的重建损失最小化。

2.5 自动编码器的使用

需要了解自动编码器的原因:
首先,我们得到免费压缩!这是因为图2.2中的中间步骤(2)在潜在空间的维度上变成了智能缩小的图像或对象。请注意,理论上,这可能比原始输入少几个数量级。它显然不是无损的,但如果我们愿意,我们可以自由地使用这种副作用。

仍然使用潜在空间,我们可以想到许多实际应用,例如一类分类器(一种异常检测算法),其中我们可以在一个简化的、更快速可搜索的潜在空间中查看项目,以检查与目标类的相似性。这可以用于搜索(信息检索)或异常检测设置(比较潜在空间中的接近度)。

另一个用例是黑白图像的数据去噪或彩色化。
一些GANs结构(例如ECGAN)将自动编码器作为结构的一部分以帮助稳定训练过程。
训练自动编码器不需要已标签的数据。这个后文会谈及并说明为什么无监督学习这么重要。这会使得我们的工作更容易,因为只需要自训练不需要人工需找标签。
最后,我们可以用自动编码器生成新的图像。自动编码器已经应用在很多领域(从数字到人脸到…)。但是通常图像的分辨率越高生成的图像越糟糕,输出会趋向于模糊。但是像MNIST数据集或者其他的低分辨率图像,自动编码器工作的性能很好。随后会看到代码。

所以所有这些事情都可以做,仅仅因为我们找到了一个新的数据表示形式。这种表示法很有用,因为它会显示核心信息,而核心信息是本机压缩的,但是基于潜在表示法操作或生成新数据也更容易。

2.6 无监督学习

定义:无监督学习是指从无标签的数据中学习的一种机器学习方法。例如,聚类是一种无监督学习。但是异常检测通常是一种监督学习,我们需要人为标签的异常样本数据。

2.6.1 New take on an old idea新观念取代旧观念

自动编码器是一个比较老的idea,但是随着现今很多工作的深入,将深度学习作为编码器、解码器的一部分应该没人会惊讶。

一个自动编码器由两个神经网络组成:一个编码器一个解码器。在我们的例子中,两者都有激活函数,我们将为每个函数使用一个中间层。这意味着每个网络有两个权重矩阵———一个是从输入到中间层,一个是从中间层到latent。再然后,一个从latent到不同中间层,然后再从中间层到输出。如果只有一个权重矩阵,我们的过程与已构建好的分析技术叫做主成分分析法。

2.6.2 使用自动编码器的生成器

我们在一组图像上训练自动编码器。 我们调整编码器和解码器的参数,以找到适合两个网络的参数。 我们还对示例在潜在空间中的表示方式有所了解。 为了生成,我们切断了编码器部分,仅使用了潜在空间和解码器。 图2.3显示了生成过程的示意图。
《GANs in action》读书笔记——第二章——介绍生成模型:自动编码器_第3张图片

2.6.3 变分自动编码器

在自动变分编码器中,我们选择将latent space表示为学习到的均值和标准差的分布,而不仅仅是一组数字。我们选择多元高斯分布。
变分自动编码器是基于贝叶斯机器学习的技术。在实践中,这意味着我们必须学习分布,这增加了进一步的约束。 换句话说,频率自动编码器将尝试以数字数组的形式学习潜在空间,但是贝叶斯自动编码器(例如,变分式)会尝试找到定义分布的正确参数。然后,我们从潜在分布中采样并得到一些数字。 我们通过解码器提供这些数字。 我们返回一个看起来像原始数据集中的示例的示例,只是它是由模型新生成的。

2.7 代码是关键

本书使用Keras。

2.8 Why did we try aGAN?

VAE在生成数据的任务中有很大局限性,而GANs更适合生成数据任务。(原文写了一大段,并加以举例说明,核心意思就这一句)

你可能感兴趣的:(学习笔记,python,计算机视觉,神经网络,机器学习)