赞
踩
x
经编码器压缩成y
,y
再由解码器转化成x*
,其目的是让x*
和x
尽可能相近。注意:尽管自编码器是自监督模型,但是输入的数据总归是有规律的,以猫狗识别数据集为例,模型不知道它们是什么,但做开发的我们却是知道的,我们不能揣着明白装糊涂,要利用我们上帝视角的优势更好的把握全局,优化算法。
比如,因为输入的是一个女生的图片,所以导致code的第一个维度就是1,她戴眼镜了,所以code的第二个维度也是1,她有一头乌黑的长发,因此code的第三个维度还是1,她的身高是超过170cm,code的第四个维度仍是1,但很可惜她不喜欢你所以code的第五个维度是0。
- 潜在离散表示相关技术中较为知名有VQ-VAE,其算法流程大概如下
- step1:首先设置 K 个向量作为可查询的 Codebook备用,一般这k个向量也是经过学习获得的。
- step2:输入的数据经过encoder编码转换成code,这个code通过最近邻算法与Coebook中的k个向量作对比,找出最接近的它的一个向量。
- step3:将筛选出来的向量作为解码器的输入进行解码重构。
- VQ-VAE 最核心的部分就是 Codebook 查询操作,通过使用具有高度一致性的 Codebook 来代替混乱的中间表征,可以有效的提高数据生成的可控性和丰富度。把它用在语音上codebook可能学到最基本的发声部位(phonetic音标),codebook里的每个向量对应着某个发音,就像对应某个音标符号。
- 一个强大到可以轻易的记住所有训练数据的解码器乱杀一切,而编码器只需要给所有数据无脑的分配一个毫无意义的一对一的编号,每个样本经过编码器得到的code相互混杂,彼此孤立,毫无关系,整个code里没有任何有价值的信息,学号跟它比起来都是信息量巨大。
- 实际上这时候的解码器就是个大型的switch…case…结构,不在code范围的一切编码都用“default语句“生成一个“四不像”。
没有平滑的过渡
。这就导致了自编码器的生成几乎是一对一的,只有靠近训练数据对应code的点生成的数据才可能有意义,即使是一个小的扰动也有可能导致输出的数据非常离谱。聚类的效果差
,可解释性差,预期中希望code里包含语义信息往往实现不了,code往往扮演一个编号的角色。实际上前面谈及的自编码器的应用潜质,多数都是由VAE实现的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。