記錄學習BTM 來源知乎等https://zhuanlan.zhihu.com/p/111545954
什么是BTM
BTM和LDA一樣都是主題模型,就是給你一篇文檔,你指定一個主題的個數,這兩個模型都會生成每個主題中的關鍵詞,以及一篇新的文檔中各個主題的概率有多大。根據論文作者的表述。傳統的主題模型(LDA)在處理短文本(比如直播間彈幕,微博文本等等),會因為文本中的詞過於稀疏,得到模型的效果不夠好。為了解決這個問題。大佬們提出一種新的主題模型,就是BTM,而且BTM論文的作者說,在短文本上BTM的表現要比LDA好,即使是長文本,BTM的效果也不比LDA弱。
BTM的英文全名叫(Biterm Topic Model),這里一共三個單詞,我覺的大家肯定認識后面兩個,那我給大家解釋下第一個吧,Biterm翻譯成什么我也不知道,但是這不並不影響我們理解論文,我給大家舉個例子大家就明白了。我們這里有一句話 “清風明月,草長鶯飛,楊柳依依“,這里假設我們斷句分詞后得到三個詞.
['清風明月','草長鶯飛','楊柳依依']
那么,這句話就包括三個biterm,分別是
['清風明月','草長鶯飛'] ['楊柳依依','草長鶯飛']['清風明月','楊柳依依']
這里假設大家都了解LDA的建模過程,如果不了解的話,牆裂建議大家去看《數學八卦》,有哪里不懂,可以私信我,反正我不一定會。我們知道LDA是根據單個單詞去建模。而BTM的不同之處就在於,BTM是根據上面的biterm來建模的。這里再舉個例子。在上面的句子中,假如是用LDA建模,那么我們在建模的時候,會假設清風明月 屬於主題一,楊柳依依屬於主題二,草長鶯飛屬於主題三這種,但是在BTM中,我們假設biterm1 屬於主題1 ,biterm2屬於主題2這種。基本這就是這兩個模型的區別了,其他的幾乎都一樣,一樣使用Dir-Multi共軛建模,一樣使用Gibbs求解(只是我個人的理解,可能略顯膚淺,各位老板輕噴)。
為什么LDA不適合做短文本分析
這個是在知乎的另一位大佬那里看來的。擔心大家懶,不想去點,我在這里復述一遍。
https://www.zhihu.com/question/313275693/answer/605783460
假設大家都讀了LDA數學八卦,在數學八卦的第54頁,有兩個更新多項分布參數的 公式。我這里貼一下。
表示的是第m篇文檔中,各個單詞的主題。
這里的i是一個二維變量(m,n)表示第m篇文檔中的第n個詞,m表示第m篇文檔,k表示第k個主題, 所以這個的含義就是在第m篇文檔中除去第i(m,n)個詞的第k個主題產生的單詞個數。而根據經驗,這個詞匯的個數是根據MCMC仿真出來的,隨機性較大,由於文本特征很少,那么大多數主題的詞頻計數
可能都是0,同時,其他極少數主題對應的詞頻計數為1(一個句子的詞匯個數很有可能沒有主題多),此外,由於我們對Dirichlet的參數一無所知,因此一般的設置
為相等的。結合以上兩點,參數估計的嚴重問題就產生了。當給予先驗參數較大權重的時候,文本較短導致文本內容對參數估計提供的有價值信息局限了。可想而知,
基本上都依賴與Dirichlet的先驗參數
,等概率的參數導致結果基本上都是均勻的向量,沒有分類的意義;當給與的先驗參數較小權重時,由於取值為1的主題很少,隨機性又很大,導致主題很難廣泛低分布在多個主題上,傾向於聚集在1到2個主題上,當我們一個主題模型只有一個主題的時候,那這個主題模型存在的意義可能是不大了。。。
為什么BTM更適合做短文本分析
綜合上面說的,我們知道,BTM和LDA除了使用biterm建模外,其余的幾乎和LDA相同,而問題就在這個Biterm上了。LDA存在的問題是當文本過短的時候,比如一個文本只有10個單詞,那么模型可能會很差,但是,在BTM中,即使一個文本中只有10條單詞,那么也會有45個biterm(高中的排列組合)很好的解決了LDA對短文本存在的問題。而且論文中說,顯而易見,使用biterm(兩個詞)對文本建模要比一個詞建模要能更好的顯示文章的隱藏主題(它這個顯而易見,就和高中做數學題。答案給的是 易得 一樣。。。)
參數的更新(數學公式預警)
上面說過,除了建模的方式,LDA和BTM幾乎都是一樣的(這句話說過好多遍了),論文中使用的Gibbs更新的參數,所以這里我們先草草的過一遍LDA求解參數的方法 ,首先我們假設大家都知道在傳統的LDA中有M+K的Dir-Multi共軛分布,Gibbs采樣,我們這里先簡單回顧下LDA主題模型中求 和
的方法,為了能夠完成Gibbs采樣,我們需要一個條件概率,而為了求這個條件概率, 我們又需要聯合概率。這個聯合概率就是通過Dir-Multi求得的。
LDA中聯合概率的計算公式,數學八卦第49頁
上面的公式中, 和
是我們給定的偽計數,
表示的是第k個topic產生的每個單詞的個數,比如
表示的是1號主題產生的2號單詞的個數。
表示的第m篇文檔中第k個topic產生的詞的個數。有了上面的聯合分布,我們就可以求條件分布,進而進行Gibbs采樣了。我們經過推導(此處略去3億個腦細胞)。得到了下面的條件概率公式
LDA中的條件概率公式,數學八卦第51頁
我們對按照上面的公式進行Gibbs采樣,更新每個詞對應的topic,重復操作,知道Gibbs sampling收斂,得到完整的模型。
上面復習了在LDA中更細參數的方法后我們回到主題看一下BTM是如何更新參數的。貼上偽代碼和公式更新的結果,圖片來自論文(A Biterm Topic Model for Short Text)
算法的偽代碼
Gibbs采樣中用到的條件概率
根據采樣結果,求出概率的公式
我們可以看到BTM的參數更新方式和LDA幾乎相同除了在Gibbs采樣的時候是求的biterm的條件概率,然后更新參數,哦,對,這里說一下,如果一個biterm屬於主題1,那么biterm中的每個詞都屬於主題1 。 剩下的幾乎和LDA沒有區別,公式中的變量也和之前LDA中的差不多。大家想深入了解的。可以自己去讀讀BTM的論文。還是那句話,如果有問題,可以私信我。
后記
在之前的LDA文章中,有小伙伴問我,要怎么計算 和
,這個其實挺不好算的。因為需要太多的前置數學知識。我會抽空整理下,盡量用通俗的語言把這個寫一篇筆記出來吧。這篇文章講的並不深入,如果大家想深入了解BTM,還是需要自己靜下心來來認真讀讀教材和論文。當然,我也有一些地方不是特別理解,這篇文章更像是自己的讀書筆記,如果能幫到你,萬分榮欣,如果不幸讓你更迷茫了或者寫錯了,那深感抱歉,如果大家遇到了問題,歡迎大家私信我,我們可以一起研究。