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

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

目录

  • 1 Auto-encoder基本概念
    • 1.1 基本任务
    • 1.2 网络结构
    • 1.3 Encoder
    • 1.4 Auto-encoder起源
    • 1.5 De-noising Auto-encoder
  • 2 Auto-encoder的应用与延伸
    • 2.1 Feature Disentangle
    • 2.2 Discrete Representation
    • 2.3 Generator
    • 2.4 Compression
    • 2.5 Anomaly Detection(异常检测)


1 Auto-encoder基本概念

1.1 基本任务

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

1.2 网络结构

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

机器学习笔记5-5:无监督学习——Auto-encoder_第1张图片
(图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。

机器学习笔记5-5:无监督学习——Auto-encoder_第2张图片
(图2,来源:李宏毅2021春机器学习课程)

2 Auto-encoder的应用与延伸

2.1 Feature Disentangle

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

  • Multi-target Voice Conversion without Parallel Data by Adversarially Learning Disentangled Audio Representations,该文章通过单个模型,输入两段语音 s s s t t t,输出新的语音,该语音具有 s s s的内容和 t t t的声音。该文就利用了auto-encoder来分离语音的说话人无关的内容和说话人相关特征,用一个分类器来识别说话人,decoder负责将输入的说话人无关内容和目标说话人相关特征,合成一段语音。
  • One-shot Voice Conversion by Separating Speaker and Content Representations with Instance Normalization,该文章提出了一种one-shot的语者转换(Voice Conversion,VC)方法,利用Instance Normalization(IN)解耦语音内容和特征,即使输入网络的语音从未出现在训练集中,也能实现VC。
  • AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss,该文章提出的AUTOVC模型是当时性能最好的,并且也是第一个实现了zero-shot VC的模型。同样使用了Auto-encoder,并且精心设计了其瓶颈层。

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的结构。

机器学习笔记5-5:无监督学习——Auto-encoder_第3张图片
(图3,来源:李宏毅2021春机器学习课程)

2.3 Generator

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

2.4 Compression

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

  • An End-to-End Compression Framework Based on Convolutional Neural Networks,作者提出了一种使用两个CNN网络(构成Auto-encoder)完成对图片的高质量且低存储的压缩。
  • Lossy Image Compression with Compressive Autoencoders

2.5 Anomaly Detection(异常检测)

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

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

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

你可能感兴趣的:(机器学习笔记,自然语言处理,机器学习,深度学习)