目录
1.Representation includes information of different aspects
3.Application:Voice Conversion
三、Discrete Latent Representation
一、Basic idea of Auto-encoder
1.Auto-encoder
自编码器(auto-encoder, AE)是一类在半监督学习和非监督学习中使用的人工神经网络(Artificial Neural Networks, ANNs),其功能是通过将输入信息作为学习目标,对输入信息进行表征学习(representation learning) 。
自编码器包含编码器(encoder)和解码器(decoder)两部分 。
自编码器模型跟Cycle GAN很像,输入的高维度特征通过编码器还原成低维度的向量,向量再通过解码器转成新特征,encoder的输入和decoder的输出越接近越好。
Cycle GAN是用生成器将x转成y,再将y用生成器还原成x,比较输入和输出相似度。
把高纬度的东西转化为低维度的东西就叫做Dimension reduction。
2.Why Auto-encoder?
为什么Auto-encoder能获取存储图片信息的低维度的向量呢? 这些向量怎么就能代表这个图片呢?
因为图片的变化看起来大,但是却很小。图片的变化类型是有限的, 我们只需要记录这几种变化类型就可以。例如图中四个3*3大小的图片, 只有两种类型, 所以我们只需要记录这两种变化类型就行了, 01和10就够了。
3.De-noising Auto-encoder
降噪自动编码器,该模型会把有噪声的图片降噪。这个模型的不同之处就是在输入中增加了杂讯。
二、Feature Disentanglement
1.Representation includes information of different aspects
图片:
音频:
句子:
2.Feature Disentanglement
特征解耦:将输入的特征转为code,code里包括了特征的各种信息。
3.Application:Voice Conversion
声音转换:将a的声音转成b的声音。
声音转换应该注意两点:
第一,声音转换的输入端长度与输出段长度不一定是相等的,甚至在很多时候不相等更好。
第二,声音转换都是基于图像形式的音频特征进行转换,也就是我们先将音频转化成为图像,然后对图像在进行端到端的训练,所以我们输出的结果也是图像, 所以需要用Vocode的方式将输出的图像还原成为声音。
三、Discrete Latent Representation
1.Discrete Representation
我们再了解一下Discrete Latent Representation。 过去,我们vector都是表示real numbers 。现在,我们可不可以重新做一个vector,比如1代表男,0代表女等。向量的表示有三种可能性: Real Numbers、Binary和One-hot。
例子VQVAE:Codebook中是一系列向量,是学习出来的数据 ,同时也是预定义的向量。我们需要的就是计算Encoder出的向量和Codebook中的相似度,相似度最高的那个向量就作为Decoder的输入, 类似于Self-attention。 当然也可以用在语音识别中,在语音识别中,codebook中的向量完全可以代表kk音标!
2.Text as Repersentation
我们把vector从向量改成文字,该文字经过Decoder后会得到整个文章。 而该sequence就是文章的核心和摘要。 这是一个由两个seq2seq组成的的auto-encoder, 而这个任务仅仅需要一大堆的文件拉进行训练这个模型。但是这是不行的,因为Decoder会发明自己的暗号,中间生成的文字是看不懂的文字! 这要怎么办呢? 这个时候就可以添加一个Discriminator,Discriminator是可以分出输出是不是真的汉字,所以Discriminator可以判断中间的单词有没有问题。这样就添加了一个双向限制, 既能生成文章, 又可以判断出是不是汉字。 这就是类似Cycle GAN的概念。
四、More Applications
1.Generator
我们可以将Decoder作为Generator,我们通过模型训练之后得到Decoder。
2.Compression
如果图片太大了,我们可以把Encoder当作压缩器来生成低维向量。 Decoder做的事情是Decompression,但是这样得出的图片会造成失真的。
3.Anomaly Detection
异常检测:判断输入的与训练集中的数据相似度。
检查输入的x和训练数据是不是一样的,但是我们的x正确不正确完全取决于训练数据。
那么,正常与异常要根据具体情况而定。比如说我们要做一个诈骗侦探 ,而我们不容易收集到异常的资料,我们往往假设有一大堆正常的资料,只有一个类别的资料 ,所以这不是一个简单的Binary Classification。 这时候Auto-encoder就派上用场了。
和分类任务的区别: 分类任务是需要大量正反样本的,而且其中很多错误的样本就混在了正样本里。 但是现实中是很难收集很多的负样本的。 再比如人脸识别,这肯定不能收集所有的负样本啊,只能是收集正样本。这是一个one-class问题,而不是二分类问题。 这就需要Auto-encoder登场了。
4.Approach:Auto-encoder
人脸检测:我们检测是不是真人的人脸,那么我们就可以通过搜集一堆的人脸图片,通过将它们encoder和Decoder,如果能合成真人图片,那么就是真人。如果输入的是二次元图片,那么在经过encoder和decoder后是合成不了正常的图片的。