主題模型TopicModel:Unigram、LSA、PLSA主題模型詳解
http://blog.csdn.net/pipisorry/article/details/42560693
主題模型歷史:
Papadimitriou、Raghavan、Tamaki和Vempala在1998年發表的一篇論文中提出了潛在語義索引。1999年,Thomas Hofmann又在此基礎上,提出了概率性潛在語義索引(Probabilistic Latent Semantic Indexing,簡稱PLSI)。
隱含狄利克雷分配LDA可能是最常見的主題模型,是一般化的PLSI,由Blei, David M.、吳恩達和Jordan, Michael I於2003年提出。LDA允許文件擁有多種主題。其它主體模型一般是在LDA基礎上改進的。例如Pachinko分佈在LDA度量詞語關聯之上,還加入了主題的關聯度。
文字建模-理解LDA模型的基礎模型:
Unigram model、mixture of unigrams model,以及pLSA模型。
定義變數:
- 表示詞,表示所有單詞的個數(固定值)
- 表示主題,是主題的個數(預先給定,固定值)
- 表示語料庫,其中的是語料庫中的文件數(固定值)
- 表示文件,其中的表示一個文件中的詞數(隨機變數)
Unigram model
對於文件,用表示詞的先驗概率,生成文件的概率為:
其圖模型為(圖中被塗色的w表示可觀測變數,N表示一篇文件中總共N個單詞,M表示M篇文件):
或為:
unigram model假設文字中的詞服從Multinomial分佈,而我們已經知道Multinomial分佈的先驗分佈為Dirichlet分佈。 上圖中的表示在文字中觀察到的第n個詞,n∈[1,N]表示該文字中一共有N個單詞。加上方框表示重複,即一共有N個這樣的隨機變數。其中,p和α是隱含未知變數:
- p是詞服從的Multinomial分佈的引數
- α是Dirichlet分佈(即Multinomial分佈的先驗分佈)的引數。
一般α由經驗事先給定,p由觀察到的文字中出現的詞學習得到,表示文字中出現每個詞的概率。
最簡單的 Unigram Model:
假設我們的詞典中一共有
上帝的這個唯一的骰子各個面的概率記為
上帝投擲
對於一篇文件
而文件和文件之間我們認為是獨立的, 所以如果語料中有多篇文件
在 Unigram Model 中假設了文件之間是獨立可交換的,而文件中的詞也是獨立可交換的,所以一篇文件相當於一個袋子,裡面裝了一些詞,而詞的順序資訊就無關緊要了,這樣的模型也稱為詞袋模型(Bag-of-words)。
假設語料中總的詞頻是
當然,我們很重要的一個任務就是估計模型中的引數
貝葉斯觀點下的 Unigram Model:
對於以上模型,貝葉斯統計學派的統計學家會有不同意見,他們會很挑剔的批評只假設上帝擁有唯一一個固定的骰子是不合理的。在貝葉斯學派看來,一切引數都是隨機變數,以上模型中的骰子
上帝的這個罈子裡面,骰子可以是無窮多個,有些型別的骰子數量多,有些型別的骰子少,所以從概率分佈的角度看,罈子裡面的骰子
貝葉斯觀點下的 Unigram Model
以上貝葉斯學派的遊戲規則的假設之下,語料
在貝葉斯分析的框架下,此處先驗分佈
實際上是在計算一個多項分佈的概率,所以對先驗分佈的一個比較好的選擇就是多項分佈對應的共軛分佈,即 Dirichlet 分佈
此處,
Δ(α→)=∫∏k=1Vpαk−1kdp→.
Dirichlet 先驗下的 Unigram Model
Unigram Model的概率圖模型
Dirichlet 先驗 + 多項分佈的資料
於是,在給定了引數
貝葉斯的框架下引數
也就是說對每一個
考慮到
進一步,我們可以計算出文字語料的產生概率為
,Δ(α→)=∫∏k=1Vpαk−1kdp→
Mixture of unigrams model
PLSA模型
{pLSA樣本隨機,引數雖未知但固定,屬於頻率派思想;區別LDA樣本固定,引數未知但不固定,是個隨機變數,服從一定的分佈,LDA屬於貝葉斯派思想}
pLSA模型
Hoffman 於 1999 年給出的PLSA(Probabilistic Latent Semantic Analysis) 模型中首先進行了明確的數學化。Hoffman 認為一篇文件(Document) 可以由多個主題(Topic) 混合而成, 而每個Topic 都是詞彙上的概率分佈,文章中的每個詞都是由一個固定的 Topic 生成的。下圖是英語中幾個Topic 的例子。
Topic 就是Vocab 上的概率分佈
PLSA的文件生成模型
- 1. 假設你每寫一篇文件會製作一顆K面的“文件-主題”骰子(扔此骰子能得到K個主題中的任意一個),和K個V面的“主題-詞項” 骰子(每個骰子對應一個主題,K個骰子對應之前的K個主題,且骰子的每一面對應要選擇的詞項,V個面對應著V個可選的詞)。
- 比如可令K=3,即製作1個含有3個主題的“文件-主題”骰子,這3個主題可以是:教育、經濟、交通。然後令V = 3,製作3個有著3面的“主題-詞項”骰子,其中,教育主題骰子的3個面上的詞可以是:大學、老師、課程,經濟主題骰子的3個面上的詞可以是:市場、企業、金融,交通主題骰子的3個面上的詞可以是:高鐵、汽車、飛機。
- 2. 每寫一個詞,先扔該“文件-主題”骰子選擇主題,得到主題的結果後,使用和主題結果對應的那顆“主題-詞項”骰子,扔該骰子選擇要寫的詞。 {每篇文件有不同的 文件-主題 骰子}
- 先扔“文件-主題”的骰子,假設(以一定的概率)得到的主題是教育,所以下一步便是扔教育主題篩子,(以一定的概率)得到教育主題篩子對應的某個詞:大學。
- 上面這個投骰子產生詞的過程簡化下便是:“先以一定的概率選取主題,再以一定的概率選取詞”。事實上,一開始可供選擇的主題有3個:教育、經濟、交通,那為何偏偏選取教育這個主題呢?其實是隨機選取的,只是這個隨機遵循一定的概率分佈。比如3個主題的概率分佈是{教育:0.5,經濟:0.3,交通:0.2},我們把各個主題z在文件d中出現的概率分佈稱之為主題分佈,且是一個多項分佈。
- 同樣的,從主題分佈中隨機抽取出教育主題後,依然面對著3個詞:大學、老師、課程,這3個詞都可能被選中,但它們被選中的概率也是不一樣的。比如3個詞的概率分佈是{大學:0.5,老師:0.3,課程:0.2},我們把各個詞語w在主題z下出現的概率分佈稱之為詞分佈,這個詞分佈也是一個多項分佈。
- 先扔“文件-主題”的骰子,假設(以一定的概率)得到的主題是教育,所以下一步便是扔教育主題篩子,(以一定的概率)得到教育主題篩子對應的某個詞:大學。
- 所以,選主題和選詞都是兩個隨機的過程,先從主題分佈{教育:0.5,經濟:0.3,交通:0.2}中抽取出主題:教育,然後從該主題對應的詞分佈{大學:0.5,老師:0.3,課程:0.2}中抽取出詞:大學。
- 3. 最後,你不停的重複扔“文件-主題”骰子和”主題-詞項“骰子,重複N次(產生N個詞),完成一篇文件,重複這產生一篇文件的方法M次,則完成M篇文件。
變數定義
- 表示海量文件中某篇文件被選中的概率。
- 表示詞在給定文件中出現的概率。
- 怎麼計算得到呢?針對海量文件,對所有文件進行分詞後,得到一個詞彙列表,這樣每篇文件就是一個詞語的集合。對於每個詞語,用它在文件中出現的次數除以文件中詞語總的數目便是它在文件中出現的概率。
- 表示具體某個主題在給定文件下出現的概率。
- 表示具體某個詞在給定主題下出現的概率,與主題關係越密切的詞,其條件概率越大。
- 按照概率選擇一篇文件
- 選定文件後,從主題分佈中按照概率選擇一個隱含的主題類別
- 選定後,從詞分佈中按照概率選擇一個詞
這個利用看到的文件推斷其隱藏的主題(分佈)的過程(其實也就是產生文件的逆過程),便是主題建模的目的:自動地發現文件集中的主題(分佈)。
{P(di)應該都一樣吧-}
由於可事先計算求出,而和未知,所以就是我們要估計的引數(值),通俗點說,就是要最大化這個θ。
常用的引數估計方法有極大似然估計MLE、最大後驗證估計MAP、貝葉斯估計等等。因為該待估計的引數中含有隱變數z,所以我們可以考慮EM演算法。
EM演算法的簡單介紹
EM演算法,全稱為Expectation-maximization algorithm,為期望最大演算法,其基本思想是:首先隨機選取一個值去初始化待估計的值,然後不斷迭代尋找更優的使得其似然函式likelihood 比原來的要大。換言之,假定現在得到了,想求,使得
EM的關鍵便是要找到的一個下界(注:,其中,X表示已經觀察到的隨機變數),然後不斷最大化這個下界,通過不斷求解下界的極大化,從而逼近要求解的似然函式。
所以EM演算法的一般步驟為:
- 1. 隨機選取或者根據先驗知識初始化;
- 2. 不斷迭代下述兩步
- ①給出當前的引數估計,計算似然函式的下界
- ②重新估計引數θ,即求,使得
- 3. 上述第二步後,如果收斂(即收斂)則退出演算法,否則繼續回到第二步。
上述過程好比在二維平面上,有兩條不相交的曲線,一條曲線在上(簡稱上曲線),一條曲線在下(簡稱下曲線),下曲線為上曲線的下界。現在對上曲線未知,只已知下曲線,為了求解上曲線的最高點,我們試著不斷增大下曲線,使得下曲線不斷逼近上曲線,下曲線在某一個點達到區域性最大值並與上曲線在這點的值相等,記錄下這個值,然後繼續增大下曲線,尋找下曲線上與上曲線上相等的值,迭代到收斂(即收斂)停止,從而利用當前下曲線上的區域性最大值當作上曲線的全域性最大值(換言之,EM演算法不保證一定能找到全域性最優值)。如下圖所示:
PLSA演算法的EM推導詳細介紹
假定有訓練集,包含m個獨立樣本,希望從中找到該組資料的模型p(x,z)的引數。
然後通過極大似然估計建立目標函式--對數似然函式:
{規範地,x -> xi} { }【p(x|theta)和p(x;theta)的區別】
這裡,z是隱隨機變數,直接找到引數的估計是很困難的。我們的策略是建立的下界,並且求該下界的最大值;重複這個過程,直到收斂到區域性最大值。
令Qi是z的某一個分佈(表示式待會可以求解出來),Qi≥0,且結合Jensen不等式,有:
為了尋找儘量緊的下界,我們可以讓使上述等號成立,而若要讓等號成立的條件則是:
換言之,有以下式子成立:,且由於有:
所以可得:
{the distribution of zi given xi and parameterized by theta,e.g. Qi(Zi) = theta0^x0*theta1^x1*... -}
最終得到EM演算法的整體框架:
{E步中,是通過上次的p(z|d)和p(w|z)求出p(x,z;theta)的}
EM演算法估計pLSA的兩未知引數(對應上面的框架)
首先嚐試從矩陣的角度來描述待估計的兩個未知變數和。
- 假定用表示詞表在主題上的一個多項分佈,則可以表示成一個向量,每個元素表示詞項出現在主題中的概率,即
- 用表示所有主題在文件上的一個多項分佈,則可以表示成一個向量,每個元素表示主題出現在文件中的概率,即
這樣,巧妙的把和轉換成了兩個矩陣。換言之,最終我們要求解的引數是這兩個矩陣:
由於詞和詞之間是相互獨立的,所以整篇文件N個詞的分佈為:
再由於文件和文件之間也是相互獨立的,所以整個語料庫中詞的分佈為(整個語料庫M篇文件,每篇文件N個詞):
其中,表示詞項在文件中的詞頻,表示文件di中詞的總數,顯然有
從而得到整個語料庫的詞分佈的對數似然函式(下述公式中有個小錯誤,正確的應該是:N為M,M為N):
{note:1)步的推導:
其中∑ P(wj|zk)P(zk|di) = P(wj|di)的推導:
{條件概率的全概率並且我們是按照如下方式得到“詞-文件”的生成模型的:
1. 按照概率P(di)選擇一篇文件di
2. 按照概率P(zk|di)選擇一個隱含的主題類別zk
3. 按照概率P(wj|zk)生成一個詞wj
根據操作的物理意義 P(wj,zk,di) = P(wj,zk)如果從PLSA的話,模型本身就設定w與d無關的按照這個順序操作的話 P(wj|zk,di) 確實等於 P(wj|zk);因為主題zk都是從文章di中選的,詞wi又都是從主題zk中選的,所以這裡的詞wi都是從文章di中選的
對於word只關注來自哪個topic,不關注來自哪個doc-}}
現在,我們需要最大化上述這個對數似然函式來求解引數和。對於這種含有隱變數的最大似然估計,可以使用EM演算法。
- E-step:假定引數已知,計算此時隱變數的後驗概率。
- M-step:帶入隱變數的後驗概率,最大化樣本分佈的對數似然函式,求解相應的引數。
觀察之前得到的對數似然函式的結果,由於文件長度可以單獨計算,所以去掉它不影響最大化似然函式。
此外,根據E-step的計算結果,把代入,於是我們只要最大化下面這個函式 {E()}即可(下述公式中有個小錯誤,正確的應該是:N為M,M為N):
E
{TopicModel - EM演算法 - Lazy Statistician規則:E(z) = ∑P(zk|di, wj)z中z替換成L式, 相當於把其中與z相關的部分積分掉
TopicModel - EM演算法 最大化Complete data對數似然函式的期望(即把其中與z相關的部分積分掉)}
這是一個多元函式求極值問題,並且已知有如下約束條件(下述公式中有個小錯誤,正確的應該是:M為N):
(1)
凸優化中,一般處理這種帶有約束條件的極值問題,常用的方法便是拉格朗日乘數法,即通過引入拉格朗日乘子將約束條件和多元(目標)函式融合到一起,轉化為無約束條件的極值問題。
這裡我們引入兩個拉格朗日乘子和,從而寫出拉格朗日函式(下述公式中有個小錯誤,正確的應該是:N為M,M為N):
因為我們要求解的引數是和,所以分別對和求偏導,然後令偏導結果等於0,得到(下述公式中有個小錯誤,正確的應該是:N為M,M為N):
(2)
消去拉格朗日乘子,最終可估計出引數和(下述公式中有個小錯誤,正確的應該是:N為M,M為N):
{注意這裡進行過方程兩邊同時乘以和的變形},聯立上面4組方程(1)(2),我們就可以解出M步驟中通過最大化期望估計出的新的引數值
解方程組的關鍵在於先求出,其實只需要做一個加和運算就可以把的係數都化成1,後面就好計算了}
【TopicModel - PLSA模型及PLSA的EM推導】
然後使用更新後的引數值,我們又進入E步驟,計算隱含變數 Given當前估計的引數條件下的後驗概率。如此不斷迭代,直到滿足終止條件。
from:http://blog.csdn.net/pipisorry/article/details/42560693
ref:
1.TopicModel - LSA(隱性語義分析)的早期方法SVD
相關文章
- 淺談話題模型:LSA、PLSA、LDA模型LDA
- LDA主題模型LDA模型
- 主題模型值LDA模型LDA
- 【轉】概念主題模型簡記模型
- 文字主題抽取:用gensim訓練LDA模型LDA模型
- LDA主題模型簡介及Python實現LDA模型Python
- WordPress主題開發全面詳解-黃棒清-專題視訊課程
- WordPress主題:Zibll子比主題 V4.0
- sketch首款主題管理外掛-主題大師
- 主題之美,排名靠前的 10 個 VSCode 主題VSCode
- Transformer模型詳解ORM模型
- grub 主題 --vimix
- Notability主題配色
- Myeclipse更改主題Eclipse
- ModStart模板主題
- 主題 1 The Shell
- 用WordCloud詞雲+LDA主題模型,帶你讀一讀《芳華》(python實現)CloudLDA模型Python
- 解決超級模型部署難題模型
- Flutter完整開發實戰詳解(四、Redux、主題、國際化)FlutterRedux
- 從12個方面詳細解讀Pulsar的主題與訂閱
- 【主題解讀】MAKE A BEETER RSAC2019
- Laravel 小技巧 - 獲取模型主鍵集Laravel模型
- 【JSConf EU 2018】主題總結 (部分主題已有中文文章)JS
- WordPress主題 Hankin v2.0.1部落格主題模板
- OctoberCMS-3-主題
- (九)主題切換
- Discourse Hot 主題功能
- Sublime 好看的主題
- Flutter主題風格Flutter
- Kafka 主題 CLI 教程Kafka
- 主題test999999
- 解決Hugging Face模型下載難題Hugging Face模型
- windows 安裝 MongoDB 卡主問題解決WindowsMongoDB
- Java記憶體模型最全詳解(5大模型圖解)Java記憶體大模型圖解
- CSS盒子模型詳解CSS模型
- OpenGL 模型載入詳解模型
- OSI七層模型詳解模型
- 影象主題色的提取
- PyCon 2018 主題彙總