主題模型LSA/LSI、PLSA和LDA

目錄

LSA/LSI

PLSA

潛在狄利克雷分配(latent Dirichlet allocation,LDA)

伯努利分佈(Bernoulli Distribution)

二項分佈(Binomial Distribution)

多項分佈(Multinomial Distribution)

貝塔分佈(beta distribution)

狄利克雷分佈(Dirichlet distribution)

共軛先驗(conjugate prior)

LDA文本生成


LSA/LSI

 

PLSA

 

潛在狄利克雷分配(latent Dirichlet allocation,LDA)

伯努利分佈(Bernoulli Distribution)

        舉個例子,在一次“拋硬幣”的試驗中,出現正面朝上的的概率爲p,反面朝上的概率爲1-p,則在一次試驗中出現正面朝上的次數服從伯努利分佈。出現正面朝上的次數k有兩個值:0和1,0次正面朝上的概率爲P(0)=1-p,1次正面朝上的概率爲P(1)=p,概率分佈如下:

k 0 1
P(k) 1-p p

P(k)=p^k(1-p)^{1-k}

 

二項分佈(Binomial Distribution)

        在伯努利試驗中,我們只做了一次試驗,那麼如果重複獨立n次伯努利試驗,則正面朝上的次數k服從二項分佈,正面朝上的次數爲k的概率如下:

P(k)=C_n^kp^k(1-p)^{n-k}

其中

C_n^k=\frac{n!}{(n-k)!k!}

,k的取值可能是0,1,...,n。概率分佈如下:

k 0 1 ... n
P(k) (1-p)^{n} np(1-p)^{n-1} ... p^n

在二項分佈中,如果n=1,就是伯努利分佈,所以伯努利分佈可以看成二項分佈的特例。

 

多項分佈(Multinomial Distribution)

        在二項分佈中,每次拋硬幣可能出現的結果只有兩個:正面朝上和反面朝上,那假設現在一個事件可能出現的結果不再是2個,而是k個。第i個結果出現的概率爲p_i,則

\sum_{i=1}^kp_i=1

,在n次試驗中,第i個結果出現的次數爲n_i,則

\sum_{i=1}^kn_i=n

,在上述假設下,n次試驗中,第i個結果出現次數爲n_i服從多項分佈

P=\frac{n!}{n_1!n_2!...n_k!}p_1^{n_1}p_2^{n_2}...p_k^{n_k}

其中係數

\frac{n!}{n_1!n_2!...n_k!}

由排列組合得到,即先在n次試驗中選取n_1個結果爲1的試驗,可能的選取方式有C_n^{n_1}個,接着從剩下的n-n_1次試驗中再選擇n_2次試驗,可能的選取方式有C_{n-n_1}^{n_2},依次選擇下去……,總共可能的方式就是這個係數。實際上,多項分佈式二項分佈的推廣,比如在多項分佈中假設k=2,則概率變爲:

P=\frac{n!}{n_1!n_2!}p_1^{n_1}p_2^{n_2}=\frac{n!}{n_1!n-n_1!}p_1^{n_1}p_2^{n-n_1}

n_1=k(因爲在二項分佈中,使用k表示的次數,多項分佈中使用的k表示結果的個數,注意區別),就可以得到二項分佈。

 

貝塔分佈(beta distribution)

        設連續隨機變量X的取值範圍爲[0,1],它的概率密度函數如下:

