關於LDA的gibbs採樣,為什麼可以獲得正確的樣本?
看了兩天LDA,暈乎乎的,有個問題實在想不明白,求教。。。
gibbs採樣是已知分布獲取樣本,但是LDA模型在採樣之前,具體的分布(轉移矩陣)是不知道的啊。。。只知道分布的表達式。。。我看演算法裡面是隨機初始了一個分布,然後進行採樣,然後根據每次採樣的結果去更新分布,之後接著採樣直到收斂。這感覺像是雞生蛋蛋生雞啊,為什麼能保證採樣的結果是真實的P(Z|W) 的樣本啊?(W是詞語向量,Z是每個詞對應的主題向量)
謝邀。
直接看LDA里的Gibs Sampling可能不是很好直接理解。建議去看MCMC本來的解釋和收斂的證明。然後Gibs Sampling和MCMC是一樣的。實際在做應用的時候,其實是不是真的能夠收斂到Exact的分布有時候也不是那麼的重要。首先LDA的假設就已經比較強了,然後比如說如果用Variantional Inference的方法做出來的也是近似解,但是也可以用,再來有時候收斂到最後也不見得比用hold-out data上early stop的好。
Gibs Sampling做LDA好還是好在簡單,速度夠快,然後收斂結果也不錯,理論是不是收斂到精確解其實有時候也是指導意義居多。最近在學習LDA,開始也遇到了同樣的困惑,現將自己的認識記錄如下:
1.Gibss採樣並非需要已知樣本的分布。
Gibss採樣只是需要知道樣本中一個元素,在其它所有元素(表示除去外的所有其他元素,為向量)當前狀態下的條件概率(即轉移概率),即。然後利用這個條件概率,來採樣各個樣本轉移後的狀態。具體演算法如下圖,其中表示在時刻的狀態[1]。
大多數LDA的資料,都沒有明確說明這一點,可能是對MCMC和Gibbs採樣很熟悉的同學,一下就能對應上,但是對於新手理解起來不是很直觀。
在LDA模型中,樣本是每個單詞(d文檔的第n個單詞),狀態空間是樣本所屬的主題。雖然LDA模型並不知道所有單詞在主題上的聯合分布,但是可以求出轉移概率[2]。(2)根據轉移概率依次產生每個單詞的新的主題。
(3)收斂後,得到的採樣極為所求的採樣。[1]LDA數學八卦[2]Parameter estimation for text analysis簡單的來說,轉移矩陣是知道的,可以從條件分布得到
Gibbs是已知p(x), 求p(x)的採樣. 然後樣本代入p(x)得到一系列 p(xi|x_{i}), 用這些分布去迭代.
是否知道p(x)其實沒什麼關係,它的用處就是推出p(xi|x_{i}), 只要知道p(xi|x_{i}), 就能用Gibbs求p(x)的採樣.
而LDA這裡是已知p(z,w), 但要求的不是p(z,w)的採樣, 因為w是已知的, 要求p(z|w)的採樣, 而p(zi|z_{i}, w)可計算出, 所以也就是能通過Gibbs求p(z|w)的採樣.
建議你去看看 LDA數學八卦 , 講的很清晰易懂,為什麼要用gibbs,就是因為,MCMC的特性是最終收斂的狀態,與初始分布狀態無關,只與轉移矩陣p有關。
正好前一段時間看過一些lda的東西,在這裡希望能為題主提供一些幫助。
1.首先明確一下MCMC方法。
當我們面對一個未知或者複雜的分布時,我們經常使用MCMC方法來進行分布採樣。而採樣的目的是得到這個分布的樣本,通過這些樣本,我們就能明確出該分布的具體結構。所以MCMC本身就是解決無法直接採樣或理解的分布問題的,所以不是對已知分布進行採樣。
而gibbs採樣時MCMC方法的一種改進策略,所以解決的是一類問題。在LDA中,後驗概率無法直接取得,我們通過gibbs採樣的方法去採樣該分布,從而得到模型結構。
2.關於gibbs採樣正確性,或者雞生蛋蛋生雞的說法。
關於gibbs採樣的正確性,即能夠得到正確的結果。基本層面是MCMC方法的正確性問題,因為gibbs採樣只是MCMC方法的變種,即升級接受概率為1,關於這方面的證明過比較專業,題主可以去查詢相關的資料。
而在實際中雞生蛋蛋生雞的問題,建議題主可以從EM演算法了解下手,即含有隱變數時的參數估計問題,相信題主能夠得到一些答案。
Gibbs Sampling或者說更一般的MCMC演算法,本來就可以保證對於任意初始分布(或者應該說不叫分布吧,就是一組初值),迭代能收斂到真實分布。和LDA本身沒什麼關係。
推薦看一下《LDA 漫讀指南》,個人覺得gibbs 這一塊,它講的挺不錯的,還有數學八卦,輔助看。
推薦閱讀: