无监督学习——自编码器(auto-enconder)

自编码器是变分自编码器的基础,最近在研究VAE,所以得先把AE掌握了。这是经典的无监督学习,所谓无监督学习,就是使用的训练数据不是人工标注过的。举栗,MNIST的60000张0-9的图片,把label摘掉,就是无监督学习的数据。可以看出,无监督学习对数据的要求会降低很多。尤其是在复杂任务过程中,数据标注也越来越困难。


自编码器

计算机相关专业的同学,对编码一定不陌生。用一段简单的码来对物体进行标号。对机器人来说,每一个动作都是经过编码的,比如用二进制01010表示前进等等。其实更通俗的理解是,编码是一个降维的过程,即用简单的向量描述复杂的向量。

自编码是区别于人工编码的过程,人工编码是通过人的经验将数据进行编码。而自编码过程是不需要人工的。那么,自编码一定需要有办法知道自己的编码方法是否合理。这个方法就是解码器,用解码器来看解码之后的复原情况。如果我能通过解码器将你编码器压缩的数据恢复得差不多,那么你的编码就是合理的。其实这里也可以看出,自编码器的另一个功能就是进行数据压缩。但这里主要介绍它的无监督学习功能。怎么实现呢,看图:

这里写图片描述

上图来自keras官方教程

这里可以有一定的发散思维,并没有限定encoder和decoder必须是什么,可以是回归模型,可以是MLP,也可以是CNN,RNN等等。对于图片数据而言,通常可以用CNN作为结构,然后通过SGD进行优化。待xx’相差无几时,我们就可以去掉 encoder部分了。这样encoder那部分就是一个分类器(压缩器)了。

自编码器还可以叠加使用。成功叠加使用AE后,数据就被压缩的越来越小,叠加decoder则反之。叠加后的AE有更强的表现力~