在了解VAE之前,需要简单熟悉Auto Encoder的概念。Auto Encoder中文翻译为自动编码器,由Kingrma和Welling于2013年12月与Rezende、Mohamed和Wierstra于2014年1月提出。
自动编码器是一种将深度学习与贝叶斯推理结合在一起的神经网络模型,该模型的最初是为了对数据进行压缩。如图7-1所示是一个标准的自动编码器,它的基本结构是一个包含多个隐含层的多层感知器,其结构特点在于输入层与输出层拥有相同的节点数量,中间编码层的节点数量小于其他层的节点数。网络在输入层到中间编码层之间的部分称为编码器,中间编码层到输出层之间的网络为解码器。
图7-1 自动编码器
编码器和解码器形式多样,对于图像领域来说,常常使用的就是卷积神经网络,其作用是将高维矩阵A压缩到低维B,然后再将B还原成“A’”,尽量使得A=A’。自动编码器会为整个卷积神经网络训练过程设定目标,让输出与输入的差异尽量小。图7-2展示的是自动编码器在手写数字MNIST数据集上的应用,可以看到经过训练,原始输入数据的手写数字“2”在经过编码器后形成了一组压缩表示的编码,压缩表示的编码经过解码器之后会输出一个与原始输入非常接近的输出图像,基本可以还原手写数字“2”的形态。(www.xing528.com)
图7-2 数字2的自动编解码
在图像的编码解码过程中,为了保证变换前后的图像尽量相似,可以计算两个图像每个像素点的差异,计算像素级别的均方误差作为损失函数值,利用梯度下降法更新网络参数,以达到降低损失函数值的需求,从而完成训练。
看起来自动编码器似乎是生成模型的一个不错的实现方案,但实际上其并不适合用来实现数据生成,具体原因可以以手写数字生成为例进行分析。对于每一个手写数字,会利用编码器产生一个相应的编码,对解码器输入相应的编码时大多能还原出对应的手写数字,然而对解码器输入从未出现过的编码时,输出的图像是与手写数字数据集完全没有关系的噪声,这说明自动编码器模型不能够对新的编码产生有相关意义的数据,缺乏“无中生有”的能力。针对该问题,研究人员提出了变分自动编码器(VAE)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。