赞
踩
结合李宏毅老师机器学习2021——AutoEncoder课程和网上查阅的资料,总结一下对AutoEncoder的理解
将AutoEncoder的decoder当做GAN的generator使用:你把 Decoder 拿出来,这不就是一个 Generator 吗,我们说 Generator,不是就是要吃一个向量,产生一个东西。比如说一张图片嘛。而 Decoder 不正好是吃一个向量,产生一张图片嘛。所以 Decoder,你可以把它当做一个Generator 来使用。
压缩:Encoder 也可以拿来做压缩,你完全可以把 Encoder 的输出,当做是一个压缩的结果。因为一张图片,是一个非常高维的向量,而一般我们 Encoder 的输出,是一个非常低维的向量,你完全可以把那个向量,看作是一个压缩的结果。只不过这个压缩是那种 lossy 的压缩,所谓 lossy 的压缩就是它会失真。
Anomaly Detection(异常检测):异常检测要做的事情就是,来了一笔新的资料,那么它跟我们之前在训练资料里面看过的资料相不相似呢。也就是说你需要有一个异常检测的系统,这个异常检测的系统,是通过大量你已经看过的资料训练出来的。(给它一笔新的资料,如果这笔新的资料,看起来像是训练资料裡面的 Data,就说它是正常的;如果看起来不像是训练资料裡面的 Data,就说它是异常的)。具体的可以用于做欺诈侦测、网络的侵入检测等等。
那说到这有人可能会想说,Anomaly Detection 异常检测的问题,我们能不能够把它当做二元分类的问题来看呢,例如你要做诈欺侦测,你就收集一大堆正常的信用卡纪录,一堆诈欺的信用卡纪录,训练一个 Binary 的 Classifier,就结束啦,何必用到AE框架呢?
这里问题就来了,首先二元分类的问题是一个监督学习的问题,收集资料的成本很高的,但是AE是一种无监督学习的资料,可以给我们降低成本。其次,通常你是比较有办法收集到正常的资料,但你比较不容易收集到异常的资料。你可能有一大堆信用卡交易的纪录,但是多数信用卡交易的纪录可能都是正常的,异常的资料相较于正常的资料可能非常地少。这使得我们没法做监督学习啦,这个时候就是 Aauto-Encoder,可以派得上用场的时候了。例如下面人脸识别的例子,
因为二次元在训练时是没有看过的东西,那你的 Decoder,就很难将二次元把它还原到人脸,就会出现很大的loss。
Feature Disentanglement(特征解耦):Disentangle 的意思就是,把一堆本来纠缠在一起的东西把它解开。
如果是图片的话,就是把一张图片变成一个 embedding,再把 embedding变回图片。既然这个 embedding 可以变回图片,代表说这个 embedding 里面啊,有很多的资讯。包含图片里面所有的资讯,举例来说,图片里面有什么样的东西啊,图片的色泽纹理啊等等。
Auto-Encoder 这个概念也不是只能用在影像上,如果用在语音上,你可以把一段声音丢到 Encoder 里面,变成embedding 再丢回 Decoder,变回原来的声音,代表这个向量包含了,语音里面所有重要的资讯,包括这句话的内容是什么,这句话是谁说的,音色,音质等等等。
如果我们今天把一段声音讯号丢进 Encoder,它会给我们一个向量,但是这个向量裡面,哪些维度代表了这句话的内容,哪些维度代表这句话的语者,也就是谁说的,我们没有这样的资讯。而 Feature Disentangle 想要做到的事情就是,我们有没有可能想办法,在 Train 一个 Auto-Encoder 的时候,同时有办法知道,这个 Representation,或又叫做 Embedding,或又叫做 Code,我们这个 Embedding 的哪些维度代表了哪些资讯呢?我们有没有可能做到说 Encoder 输出一个,举例来说 100 维的向量,我们知道说前 50 维就代表了这句话的内容,后 50 维就代表了这句话说话人的特徵呢,那这样子的技术就叫做 Feature Disentangle。
所以这种技术很明显可以用于语音、音色的转换中啊!这时候有人可能会说,假设 A 说好 How are you,B 也说好 How are you;A 说 Good morning,B 也说 Good morning。他们两个各说一样的句子,说个 1000 句,接下来呢,你有成对的资料,Train 一个Supervised 的 Model,把 A 的声音丢进去,输出就变成 B 的声音,就结束了。但让这明显是不现实的。我们 A 跟 B 都需要念一模一样的句子,念个 500、1000 句,显然是不切实际的。假设我想要把我的声音转成科比的声音,我得把科比找来;更退一万步说,假设我真的把科比找来,他也不会说中文啊,所以根本是不现实的啊。
今天有了 Feature Disentangle 的技术后,也许我们期待机器可以做到:给它 A 的声音 给它 B 的声音;A 跟B 不需要读同样的句子,甚至不需要讲同样的语言,机器也有可能学会把 A 的声音转成 B 的声音。
今天你把你老婆的声音丢进 Encoder,想个办法得出 embedding 中某哪些维度代表你老婆说的话的内容;某一些维度代表你老婆的音色。接下来我们只要把我说话的内容的部分取出来,把你老婆说话的音色特征部分取出来,把它俩拼到一起丢到 Decoder里面,就可以用你老婆的声音,讲我说的话的内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。