变分深度嵌入(Variational Deep Embedding, VaDE)


变分深度嵌入(Variational Deep Embedding, VaDE)

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

    这篇博文主要是对论文“Variational Deep Embedding: An Unsupervised and Generative Approach to Clustering”的整理总结,阅读这篇博文的前提条件是:了解高斯混合模型用于聚类的算法,了解变分推断与变分自编码器。在知道高斯混合模型(GMM)与变分自编码器(VAE)之后,VaDE实际上是将这两者结合起来的一个产物。与VAE相比,VaDE在公式推导中多了一个变量c。与GMM相比,变量c就相当于是GMM中的隐变量z,而隐层得到的特征z相当于原来GMM中的数据x。下面主要介绍VaDE模型的变分下界(损失函数)L(x)的数学推导过程。推导过程用到了概率论与数理统计的相关知识。

1. 前提公式

计算过程中用到了正态分布的一阶矩与二阶矩计算公式。

2. VaDE损失函数公式推导过程

最终的聚类结果是由q(c|x)得到的,q(c|x)相当于GMM中的隐变量的后验概率γ。

 下面将损失函数拆成5项,并一项一项进行求解。

3. VaDE算法总体流程

4. 疑问

    1)GMM算法的参数pi并没有进行归一化处理,在更新过程中能保证pi的和始终为1吗?这个问题在作者评论里面有回答,说pi相比于参数miu, sigma来说,对结果影响不大,但又有人问了,如果遇到非平衡数据呢?这种情况下pi的影响还是比较大的。

    2)后验概率γ在代码里并不参与更新,为什么不和GMM的其他参数(pi, miu, sigma)一样进行梯度下降更新呢?而是直接套公式?有什么数学依据吗?这个在作者评论里面有人提到过,但是未被回复。

    3)预训练到底是怎么做到的,仅仅是用SAE训练得到的结果吗?原作者代码里面只给出了预训练之后得到的具体参数,并没有给出预训练的代码。预训练这个问题在作者评论里面有被提到。预训练阶段还是非常关键的一步,当然,有人是这样做的:预训练使用VAE模型。

    如果能解决我的疑问,欢迎在评论区回复,一起探讨~

5. 参考文献

[1] 聚类——GMM - 凯鲁嘎吉 - 博客园

[2] 变分推断与变分自编码器 - 凯鲁嘎吉 - 博客园

[3] Jiang Z , Zheng Y , Tan H , et al. Variational Deep Embedding: An Unsupervised and Generative Approach to Clustering. 2016.

[4] VaDE代码:

     GitHub - slim1017/VaDE: Python code for paper - Variational Deep Embedding : A Generative Approach to Clustering

      GitHub - GuHongyang/VaDE-pytorch: the reproduce of Variational Deep Embedding : A Generative Approach to Clustering Requirements by pytorch


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM