Auto-Encoder(自编码器)原理
Posted zdm-code
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Auto-Encoder(自编码器)原理相关的知识,希望对你有一定的参考价值。
1.无监督学习
无监督学习和监督学习是机器学习的两个方向,监督学习主要适用于已经标注好的数据集(如mnist分类问题),无监督学习则是希望计算机完成复杂的标注任务,简单的解释就是——教机器自己学习,它常见的应用场景有:从庞大的样本集合中选出一些具有代表性的加以标注用于分类器的训练、将所有样本自动分为不同的类别,再由人类对这些类别进行标注、在无类别信息的情况下,寻找好的特征。
2.Auto-Encoders
Auto-Encoders一大重要应用就是生成数据集,新手了解VAE一般都从生成mnist数据集开始,对于生成mnist的一个网络模型,Auto-Encoders与传统FNN或者CNN的区别在于它的输入维度与输出维度相同,且中间有一个neck层用于降维或升维,经过这样一个操作可以保持输入数据的语义相关性。
下图是只有一个包含两个神经元的隐藏层以及包含3个神经元的输出层的自编码器,输出是在设法重建输入,损失函数是重建损失
在Auto-Encoders的训练过程中,最常用的Loss function有均方误差和交叉熵,其中,交叉熵损失函数更加适用于二进制的输入数据。
3.Auto-Encoders的变种
经常拿来和Auto-Encoder比较的一个数据降维的方法叫PCA
PCA的原理请见以下链接:https://blog.csdn.net/program_developer/article/details/80632779
Auto-Encoders的一个变种叫Denoising AutoEncoders,它是为了防止模型对像素值的单纯记忆产生的,通过加入一些噪声让网络模型在混乱的数据中发现它们真实的语义特征;还有一个变种叫做Dropout AutoEncoders,和监督学习神经网络中的dropout层道理相同,通过阻止部分神经元的激活来防止网络过拟合(可能会记住一些噪声特征,而无法提取真实的特征)
Adversarial AutoEncoders是比较有名的一个,在自编码过程中,一个比较常见的问题就是生成的数据总是偏向于某一方向分布,而不符合我们平时接触的任何一种分布(均匀分布、正太分布、高斯分布等),为了解决这个问题,adversarial autoencoders通过加入一个“鉴别器”来对数据进行筛选,从而保证网络输出数据的质量。
以上是关于Auto-Encoder(自编码器)原理的主要内容,如果未能解决你的问题,请参考以下文章
Variational Auto-encoder(VAE)变分自编码器-Pytorch
tensorflow tutorials:用tensorflow实现降噪自编码器(Denoising Auto-Encoder)