机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)

文章目录

More about Auto-Encoder

还是Auto-Encoder,已经很熟悉那个模型类吧

机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)

Auto-encoder是一个基本的生成模型,更重要的是它提供了一种encoder-decoder的框架思想,广泛的应用在了许多模型架构中。简单来说,Auto-encoder可以看作是如下的结构,它主要包含一个编码器(Encoder)和一个解码器(Decoder),通常它们使用的都是神经网络。Encoder接收一张图像(或是其他类型的数据,这里以图像为例)输出一个vector,它也可称为Embedding、Latent Representation或Latent code,不管它叫什么,我们只需要知道它是关于输入图像的表示;然后将vector输入到Decoder中就可以得到重建后的图像,希望它和输入图像越接近越好,即最小化重建误差(reconstruction error),误差项通常使用的平方误差。

那么今天主要讲三件事:

  • More than minimizing reconstruction error
  • Feature Disentangle
  • More interpretable embedding

What is good embedding?(好的embedding是怎样的?)

机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)

之前要做embedding的根本原因是:An embedding should represent the object.虽然我们希望Decoder输出的重建图像和输入到Encoder中的图像越接近越好,但是通常我们并不关注重建后的图像是什么样的,更多的希望得到一个关于输入图像有意义、解释性强的embedding。

如何评价一个embedding是否是好的呢?最直观的想法是它应该包含了关于输入的关键信息,从中我们就可以大致知道输入是什么样的。或是从流形学习的角度来看,希望它可以学到关于高维输入数据的低维嵌入。比如当我们看到蓝色耳机时,我们想到的是三九,而不应是一花,那么蓝色耳机对于三九就是一个好的embedding,对于一花来说就不是一个好的embedding。


Beyond Reconstruction:Discriminator

机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)

除了使用重建误差来驱动模型训练外,可以使用其他的方式来衡量Encoder是否学到了关于输入的重要表征吗?答案自然是YES!假设我们现在有两类动漫人物的图像,一类是三玖,一类是凉宫春日。如果将三玖的图像丢给Encoder后,它就会给出一个蓝色的Embedding;如果Encoder接收的是凉宫春日的图像,它就会给出一个黄色的Embedding。那么除了Encoder之外,还有一个Discriminator(这里可以就看作一个二分类的Classifier),它接收图像和Embedding,然后给出一个结果表示它们是否是两两对应的。

借助GAN的思想,我们用 ϕ \phi ϕ 来表述Discriminator(Φ来表述Discriminator参数),希望通过训练最小化D的损失函数,loss of the classification task is 输出与标签的交叉熵 L D L_D LD​,那么训练模型参数来最小化 L D L_D LD​得到最小的损失值 L D ∗ L^*_D LD∗​ :
L D ∗ = min ⁡ ϕ L D L^*_D = \min\limits_{\phi}L_{D} LD∗​=ϕmin​LD​
其中 L D ∗ L^*_D LD∗​来评估向量表示的好和不好。

机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)
  • 如果 L D L_D LD​的值比较小,就认为Encoder得到的Embedding很有代表性
  • 相反如何 L D L_D LD​的值很大时,就认为得到的Embedding不具有代表性
机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)

既然我们知道如何来评估向量表示的好和不好,我们就是要调整encoder的参数 θ \theta θ ,然后用评估方法(根据L∗D 来评估)来让生成向量最优。
θ ∗ = a r g max ⁡ θ L D ∗ \theta^* = arg\max\limits_{\theta}L^*_D θ∗=argθmax​LD∗​
带入 L D ∗ L^*_D LD∗​ 得到:
θ ∗ = a r g min ⁡ θ min ⁡ ϕ L D \theta^* = arg\min\limits_{\theta}\min\limits_{\phi}L_D θ∗=argθmin​ϕmin​LD​
也就是说我们要训练encoder的参数 θ \theta θ和discriminator的参数 ϕ \phi ϕ,使得 L D L_D LD​ 最小化。

这个东西实际可以类比到最原始的auto-encoder模型要同时训练encoder和decoder使得reconstruction error最小。也就是说auto-encoder模型:

机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)

我们现在知道,auto-encoder跟刚才所说的,同使训练encoder和binary classifer一样,只是可以将auto-encoder视为一个特别情况。

如上图所示,刚才我们所说的discriminator是同时将image与embedding做为输入,但如果先将embedding做为input,得到的结果再跟image相减,那它就是一个reconstruction error了。


Sequential Data

除了图像数据外,我们也可以在序列数据上使用Encoder-Decoder的结构模型。

Skip thought

模型在大量的文档数据上训练结束后,Encoder接收一个句子,然后给出输入句子的上一句和下一句是什么。

机器学习-57-Unsupervised Learning:More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)

上一篇:关于宇宙的起源 About the origin of the universe


下一篇:路由文件,配置着 url 路径 和 页面的关系