LDA主題模型

2022-09-13 01:06:11 字數 2389 閱讀 3291

最近看了一下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 最近看的東西。於是,這樣就可以對文件進行分類。一篇文件可以由主題的分布來構成,就是說,包含百分之多少的這個主題,百分之多少的那個主題。不同的文章,包含的主題成分不同,這個分布是不同的的,有些文章這個分布可能是相同 相似的。把所有文章都統計一遍,有多少是屬於這個分布的,多少是屬於那個分布的,統計出...