前言
Auto-encoder(二)
一、Feature disentanglement
假设把一段声音讯号输入encoder,encoder输出的向量中哪些维度代表这句话的内容,哪些维度代表这句话是谁说的,这个问题是不知道的。Feature disentanglement目的是想知道在train auto-encoder时,embedding的哪些维度代表了哪些资讯。
Feature disentanglement的应用,如voice conversion(语者转换:类似柯南的领结变声器)。在过去,通过supervised learning的方法,用成对的训练资料,双方说很多同样的句子。
但是让两个人说同样的很多话,不是很切实际。
实际上,是收集到很多人类的声音讯号,去训练一个auto-encoder,同时做了feature disentanglement技术,从而知道哪些维度代表了语音的内容,哪些代表了语者的特征。
接下来就可以把声音和内容的部分互换,组合成一个新的向量,将新的向量给decoder就可以获得对方说这句话的声音。
二、Discrete Representation
到目前,假设embedding是一个向量,那可不可以是binary。Binary的好处是每一个维度代表某种特征有或者没有。比如某一维度代表性别(0/1 男/女)。
或者是one-hot vector,只有一个维度是1其他都是0。也许可以做到unsupervised的分类,比如设10维的one-hot vector,encoder的输入是0-9的图片,这样也许一个维度对应一个数字,可以做到没有label资讯的情况下,完成分类。
Vector quantized variational auto-encoder(VQVAE)(Discrete Representation的一个应用)
有一个codebook,包含很多向量,这些向量都是learn出来的,用encoder输出的向量和这些向量算相似度,取相似度最高的一个向量,这个向量通过decoder输出图片。训练的时候让输入的图片和输出的图片越像越好。这时候decoder的输入只有codebook里面向量数量的个数,没有无穷无尽的可能。
Embedding不一定要是向量,可以是一段文字。把embedding变成一段文字的好处是他没准是这个文章的摘要。把一篇文章给encoder,encoder输出的文字经过decoder可以还原为文章。这个encoder、decoder需要是一个seq2seq的model如transformer。这是一个seq2seq2seq的auto-encoder。但是encoder和decoder之间会产生暗号,只有双方知道,decoder可以还原,但是人类看不懂。通过GAN的概念,加一个discriminator,discriminator看过人写的句子,这些句子不需要是这个文章的,而是另一堆句子。Encoder要想办法骗过discriminator,encoder产生的句子不仅要能还原为原来的文章,还要让discriminator认为是人写的。这个过程是一个cycle gan。
三、Anomaly detection异常检测
异常检测的问题主要在于异常资料的收集,因为正常资料很容易收集,但是异常的资料会非常少。
假设用auto-encoder。检测是否是真人人脸,用真人人脸训练一个auto encoder,在测试时如果是auto encoder看过的,那么可以还原回来,计算输入照片和输出照片的差异,如果差异很小,就表示这是真人人脸。
如果输入的不是真人人脸,训练时没看过,那么他无法还原为原图片,输入和输出的差异会很大。那么这个可能就是一个异常的图片。
总结
学习视频地址:https://www.bilibili.com/video/BV1zA411K7en/?p=35&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec