机器学习笔记5-5:无监督学习——Auto-encoder

*注:本博客参考李宏毅老师2020年机器学习课程. 视频链接


1 Auto-encoder基本概念

1.1 基本任务

BERT和GPT这样的预训练网络,都能够用来做自监督学习,即在没有标签的情况下,仅靠大量无标注的数据来训练网络。Auto-encoder的任务也是自监督学习。

1.2 网络结构

图1描述了Auto-encodeer的基本结构。

在这里插入图片描述
(图1,来源:李宏毅2021春机器学习课程)

Auto-encoder的结构包含一个Encoder和一个Decoder。Encoder用于将输入向量变换到另一种表示,Decoder则用于将变换后的表示重新构建为与原始输入同一空间的输出向量。训练过程中,要求输入和输出尽可能相似。涉及到的相关名词如下:

  • feature(特征):Encoder的输入和输出中表示的图像信息,都称为特征。
  • Embeding,Representation,Code:都是对Encoder输出的不同称呼,
  • Dimension Reduction(降维):一般而言,Encoder的输入的维度都比输出的维度更高
  • Bottleneck(瓶颈):由于Encoder降维的特点,导致输出层最后几层的维度比开始的层要小得多,因此也称这一部分为瓶颈。

输入数据经过Auto-encoder的Encoder之后,作为下游任务的输入,而Decoder仅仅适用于预训练阶段。

1.3 Encoder

对于诸如图像这种输入来说,经过Encoder输出的embeding维度比输入要小,但是这种降维并不会导致许多信息丢失。一种直观的解释是:图像虽然是一个高维向量,但是并非这个向量空间中所有的向量都是一张“图片”,能够被人类所认识的图像仅仅占向量空间的一小部分。

1.4 Auto-encoder起源

Hinton 在2006年就提出了Auto-encoder,但是结构与现在完全不同。

1.5 De-noising Auto-encoder

在将输入向量送入Encoder之前,先对数据添加噪声,然后再送入Encoder-Decoder,最终要求Decoder的输出与加噪声之前的数据尽可能相似,这就称为De-noising Auto-encoder。

实际上,这个概念并不陌生,再BERT的预训练过程中,使用到的训练方式就是遮住一部分输入数据,令模型输出原始输入,可以看作一种De-noising Auto-encoder。

在这里插入图片描述
(图2,来源:李宏毅2021春机器学习课程)

2 Auto-encoder的应用与延伸

2.1 Feature Disentangle

既然在Auto-encoder中,Encoder的部分能够将输入特征降维,输出包含所有输入信息的embeding,那么从理论上来说,这个embeding还可以进一步处理。可以训练网络,让其输出的embeding具有某种规律,例如对声音讯号来说,输出的embeding前50维代表声音的内容,后50维表示说话人的特征。这种从原始输入中提取某种感兴趣的成分的技术,就称为Feature Disentangle,参考以下三篇关于语者转换的论文,这三篇文章都是用了Feature Disentangle的技术,因而不需要平行语音数据(即不需要不同的说话人念同一句话的数据)。

2.2 Discrete Representation

最初的Encoder的输出都是实数向量,其实,Encoder的输出完全可以不是实数,也可以是一个二进制向量,或者one-hot编码,不同的输出可以具有不同的含义。例如,如果是二进制向量,那么可能某一个分量的0或1就代表了输入的说话人的性别,而one-hot编码可能用在无监督分类上,比如手写数字识别。

对于这种离散表示的Auto-encoder,最知名的是Vector Quantized Variational Auto-encoder(VQVAE)。该模型定义了一个Codebook,它是一个向量的集合,Encoder的输出数据将会与Codebook中的向量计算相似度,以最接近的向量作为Decoder的输入。再语音处理上,Codebook可能能够学习到语音最基本的发音单位,参考:Unsupervised speech representation learning using WaveNet autoencoders.

除了向量,Encoder甚至可以输出一段文字,这段文字再经过Decoder之后,重新变回原来的输入。这样做也许这段文字就是输入数据的摘要,但是如果仅用Encoder-Decoder结构,输出的文字往往是人类看不懂的,因此可以将输出embeding再接入一个Discriminator中,让它为输出embeding打分,从而使之与人类能看懂的文字接近。如图3,实际上,这正式一种Cycle-GAN的结构。

在这里插入图片描述
(图3,来源:李宏毅2021春机器学习课程)

2.3 Generator

既然Decoder拥有从embeding重建原始输入的能力,那么它也具有和GAN中的Generator相似的能力,因此也可以将训练完成后的Decoder作为Generator来使用,仅仅需要一些修改,就能将Auto-encoder变成具有生成能力的Variational Auto-encoder(VAE)。

2.4 Compression

根据Encoder降维的能力,它将较高维度的输入转换为较低维度的输出,这实际上是对数据的一种压缩,参考:

2.5 Anomaly Detection(异常检测)

即检测输入模型的数据与训练集中的数据是否相似。异常检测的技术可以用在诈骗检测、网络攻击检测、癌症检测等领域。

训练Auto-encoder完成这种任务时,往往训练集中只有一个类别的数据,这些数据都是正常的,或者仅有少量非正常的数据(但是由于是无监督学习,事先并不知道数据中到底有哪些是异常数据),因此无法当作是一个二分类问题。

如何判断异常数据呢?训练结束后,假设输入一张正常的数据,由于输入与训练集中的数据非常相似,那么模型应该能够较准确地还原输入,但是如果输入了一张异常的数据,那么模型就无法重建输入。基于这种想法,只需要计算输入和输出的距离即可判断数据是否存在异常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值