目录
1.自编码器产生背景
2.自编码器原理
(1)一般的神经网络结构
(2)自编码器
3.自编码器的实现
(1)网络结构
(2)代码实现
1.自编码器产生背景
像我们目前所进行的图像分类,目标识别,图像分割等都是基于有监督学习来的,所以对于海量的数据需要进行人工的标注。但是随着时代的发展和人工智能不断的火起来,对于数据量的需求已经不是想象中的样子了,数据量的需求已经远远超出人们的认知。面对海量的数据集,有没有一种办法就是能够从中学习到数据的分布P(x)的算法呢?
提示:而解决上面的算法计算无监督学习。
- 自编码器
- 自编码器(autoencoder, AE)是一类在半监督学习和非监督学习中使用的人工神经网络(Artificial Neural Networks, ANNs),其功能是通过将输入信息作为学习目标,对输入信息进行表征学习(representation learning)
- 自编码器原理
- 包含编码器(encoder)和解码器(decoder)两部分 。按学习范式,自编码器可以被分为收缩自编码器(contractive autoencoder)、正则自编码器(regularized autoencoder)和变分自编码器(Variational AutoEncoder, VAE),其中前两者是判别模型、后者是生成模型 。按构筑类型,自编码器可以是前馈结构或递归结构的神经网络。
- 自编码器应用场景
- 自编码器具有一般意义上表征学习算法的功能,被应用于降维(dimensionality reduction)和异常值检测(anomaly detection) 。包含卷积层构筑的自编码器可被应用于计算机视觉问题,包括图像降噪(image denoising) 、神经风格迁移(neural style transfer)等 。
![](https://img-blog.csdnimg.cn/b816e8737a5f4cfc98b637558861ef0c.png)
2.自编码器原理
(1)一般的神经网络结构
![](https://img-blog.csdnimg.cn/6b0c771e302a4d39a51d0b55f072a156.png)
![](https://img-blog.csdnimg.cn/7d47e3facd134d7ba39dfcb756792f49.png)
能否利用神经网络的强大非线性表达能力去学习到低维的数据表示呢?但是这样也会引入一个问题就是,训练神经网络都是在有标签的清况下,对于一个无监督的学习,是没有标签的,只有输入的数据本身x.
(2)自编码器
![](https://img-blog.csdnimg.cn/39ebc26f203a47e98149e5208f9080af.png)
![](https://img-blog.csdnimg.cn/43071215397f4165ae138278fb05f0f3.png)
我们希望从编码器到解码器的最后输出近似等于原来的输入,所以自编码器的优化目标如下:
![](https://img-blog.csdnimg.cn/cd10f71f4da1429198f7165f0353b449.png)
3.自编码器的实现
(1)网络结构
![](https://img-blog.csdnimg.cn/e40f110c132c445d8a16f55cf6c10f43.png)
![](https://img-blog.csdnimg.cn/591e52ba8a7d42a3943a91f48dbfee04.png)
(2)代码实现
本文的代码下载:GitHub - KeepTryingTo/Pytorch-GAN: 使用Pytorch实现GAN 的过程
参考书籍和链接
《TensorFlow深度学习》
自编码器相关知识点介绍