当前位置:   article > 正文

[datawhale202210]李宏毅机器学习2021:自编码器_feature disentanglement

feature disentanglement

结论速递

本次task了解了自编码器的原理。自编码器可以视为是一种自监督学习,由三个主要部分组成,encoder,中间的embedding向量,和decoder。自编码器的的核心思想是化繁为简。常将中间的embedding向量作为后续任务的输入。

自编码器的常见变体包括,de-noising auto-encoder,前面加噪声,要求decoder还原出加噪声前的状态,可以类比BERTmask掉词的用途。Feature disentanglement,特征解构,使得特征具有具体意义。Discrete Latent Representation,离散表征,使中间的特征为离散特征。

1 自编码器的基础

1.1 引入:自监督学习回顾

自编码器可以属于自监督学习的一种,因为不需要喂入打了标签的数据。其实属于是最古老的自监督学习任务(早于GPT等)。事实上,自监督学习这个词起源于2019年,远晚于自编码器诞生的06/07年,这样介绍是为了便于理解。

自监督学习框架由以下两部分组成:

  1. 给模型喂入一些没有标签的数据(自监督/预训练)
    在这里插入图片描述

  2. 微调后可以用在下游任务中
    在这里插入图片描述

1.2 自编码器的构成

以图片处理为例,自编码器的结构如下

在这里插入图片描述
输入图片,经过一个encoder(多层神经网络),转化为一个向量,随后再经过一个decoder(多层神经网络),变成一张图片。

其中decoder类似于GAN中的生成器。

训练的目标是输出和输入越接近越好。和CycleGAN有点类似,就是一个reconstruction(重建)的过程。

中间的vector也被叫做embedding,representation或者code。中间段也叫做bottleneck。

在这里插入图片描述
自编码器常见的用法是,把vector重建出来的feature丢到下游的新任务中去。(将高维的图片进行压缩到低维度向量,也就是降维

李宏毅在此处给出了一些降维的回顾
在这里插入图片描述

1.3 自编码器的动机

自编码器做的事情,是把图片压缩又还原。而还原的前提,是:图片的变化是有限的,使得中间的压缩变量可以描述出这个变化。

在这里插入图片描述

所以自编码器的核心思想,就是化繁为简

自编码器的06年就有人提出,当时人们对深度学习的理解,还是分层的train,但已经有了这个idea。

当时的pre-train指的是,分开训练每一个部分的network, 而微调,是指微调前面pre-train的结果。

1.4 自编码器的常见变形

de-noising auto-encoder。

将输入图片加入噪声后,再放入自编码器。此时的训练目标是,让输出与放入噪声前的输入越接近越好。

在这里插入图片描述

在这种模型中,自编码器还需要有去除噪声的能力。因为encoder看到的是加入了噪声的图片,而decoder要还原的是去除了噪声的图片。

其实BERT的思路和这个很类似de-noising auto-encoder。mask相当于加noise;BERT部分类似于编码器;输出结果类似于embedding;最后微调的部分类似于解码器。整个过程是mask部分的被mask前的重建。

在这里插入图片描述

2 自编码器的其他拓展变形

2.1 Feature disentanglement 特征解构

所谓Feature disentanglement ,就是把原来纠缠在一起的东西,解绑。

可以先看一下自编码器的常见应用,比如重建图像,重建声音,重建文档。

在这里插入图片描述

但是这些应用当中,中间的embedding部分,都是所有内容纠缠在一起的。以音频为例,语义变量和演讲者信息变量,可能是混杂在一起的。

而Feature disentanglement想要做到的事情是,有没有可能在train的时候,就把上述提到的这两种变量分开呢。

在这里插入图片描述

上述截图中,列举了几篇实现Feature disentanglement论文。

Feature disentanglement在实际当中能做什么呢?举个例子:柯南的变声器。

如果实现了Feature disentanglement,则有了A的声音B的声音,A和B甚至不需要说同样的句子,甚至不需要说同样的语言,就可以实现AB的互相变声。

在这里插入图片描述

比如把李宏毅的声音变成新垣结衣的声音。

先分别train有Feature disentanglement的自编码器。

在这里插入图片描述
然后再,把说英语的李宏毅部分的语言内容向量,和说日语的新垣结衣部分的声音向量,再丢到decoder里,就有机会实现一个说英文的新垣结衣。当然反过来也是可以的,即一个说日语的李宏毅。

在这里插入图片描述

2.2 Discrete Latent Representation 离散表征

我们目前学到的表征都是一个离散向量,有没有可能是一个binary的向量(就更好解释),或者是一个one-hot的向量呢。

在这里插入图片描述

这种思路下,最知名的是VQVAE。

VQVAE的思想是,encoder生成一个向量后,去和codebook(一系列的离散vector)对比,找到一个相似度最接近的向量作为生成向量,再输入给decoder。

codebook机制和self attention有点像,vector相当于query,coderbook里的vector相当于key。

在这里插入图片描述

这样做的好处是,输入decoder的vector一定是codebook里的向量。

在这里插入图片描述
对于语音来说,codebook可以是由最基本的发音单位组成的。

进一步的想法,如果中间向量不是一个普通向量,而是一段词向量,那是不是可以视为是文章的summary。当然此时的encoder和decoder需要是Seq2seq的。那么就可以让机器自动学会做无监督的总结。

在这里插入图片描述

参考阅读

  1. 李宏毅《机器学习/深度学习》2021课程自编码器(上)
  2. 李宏毅《机器学习/深度学习》2021课程自编码器(下)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/851127
推荐阅读
相关标签
  

闽ICP备14008679号