1.詞袋模型(BOW)
在自然語言處理NLP領域中,詞袋模型(bag of words,BOW)是經典的模型之一。它考慮所有的詞彙都裝在一個袋子中,任何一篇文檔中的單詞都可以用袋子中的詞彙來描述。如果有10萬個詞彙,那麼每篇文檔都可以表示爲一個10萬維的向量。得到文檔向量之後,我們通過可以通過描述向量之間的差異來尋找文檔之間的關聯。
但是詞袋模型有幾個明顯的缺點:
稀疏性(Sparseness):對於大詞袋,尤其是包含了生僻字的詞袋,文檔稀疏性不可避免。
一詞多義:一詞多義是一種常見的現象,但是BOW模型只統計單詞出現的次數,而忽略了他們之間的區別;
多詞一義:在不同或相同文檔中,可能存在多種單詞存在同一個意思。
爲了解決同義詞以及文檔稀疏性的問題,在BOW模型中引入“主題”的概念,提出了Latent Semantic Analysis (LSA)模型。我們在寫文章時,首先想到的是文章的主題,然後才根據主題選擇合適的單詞來表達自己的觀點。
2.潛在語義分析 (LSA)
LSA也稱爲LSI(latent semantic index)。在PCA降維中,我們利用SVD做矩陣分解,將樣本降到低緯度的空間。在LSA中,我們同樣也應用SVD來解決相似的問題,將文檔從稀疏的n維空間映射到一個低維(k維)的向量空間,我們稱之爲隱含語義空間(Latent Semantic Space).
ps:如對SVD算法有不理解的地方,可以參考【機器學習算法推導】奇異值分解SVD與主成分分析PCA
LSA的算法流程如下:
(1)分析文檔集合,建立詞彙-文本矩陣A。
(2)對詞彙-文本矩陣進行奇異值分解。
(3)使用降維後的矩陣構建潛在語義空間,將原始文本映射到k維空間。
2.1 LSA的優點
將一篇文檔映射到低維空間,意味着有一些詞彙在降維後在同一個點上,也就是說,這些點刻畫着同義詞。
降維可去除部分噪聲,使特徵更魯棒;
充分利用冗餘數據;
無監督/完全自動化;
與語言無關;
2.2 LSA的不足
沒有刻畫詞彙出現次數的概率模型;
無法解決多義詞的問題;
SVD的優化目標基於L-2 norm 或者是 Frobenius Norm的,這相當於隱含了對數據的高斯噪聲假設。而term出現的次數是非負的,這明顯不符合Gaussian假設;
對於count vectors 而言,歐式距離表達是不合適的(重建時會產生負數);
特徵向量的方向沒有對應的物理解釋;
SVD的計算複雜度很高,而且當有新的文檔來到時,若要更新模型需重新訓練;
3. PLSA(基於概率的LSA)
對於一個正常人來說,我們是如何構思一篇文章的呢?一般來說我們會先確定我們要寫的主題,比如說我正在寫的這篇文章是機器學習相關的,可能會涉及到計算機,概率論,機器學習方面的術語,假設線性代數佔20%,概率論主題佔30%,機器學習主題佔50%。而在概率論中,可能會聯想到期望,方差,概率等詞彙,線性代數可能會聯想到矩陣,特徵值等詞彙,機器學習方面可能會出現模型,權重,空間等詞彙。
我們可以很自然地認爲,一篇文章(doc)是由幾個主題(topic)組成的,並且不同的主題由該主題下頻率較高的一些詞彙(word)進行描述。
我們定義:
p ( d m ) p(d_m) p ( d m ) 表示從文檔集合D中選擇一個文檔d m d_m d m 的概率
p ( z k ∣ d m ) p(z_k|d_m) p ( z k ∣ d m ) 表示從topic set中選擇一個主題z k z_k z k 的概率,即給定文檔在各個主題的概率分佈,服從多項式分佈。
p ( w n ∣ z k ) p(w_n|z_k) p ( w n ∣ z k ) 表示從word set中選擇一個詞彙w n w_n w n 的概率,即給定主題在各個詞彙上的概率分佈,服從多項式分佈。
可知聯合概率分佈p ( d m , z k , w n ) = P ( d m ) P ( z k ∣ d m ) P ( w n ∣ z k ) p(d_m,z_k,w_n)=P(d_m)P(z_k|d_m)P(w_n|z_k) p ( d m , z k , w n ) = P ( d m ) P ( z k ∣ d m ) P ( w n ∣ z k )
對於一篇文檔,由多個詞彙組成,令其爲w ⃗ = ( w 1 , w 2 , . . , w N ) \vec w=(w_1,w_2,..,w_N) w = ( w 1 , w 2 , . . , w N ) ,生成這篇文檔的概率爲P ( w ⃗ ∣ d m ) = ∏ n = 1 N P ( w n ∣ d m ) P(\vec w|d_m)=\prod\limits_{n=1}^NP(w_n|d_m) P ( w ∣ d m ) = n = 1 ∏ N P ( w n ∣ d m )
d m d_m d m 和w n w_n w n 的聯合概率爲
P ( d m , w n ) = P ( d m ) P ( w n ∣ d m ) = P ( d m ) ∑ k P ( z k ∣ d m ) P ( w n ∣ z k , d m ) = P ( d m ) ∑ k P ( z k ∣ d m ) P ( w n ∣ z k )
\begin{aligned}
P(d_m,w_n)
&=P(d_m)P(w_n|d_m) \\
&=P(d_m)\sum_kP(z_k|d_m)P(w_n|z_k,d_m) \\
&=P(d_m)\sum_kP(z_k|d_m)P(w_n|z_k)
\end{aligned}
P ( d m , w n ) = P ( d m ) P ( w n ∣ d m ) = P ( d m ) k ∑ P ( z k ∣ d m ) P ( w n ∣ z k , d m ) = P ( d m ) k ∑ P ( z k ∣ d m ) P ( w n ∣ z k )
我們想要從我們已有的樣本,也就是一堆文檔和相關詞彙中,估計出上面的參數P ( w n ∣ z k ) P(w_n|z_k) P ( w n ∣ z k ) 和P ( z k ∣ d m ) P(z_k|d_m) P ( z k ∣ d m ) ,於是定義似然函數
L ( θ ) = ln ∏ m = 1 M ∏ n = 1 N P ( d m , w n ) n ( d m , w n ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln P ( d m , w n ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ( P ( d m ) ∑ k P ( z k ∣ d m ) P ( w n ∣ z k ) ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ∑ k P ( z k ∣ d m ) P ( w n ∣ z k ) + ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln P ( d m )
\begin{aligned}
L(\theta)
&=\ln\prod_{m=1}^M\prod_{n=1}^NP(d_m,w_n)^{n(d_m,w_n)} \\
&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln P(d_m,w_n) \\
&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln (P(d_m)\sum_kP(z_k|d_m)P(w_n|z_k)) \\
&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln \sum_kP(z_k|d_m)P(w_n|z_k)+ \sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln P(d_m)
\end{aligned}
L ( θ ) = ln m = 1 ∏ M n = 1 ∏ N P ( d m , w n ) n ( d m , w n ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) ln P ( d m , w n ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) ln ( P ( d m ) k ∑ P ( z k ∣ d m ) P ( w n ∣ z k ) ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) ln k ∑ P ( z k ∣ d m ) P ( w n ∣ z k ) + m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) ln P ( d m )
由於∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln P ( d m ) \sum\limits_{m=1}^M\sum\limits_{n=1}^Nn(d_m,w_n)\ln P(d_m) m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) ln P ( d m ) 不包含我們要求解的參數,我們不妨將其省略,要求解的式子變爲
L ( θ ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ∑ k P ( z k ∣ d m ) P ( w n ∣ z k ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ln ∑ k P ( w n , z k ∣ d m )
\begin{aligned}
L(\theta)&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln \sum_kP(z_k|d_m)P(w_n|z_k)\\
&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\ln \sum_kP(w_n,z_k|d_m)
\end{aligned}
L ( θ ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) ln k ∑ P ( z k ∣ d m ) P ( w n ∣ z k ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) ln k ∑ P ( w n , z k ∣ d m )
由於參數都在ln裏面,並且計算量較大,所以我們可以利用EM算法將其“解放”出來。對於PLSA模型來說,有
L ( θ , θ i ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ∑ k P ( z k ∣ w n , d m ; θ i ) ln P ( w m , z k ∣ d m )
L(\theta,\theta_i)=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\sum_kP(z_k|w_n,d_m;\theta_i)\ln P(w_m,z_k|d_m)
L ( θ , θ i ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) k ∑ P ( z k ∣ w n , d m ; θ i ) ln P ( w m , z k ∣ d m )
其中
P ( z k ∣ w n , d m ; θ i ) = P ( z k , w n , d m ; θ i ) P ( w n , d m ; θ i ) = P ( d m ; θ i ) P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) P ( d m ; θ i ) P ( w n ∣ d m ; θ i ) = P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) P ( w n ∣ d m ; θ i ) = P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i )
\begin{aligned}
P(z_k|w_n,d_m;\theta_i)
&=\frac{P(z_k,w_n,d_m;\theta_i)}{P(w_n,d_m;\theta_i)} \\
&=\frac{P(d_m;\theta_i)P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{P(d_m;\theta_i)P(w_n|d_m;\theta_i)} \\
&=\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{P(w_n|d_m;\theta_i)} \\
&=\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{\sum_jP(z_j|d_m;\theta_i)P(w_n|z_j;\theta_i)} \\
\end{aligned}
P ( z k ∣ w n , d m ; θ i ) = P ( w n , d m ; θ i ) P ( z k , w n , d m ; θ i ) = P ( d m ; θ i ) P ( w n ∣ d m ; θ i ) P ( d m ; θ i ) P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) = P ( w n ∣ d m ; θ i ) P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) = ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i )
P ( w m , z k ∣ d m ) = P ( z k ∣ d m ) P ( w n ∣ z k ) P(w_m,z_k|d_m)=P(z_k|d_m)P(w_n|z_k) P ( w m , z k ∣ d m ) = P ( z k ∣ d m ) P ( w n ∣ z k )
E-Step中的式子L ( θ , θ i ) L(\theta,\theta_i) L ( θ , θ i ) 變爲
L ( θ , θ i ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ∑ k P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) ln P ( z k ∣ d m ) P ( w n ∣ z k ) = ∑ m = 1 M ∑ n = 1 N n ( d m , w n ) ∑ k P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) ( ln P ( z k ∣ d m ) + ln P ( w n ∣ z k ) )
\begin{aligned}
L(\theta,\theta_i)
&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\sum_k\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{\sum_jP(z_j|d_m;\theta_i)P(w_n|z_j;\theta_i)}\ln P(z_k|d_m)P(w_n|z_k) \\
&=\sum_{m=1}^M\sum_{n=1}^Nn(d_m,w_n)\sum_k\frac{P(z_k|d_m;\theta_i)P(w_n|z_k;\theta_i)}{\sum_jP(z_j|d_m;\theta_i)P(w_n|z_j;\theta_i)}(\ln P(z_k|d_m)+\ln P(w_n|z_k))
\end{aligned}
L ( θ , θ i ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) k ∑ ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ln P ( z k ∣ d m ) P ( w n ∣ z k ) = m = 1 ∑ M n = 1 ∑ N n ( d m , w n ) k ∑ ∑ j P ( z j ∣ d m ; θ i ) P ( w n ∣ z j ; θ i ) P ( z k ∣ d m ; θ i ) P ( w n ∣ z k ; θ i ) ( ln P ( z k ∣ d m ) + ln P ( w n ∣ z k ) )
得到式子後,我們將在M-Step中對其進行優化。優化目標爲
θ i + 1 = arg max θ L ( θ , θ i ) w i t h ∑ n P ( w n ∣ z k ) = 1 , ∑ k P ( z k ∣ d m ) = 1
\theta_{i+1}=\arg \max_\theta L(\theta,\theta_i) \\
with \quad \sum_nP(w_n|z_k)=1,\sum_kP(z_k|d_m)=1
θ i + 1 = arg θ max L ( θ , θ i ) w i t h n ∑ P ( w n ∣ z k ) = 1 , k ∑ P ( z k ∣ d m ) = 1
使用拉格朗日乘子法處理,得到拉格朗日函數爲
L ( θ ) = L ( θ , θ i ) + ∑ k α k ( 1 − ∑ n P ( w n ∣ z k ) ) + ∑ m β m ( 1 − ∑ k P ( z k ∣ d m ) )
\mathcal{L}(\theta)=L(\theta,\theta_i)+\sum_k\alpha_k(1-\sum_nP(w_n|z_k))+\sum_m\beta_m(1-\sum_kP(z_k|d_m))
L ( θ ) = L ( θ , θ i ) + k ∑ α k ( 1 − n ∑ P ( w n ∣ z k ) ) + m ∑ β m ( 1 − k ∑ P ( z k ∣ d m ) )
上式分別對P ( w n ∣ z k ) P(w_n|z_k) P ( w n ∣ z k ) ,P ( z k ∣ d m ) P(z_k|d_m) P ( z k ∣ d m ) 求導,得到
∂ L ∂ P ( w n ∣ z k ) = ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) P ( w n ∣ z k ) − α k = 0 , 1 ≤ n ≤ N , 1 ≤ k ≤ K
\frac{\partial \mathcal{L}}{\partial P(w_n|z_k)}=\frac{\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{P(w_n|z_k)} -\alpha_k=0,1 \le n \le N,1 \le k \le K
∂ P ( w n ∣ z k ) ∂ L = P ( w n ∣ z k ) ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) − α k = 0 , 1 ≤ n ≤ N , 1 ≤ k ≤ K
∂ L ∂ P ( z k ∣ d m ) = ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) P ( z k ∣ d m ) − β m = 0 , 1 ≤ m ≤ M , 1 ≤ k ≤ K
\frac{\partial \mathcal{L}}{\partial P(z_k|d_m)}=\frac{\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{P(z_k|d_m)} -\beta_m=0,1 \le m \le M,1 \le k \le K
∂ P ( z k ∣ d m ) ∂ L = P ( z k ∣ d m ) ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) − β m = 0 , 1 ≤ m ≤ M , 1 ≤ k ≤ K
解得
P ( w n ∣ z k ) = ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) α k
P(w_n|z_k)=\frac{\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\alpha_k}
P ( w n ∣ z k ) = α k ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i )
P ( z k ∣ d m ) = ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) β m
P(z_k|d_m)=\frac{\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\beta_m}
P ( z k ∣ d m ) = β m ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i )
結合∑ n P ( w n ∣ z k ) = 1 , ∑ k P ( z k ∣ d m ) = 1 \sum_nP(w_n|z_k)=1,\sum_kP(z_k|d_m)=1 ∑ n P ( w n ∣ z k ) = 1 , ∑ k P ( z k ∣ d m ) = 1 得到迭代式:
P ( w n ∣ z k ; θ i + 1 ) = ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) ∑ n ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i )
P(w_n|z_k;\theta_{i+1})=\frac{\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\sum_n\sum_mn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}
P ( w n ∣ z k ; θ i + 1 ) = ∑ n ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) ∑ m n ( d m , w n ) P ( z k ∣ w n , d m ; θ i )
P ( z k ∣ d m ; θ i + 1 ) = ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) ∑ k ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i )
P(z_k|d_m;\theta_{i+1})=\frac{\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}{\sum_k\sum_nn(d_m,w_n)P(z_k|w_n,d_m;\theta_i)}
P ( z k ∣ d m ; θ i + 1 ) = ∑ k ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i ) ∑ n n ( d m , w n ) P ( z k ∣ w n , d m ; θ i )
得到迭代式後,就可以通過EM算法來迭代得到P ( w n ∣ z k ) P(w_n|z_k) P ( w n ∣ z k ) 和P ( z k ∣ d m ) P(z_k|d_m) P ( z k ∣ d m ) ,得到我們的模型。