NTU ML2023Spring Part2.9 Auto encoder

License: CC BY-NC-SA 4.0

基本概念

类似 self-supervised learning,auto encoder 是一种更古老的不需要资料标注的训练方法。

假设你有一堆图片(影像处理的任务),你要训练一个 encoder 和一个 decoder,encoder 读入图片产生向量,decoder 则相反。你的目标是要让一张图片经过 encoder 和 decoder 之后和原来尽量接近(reconstruction)。

诶,好像在哪里见过这个概念?你没记错,当初学习 GAN 时也是这么干的。

训练完了之后,我们可以把 encoder 产生的中间结果拿来做下游任务。

可能你会想,encoder 只要把输入原封不动地输出不就行了吗?注意,encoder 的输出维度一般都远低于输入维度,也就是它要压缩信息。

这么做真的可行吗?从信息论的角度来说不行,因为在压缩之后必定伴随信息的损失,但考虑到真正的图片其实和随机的噪声有区别,这种压缩好像也是可以的。经过压缩之后再给下流任务训练,结果往往就会比不压缩信息要好。

还有一种变种是 de-noising auto-encoder,我们在输入图片前随机加一些噪声,试图通过 encoder 和 decoder 还原原来的图片。这个概念其实在之前 bert 训练的时候也已经见过。

明明 auto-encoder 是先出的,到底是谁像谁啊(

feature disentanglement

先看 disentangle 这个词,它指的是把原来纠缠在一起的东西解开。所以 feature disentanglement 就是把不同的 feature 分离开。对于图片,可能是分离出不同的纹理、物品;对于语音,可能是说话者和内容。

上面提到的 encoder 虽然提取了信息,但这些信息全部杂糅在一个向量里,怎么分开呢?这就是 feature disentanglement 要做的事了。但是视频没有深入讲原理。

它的一个应用是做语音转换,就是把你说的话转换成另一个人的声音。本来 supervised learning 也是可以做到的,但这需要两个人念同样的句子;现在只要 feature disentanglement,然后把语音的特征的部分拿出来就可以了。在影像和 NLP 上也可以有相似的应用。

discrete latent representation

现在 encoder 会将输入的东西转换成向量。那能不能输出其他形式的东西呢?如果强制让 encoder 输出 one-hot vector,也许就能做到 unsupervised classification.

Vector Quantized Variational Auto-Encoder (VQVAE): 把 encoder 的输入和一些特定的(预训练过的)向量算相似度,取相似度最大的那个给 decoder。这样就把连续的 embedding 转化成离散的。

representation 还可以不是向量。比如 encoder 输入一篇文章,输出一段文字再丢给 decoder 还原。但这样的话 encoder 和 decoder 都要是 seq2seq model。中间输出的文字就类似于文章的摘要。但人类不一定能看懂,所以可以借用 GAN 的概念,再找一个 discriminator 来让中间的结果可读。(这不就是 cycle GAN 吗?)

LHY:训练不起来?上 RL 硬做,大力出奇迹.jpg

甚至可以把 embedding 的结构设置成一棵树。那这么说是不是可以上 OI 的图论了(

更多应用

在训练完 auto encoder 之后,我们就得到了一个 decoder。给它输入一个随机的向量就能当 generator 用。

既然 encoder 做的是提取信息,那它就可以拿来做图片压缩,但是会有失真。

anomaly detection(异常检测):给你一些资料 \(x_{1 \cdots n}\),需要判断输入 \(x\) 与之前的资料是否相似。

有了 anomaly detection,就可以做很多检测异常行为的应用了:

  • fraud detection
  • network intrusion detection
  • cancer detection

这种和 binary classification 有什么区别呢?一般来说异常的资料不大容易收集,而 binary classification 需要这些资料。对于 auto encoder,如果新的输入在经过 encoder 和 decoder 后变了很多,我们就有理由相信在训练时没见过这种资料,也即“异常”数据。

当然,auto encoder 只是异常检测中的一种实现方式。

posted @ 2025-04-05 08:15  383494  阅读(16)  评论(0)    收藏  举报