自编码器的应用有两个方面,第一是数据去噪,第二是进行可视化降维。然而自动编码器还有着一个功能就是生成数据。
自编码器由两部分组成,一个是编码器,一个解码器,编码器将输入数据压缩进行编码,解码器将编码还原成原始数据;但是自编码器有一个缺陷,生成的编码不连续,这里通过一个例子说明:
比如对于属于A类的所有样本来说,编码的第一位可能都在1-2之间,而属于B类的所有样本,编码的第一位都在3-4之间,这就导致2-3之间的编码没有对应类别,当我们用训练好的自编码器去生成随机样本时,如果随机生成了一个编码,第一位是2.5,那么模型生成的样本可能不符合我们的要求。
而变分自编码器就很好的解决了这个问题,简单来说自编码器给出的是一个单个确定值,而变分自编码器给出的是一个概率分布(每个值都给出一个概率);变分自编吗器不会直接生成原本对应的编码,而是对于每一个样本编码器会给出一个编码对应的分布(给出正态分布的均值和方差),然后在这个分布中随机选择一个值,这样就保证编码的连续性,当我们随机给出一个编码时,网络能够给出一个相对合理的输出
参考文章: