C/C++教程

【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder

本文主要是介绍【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes

本节对应笔记:

  • https://github.com/Sakura-gh/ML-notes/blob/master/ML-notes-md/22_Unsupervised%20Learning%20Deep%20Auto-encoder.md
本节内容综述
  1. Auto-encoder 思想是,对数据进行压缩;此外,要有一个 Decoder 来把数据解压。Encoder 与 Decoder 在一起训练。
  2. 从 PCA 开始介绍起。可见【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA & Matrix Factorization。
  3. 开始介绍 Deep Auto-encoder ,2006年的成果。
  4. 用在文字处理上Auto-encoder Text Retrieval。
  5. 此外,也可用在图像搜索上Similar Image Search。
  6. 还可以用在预训练神经网络上Pre-training DNN。这个方法可能很适用于半监督学习。
  7. 此外,还有一些加噪的编码方法De-noising auto-encoder,还提及了Contractive auto-encoder。
  8. 还提及了 Restricted Boltzmann Machine 以及 Deep Belief Network,见 Learn More 。
  9. 最后详细介绍了 CNN 。介绍了很有趣的去卷积,发现去卷积其实就是卷积。
  10. 最后进行思考,我们是否可以用 Decoder 来产生新的东西?

 

文章目录

  • 本节内容综述
  • 小细节
      • Deep Auto-encoder
      • Auto-encoder Text Retrieval
        • Bag-of-word
      • Auto-encoder Similar Image Search
      • Auto-encoder Pre-training DNN
      • De-noising auto-encoder
      • Learn More
      • CNN as Encoder
        • Unpooling
        • Deconvolution
      • Next...

 

小细节

Deep Auto-encoder


此外,注意到可以按照 PCA的思路,将 Encoder 与 Decoder 的参数一一对应。这可以通过为二者赋同样的初值得到。并且,还需要设置同样的更新过程,这样可以节省一半的参数,降低过拟合的概率。

但是这并不是必要的。

来看一篇 2006 年的论文成果。

如图,使用了 Deep Auto-encoder ,可以解码会很清晰的图片。


如图,使用了深层的编码,即便是2维的编码,其聚类效果也是很好的。

Auto-encoder Text Retrieval

Bag-of-word


如果这个词出现过,在词袋(一个词袋可能表示一篇文章)中,就是1,否者是0。


如上,使用 Auto-encoder 效果远好于 LSA 。

Auto-encoder Similar Image Search


如上,直接算像素插值,找不到好结果。

如上,如果经过编码,会找到比较同类的结果。

Auto-encoder Pre-training DNN

如上图右边,要注意,可能需要对编码的层进行一个大的正则(当编码层维度大于被编码对象时)。

如上,然后保存住这个网络的参数。训练下一层。

如上,再训练长度为 500 的这一层。


之后,再通过反向传播微调就行。

注意:

  • 现在可能已经不太需要使用这个预训练技术了(因为机器条件好了);
  • 但是如果有大量无标签数据和少量标签数据,我们可以通过无标签数据进行预训练。

因此,这个方法可能更适于半监督学习。

De-noising auto-encoder


如图,在输入时,加入一些噪声,这样,神经网络就会学到一些去噪的技巧。

此外,还提到了Contractive auto-encoder,在编码时,做个约束,目的是加了噪声编码还能不变。而De-noising 是为了解码后还能还原。

Learn More



上述两个,都不是神经网络。李老师不准备在本课程中展开。

CNN as Encoder


如图,怎么做去卷积层(Deconvolution)和去池化层(Unpooling)呢?

Unpooling


如上,做 Unpooling 的前提是,要记得Pooling在哪里取的值。

但是,在 Keras 里没有记录这些位置,直接做了重复值。

Deconvolution

其实 Deconvolution 就是 convolution 。

老师先拿一维的卷积举例子。很巧妙。因此,在Keras里甚至直接使用卷积层就行。

Next…


如图,我们做了一个二维的 code ,在红色框框里取样;发现左上角”四不像“,因为红色框框左上角确实没有东西。

我们还可以对 code 加 L2 正则,以限制 code 产生在原点附近。

如上,发现两个维度其实是意义的:

  • 从左到右,是否有圈圈;
  • 从上到下则表示是否倾斜。

 

这篇关于【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!