李宏毅机器学习笔记第15周_自编码器(Auto-encoder)

文章目录

  • 前言
  • 一、Basic Idea of Auto-encoder
  • 二、Feature Disentanglement
  • 三、Discrete Latent Representation
  • 四、More Applications
  • 总结


前言

自编码器(Auto-encoder)是一种能够通过无监督学习,学习到输入数据高效表示的人工神经网络。本文会简要地说明什么是自编码器(Auto-encoder),以及会介绍到自编码器(Auto-encoder)的应用。


一、Basic Idea of Auto-encoder

  1. 如下图所示,有两个Neural Network,一个是Encoder,输入一张图片,输出一个向量;另一个是Decoder,输入时Encoder输出的向量,输出一张图片;训练目标是Decoder输出的图片与Encoder输入的图片越接近越好(概念与Cycle GAN有点类似)。在这里有一点在Encoder上,它将高维度的图片转成低维度的向量,方便去做下游任务。
    李宏毅机器学习笔记第15周_自编码器(Auto-encoder)_第1张图片
  2. 怎么把高维度的图片转成低维度的向量呢?假设一张图片是3*3的,看起来它会比较复杂,但它却比较有限,只要找到这个有限的条件,就可以实现化繁为简,也就是说可以让机器从较少的资料学到要求的知识。
  3. De-noising Auto-encoder就是指给Encoder要输入的图片添加噪声,但训练目标是Decoder输出的图片与Encoder输入前未添加噪声的图片越接近越好,因此整个过程中有去除噪声的操作。
    李宏毅机器学习笔记第15周_自编码器(Auto-encoder)_第2张图片

二、Feature Disentanglement

Auto-encoder应用在声音讯号中,我们不知道向量的哪一部分代表内容,哪一部分代表语者,因此使用Feature Disentangle是可以做到的。举例Voice Conversion的应用,现在有两个人的声音讯号(一个是自己,另一个是要转换的人),使用Feature Disentangle可以把语音中人的声音和内容区分开来,然后把自己的内容部分与另一个人的声音部分拼接起来输入到Decoder,输出一段被转换后的声音讯号,就可以实现Voice Conversion。
李宏毅机器学习笔记第15周_自编码器(Auto-encoder)_第3张图片

三、Discrete Latent Representation

1. 在Vector Quantized Variational Auto-encoder中,我们会从训练资料中训练出来一些向量,然后与Encoder输出的向量计算相似度后,取相似度最大的向量作为Decoder的输入,这样做的目的是实现了离散化表示。
李宏毅机器学习笔记第15周_自编码器(Auto-encoder)_第4张图片
2. 如下图所示,这是一个seq2seq2seq auto-encoder,它要做的是读一篇文章后,得到文章的摘要,然后再把摘要还原成文章。因此这里Encoder和Decoder会用到seq2seq,但是这里有一个问题是得到的摘要可能是我们看不懂的文字,但是Decoder却能够看懂,于是这里会用到GAN中的Discriminator,让Encoder产生人能看懂的文字。
李宏毅机器学习笔记第15周_自编码器(Auto-encoder)_第5张图片

四、More Applications

1. 如下图所示,可以把auto-encoder的Decoder当作一个generator来使用。
李宏毅机器学习笔记第15周_自编码器(Auto-encoder)_第6张图片
2. 如下图所示,可以把auto-encoder的Encoder当作一个压缩的过程,而Decoder可以当作一个解压缩的过程。但是这里有一个问题是用auto-encoder来做Compression会导致图片失真。
李宏毅机器学习笔记第15周_自编码器(Auto-encoder)_第7张图片
3. auto-encoder可以用来做异常检测(Anomaly Detection)。


总结

在本次学习中,我学习到了自编码器(Auto-encoder),自编码器(Auto-encoder)具有很好的降维能力,并且降维后的向量能够较好保存输入到Encoder的原始信息;自编码器(Auto-encoder)可以作为强大的特征检测器,它可以应用于深度神经网络的预训练,可以提高训练的效率;自编码器(Auto-encoder)可以被当作Generator,用于生成随机生成与训练资料类似的数据;总而言之,自编码器(Auto-encoder)的应用十分广泛。

你可能感兴趣的:(机器学习,深度学习)