附上一篇关于自偏码器的论文:在Keras中构建自动编码器
【文章来自官网的翻译】
1.什么是自编码器?
自动编码器是一种无监督的机器学习算法,该算法将图像作为输入并使用较少的位数来重建它。这听起来像是图像压缩,但是自动编码器和通用图像压缩算法之间的最大区别在于,在自动编码器的情况下,压缩是通过学习训练数据集来实现的。当图像类似于所使用的训练集时,虽然可以实现合理的压缩,但是自动编码器的通用图像压缩器不佳;JPEG压缩会做得更好。
自动编码器在本质上类似于降维技术(例如主成分分析)。它们创建了一个空间,在其中保留了数据的重要部分,而删除了非必要(或嘈杂)部分。
自动编码器分为两部分:
- 编码器:这是网络中将输入压缩为更少位数的部分。这些较少位数表示的空间称为“潜在空间”,而最大压缩点称为瓶颈。这些代表原始输入的压缩位统称为输入的“编码”。
- 解码器:这是网络中使用图像编码重建输入图像的部分.
一个例子,以更好地理解该概念:
在上面的图片中,展示了一种香草自动编码器-一种具有一个隐藏层的2层自动编码器。输入和输出层具有相同数量的神经元。我们将五个实数值输入到自动编码器中,该编码器在瓶颈(中间层)处将其压缩为三个实数值。解码器使用这三个实数值,尝试重构我们作为网络输入提供的五个实数值。
实际上,在输入和输出之间存在大量隐藏层。
有多种自动编码器,例如稀疏自动编码器,变分自动编码器和降噪自动编码器。在这篇文章中,我们将学习去噪自动编码器。
2.去噪自动编码器
去噪自动编码器背后的想法是学习对噪声具有鲁棒性的表示(潜在空间)。我们将噪声添加到图像中,然后将此嘈杂的图像作为输入输入到我们的网络中。自动编码器的编码器部分将图像转换为保留手写数字但消除噪声的不同空间。稍后我们将看到,原始图像是28 x 28 x 1图像,而转换后的图像是7 x 7 x32。可以将7 x 7 x 32图像视为具有32个颜色通道的7 x 7图像。
使用Tensorflow(Python)了解自动编码器。
1.什么是自动编码器?
自动编码器是一种无监督的机器学习算法,该算法将图像作为输入并使用较少的位数来重建它。这听起来像是图像压缩,但是自动编码器和通用图像压缩算法之间的最大区别在于,在自动编码器的情况下,压缩是通过学习训练数据集来实现的。当图像类似于所使用的训练集时,虽然可以实现合理的压缩,但是自动编码器的通用图像压缩器不佳;JPEG压缩会做得更好。
自动编码器在本质上类似于降维技术(例如主成分分析)。它们创建了一个空间,在其中保留了数据的重要部分,而删除了非必要(或嘈杂)部分。
自动编码器分为两部分
编码器:这是网络中将输入压缩为更少位数的部分。这些较少位数表示的空间称为“潜在空间”,而最大压缩点称为瓶颈。这些代表原始输入的压缩位统称为输入的“编码”。
解码器:这是网络中使用图像编码重建输入图像的部分。
让我们看一个例子,以更好地理解该概念。
自动编码器
图:2层自动编码器
在上面的图片中,我们展示了一种香草自动编码器-一种具有一个隐藏层的2层自动编码器。输入和输出层具有相同数量的神经元。我们将五个实数值输入到自动编码器中,该编码器在瓶颈(中间层)处将其压缩为三个实数值。解码器使用这三个实数值,尝试重构我们作为网络输入提供的五个实数值。
实际上,在输入和输出之间存在大量隐藏层。
有多种自动编码器,例如稀疏自动编码器,变分自动编码器和降噪自动编码器。
2.去噪自动编码器
去噪自动编码器:
去噪自动编码器背后的想法是学习对噪声具有鲁棒性的表示(潜在空间)。我们将噪声添加到图像中,然后将此嘈杂的图像作为输入输入到我们的网络中。自动编码器的编码器部分将图像转换为保留手写数字但消除噪声的不同空间。稍后我们将看到,原始图像是28 x 28 x 1图像,而转换后的图像是7 x 7 x32。可以将7 x 7 x 32图像视为具有32个颜色通道的7 x 7图像。
然后,网络的解码器部分会从此7 x 7 x 32图像中重建原始图像,瞧,噪声消失了!这种魔术是如何发生的?
在训练过程中,我们定义了一个损失(成本函数)以最小化重建图像与原始无噪声图像之间的差异。换句话说,我们学习了7 x 7 x 32的无噪声空间。
去噪自动编码器的实现:
构建网络:图像是尺寸为28 x 28 x的矩阵。我们将图像重新塑形为尺寸为28 x 28 x 1,将尺寸调整后的图像矩阵转换为数组,在0和1之间重新缩放,并将其作为输入馈送到网络。编码器将28 x 28 x 1图像转换为7 x 7 x 32图像。您可以将此7 x 7 x 32图像视为1568(因为7 x 7 x 32 = 1568)维空间中的一个点。1568维空间称为瓶颈或潜在空间。该架构如下图所示。
解码器与编码器完全相反。它将1568维矢量转换回28 x 28 x 1图像。我们称此输出图像为原始图像的“重建”。解码器的结构如下所示。