春节充电系列:李宏毅2017机器学习课程学习笔记16之无监督学习:自编码器(autoencoder)

2018-04-13 14:04:09 浏览数 (1)

【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的Unsupervised learning- neighbor embedding,这一节将主要针对讨论Unsupervised learning-Autoencoder。本文内容涉及机器学习中半监督学习auto-encoder的若干主要问题:Auto-encoder原理,deep auto-encoder,text retrieval,similar image search,auto-encoder for CNN以及Pre-train DNN。话不多说,让我们一起学习这些内容吧

春节充电系列:李宏毅2017机器学习课程学习笔记01之简介

春节充电系列:李宏毅2017机器学习课程学习笔记02之Regression

春节充电系列:李宏毅2017机器学习课程学习笔记03之梯度下降

春节充电系列:李宏毅2017机器学习课程学习笔记04分类(Classification)

春节充电系列:李宏毅2017机器学习课程学习笔记05之Logistic 回归

春节充电系列:李宏毅2017机器学习课程学习笔记06之深度学习入门

春节充电系列:李宏毅2017机器学习课程学习笔记07之反向传播(Back Propagation)

春节充电系列:李宏毅2017机器学习课程学习笔记08之“Hello World” of Deep Learning

春节充电系列:李宏毅2017机器学习课程学习笔记09之Tip for training DNN

春节充电系列:李宏毅2017机器学习课程学习笔记10之卷积神经网络

春节充电系列:李宏毅2017机器学习课程学习笔记11之Why Deep Learning?

春节充电系列:李宏毅2017机器学习课程学习笔记12之半监督学习(Semi-supervised Learning)

春节充电系列:李宏毅2017机器学习课程学习笔记13之无监督学习:主成分分析(PCA)

春节充电系列:李宏毅2017机器学习课程学习笔记14之无监督学习:词嵌入表示(Word Embedding)

春节充电系列:李宏毅2017机器学习课程学习笔记15之无监督学习:Neighbor Embedding

课件网址:

http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html

http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html

视频网址:

https://www.bilibili.com/video/av15889450/index_1.html

李宏毅机器学习笔记16 Unsupervised Learning : Autoencoder

1.Auto-encoder原理



在以前的PCA里面我们已经得出类似auto-encoder的结构,auto-encoder指的是压缩输入物体的表示得到code,然后可以用这个code重构原来的物体

依据PCA的结构我们可以把它分为输入层,隐藏层,输出层

2.Deep Auto-encoder



当这个结构变得很深,就变成了deep auto-encoder,encoder和decoder的系数不一定是对称的

用PCA和deep auto-encoder结果作比较,貌似deep auto-encoder的结果更好

从下图也可以看出自编码器越深,分类效果越好

为了让auto-encoder学的更好,我们可以在输入加入噪音

先用PCA把维度降到32维,再做t-SNE

3.text retrieval



Auto-encoder可以应用在text retrieve中,把每个document统统用一个vector来描述它,计算query和每个document的cos角度

实验结果很好,将实验结果和另一个方法LSA作比较,LSA是一种线性分类的方法,不过实验结果比较差

4.similar image search



Auto-encoder还可以应用在相似图像检索中

相比单纯的像素距离比较的方法,auto-encoder可以得到较好的结果

5.auto-encoder for CNN



Auto-encoder还可以应用在CNN中

需要增加的隐藏层有deconvolution和unpooling

对于unpooling,我们只需要在maxpooling过程中把要把max locations记录下来,然后unpooling时候还原其位置,其他全为0

而deconvolution实质上就是convolution

6.Pre-train DNN



Auto-encoder还可以Pre-train DNN,第一步可以得到w1

第二步可以得到w2,依次类推

把w1,w2,w3当做初始的参数,把最后output接上去,再用backpropagation更新所有参数

如果你想了解更多,下面是关于restricted Boltzmann machine的资料

下面是关于deep belief network的资料

Decoder还可以生成我们想要的东西,比如图像

后台回复“LHY2017” 就可以获取 2017年李宏毅中文机器学习课程下载链接~

-END-

0 人点赞