1.主題模型主要內容及其應用
(1)主要內容
(2)主要應用
2.共軛先驗分布
3.Dirichlet分布(狄利克雷分布)
4.LDA的介紹
LDA 在主題模型中占有非常重要的地位,常用來文本分類。LDA由Blei, David M.、Ng, Andrew Y.、Jordan於2003年提出,用來推測文檔的主題分布。它可以將文檔集中每篇文檔的主題以概率分布的形式給出,從而通過分析一些文檔抽取出它們的主題分布后,便可以根據主題分布進行主題聚類或文本分類。
主題模型,它稱作為:隱含狄利克雷分布(Latent Dirichlet Allocation,簡稱LDA),是一種概率主題模型。
主題模型 就是一種自動分析每個文檔,統計文檔中的詞語,根據統計的信息判斷當前文檔包含哪些主題以及各個主題所占比例各為多少。
LDA
主題模型要干的事就是:根據給定的一篇文檔,反推其主題分布。
主題模型 是對文本中 隱含主題 的一種建模方法,每個主題其實是詞表上單詞的概率分布;主題模型是一種生成模型,一篇文章中每個詞都是通過“以一定概率選擇某個主題,並從這個主題中以一定概率選擇某個詞語”這樣一個過程得到的。
LDA運行完會得到主題分布(θ)、詞分布(Φ)
(1)LDA是一個生成模型,下面介紹LDA生成文檔的過程。
LDA
主題模型的生成過程圖模型結構如下圖所示:
5.PLSA模型
PLSA模型
是最接近 LDA模型
,所以理解PLSA模型
有助於我們理解 LDA模型
。
(1)pLSA模型下生成文檔過程
第一步:
假設你每寫一篇文檔會制作一顆K面的“文檔-主題”骰子(扔此骰子能得到K個主題中的任意一個),和K個V面的“主題-詞項” 骰子(每個骰子對應一個主題,K個骰子對應之前的K個主題,且骰子的每一面對應要選擇的詞項,V個面對應着V個可選的詞)。
例子:
比如可令K=3,即制作1個含有3個主題的“文檔-主題”骰子,這3個主題可以是:教育、經濟、交通。然后令V = 3,制作3個有着3面的“主題-詞項”骰子,其中,教育主題骰子的3個面上的詞可以是:大學、老師、課程,經濟主題骰子的3個面上的詞可以是:市場、企業、金融,交通主題骰子的3個面上的詞可以是:高鐵、汽車、飛機。
第二步:
每寫一個詞,先扔該“文檔-主題”骰子選擇主題,得到主題的結果后,使用和主題結果對應的那顆“主題-詞項”骰子,扔該骰子選擇要寫的詞。
先扔“文檔-主題”的骰子,假設(以一定的概率)得到的主題是 “教育”,所以下一步便是扔 "教育" 主題篩子,(以一定的概率)得到教育主題篩子對應的某個詞:"大學"。
上面這個投骰子產生詞的過程簡化下便是:“先以一定的概率選取主題,再以一定的概率選取詞”。事實上,一開始可供選擇的主題有3個:教育、經濟、交通,那為何偏偏選取教育這個主題呢?其實是隨機選取的,只是這個隨機遵循一定的概率分布。比如可能選取教育主題的概率是0.5,選取經濟主題的概率是0.3,選取交通主題的概率是0.2,那么這3個主題的概率分布便是 {教育:0.5,經濟:0.3,交通:0.2},我們把各個主題z在文檔d中出現的概率分布稱之為 主題分布,且是一個多項分布。
同樣的,從主題分布中隨機抽取出教育主題后,依然面對着3個詞:大學、老師、課程,這3個詞都可能被選中,但它們被選中的概率也是不一樣的。比如大學這個詞被選中的概率是0.5,老師這個詞被選中的概率是0.3,課程被選中的概率是0.2,那么這3個詞的概率分布便是 {大學:0.5,老師:0.3,課程:0.2},我們把各個詞語w在主題z下出現的概率分布稱之為 詞分布,這個詞分布也是一個多項分布。
所以,選主題和選詞都是兩個隨機的過程,先從主題分布{教育:0.5,經濟:0.3,交通:0.2}中抽取出主題:教育,然后從該教育主題對應的詞分布{大學:0.5,老師:0.3,課程:0.2}中抽取出詞:大學。
第三步:
最后,你不停的重復扔“文檔-主題”骰子和”主題-詞項“骰子,重復N次(產生N個詞),完成一篇文檔,重復這產生一篇文檔的方法M次,則完成M篇文檔。
總結:pLSA中生成文檔的整個過程便是選定文檔生成主題,確定主題生成詞。
(2)根據文檔反推其主題分布
反過來,既然文檔已經產生,那么如何根據已經產生好的文檔反推其主題呢?這個利用看到的文檔推斷其隱藏的主題(分布)的過程(其實也就是產生文檔的逆過程),便是主題建模的目的:自動地發現文檔集中的主題(分布)。
換言之,人類根據文檔生成模型寫成了各類文章,然后丟給了計算機,相當於計算機看到的是一篇篇已經寫好的文章。現在計算機需要根據一篇篇文章中看到的一系列詞歸納出當篇文章的主題,進而得出各個主題各自不同的出現概率:主題分布。即文檔 d 和單詞 w 是可被觀察到的,但主題 z卻是隱藏的。
如下圖所示(圖中被塗色的d、w表示可觀測變量,未被塗色的z表示未知的隱變量,N表示一篇文檔中總共N個單詞,M表示M篇文檔):
上圖中,文檔d和詞w是我們得到的樣本(樣本隨機,參數雖未知但固定,所以pLSA屬於頻率派思想。區別於下文要介紹的LDA中:樣本固定,參數未知但不固定,是個隨機變量,服從一定的分布,所以 LDA
屬於貝葉斯派思想。
6.LDA模型
事實上,理解了pLSA模型
,也就差不多快理解了LDA模型
,因為LDA
就是在pLSA
的基礎上加層貝葉斯框架,即 LDA
就是 pLSA
的貝葉斯版本(正因為LDA被貝葉斯化了,所以才需要考慮歷史先驗知識,才加的兩個先驗參數)
(1)pLSA跟LDA的對比:生成文檔與參數估計
對比下本文開頭所述的LDA模型中一篇文檔生成的方式:
(2)PLSA跟LDA的區別
PLSA中,主題分布和詞分布是唯一確定的,能明確的指出主題分布可能就是{教育:0.5,經濟:0.3,交通:0.2},詞分布可能就是{大學:0.5,老師:0.3,課程:0.2}。
但在LDA中,主題分布和詞分布不再唯一確定不變,即無法確切給出。例如主題分布可能是{教育:0.5,經濟:0.3,交通:0.2},也可能是{教育:0.6,經濟:0.2,交通:0.2},到底是哪個我們不再確定(即不知道),因為它是隨機的可變化的。但再怎么變化,也依然服從一定的分布,即主題分布跟詞分布由Dirichlet先驗隨機確定。
(3)LDA生成文檔過程的進一步理解
上面說,LDA中,主題分布 —— 比如
是由dirichlet先驗
給定的,不是根據文檔產生的。所以,LDA生成文檔的過程中,先從dirichlet先驗
中“隨機”抽取出主題分布,然后從主題分布中“隨機”抽取出主題,最后從確定后的主題對應的詞分布中“隨機”抽取出詞。
7.Gibbs采樣
類似於 pLSA,LDA 的原始論文中是用的 變分-EM算法估計 未知參數,后來發現另一種估計 LDA 未知參數的方法更好,這種方法就是:Gibbs Sampling,有時叫Gibbs采樣或Gibbs抽樣,都一個意思。Gibbs抽樣 是馬爾可夫鏈蒙特卡爾理論(MCMC)中用來獲取一系列近似等於指定多維概率分布(比如2個或者多個隨機變量的聯合概率分布)觀察樣本的算法。
Gibbs采樣算法流程如下:
(1)LDA參數學習-Gibbs采樣
給定一個文檔集合,w 是可以觀察到的已知變量,α和 β 是根據經驗給定的先驗參數,其他的變量 z,θ 和 ϕ都是未知的隱含變量,需要根據觀察到的變量來學習估計的。
具體來講,所有文檔聯合起來形成的詞向量 w 是已知數據,但是不知道語料庫的主題 z 的分布。假設可以先求解出 w、z 的聯合分布 p(w,z),進而就可以求出某個詞 w 對應主題特征 z的條件概率分布:
其中 zi表示去掉下標為 i后的主題分布,有了條件概率,那么就可以使用 Gibbs采樣,最終可以得到第 i個詞的主題。
如果通過采樣得到所有詞的主題,那么可以通過統計所有詞的主題數,從而得到各個主題的詞分布。接着統計各個文檔對應詞的主題數,從而可以得到各個文檔的主題分布。
(2)Gibbs采樣總結
<1>Gibbs采樣訓練流程
選擇合適的主題數 K ,選擇合適的超參數 α,β
對於語料庫中每一篇文檔的每一個詞,隨機的賦予一個主題編號 z
重新掃描語料庫,對於每一個詞,利用 Gibbs采樣 公式更新它的 topic 的編號,並更新語料庫中該詞的編號
重復第三步中基於坐標軸輪換的Gibbs采樣,直到 Gibbs采樣 收斂。
統計語料庫中各個文檔各個詞的主題,得到文檔主題分布;然后統計語料庫中各個主題詞的分布,得到主題與詞的分布。
<2>Gibbs采樣預測流程
對當前文檔的每一個詞,隨機的賦予一個主題編號 z
重新掃描當前文檔,對於每一個詞,利用 Gibbs采樣 算法更新它的 topictopictopic 編號
重復第二步的基於坐標軸輪換的Gibbs采樣,直到Gibbs采樣收斂
統計文檔中各個詞的主題,得到該文檔主題分布。
8.LDA總結
參考文獻:
https://blog.csdn.net/daycym/article/details/88876460
https://zhuanlan.zhihu.com/p/31470216 (推薦)