笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder

更详细介绍了Auto-encoder
Auto-encoder在文本与图像的应用
CNN上的Auto-encoder
视频 pdf

Auto-encoder

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
既有Encoder和Decoder就可以互相学习组成Auto-encoder

PCA

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
PCA也存在类似结构,c是低维输出,所以也称为Bottleneck layer。Hidden layer的输出就是Encoder的输出。

Deep Auto-encoder

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder

受限玻尔兹曼机(RBM)初始化(和多层感知机的区别就是有无使用RBM初始化然后进行GD,RBM使用图模型并且复杂,但是提升似乎不够明显),使用了RBM初始化被称为Deep Learning。

左边和右边可以绑定,减少参数量。当然也可以省去这个步骤。

Reference: Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. “Reducing the
dimensionality of data with neural networks.” Science 313.5786 (2006): 504-507

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder

Deep Auto-encoder效果明显好于PCA。

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder

Auto-encoder – Text

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
在信息检索系统中Vector Space Model的好坏取决于文章表示成vector的好坏。
一种文章转vector是在Bag-of-word 表示,比如有10w词汇,那么vector的size就是10w。出现的词就变为1,否则0。可能还考虑使用inverse document frequency添加weight。(出现频率高,重要性低)。但是这个模型没法考虑语义相关。比如没法知道apple和orange都是水果。每个词汇都是独立的。

当然也可以用auto-encoder进行。
比如学习一个Auto-encoder:
笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
经过一个encoder变成2维。Auto-encoder效果明显好于LSA。

Auto-encoder – Similar Image Search

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
就和上面类似。
笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
基于像素和Auto-encoder做图片相似度检索。

Auto-encoder – Pre-training DNN

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
比如有左边一个DNN。我们希望有个初始化参数784 -> 1000。
使用右边的Auto-encoder存在和之前不同的问题是hidden layer的size比input layer 大。可能存在情况就是hidden layer就直接放input,然后w是单位矩阵。所以这种情况要加很强的正则,比如L1正则,希望w是稀疏的。

固定w1的值,学习w2:
笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
固定w2的值,学习w3:
笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
随机给个w4的值,然后微调w1 w2 w3 w4:
笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
如今network,一般不用Pre-training。更多应用场景是在大量有unlabel时候进行Pre-training。

De-noising Auto-decoder

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
添加噪音,希望输出和未添加噪音的输入尽可能一样。

Auto-encoder for CNN

大致结构:
笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder

CNN - Unpooling

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
一种方法是记录Pooling的位置,Unpooling原位置填值,其他补0。但这个不是唯一方法,keras中直接复制4份,省去记录位置步骤。

CNN - Deconvolution

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
反卷积就是padding方式的卷积。不同之处在于weight是相反的。

Next

笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
得到的Decoder可以用来做可视化。注意sample框的左上角没有数据,说以Decoder的图片看起来就很不像数字。
笔记:ML-LHY-16: Unsupervised Learning - Auto-encoder
做L2正则,让分布在0附件。这样sample指定在0附近就好。

以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用