【导读】自编码器是一种非常直观的无监督神经网络方法,由编码器和解码器两部分构成,自编码器近年来很受研究人员的欢迎。本文是机器学习工程师Jeremy撰写的一篇非常棒的博文,介绍了变分自编码器理论基础和工作原理,通过人脸示例帮助读者更直观的理解。本文强调了变分自编码器的理论推导和实现细节,在文末展示了变分自编码器作为生成模型的输出结果。希望深入理解变分自编码器的读者不妨读一读。
Variational autoencoders
变分自编码器
自编码器是发现数据的一些隐状态(不完整,稀疏,去噪,收缩)表示的模型。更具体地说,输入数据被转换成一个编码向量,其中每个维度表示从数据学到的属性。最重要的是编码器为每个编码维度输出单个值,解码器随后接收这些值并尝试重新创建原始输入。
变分自编码器(VAE)提供了描述隐空间观察的概率方式。因此,我们不需要构建一个输出单个值来描述每个隐状态属性的编码器,而是要用编码器描述每个隐属性的概率分布。
▌直觉
举个例子,假设我们已经在一个大型人脸数据集上训练了一个Autoencoder模型,encoder的维度是6。理想情况下,我们希望自编码器学习面部的描述性属性,比如肤色,人是否戴眼镜,从而能够用一些特征值来表示这些属性。
在上面的示例中,我们使用单个值来描述输入图像的隐属性。但是,我们其实更愿意用一个分布去表示每个隐属性。比如,输入蒙娜丽莎的照片,我们很难非常自信的为微笑属性分配一个具体值,但是用了变分自编码器,我们有能比较自信的说微笑属性服从什么分布。
通过这种方法,我们现在将给定输入的每个隐属性表示为概率分布。当从隐状态解码时,我们将从每个隐状态分布中随机采样,来生成向量作为解码器的输入。
注意:对于变分自编码器,编码器有时被称为识别模型,而解码器有时被称为生成模型。
通过构造我们的编码器来输出一系列可能的值(统计分布),然后随机采样该值作为解码器的输入,我们能够学习到一个连续,平滑的隐空间。因此,在隐空间中彼此相邻的值应该与非常类似的重建相对应。而从隐分布中采样到的任何样本,我们都希望解码器理解,并准确重构出来。
深入理解变分自编码器相关文章:
★ 变分自编码器解析
★ 什么是编码器?