自然語言處理之LDA主題模型


 

1、LDA概述

  在機器學習領域,LDA是兩個常用模型的簡稱:線性判別分析(Linear Discriminant Analysis)和 隱含狄利克雷分布(Latent Dirichlet Allocation)。本文的LDA僅指代Latent Dirichlet Allocation. LDA 在主題模型中占有非常重要的地位,常用來文本分類。

  LDA是基於貝葉斯模型的,涉及到貝葉斯模型離不開“先驗分布”,“數據(似然)”和"后驗分布"三塊。在貝葉斯學派中有:

    先驗分布 + 數據(似然)= 后驗分布

  這點其實很好理解,因為這符合我們人的思維方式,比如你對好人和壞人的認知,先驗分布為:100個好人和100個的壞人,即你認為好人壞人各占一半,現在你被2個好人(數據)幫助了和1個壞人騙了,於是你得到了新的后驗分布為:102個好人和101個的壞人。現在你的后驗分布里面認為好人比壞人多了。這個后驗分布接着又變成你的新的先驗分布,當你被1個好人(數據)幫助了和3個壞人(數據)騙了后,你又更新了你的后驗分布為:103個好人和104個的壞人。依次繼續更新下去。

 

2、預備知識

2.1 詞袋模型

  LDA 采用詞袋模型。所謂詞袋模型,是將一篇文檔,我們僅考慮一個詞匯是否出現,而不考慮其出現的順序。在詞袋模型中,“我喜歡你”和“你喜歡我”是等價的。與詞袋模型相反的一個模型是n-gram,n-gram考慮了詞匯出現的先后順序。

2.2 二項分布

  伯努利分布是只有兩種可能結果的單次隨機試驗,二項分布(Binomial distribution)是n重伯努利試驗成功次數的離散概率分布,即為X ~ B(n, p). 概率密度公式為:

    

2.3 多項分布

  多項式分布(Multinomial Distribution)是二項式分布的推廣。二項式做n次伯努利實驗,規定了每次試驗的結果只有兩個,如果現在還是做n次試驗,只不過每次試驗的結果可以有多k個,且k個結果發生的概率互斥且和為1,則發生其中一個結果X次的概率就是多項式分布。概率密度函數為:

    

2.4 Beta分布

  beta分布可以看作一個概率的概率分布,當你不知道一個東西的具體概率是多少時,它可以給出了所有概率出現的可能性大小。

    

  假設此時的二項分布為

    

  貝葉斯估計為

    

  現在我們有了二項分布的似然函數和beta分布,現在我們將beta分布代進貝葉斯估計中的P(θ)中,將二項分布的似然函數代入P(data|θ)中,可以得到: 

    

  我們設a=a+z,b=b+Nz,最后我們發現這個貝葉斯估計服從Beta(a’,b’)分布的,我們只要用B函數將它標准化就得到我們的后驗概率: 

    

  如上面這種形式,先驗分布和后驗分布的形式是同一種分布,像這樣的分布我們稱為共軛分布,而和二項分布共軛的分布就是Beta分布。

  而共軛的意思是,以Beta分布和二項式分布為例,數據符合二項分布的時候,參數的先驗分布和后驗分布都能保持Beta分布的形式,這種形式不變的好處是,我們能夠在先驗分布中賦予參數很明確的物理意義,這個物理意義可以延續到后續分布中進行解釋,同時從先驗變換到后驗過程中從數據中補充的知識也容易有物理解釋。

2.5 狄利克雷分布

  狄利克雷分布是多項分布的共軛分布,也是Beta分布的一般形式。概率密度函數如下:

    

  其中

    

    

  Beta分布的期望求解:

    

  對於上面的分布有

    

  因此可以得到

    

  這說明,對於對於Beta分布的隨機變量,其均值可以用α/α+β來估計。而對於狄利克雷分布同樣有

    

 

3、LDA主題模型

  LDA的特點:

    1)它是一種無監督的貝葉斯模型。

    2)是一種主題模型,它可以將文檔集中的每篇文檔按照概率分布的形式給出。

    3)是一種無監督學習,在訓練時不需要手工標注的訓練集,需要的是文檔集和指定主題的個數。

    4)是一種典型的詞袋模型,它認為一篇文檔是由一組詞組成的集合,詞與詞之間沒有順序和先后關系。

