A Gentle Introduction to Probabilistic Modeling and Density Estimation in Machine Learning

And

A Detailed Explanation of Variational Auto-Encoder

by

Jiyang Wang

Jiyang_wang@yahoo.com

Github.com/2wavetech

简介

非监督机器学习(Unsupervised Machine Learning)中的数据分布密度估计(Density Estimation)、样本采样(Sampling)与生成(Generation,或Synthesis,即合成)等几类任务具有重要的应用价值,这从近年来生成对抗网络(GAN)的流行就可以看出。完成这类任务的模型称为生成式模型(Generative Model)。其实,另一种比GAN更早一点儿出现的生成式模型,即差分自编码器(VAE),具有同样的理论意义和实用价值。
但要彻底搞懂VAE的思想脉络,需要具有比较多的概率论、信息论、概率图模型和机器学习的知识。举例来说,在VAE的原始论文 ”Auto-Encoding Variational Bayes“的2.2节中,论文作者说到需要优化数据集的似然函数的下限ELBO时提到以下内容但未加任何解释:

image.png

可能很多读者与我一样,在刚读到这句话时,心里充满了疑问。什么是Monte Carlo gradient estimator?为什么说它有很大的方差?方差大了意味着什么?如果这是个问题,如何解决这个问题呢?VAE模型与解决这个问题有什么关系?
当我终于搞懂上面那句以及全篇论文的每一句话时,我意识到,VAE模型具有深厚的理论背景,它并不是一时顿悟的产物,而是出自一个绵密的思想脉络。我们不能只见树木不见森林,目光只停留在VAE本身;而是应该登高望远,进而在理解它的思想精髓的基础上能够进一步改进它甚至提出自己的新方法。
本文将从与VAE有关的基本概念开始,逐步深入,详细解读VAE。已经知道这些基础知识的读者可以略过本文中的相应部分的内容。这里介绍的基础知识和概念针对VAE的内容作了简化,也未刻意追求数学上的严密性,这一点需要注意。想全面深入了解这些内容的读者可以很容易找到专门的书籍或文章,比如由Ian Goodfellow、Yoshua Bengio和Aaron Courville写的新书《Deep Learning》很全面地介绍了深度学习所使用的基础知识,在网上可以免费阅读(http://www.deeplearningbook.org/)。本文适合那些具有入门级的机器学习和最基本的概率论知识的读者阅读。顺便说一句,《Deep Learning》这本书需要比较多的背景知识才能完全读懂。我在这里发表的关于VAE的系列文章有助于大家读懂《Deep Learning》。
本文第一章先简要说明模型、模型对概率分布的表达、以及概率模型的建模方法。第二章 介绍分布密度估算的采样方法,主要内容是MCMC算法。第三章介绍分布密度估算的优化方法,包括EM算法和VB算法。第四章详细解释自编码VB方法及VAE模型。第五章是总结。本文实现的CVAE模型使用了Python语言及Keras/TensorFlow。

版权声明:任何引用本博客的内容,请注明出处。 http://blog.51cto.com/13811808