Autoencoder自动编码器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自动编码器是一种无监督人工神经网络学习如何有效地压缩和编码的数据然后学会如何重建数据回从减小的编码表示来表示,其是如接近原始输入成为可能。

通过设计,自动编码器通过学习如何忽略数据中的噪声来减小数据尺寸。这是从MNIST数据集到自动编码器的输入/输出图像的示例。

自动编码器组件:

自动编码器包括4个主要部分:

1-编码器(encoder):模型学习如何减小输入尺寸并将输入数据压缩为编码表示形式。

2-瓶颈(bottle neck):这是包含输入数据的压缩表示形式的层。这是输入数据的最低尺寸。

3-解码器:模型学习如何从编码表示中重建数据,使其尽可能接近原始输入。

4-重建损耗:这是一种测量解码器性能的方法以及输出与原始输入的接近程度的方法。

然后,训练涉及使用反向传播,以最大程度地减少网络的重建损失。

您一定想知道为什么我要训练神经网络只是为了输出与输入完全相同的图像或数据!本文将介绍自动编码器的最常见用例。让我们开始吧:

自动编码器架构:

根据使用情况,自动编码器的网络体系结构可以在简单的前馈网络,LSTM网络或卷积神经网络之间变化。在接下来的几行中,我们将探讨其中的一些架构。

假设我们已经在MNIST数据集上训练了自动编码器。使用简单的FeedForward神经网络,我们可以通过构建一个简单的6层网络来实现此目的,如下所示:

上面的代码输出为:

从输出中可以看到,验证集的最后一个重建损失/错误为0.0193,这非常好。现在,如果我通过MNIST数据集传递任何正常图像,则如果我尝试传递任何其他不同的图像(异常值或异常值),则重建损失将非常低(<0.02),但是由于网络无法重建被认为是异常的图像/输入。

注意,在上面的代码中,您只能使用编码器部分来压缩某些数据或图像,也只能使用解码器部分来通过加载解码器层来解压缩数据。

现在,让我们进行一些异常检测。下面的代码使用两个以上的图像,使用我们上面训练的自动编码器网络来预测异常评分(重建错误)。第一张图片来自MNIST,结果为

5.43209。这意味着图像不是异常。我使用的第二张图像是一个完全随机的图像,不属于训练数据集,其结果为:6789.4907。该高误差意味着图像是异常的。相同的概念适用于任何类型的数据集。

2-图像降噪

去噪或降噪是从信号中去除噪声的过程。这可以是图像,音频或文档。您可以训练自动编码器网络来学习如何消除图片中的噪点。为了试验该用例,让我们重新使用著名的MNIST 数据集,并在数据集中创建一些合成噪声。下面的代码只会向数据集中添加一些噪点,然后绘制一些图片以确保我们已成功创建它们。

上面代码的输出是下面的图像,它非常嘈杂和模糊:

在此示例中,让我们构建卷积自动编码器神经网络。我将遍历构建网络的每一行:

首先,我们定义输入层和输入数据的维度。MNIST数据集的图像大小已调整为28 X 28。由于图像是灰度的,因此图像的颜色通道将为1,因此形状为(28,28,1)。

第二层是卷积层,该层创建一个卷积内核,该卷积内核与该层输入进行卷积以生成输出张量。32是卷积中输出滤波器的数量,(3,3)是内核大小。

在每个卷积层之后,我们使用MaxPooling函数来减小尺寸。(28、28、32)减少了两倍,因此在第一次MaxPooling之后将是(14、14、32),然后在第二次MaxPooling之后将是(7、7、32)。这是图像的编码表示。

下面的代码是原始数字的重构部分。这是网络实际学习如何从输入图像中消除噪声的地方。我们使用UpSampling函数将图像重建为原始尺寸(28,28)

现在,剩下的最后一步是创建模型,对其进行编译,然后开始训练。我们通过运行以下命令来做到这一点:

After the training is complete, I try to pass one noisy image

through the network and the results are quite impressive, the noise was completely removed:

如果在上方缩放ConvNet,则可以使用它对任何类型的图像,音频或扫描的文档进行消噪。

在本文的这一部分中,我介绍了自动编码器的两个重要用例,并构建了两种不同的神经网络体系结构-CNN和FeedForward。在第2部分中,我将介绍自动编码器的另外2个重要用例。第一个将是如何通过构建LSTM网络来将自动编码器与数据序列一起使用,第二个用例是称为可变自动编码器(VAE),主要用于生成模型和生成数据或图像。

相关文档
最新文档