寄己训练寄己|自编码器

戳上方蓝字【阿力阿哩哩的炼丹日常】关注我~

前面我们介绍了:

一文掌握CNN卷积神经网络

深度学习开端-全连接神经网络

超参数(Hyperparameters)|  上

超参数(Hyperparameters)|  下

4.5

自编码器

自编码器是一种输入等于输出的神经网络模型,可能大家会疑惑为什么要训练一个这样的模型,毕竟输入等于输出在大家看来就是一件多此一举的事情。一个简单的全连接神经网络自编码器模型如图 4.33所示。

图 4.33 全连接层自编码器

01

4.5.1 自编码器的原理

全连接层神经网络组成的最简单的自编码器只有三层结构,中间的隐藏层才是我们所需要关注的地方,以隐藏层为界限,左边为编码器(encoder),右边为解码器(decoder),所以在训练过程中,输入才能在经过编码后再解码,还原成原来的模样。

对传统机器学习有所了解的读者应该都知道PCA(主成分分析),它是用来对数据进行降维的。不了解PCA的读者也没关系,我们现在学习的自编码器也有这个功能,所以学完之后再看PCA兴许会理解地更加深刻些。

现在我们看回图 4.33,假如我们通过一组数据训练出了我们的自编码器,然后我们拆掉自编码器的解码器(decoder),就可以用剩下的编码器(encoder)来表征我们的数据了。隐藏层的神经元数目远低于输入层,那么就相当于我们用更少的特征(神经元)去表征我们的输入数据,从而达到降维压缩的功能。

接着,我们在文章开头提到过自编码器还有降噪的功能,那它是如何实现这个功能的呢?在此之前笔者先给大家介绍下这期使用的数据集----minist手写体,这是keras自带的数据集,如图 4.34所示。

图 4.34 minist手写体降噪前后对比图

这个数据集就是手写数字0~9的图像集合,图 4.37第一行就是加噪后的手写体数据集,第二行则是原本的手写体数据集。我们把加噪后的数据集当成输入,原本的数据集当做输出,训练一个自编码器,让它在训练过程中学习数据的规律,从而把噪声去掉。这就是笔者所说的去噪功能。

到这里,笔者就已经把自编码器的原理和功能给大家讲清楚了。接下来,我们更进一步介绍几种有用的自编码器。

02

4.5.2 常见的自编码器

1. 普通自编码器

就是本节开头讲的最简单的自编码器。

2. 多层自编码器

多个全连接神经网络隐藏层组成自编码器。如图 4.35所示。

图 4.35 多层自编码器

3. 卷积自编码器:

由CNN卷积神经网络组成的自编码器。用卷积层替换全连接层的原因也很简单,传统自编码器一般使用的是全连接层,对于一维信号并没有什么影响,但是对于二维图像或视频信号,全连接层会损失空间信息,而通过卷积操作,卷积自编码器能很好的保留二维信号的空间信息。卷积自编码器如图 4.36所示。

图 4.36 卷积自编码器

4. 正则自编码器

稀疏自编码器:稀疏自编码器就是普通自编码器的隐藏层加一个L1正则项,也就是一个训练惩罚项,这样我们训练出的编码器(encoder)表征的特征更加的稀疏,从而能得到少且有用的特征项。这也是为啥用L1正则项而不用L2正则项的原因。至于L1,L2正则项的原理,笔者已经在4.4小节中提及,在此就不再赘述。

降噪自编码器:降噪自编码器就是输入换成了加噪的数据集,输出用原数据集去训练的自编码器,目的是习得降噪功能。

03

4.5.3 自编码器小结

在本小节中,笔者给大家介绍了自编码器的基本框架和几种常见类型的自编码器。这些自编码器根据不同的约束条件,会呈现出不同的属性。因为自编码器的原理相对简单,所以笔者相信大家看完本小节之后都能吃透其中原理。 

下一期,我们将介绍

RNN与RNN的变种结构

敬请期待~

关注我的微信公众号~不定期更新相关专业知识~

内容 |阿力阿哩哩 

编辑 | 阿璃 

点个“在看”,作者高产似那啥~

发布了76 篇原创文章 · 获赞 5 · 访问量 6233

猜你喜欢

转载自blog.csdn.net/Chile_Wang/article/details/104177566