VAE是variational autoencoder的缩写,意为变分自动编码器。它是一种生成模型,通过学习潜在空间的分布来生成数据。
VAE的主要构成包含:
- 编码器(Encoder): 将输入映射到潜在空间(latent space)
- 解码器(Decoder): 将潜在空间映射回输入空间
- 变分推断网络(Variational inference network): 学习潜在空间的先验分布
- 损失函数(Loss function): 通常包含重构损失(reconstruction loss)和KL散度(KL divergence)
VAE的工作流程是:
- 输入传入编码器,得到潜在空间的表示z
- z和随机噪声epsilon一起输入到变分推断网络,得到后验分布的参数
- 从后验分布中采样,得到z_sample
- z_sample输入到解码器,重构出输入的重构x_recon
- 计算重构损失(x与x_recon间的损失)和KL散度(后验分布与先验分布的差异)
- 优化编码器、解码器和变分推断网络,以最小化损失函数
VAE的特点是:
- 可以生成新的数据,而不仅仅是重构输入
- latent space 的先验分布是可学习的, model 可以自动找到数据的潜在特征
- 更加强调 latent space 的分布,产生的样本更加可信
- 编码器输出的不再是确定的hiddem state,而是hiddem的分布
- KL散度的使用使得模型可以生成更加可信的样本
所以,总体来说,VAE是一种强大的生成模型,通过学习潜在空间的分布,它可以进行更加真实的数据生成。相比于AE,VAE可以生成新的假样本,而不仅仅是重构输入。这使其在许多领域都非常实用。