p(x)=\left\{\begin{matrix} \frac{1}{B(s,t)}x^{s-1}(1-x)^{t-1}, &x\in[0,1] \\ 0,&otherwise \end{matrix}\right.

其中s>0,t>0是參數,B(s,t)是beta函數,定義如下:

B(s,t)=\int_{0}^{1}x^{s-1}(1-x)^{t-1}dx

beta函數也可以由伽馬函數得到,伽馬函數定義如下:

beta函數和伽馬函數之間的關係如下:

B(s,t)=\frac{\Gamma(s)\Gamma (t)}{\Gamma (s+t)}

可以如下證明這個關係:

\Gamma(s)\Gamma(t)=\int_{0}^{+\infty }x^{s-1}e^{-x}dx\int_{0}^{+\infty }y^{t-1}e^{-y}dy

x=r^2cos\theta,y=r^2sin\theta(r\geq 0,\theta\in[0,\pi]),利用重積分性質既能得到\Gamma(s)\Gamma(t)=B(s,t)\Gamma (s+t)

 

狄利克雷分佈(Dirichlet distribution)

        狄利克雷分佈是一種多元連續隨機變量的分佈,是貝塔分佈(beta distribution)的推廣。我們將beta分佈的單個隨機變量X推廣到由k個隨機變量構成的隨機向量\mathbf{X}=(X_1,X_2,...,X_K),每個隨機變量X_i的取值範圍爲[0,1],不過他們之間和爲1,即

\sum_{i=1}^kx_i=1

x_i表示第i個隨機變量X_i的取值。 概率密度函數如下定義:

p(x_i|\alpha_i)=\frac{\Gamma (\sum_{i=1}^k\alpha _i)}{\prod_{i=1}^{k}\Gamma (\alpha _i)}\prod_{i=1}^kx_i^{\alpha_i-1}

\alpha_i>0是參數。

在狄利克雷分佈中,取k=2,\alpha_1=s,\alpha_2=t,則就變成了Beta分佈。

爲了可以和Beta分佈有相同的形式,令

B(\alpha )=\frac{\prod_{i=1}^{k}\Gamma (\alpha _i)}{\Gamma (\sum_{i=1}^k\alpha _i)}\alpha=(\alpha_1,\alpha_2,...,\alpha_k)x=(x_1,x_2,...,x_k)

p(x|\alpha)=\frac{1}{B(\alpha )}\prod_{i=1}^kx_i^{\alpha_i-1}

因爲\int_x p(x|\alpha)=1,所以實際上B(\alpha )可以看成一個歸一化因子。

下面以k=3來直觀認識下狄利克雷分佈,此時x_1+x_2+x_3=1,x_1\geq 0,x_2\geq 0,x_3\geq 0,如果看成是在三維空間中,如圖:

圖中正三角形ABC區域表示x_1,x_2,x_3的各種可能的取值,也就是說x_1,x_2,x_3的取值會落在三角形ABC上或者內部。現在我們取不同的\alpha=(\alpha_1,\alpha_2,\alpha_3)

(1)\alpha_1=\alpha_2=\alpha_3的情況,

\alpha=(3,3,3),\alpha=(7,7,7),\alpha=(20,20,20),分別對應如下圖:

也就是說當各個分量相等時,x_1,x_2,x_3的分佈是對稱的,隨着分量的增大,分佈更集中。

(2)當\alpha=(\alpha_1,\alpha_2,\alpha_3)的各個分量不全部相等時

比如

分別對應如下圖:

\alpha_i越小越向x_i靠近。

以上介紹的各種分佈,整理如下:

伯努利分佈 P(k)=p^k(1-p)^{1-k}
二項分佈 P(k)=C_n^kp^k(1-p)^{n-k}
多項分佈

P=\frac{n!}{n_1!n_2!...n_k!}p_1^{n_1}p_2^{n_2}...p_k^{n_k}

(p_i>0,\sum_{i=1}^kp_i=1,\sum_{i=1}^kn_i=n)

貝塔分佈

p(x)=\frac{1}{B(s,t)}x^{s-1}(1-x)^{t-1}

(x\in[0,1],s>0,s>0)

狄利克雷分佈 p(x|\alpha)=\frac{1}{B(\alpha )}\prod_{i=1}^kx_i^{\alpha_i-1}(x_i\in[0,1],\sum_{i=1}^kx_i=1,\alpha _i>0,\alpha=(\alpha_1,...,\alpha_k))

 

共軛先驗(conjugate prior)

        這裏有幾個分佈需要搞清楚,分別是先驗分佈,後驗分佈和似然函數。我們以拋硬幣爲例,假設正面朝上的概率爲\theta,但是在未拋硬幣之前我們是不知道\theta的具體值,根據當前已有的經驗,我們通常會假設\theta服從[均爲分佈,當然也可以假設服從其他分佈,也就是說正面朝上的概率\theta取[0,1]之間任意值是等可能的,假設均勻分佈的密度函數是

p(\theta)=1,\theta\in[0,1]

這個均勻分佈稱爲\theta的先驗分佈。假設現在拋了5次,得到如下一組數據X

正面,正面,反面,反面,正面

在參數\theta下,產生“如此數據“的條件概率P(X|\theta)稱之爲似然函數,如下:

P(X|\theta)=\theta^3(1-\theta)^2

這裏說個題外話,很多時候,我們會碰到最大似然估計,指的是什麼樣的概率\theta,最有可能產生“如此數據”,即求似然函數的最大值對應的\theta值,可以通過似然函數兩邊取對數解出\theta=\frac{3}{5}。下面我們還說後驗分佈,根據貝葉斯公式:

P(\theta|X)=\frac{P(X|\theta)P(\theta)}{P(X)}=\frac{P(X|\theta)P(\theta)}{\sum_{\theta}P(X|\theta)P(\theta)}

如果是連續的,就是

P(\theta|X)=\frac{P(X|\theta)P(\theta)}{\int_{\theta}P(X|\theta)P(\theta)} 

P(\theta|X)表示在得到數據X之後\theta的概率,服從的分佈稱爲\theta的後驗分佈。先驗分佈和後驗分佈的區別就是後驗分佈比先驗分佈多了數據這樣的“證據”。在本例中\theta的先驗分佈是均爲分佈,但是在拿到數據後,從數據來看,正面朝上的可能性更大,所以後驗分佈並不是均勻分佈,事實上可以根據貝葉斯公式準確計算出來,如下:

P(\theta|X)=\frac{P(X|\theta)P(\theta)}{\int_{\theta}P(X|\theta)P(\theta)}==\frac{\theta^3(1-\theta)^2}{\int_{0}^{1}\theta^3(1-\theta)^2}=60\theta^3(1-\theta)^2

從結果的密度函數來看確實不是均勻分佈。上面表明如果二項分佈的先驗分佈是均勻分佈,它的後驗分佈並不是均勻分佈。

        如果\theta的先驗分佈和後驗分佈具有相同的分佈類型,比如都是高斯分佈,則稱先驗分佈和後驗分佈爲共軛分佈。先驗分佈稱爲共軛先驗。下面這個結論在LDA模型中比較重要

如果多項分佈的先驗分佈是狄利克雷分佈,則其後驗分佈也是狄利克雷分佈。

下面我們給出證明:

假設隨機變量X服從多項分佈,可能的k個結果爲{1,2,...,k},概率如下:

P=\frac{n!}{n_1!n_2!...n_k!}\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}

假設現在得到n個數據的樣本D,則似然函數爲

p(D|\theta)=\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}

