變分深度嵌入(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. 參考文獻
[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