LDA常見的應用方向:
信息提取和搜索(語義分析);文檔分類/聚類、文章摘要、社區挖掘;基於內容的圖像聚類、目標識別(以及其他計算機視覺應用);生物信息數據的應用;
對於朴素貝葉斯模型來說,可以勝任許多文本分類問題,但無法解決語料中一詞多義和多詞一義的問題--它更像是詞法分析,而非語義分析。如果使用詞向量作為文檔的特征,一詞多義和多詞一義會造成計算文檔間相似度的不准確性。LDA模型通過增加“主題”的方式,一定程度的解決上述問題:
一個詞可能被映射到多個主題中,即,一詞多義。多個詞可能被映射到某個主題的概率很高,即,多詞一義。
LDA涉及的主要問題
1)共軛先驗分布
2)Dirichlet分布
3)LDA模型
Gibbs采樣算法學習參數
共軛先驗分布
由於x為給定樣本,P(x)有時被稱為“證據”,僅僅是歸一化因子,如果不關心P(θ|x)的具體值,只考察θ取何值時后驗概率P(θ|x)最大,則可將分母省去。
在貝葉斯概率理論中,如果后驗概率P(θ|x)和先驗概率p(θ)滿足同樣的分布律,那么,先驗分布和后驗分布被叫做共軛分布,同時,先驗分布叫做似然函數的共軛先驗分布。
Dirichlet分布
在學習Dirichlet分布之前先復習以下二項分布的最大似然估計:
投硬幣試驗中,進行N次獨立試驗,n次朝上,N-n次朝下。假定朝上的概率為p,使用對數似然函數作為目標函數:
上述過程的理論解釋
投擲一個非均勻硬幣,可以使用參數為θ的伯努利模型,θ為硬幣為正面的概率,那么結果x的分布形式為:
兩點分布/二項分布的共軛先驗是Beta分布,它具有兩個參數α和β,Beta分布形式為
先驗概率和后驗概率的關系
根據似然和先驗:
計算后驗概率:
后驗概率是參數為(k+α,n-k+β)的Beta分布,即:伯努利分布/二項分布的共軛先驗是Beta分布。
參數α、β是決定參數θ的參數,即超參數。
在后驗概率的最終表達式中,參數α、β和k、n-k一起作為參數θ的指數——后驗概率的參數為(k+α,n-k+β)。
根據這個指數的實踐意義:投幣過程中,正面朝上的次數,α和β先驗性的給出了在沒有任何實驗的前提下,硬幣朝上的概率分配;因此,α和β可被稱作“偽計數”。
共軛先驗的直接推廣
從2到K:二項分布→多項分布,Beta分布→Dirichlet分布
Dirichlet分布
復習—Beta分布中的B(α,β)的表示:
Dirichlet分布:
Dirichlet分布的期望
根據Beta分布的期望公式:
推廣得到:
Dirichlet分布分析
α是參數向量,共K個,定義在x1,x2…xK-1維上:
x1+x2+…+xK-1+xK=1
x1,x2…xK-1>0
定義在(K-1)維的單純形上,其他區域的概率密度為0
對稱Dirichlet分布
α=1時,退化為均勻分布
α>1時,p1=p2=...=pk的概率增大
α<1時,pi=1,p¬i=0的概率增大
多項分布的共軛分布是Dirichlet分布
調參經驗傳授:做LDA的時候,在條件允許的情況下,α值盡量不要設置太大,這樣做的好處是充分考慮樣本的因素,而不要過分考慮先驗參數的影響。
當然,如果先驗給的大,就是更多考慮先驗,而不是樣本。這需要充分根據實際情況決定,如果說我們認為樣本的情況是重要的,就不要加入太大的先驗。
LDA的解釋
1)共有m篇文章,一共涉及了K個主題;
2)每篇文章(長度為Nm)都有各自的主題分布,主題分布是多項分布,該多項分布的參數服從Dirichlet分布,該Dirichlet分布的參數為α;
3)每個主題都有各自的詞分布,詞分布為多項分布,該多項分布的參數服從Dirichlet分布,該Dirichlet分布的參數為β;
4)對於某篇文章中的第n個詞,首先從該文章的主題分布中采樣一個主題,然后在這個主題對應的詞分布中采樣一個詞。不斷重復這個隨機生成過程,直到m篇文章全部完成上述過程。
詳細解釋:此段非常有利於理解LDA主題模型
1)字典中共有V個term(不可重復),這些term出現在具體的文章中,就是word——在具體某文章中的word當然是有可能重復的。
2)語料庫中共有m篇文檔d1,d2…dm;
3)對於文檔di,由Ni個word組成,可重復;
4)語料庫中共有K個主題T1,T2…Tk;
5)α和β為先驗分布的參數,一般事先給定:如取0.1的對稱Dirichlet分布——表示在參數學習結束后,期望每個文檔的主題不會十分集中。
6)θ是每篇文檔的主題分布
對於第i篇文檔di的主題分布是θi=(θi1, θi2…,θiK),是長度為K的向量;
7)對於第i篇文檔di,在主題分布θi下,可以確定一個具體的主題zij=k,k∈[1,K]
8)φk表示第k個主題的詞分布,k∈[1,K]
對於第k個主題Tk的詞分布φk=(φk1, φk2… φkv),是長度為v的向量
9)由zij選擇φzij,表示由詞分布φzij確定term,即得到觀測值wij。
10)圖中K為主題個數,M為文檔總數,Nm是第m個文檔的單詞總數。β是每個Topic下詞的多項分布的Dirichlet先驗參數,α是每個文檔下Topic的多項分布的Dirichlet先驗參數。zmn是第m個文檔中第n個詞的主題,wmn是m個文檔中的第n個詞。兩個隱含變量θ和φ分別表示第m個文檔下的Topic分布和第k個Topic下詞的分布,前者是k維(k為Topic總數)向量,后者是v維向量(v為詞典中term總數)
參數的學習
給定一個文檔集合,wmn是可以觀察到的已知變量,α和β是根據經驗給定的先驗參數,其他的變量zmn、θ、φ都是未知的隱含變量,需要根據觀察到的變量來學習估計的。根據LDA的圖模型,可以寫出所有變量的聯合分布:
似然概率:
一個詞wmn初始化為一個詞t的概率是:
每個文檔中出現主題k的概率乘以主題k下出現詞t的概率,然后枚舉所有主題求和得到。整個文檔集合的似然函數為:
Gibbs Sampling吉布斯采樣
1)Gibbs Sampling算法的運行方式是每次選取概率向量的一個維度,給定其他維度的變量值采樣當前維度的值。不斷迭代直到收斂輸出待估計的參數。
2)初始時隨機給文本中的每個詞分配主題z(0),然后統計每個主題z下出現詞t的數量以及每個文檔m下出現主題z的數量,每一輪計算p(zi|z-i,d,w),即排除當前詞的主題分布:
根據其他所有詞的主題分布估計當前詞分配各個主題的概率。
3)當得到當前詞屬於所有主題z的概率分布后,根據這個概率分布為該詞采樣一個新的主題。
4)用同樣的方法更新下一個詞的主題,直到發現每個文檔的主題分布θi和每個主題的詞分布φj收斂,算法停止,輸出待估計的參數θ和φ,同時每個單詞的主題zmn也可同時得出。
5)實際應用中會設置最大迭代次數。每一次計算p(zi|z-i,d,w)的公式稱為Gibbs updating rule。
聯合分布:
第一項因子是給定主題采樣詞的過程
后面的因子計算,nz(t)表示詞t被觀察到分配給主題z的次數, nm(k) 表示主題k分配給文檔m的次數。
Gibbs updating rule:
詞分布和主題分布:
超參數的確定
1)交叉驗證
2)α表達了不同文檔間主題是否鮮明,β度量了有多少近義詞能夠屬於同一個類別。
3)主題數目K,詞項數目為W,可以使用:
α=50/K
β=200/W
注:不一定普遍適用
一種迭代求超參數的方法:
Digamma函數:
迭代公式:(T. Minka)
主題個數的確定
1)相似度最小
2)選取初始的主題個數K,訓練LDA模型,計算各主題之間的相似度
3)增加或減少K的值,重新訓練LDA模型,再次計算topic之間的相似度
4)選擇相似度最小的模型所對應的K作為主題個數。
概率分布的困惑度/復雜度Perplexity
某離散概率分布p的困惑度為:
樣本集x1,x2…xn的估計模型q的困惑度為:
a為任意整數。
交叉熵為:
困惑度Perplexity與主題模型
使用訓練數據得到無監督模型,在測試數據集中計算所有token似然值幾何平均數的倒數。
測試數據集中詞典大小的期望
其中,LDA中詞的似然概率為:
PageRank
一個網頁i的重要度可以使用指向網頁i的其他網頁j的重要度加權得到。
權值不妨取網頁j包含的鏈接數目。
參數的意義為:
1)網頁i的中重要性D(Pi)
2)阻尼系數d,如設置為常系數0.85
3)指向網頁i的網頁集合ln(Pi)
4)網頁j指向的網頁集合Out(Pj)
TextRank
將PageRank中的“網頁”換成“詞”,結論仍成立。
選擇合適的窗口大小,認為窗口內的詞相互指向。
句子Si和Sj的相似度:
將PageRank中“網頁”換成“句子”,結論仍然基本成立,只需考慮將“鏈接”加權:
LDA總結
1)由於在詞和文檔之間加入的主題的概念,可以較好的解決一詞多義和多詞一義的問題。
2)在實踐中發現,LDA用於短文檔往往效果不明顯——這是可以解釋的:因為一個詞被分配給某個主題的次數和一個主題包括的詞數目尚未斂。往往需要通過其他方案“連接”成長文檔。
3)LDA可以和其他算法相結合。首先使用LDA將長度為Ni的文檔降維到K維(主題的數目),同時給出每個主題的概率(主題分布),從而可以使用if-idf繼續分析或者直接作為文檔的特征進入聚類或者標簽傳播算法——用於社區發現等問題。