主題模型
作者:櫻花豬
摘要:
本文為七月算法(julyedu.com)12月機器學習第十五次課在線筆記。主題模型是對文字隱含主題進行建模的方法。它克服了傳統信息檢索中文檔相似度計算方法的缺點,並且能夠在海量互聯網數據中自動尋找出文字間的語義主題。主題模型在自然語言和基於文本的搜索上都起到非常大的作用。
引言:
兩篇文檔是否相關往往不只決定於字面上的詞語重復,還取決於文字背后的語義關聯。對語義關聯的挖掘,可以讓我們的搜索更加智能化。而主題模型則是用於解決這個方法的非常經典的模型。主題模型是對文字隱含主題進行建模的方法。它克服了傳統信息檢索中文檔相似度計算方法的缺點,並且能夠在海量互聯網數據中自動尋找出文字間的語義主題。
主題模型的主要思想就是通過對文檔的統計分析找到對應的主題,再有主題來找到在這個主題下會產生詞語的概率。在操作中,文檔和詞都是已知條件而主題模型則是隱變量,基於這一點我們能夠很好的利用EM算法特性。文章介紹了pLSA和LDA兩種方法,通過課程能夠更加實際的了解主題模型的應用。
預備知識:
一、預備概念
1、函數:
函數是階乘在實數上的推廣:
2、Beta分布
Beta分布的概率密度:
其中系數B為:
Gamma函數可以看成階乘的實數域推廣:
Bata分布的期望:
朴素貝葉斯的分析可以勝任許多文本分類問題。
但是朴素貝葉斯的分析無法解決語料中一詞多義和多詞一義的問題——它更像是詞法分析,而非語義分析。
o如果使用詞向量作為文檔的特征,一詞多義和多詞一義會造成計算文檔間相似度的不准確性。
o可以通過增加“主題”的方式,一定程度的解決上述問題:
n一個詞可能被映射到多個主題中o——一詞多義
n多個詞可能被映射到某個主題的概率很高o——多詞一義
基於概率統計的pLSA模型(probabilistic Latent Semantic Analysis,概率隱語義分析),增加了主題模型,形成簡單的貝葉斯網絡,可以使用EM算法學習模型參數。
D代表文檔,Z代表主題(隱含類別),W代表單詞;
P(di)表示文檔di的出現概率,
P(zk|di)表示文檔di中主題zk出現的概率,
P(wj|zk)表示給定主題zk的前提下單詞wj出現的概率。
每個文檔在所有主題上服從多項分布;每個主題在所有詞項上服從多項分布。
整個文檔的生成過程是這樣的:
以P(di)的概率選中文檔di;
以P(zk|di)的概率選中主題zk;
以P(wj|zk)的概率產生一個單詞wj。
觀察數據為(di,wj)對,主題zk是隱含變量。
(di,wj)的聯合分布為:
而對應了兩組多項分布,而計算每個文檔的主題分布,就是該模型的任務目標。
pLSA模型算法:
觀察數據為(di,wj)對,主題zk是隱含變量。
目標函數(極大似然估計):
未知變量/自變量
使用逐次逼近的辦法:(EM算法)
假定P(zk|di)、P(wj|zk)已知,求隱含變量zk的后驗概率;(E-step)
在(di,wj,zk)已知的前提下,求關於參數P(zk|di)、P(wj|zk)的似然函數期望極大值,得到最優解P(zk|di)、P(wj|zk),(M-step)
帶入上一步,從而循環迭代;
PLSA模型總結
pLSA應用於信息檢索、過濾、自然語言處理等領域,pLSA考慮到詞分布和主題分布,使用EM算法來學習參數。
opLSA可以看做概率化的矩陣分解。
o雖然推導略顯復雜,但最終公式簡潔清晰,很符合直觀理解;推導過程使用了EM算法,也是學習EM算法的重要素材。
二、LDA模型
pLSA不需要先驗信息即可完成自學習——這是它的優勢。如果在特定的要求下,需要有先驗知識的影響呢?LDA模型
LDA模型:是一個三層結構的貝葉斯模型,需要超參數。
1、共軛先驗分布
在貝葉斯概率理論中,如果后驗概率P(θ|x)和先驗概率p(θ)滿足同樣的分布律,那么,先驗分布和后驗分布被叫做共軛分布,同時,先驗分布叫做似然函數的共軛先驗分布。
通過共軛先驗分布我們能夠從
二項分布-->多項分布
Bata分布-->Dirichlet分布
Bata分布:
Dirichlet分布:
簡記:
是參數向量,共K個
定義在(K-1)維的單純形上,其他區域的概率密度為0
對稱Dirichlet分布:
,其中
>1時,
的概率增大
<1時,退化為均勻分布
>1時,
的概率增大
3、LDA模型
LDA的解釋:
共有m篇文章,一共涉及了K個主題;
每篇文章(長度為Nm)都有各自的主題分布,主題分布是多項分布,該多項分布的參數服從Dirichlet分布,該Dirichlet分布的參數為α;
每個主題都有各自的詞分布,詞分布為多項分布,該多項分布的參數服從Dirichlet分布,該Dirichlet分布的參數為β;
o對於某篇文章中的第n個詞,首先從該文章的主題分布中采樣一個主題,然后在這個主題對應的詞分布中采樣一個詞。不斷重復這個隨機生成過程,直到m篇文章全部完成上述過程。
字典中共有V個term(不可重復),這些term出現在具體的文章中,就是word——在具體某文章中的word當然是有可能重復的。
語料庫中共有m篇文檔d1,d2…dm;
對於文檔di,由Ni個word組成,可重復;
語料庫中共有K個主題T1,T2…Tk;
α和β為先驗分布的參數,一般事先給定:如取0.1的對稱Dirichlet分布——表示在參數學習結束后,期望每個文檔的主題不會十分集中。
oθ是每篇文檔的主題分布
對於第i篇文檔di的主題分布是θi=(θi1,θi2…,θiK),是長度為K的向量;
對於第i篇文檔di,在主題分布θi下,可以確定一個具體的主題zij=k,k∈[1,K],
表示第k個主題的詞分布,k∈[1,K],對於第k個主題Tk的詞分布φk=(φk1,φk2…φkv),是長度為v的向量
由zij選擇φzij,表示由詞分布φzij確定term,即得到觀測值wij。
圖中K為主題個數,M為文檔總數,Nm是第m個文檔的單詞總數。β是每個Topic下詞的多項分布的Dirichlet先驗參數,α是每個文檔下Topic的多項分布的Dirichlet先驗參數。zmn是第m個文檔中第n個詞的主題,wmn是m個文檔中的第n個詞。兩個隱含變量θ和φ分別表示第m個文檔下的Topic分布和第k個Topic下詞的分布,前者是k維(k為Topic總數)向量,后者是v維向量(v為詞典中term總數)。
由於在詞和文檔之間加入的主題的概念,可以較好的解決一詞多義和多詞一義的問題。
在實踐中發現,LDA用於短文檔往往效果不明顯——這是可以解釋的:因為一個詞被分配給某個主題的次數和一個主題包括的詞數目尚未斂。往往需要通過其他方案“連接”成長文檔。
LDA可以和其他算法相結合。首先使用LDA將長度為Ni的文檔降維到K維(主題的數目),同時給出每個主題的概率(主題分布),從而可以使用if-idf繼續分析或者直接作為文檔的特征進入聚類或者標簽傳播算法——用於社區發現等問題。