其中\theta=(\theta_1,\theta_2,...,\theta_k)。假設\theta的先驗分佈是狄利克雷分佈,即

p(\theta)=B(\alpha )\prod_{i=1}^k\theta_i^{\alpha_i-1}

根據貝葉斯公式,\theta的後驗分佈爲

P(\theta|D)=\frac{P(D|\theta)P(\theta)}{\int_{\theta}P(D|\theta)P(\theta)}

=\frac{\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}\frac{1}{B(\alpha )}\prod_{i=1}^k\theta_i^{\alpha_i-1}}{\int_{\theta}\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}\frac{1}{B(\alpha )}\prod_{i=1}^k\theta_i^{\alpha_i-1}}

=\frac{\prod_{i=1}^k\theta_i^{\alpha_i+n_i-1}}{\int_{\theta}\prod_{i=1}^k\theta_i^{\alpha_i+n_i-1}}

=\frac{\frac{1}{B(\gamma )}\prod_{i=1}^k\theta_i^{\gamma_i-1}}{\frac{1}{B(\gamma)}\int_{\theta}\prod_{i=1}^k\theta_i^{\gamma_i-1}}            (其中\gamma =(\gamma_1,\gamma_2,...,\gamma_k),r_i=\alpha_i+n_i

=\frac{1}{B(\gamma )}\prod_{i=1}^k\theta_i^{\gamma_i-1}                 (由\int_{\theta}\frac{1}{B(\alpha )}\prod_{i=1}^k\theta_i^{\alpha_i-1}=1得到)

從最後結果來看,P(\theta|D)任然是一個狄利克雷分佈,只不過參數由\alpha變爲\gamma

 

LDA文本生成

        LDA模型是一個文本生成概率模型。假設文本集合D=(d_1,d_2,...,d_M),含有M個文檔,d_i=(w_{i1},w_{i2},...,w_{iN_i})表示文檔d_iN_i個詞構成,V=\{v_1,v_2,...,v_L\}是一個詞典,含有L個詞。文本集合D與K個主題相關,主題集合Z=\{z_1,z_2,...,z_K\}。下面看如何生成文本d_i=(w_{i1},w_{i2},...,w_{iN_i}),事實上,生成一個文本只要生成構成文本的每個詞就可以了。但我們並不是直接生成詞,而是通過中間隱含變量——主題來間接生成,首先生成文檔的主題序列,然後由主題序列生成詞序列,從而生成文檔。生成過程如下:

(1)生成主題序列

對於文檔d_i,在給定參數\alpha_i=(\alpha_{i1},\alpha_{i2},...,\alpha_{iK})的情況下,按照狄利克雷分佈

p(\theta_i)=\frac{1}{B(\alpha_i)}\prod_{j=1}^K\theta_{ij}^{\alpha_{ij}-1}

隨機生成一組概率\theta_i=(\theta_{i1},\theta_{i2},...,\theta_{iK}),概率\theta_{ij}表示的是文檔生成主題z_{j}的概率。因爲有M個文檔,生成一個M\times K階矩陣:

\theta=\begin{bmatrix} \theta_{11}&\theta_{12} &... &\theta_{1K} \\\theta_{21} &\theta_{22} &... &\theta_{2K} \\ \vdots&\vdots &\ddots & \vdots\\ \theta_{M1}& \theta_{M2} &... &\theta_{MK} \end{bmatrix}

得到文檔d_i主題分佈

p(z_j|d_i)=\frac{N_i!}{n_{i1}!n_{i2}!...n_{iK}!}\theta_{i1}^{n_1}\theta_{i2}^{n_2}...\theta_{iK}^{n_K}   (\sum_{j=1}^Kn_{ij}=N_i

構成一個M\times K矩陣:

D2Z=\begin{bmatrix} p(z_1|d_1)&p(z_2|d_1) &... &p(z_K|d_1) \\ p(z_1|d_2)&p(z_2|d_2) &... &p(z_K|d_2) \\\vdots &\vdots &\ddots &\vdots \\ p(z_1|d_M) &p(v_2|d_M)&... &p(z_K|d_M) \end{bmatrix}

根據這個密度函數就可以生成文檔d_i=(w_1,w_2,...,w_{N_i})對應的主題序列了(實際不關心順序),如下:

Z_{seq}=(z_{i1},z_{i2},...,z_{iN_i})z_{ij}\in Z

        注意到主題序列Z_{seq}=(z_{i1},z_{i2},...,z_{iN_i})中總共有N_i個分量,這些主題分量可能會有重複,但是總共只有K個主題,所以我們只需要關注這K個主題即可,對於任意主題z_i,可以如下生成詞v_j

(2)生成詞序列

對於主題z_i,在給定參數\beta_i=(\beta_{i1},\beta_{i2},...,\beta_{iL})的情況下,按照狄利克雷分佈

p(\eta_i)=\frac{1}{B(\beta_{i} )}\prod_{j=1}^L\eta_{ij}^{\beta_{ij}-1}

隨機產生一組概率\eta_i=(\eta_{i1},\eta_{i2},...,\eta_{iL}),概率\eta_{ij}表示的是主題z_i生成詞v_j的概率。因爲有K個主題,總共生成K組,構成如下K\times L階矩陣:

\eta =\begin{bmatrix} \eta_{11} &\eta_{12} &... &\eta_{1L} \\ \eta_{21}&\eta_{22} &... &\eta_{2L} \\\vdots &\vdots &\ddots &\vdots \\ \eta_{K1} &\eta_{K2}&... &\eta_{KL} \end{bmatrix}

得到主題z_i生成詞的分佈

p(v_j|z_i)=\frac{N_i!}{m_1!m_2!...m_L!}\eta _{i1}^{m_1}\eta _{i2}^{m_2}...\eta _{iL}^{m_L}    (\sum_{i=1}^Lm_i=N_i

正好構成一個K\times L階矩陣

Z2V=\begin{bmatrix} p(v_1|z_1)&p(v_2|z_1) &... &p(v_L|z_1) \\ p(v_1|z_2)&p(v_2|z_2) &... &p(v_L|z_2) \\\vdots &\vdots &\ddots &\vdots \\ p(v_1|z_K) &p(v_2|z_K)&... &p(v_L|z_K) \end{bmatrix}

根據該密度函數和主題序列Z_{seq}=(z_{i1},z_{i2},...,z_{iN_i}),就可以生成如下詞序列了

W_{seq}=(w_{i1},w_{i2},...,w_{iN_i})

也就是文檔d_i=(w_{i1},w_{i2},...,w_{iN_i})

上面的整個生成過程,可以使用如下概率圖表示:

方框右下角符號表示方框中相同圖形的數量。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章