最近分享了 GAN 生成图片时候,在说到 Generator 如何自力更生不依赖 Discriminator 来生成图片时候我们提及了如何使用 autoencoder 来生成图片。既然说到了 autoencoder(自编码),我们今天就放下 GAN,来说一说这个 autoencoder。
首先 autoencoder 是一种无监督学习机器模型,无需给数据添加标签就可以来进行训练模型来完成任务。
目标
今天目标就是通过一个基于卷积的 autoencoder 实例来说明如何搭建一个 autoencoder 模型来进行图片压缩和对图片进行降噪(去除噪点)。实例采用 keras 来实现,数据集一个叫 notMNIST 手写字母集。
概要
- 首先我们了解一下 autoencoder(自编码) 这样基于深度学习的降维技术与传统的降维技术有什么区别和改进
- 接下来会带给大家一个基于卷积实现的 autoencoder(自编码)的实例。内容会很细,包括如何下载数据集,如何加压数据集以及构架模型,选择目标函数,设计优化算法一系列内容。
- 最后还会带有一个通过 autoencoder 对图片进行去噪点的图片,会了解如何为图片添加噪点,如何训练模型,并用训练好的模型对图片进行降噪。
预计 3 词分享,我们就来个上中下,好的话再来个续
autoencoder(自编码)
在一开始我们就说到了 autoencoder 是一个无监督的机器学习算法。将图片在隐藏空间中进行重构用较少数字来表示图片。这样也就达到对图片压缩或者说加密的效果。
如图,在图像中最狭窄位置就是对图像的编码。通过对 autoencoder(自动编码器)中网络进行一段时间的训练来实现的对图片压缩。
自动编码器(autoencoder) 与主成分分析(PCA)一样都是一种降维技术。都是使用线性转换将数据从高维投影到低维,并在时保留数据的重要特征前提尽可能地删除一些非必要特征。
不同之处就是自编码器使用非线性变换,而 PCA 是使用线性的变换。
如上图自编码器具有一个隐藏层(hidden)的输入和输出层。输入层和输出层具有相同数量的神经元。
如果将 5 个像素值的图像输入到自动编码器中,编码器将其压缩为 hidden(中间层)或 latent space (潜在空间)的 3 个像素值。然后解码器将 3 个值,通过解码重建 5 个像素值。
网络包括两个部分分别是编码器和解码器。
编码器:这部分网络,的将输入图片通过下采样(池化层)用较少数字来表示图片达到对图片进行压缩效果。hidden(中间层)或 latent space (潜在空间)位置数字量达到最小,这层通常就是称为最大压缩点,通过压缩用较少数字表示图片,这些表示原始输入的数字称为输入的编码。
解码器:使用编码进行一层一层进行反卷积来达到重构图像的目标
自动编码器有很多变种,例如卷积自编码器、去噪自编码器、变分式和稀疏式自编码器等。
最后希望大家关注我们微信公众号