---
tags: Topic model,NLP
---
Latent Dirichlet Allocation(LDA)
===
## Topic model
主題模型主要在機器學習與自然語言處理領域中,用來在一系列文本萃取抽象主題的統計模型,在真實情況中,一個文本通常包含多種主題,而且每個主題所佔的比例,因此如果某一篇文本10%與狗有關,90%與貓有關,那就狗的相關的關鍵字出現大概會是貓相關的關鍵字出現次數的9倍,所以藉由主題模型來分析每個文本內字詞,再根據統計訊息來推測該文本可能主題。
## Latent Dirichlet Allocation
### Introduction
主題模型中最知名的就是LDA,是屬於非監督式學習方式,不是先為每個文本去做標籤化與註解,單純從文本進行訓練,可以更有規模化整理並作文本相關的區隔,另外此模型基於三階層的貝式方法的統計模型,三階層分為語料階層(corpus-level)、文本階層(document-level)與關鍵字階層(word-level),依序來建構生成模型,在一系列的文本中萃取抽象的主題。
### Model Structure
LDA主要是藉由不同的生成機制來模擬文章撰寫的背後意義,LDA假設每一篇文章都是由少數的主題(Topic),每個主題是由少數幾個重要的用詞(word)所描述,藉由這些概念來生成我們所看到的文章,本小節會藉由次概念來定義統計模型,另外下圖主要描述「主題-用詞-文本」的關係,可以發現我們能夠觀察就是文本,因此相對應的主題與用詞都是需要大量的文本來推論出來的結構。

We define the following terms:
* A **word** is basic unit of discrete data,define to be an item from a vocabulary indexed by $\{1,...,V\}$.We represent words using unit-basis vectors that have a single component equal to one and all other components equal to zero.Thus using superscripts to denote components, the $v$th word in vocabulary is represented by a $V$-vector $w$ such that $w^v=1$ and $w^u=0$ for $u \neq v$
* A **document** is a sequence of $N_i$ words denoted by $\mathbb{w}=(w_1,w_2,...,w_{N_i})$,where $w_n$ is the $n$th word in the sequence.
* A **corpus** is collection of $M$ documents denoted by $D=\{\mathbb{w}_1,\mathbb{w}_2,...,\mathbb{w}_M\}$
LDA assumes the following generative process for each document $\mathbb{w}$ in a corpus $D$:
1. Choose $N_i\sim Poisson(\xi)$
2. Choose $\theta \sim Dir(\alpha)$
3. For each of $N_i$ words $\mathbb{w}_i$:
1. Choose a topic $z_{i,j} \sim Multinormal(\theta_i)$
2. Choose a word $w_{i,j} \sim Multinormal(\varphi_{z_{i,j}})$
文本由上述的生成模型所建構而成,主要會是透過先驗分配(Prior Distribution)來描述各個階段的生成機制,最後估計文本的聯合機率分配,如下圖表示,其中灰色表示可觀察到的資料,白色則表示隱含配置(Latent Allocation)。

接下來我們介紹各階層的生成機制:
* 一篇文章的用詞個數 $N_i\sim Poisson(\xi)$
在機率理論中,卜瓦松分配 (Poisson Distribution)主要是用來表示頻率相關議題,在此處我們使用Possion分配表示一篇文章用詞個數,其中$\xi$表示各文本的平均用詞數。
* 第$i$篇文本的$k$個主題機率分布$\theta_i \sim Dir(\alpha)$
此處使用Dirchlet分配作為先驗分配,主要因為多項分配(Multinomial Distribution)的共軛分配 (Conjugate Prior)是Dirchlet分配,另外$\theta_i$為k個維度,所以$\theta$是為$M \times k$矩陣來表示各個文本的主題分布情形。
* 第$i$篇文本的第$j$個用詞的主題分布 $z_{i,j} \sim Multinormal(\theta_i)$
在機率理論中,多項分配(Multinomial Distribution)表示隨機討挑選一個用詞,該用詞屬於主題$t$的機率為$\theta_{i,t}$,另外$z_{i,j}$是為$k \times N_i$表示出現的個字詞的主題分布情形。
* 第$i$篇文本的第$j$個用詞庫中各個自出現的分布 $w_{i,j} \sim Multinormal(\phi_{z_{i,j}})$,機率模型解釋與上述相同,表示隨機討挑選一個用詞,該用詞為某個字詞機率為$\phi_{z_{i,j}}$
* 第$t$個主題在詞庫內各個用詞的機率$\phi_t \sim Dirichelt(\beta)$
這裡的分布與上述不太一樣,主要是針對詞庫來說,各個主題的各用詞出現機率,另外$\phi$是為$V \times k$矩陣來表示在詞庫每一個字在該主題出線的機率。
### Joint Probability Distribution
定義各階層的模型架構,我們可以得到文本的生成機制,就是聯合機率分布(Joint Probability Distribution),如下:
$$P(w,z,\theta,\phi|\alpha,\beta) = \prod^K_{t=1}P(\phi_t|\beta)\prod^M_{i=1}P(\theta_i|\alpha)\prod^N_{j=1}P(z_{i,j}|\theta_i)P(w_{i,j}|z_{i,j},\phi_{z_{i,j}})$$
上述的聯合機率不是我們的最終目標,我們真正希望可以學習到的是基於大量的文本,所的到個個文本的主題與各個主題的用詞分布,也就是$\theta,z,\phi$後驗分布(Posterior Sistribution),如下:
$$P(\theta,z,\phi|w,\alpha,\beta)=\frac{P(w,z,\theta,\phi|\alpha,\beta)}{P(w|\alpha,\beta)}$$
### The Parameter of LDA
#### The $\alpha$ of dirichlet distribution
$\alpha$主要控制所有文本的主題分布情形,這裡我們來探討參數$\alpha$如何影響Dirichlet的分布,首先我們先假設三個主題,也就是$\alpha$為三個參數向量,由下圖我們可以觀察到:
* 如果$\alpha$較大時,會將各個文本點推向三角形的中間,表示文本不太屬於該主題。
* 如果$\alpha$較小時,會將各個文本點推向三角形的角,表示文本較於屬於該文本。
