自编码器(autoencoder)

什么是自编码器?

自编码器是一种数据压缩算法,或者说是一种PCA,,但是比PCA更高效,灵活。

什么是编码器,解码器?

数据压缩算法离不开编码器和解码器,数据压缩使用编码器,解压缩使用解码器。编码器是把高维度数据有损的映射成低纬度数据,减少数据量,要实现这种映射关系需要学习数据间的相关性。解码器和编码器完全相反,是把低维度数据映射成高纬度数据,增加数据量,使经过压缩的数据恢复本来的面貌。

自编码器是数据相关的,这意味着自编码器只能学习与训练样本相关的特征,一个自编码器只能针对一类样本,使用范围局限。

自编码器是有损的。这意味着解压缩之后的数据和压缩之前的相比是退化的,也可以理解为解压缩是一个去噪的过程,经过滤波之后的图像与之前相比更加模糊。

自编码器是从数据样本中自动学习的,我们无法设定学习的模式,学习的效果与编码器的选择有关,也就是只提供样本,至于从中能学习到什么并不知道。

一般地,自编码器是深度学习中少有的无监督学习算法,但其实它并不是真正的无监督,而是一种自监督,也就是说其输入和输出可以一致,输出也可以是输入+噪声,但是必须保证输入输出的数据维度一致,这与其他机器学习方法不同,因为自编码器的学习目标不是为了分类,而是为了特征,或者是降维。

搭建一个自动编码器需要完成下面三样工作:搭建编码器,搭建解码器,设定一个损失函数,用来衡量由于压缩而损失掉的信息。编码器和解码器一般都是参数化的方程,并关于损失函数可导,典型的情况是使用神经网络。编码器和解码器的参数可以通过最小化损失函数而优化,例如:SGD(Stochastic Gradient Descent),SGD是随机梯度函数,一个样本更新一次参数,不易收敛,最后在最佳参数附近震荡,实际应用中MGD(Minibatch Gradient Descent)更广泛,多个样本更新一次参数,适用于大规模的样本学习。

目前自编码器的应用主要有两个方面,一个是数据去噪,一个是为可视化而降维,配合适当的维度和稀疏约束,自编码器可以学习到比PCA更有意思的数据投影。



你可能感兴趣的:(深度学习)