Auto-encoder

前言

以MNIST为例,自编码器一般有一个编码器和解码器的网络,将图片pixel输入到编码器中,得到一个隐向量,一般小于原始输入的维度。将这个隐向量输入到解码器中,解码器意图通过这个向量重构出图片信息。

我们可以利用PCA类比自编码器的结构。

PCA->AEPCA->AE

自编码器相比于PCA,神经网络的优势是可以更加深。

应用

文本检索

相似主题的文档,他们的embedding非常接近,对所有文档进行embedding后,当我们给定一个查询,可以将查询输入自编码器,得到一个隐向量,然后查找与该隐向量最相似的embedding对应的文档,即为查询结果。

相似图片搜索

对于相似图片搜索的任务来说,如果仅计算欧式距离,会导致搜索到的相似图片可能毫无关联。

欧式距离计算相似度欧式距离计算相似度

若我们爬取大量图片,利用自编码器进行重构训练的话,利用embedding计算图片间的相似度,得到的效果更好,找到的相似图片均为人脸且都是长发。
embedding计算相似度embedding计算相似度

去噪自编码器

De-noising auto-encoderDe-noising auto-encoder

这种方法的训练结果会使得学习到的特征更加鲁棒。

Auto-encoder for CNN

Unpooling

pooling的逆操作,我们可以记录pooling时,所选取的feature map的位置,在unpooling时就还原记录的位置,并在其他位置补零。

Unpooling 结果图Unpooling 结果图

这种unpooling的方法仅仅将原图扩散
另外,更简单的方法是,直接重复每个区块的值。

Deconvolution

实际上deconvolution就是convolution。

deconvolution示意图deconvolution示意图

只需要先做padding再用卷积就是deconvolution的操作。