最近看了一下lda的文章, 寫個小結, 理解正確與否有待驗證.
latent dirichlet allocation(lda)是三層的層次概率貝葉斯模型(生成模型), 用於處理離散資料, 比如文字資料.
假設一共有 \(v\) 個單詞, 則第 \(j\) 個單詞表示為:
\[w = (0,\cdots,0,1,0,\cdots, 0), \text
\]假設一共有 \(k\) 個主題, 則第 \(i\) 個主題表示為:
\[z = (0,\cdots,0,1,0,\cdots, 0), \text
\]生成乙個文件的過程如下:
從引數為 \(\xi\) 的poisson分布中選取文件單詞數 \(n\);
從引數為 \(\alpha\) 的dirichlet分布中選擇乙個引數 \(\theta\);
依次生成每個單詞 \(w_n\)(\(n=1,\cdots,n\)):
從引數為 \(\theta\) 的多項分布中選擇乙個主題 \(z_n\);
從以 \(\beta\) 為引數的條件多項分布 \(p(w_n|z_n, \beta)\) 中選取出單詞 \(w_n\).
其中假設dirichlet分布的維數固定為 \(k\)(即主題數固定為 \(k\)).
各引數分析如下:
從上面的引數分析可以看見, 之所以使用dirichlet先驗分布, 是因為它恰到好處地, 給了我們想要的主題分布的每個引數 \(\theta^i\) 乙個對應的引數 \(\alpha^i\), 並且對後面的變分推斷和引數估計有益.
給定引數 \(\alpha\) 和 \(\beta\), 可以得到 \(\theta = (\theta^1, \cdots,\theta^k)\), \(z=(z_1, \cdots, z_n)\), \(w = (w_1, \cdots, w_n)\)的聯合分布
\[p(\theta,z,w|\alpha, \beta) = p(\theta|\alpha)\prod_^p(z_n|\theta)p(w_n|z_n, \beta),
\]對 \(\theta\) 和 \(z\) 分別積分求和, 可以得到關於文件的邊際分布
\[p(w|\alpha, \beta) = \int p(\theta|\alpha) \bigg(\prod_^\sum_ p(z_n|\theta)p(w_n|z_n, \beta) \bigg) d\theta.
\]lda的推斷問題是, 給定文件後, 隱變數的後驗分布
\[p(\theta, z|w, \alpha, \beta) = \frac.
\]上式分母不可計算, 近似的方法包括laplace逼近, 變分逼近, markov鏈蒙特卡羅法等.
用上面後驗分布的解耦樣式
\[q(\theta, z|\gamma, \phi) = q(\theta|\gamma)\prod_^ q(z_n|\phi_n)
\]逼近, 其中 \(\gamma=(\gamma^1, \cdots, \gamma^k)\) 為dirichlet引數(近似 \(\alpha\)), \(\phi = (\phi_1, \cdots, \phi_n)\) 每個分量都是多項分布引數(近似 \(\beta\)). 極大似然問題變為極小化kl散度的優化問題:
\[(\gamma^, \phi^) = \arg\min_ d(a(\theta, z)\vert p(\theta, z|w, \alpha, \beta)),
\]可以得到
\[\begin
\phi_ &\propto \beta_ e^ \\
\gamma_i &= \alpha_i + \sum_^ \phi_.
\end
\]計算偽碼為
引數應極大化對數似然
\[l(\alpha, \beta) = \sum_^ \log p(w_d|\alpha, \beta),
\]但是對數似然卻難以計算. 我們可以利用變分推斷得到的下界近似對數似然, 可以在em演算法的m步, 極大化證據下界以更新變分引數 \(\gamma\) 和 \(\phi\), 而對於固定的變分引數, 又可以通過極大化證據下界更新引數 \(\alpha\) 和 \(\beta\).
em演算法:
(e步)對每個文件, 尋找最優變分引數 \(\, \phi_d^: d\in d\}\), 這一步由變分推斷得到;
(m步)通過極大化證據下界更新引數 \(\alpha\) 和 \(\beta\).
其中第二步中, 引數 \(\beta\) 可以解析表示
\[\beta_ \propto \sum_^\sum_^ \phi_^ w_^j,
\]但引數 \(\alpha\) 則需要用newton-raphson方法計算.
接下來希望能夠弄清楚具體的**實現.
LDA主題模型
先定義一些字母的含義 lda以文件集合d作為輸入 會有切詞,去停用詞,取詞幹等常見的預處理,略去不表 希望訓練出的兩個結果向量 設聚成k個topic,voc中共包含m個詞 lda的核心公式如下 p w d p w t p t d 直觀的看這個公式,就是以topic作為中間層,可以通過當前的 d和 t...
主題模型LDA
某隨機實驗如果有k個可能結局a1 a2 ak,分別將他們的出現次數記為隨機變數x1 x2 xk,它們的概率分布分別是p1,p2,pk,那麼在n次取樣的總結果中,a1出現n1次 a2出現n2次 ak出現nk次的這種事件的出現概率p有下面公式 p x1 n 1,xk nk n n1 nk pn1 1.p...
LDA與主題模型
1 最近看的東西。於是,這樣就可以對文件進行分類。一篇文件可以由主題的分布來構成,就是說,包含百分之多少的這個主題,百分之多少的那個主題。不同的文章,包含的主題成分不同,這個分布是不同的的,有些文章這個分布可能是相同 相似的。把所有文章都統計一遍,有多少是屬於這個分布的,多少是屬於那個分布的,統計出...