3.1 LDA的簡單理解

  同一主題下,某個詞出現的概率,以及同一文檔下,某個主題出現的概率,兩個概率的乘積,可以得到某篇文檔出現某個詞的概率,我們在訓練的時候,只需要調整這兩個分布。具體如下圖所示

    

  LDA生成文檔的流程如下:

    1) 按照先驗概率p(di)選擇一篇文檔di

    2)從Dirichlet分布α中取樣生成文檔di的主題分布θi,主題分布θi由超參數為α的Dirichlet分布生成

    3)從主題的多項式分布θi中取樣生成文檔di第 j 個詞的主題zi,j

    4)從Dirichlet分布β中取樣生成主題zi,j對應的詞語分布ϕzi,j,詞語分布ϕzi,j由參數為β的Dirichlet分布生成

    5)從詞語的多項式分布ϕzi,j中采樣最終生成詞語ωi,j

3.2 LDA的數學理解

  在LDA中,主題分布和詞分布是不確定的,LDA的作者們采用的是貝葉斯派的思想,認為它們應該服從一個分布,主題分布和詞分布都是多項式分布,因為多項式分布和狄利克雷分布是共軛結構,在LDA中主題分布和詞分布使用了Dirichlet分布作為它們的共軛先驗分布。

  LDA模型如下圖所示

    

  我們來看看LDA模型的物理過程分解,主要分為兩個狄利克雷-多項式共軛分布過程:第一是文檔主題的先驗分布(狄利克雷分布)和每一個主題的多項式分布;第二是主題中詞的先驗分布(狄利克雷分布)和每一個詞的多項式分布。

  過程一:

    

  這個過程表示在生成第m篇文檔時,先生成對應的主題分布(主題分布是變化的,要根據狄利克雷分布中的超參數α來生成):

    

  然后根據這個主題分布獲得生成文檔中第n個詞的主題:

    

  過程二:

    

  這個過程先獲得第k個主題的詞分布(該詞分布是變化的,要根據狄利克雷分布中的超參數β來生成):

    

  其中

    

  然后根據詞的多項式分布來生成詞

    

  由第一個過程可知

    

  是表示生產第m篇文檔中的所有詞對應的主題,顯然,

    

  上面的式子對應狄利克雷分布

    

  上面的式子對應多項式分布,所以整體上是一個狄利克雷-多項式的共軛結構

    

  對於第m篇文檔的主題生成概率可以表示為

    

  由於語料中M篇文檔的主題的生成過程相互獨立,因此整個語料中的主題的生成概率

    

  在這里我們得到了第一個共軛分布的表達式

  由第二個過程可知

    

  語料中任何兩個由主題k生成的詞都是可以交換的,即使他們不在同一個文檔中(因為這兩個過程是相互獨立的),所以此處不考慮文檔的概念,則上式可以表述為:

    

  因此可以看出

    

  是對應於狄利克雷分布,而

    

  是對應於對象時分布的,所以整體也是一個狄利克雷-多項式的共軛分布:

    

  與第一個過程同理,可以得到共軛分布表達式:

    

  結合第一個過程的共軛分布表達式,可以得到語料中詞和主題的聯合生成概率

    

  具體的LDA模型求解采用Gibbs采樣算法,現成的庫可以用gensim,gensim.models.ldamodel.LdaModel()類可以生成LDA模型。

 

4、總結

  LDA可以看作是由四個概率分布組成的(兩個狄利克雷分布和多項式分布),也可以看作是兩個狄利克雷-多項式共軛分布組成的。

  所以這四個概率分布如下:

  第一個狄利克雷分布生成主題分布模型,且該主題分布模型服從多項式分布(相當於主題分布有多種)

  第一個多項式分布用來生成某一個主題(獲得某一個確定的主題分布之后就可以獲得確定的主題)

  第二個狄利克雷分布生成詞分布模型,且該詞服從多項式分布(相當於詞分布有多種)

  第二個多項式分布用來生成某一個詞(獲得某一個確定的詞分布之后就可以獲得確定的詞,該確定的詞分布是和確定的主題有關的)

  

參考文獻:

  伯努利分布、二項分布、多項分布、Beta分布、Dirichlet分布

  文本主題模型之LDA(一) LDA基礎

  帶你理解beta分布

  一文詳解LDA主題模型

  LDA主題模型簡介

  主題模型(LDA)(一)--通俗理解與簡單應用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM