淺談主題模型
主題模型在機器學習和自然語言處理等領域是用來在一系列文件中發現抽象主題的一種統計模型。直觀來講,如果一篇文章有一箇中心思想,那麼一些特定詞語會更頻繁的出現。比方說,如果一篇文章是在講狗的,那「狗」和「骨頭」等詞出現的頻率會高些。如果一篇文章是在講貓的,那「貓」和「魚」等詞出現的頻率會高些。而有些詞例如「這個」、「和」大概在兩篇文章中出現的頻率會大致相等。但真實的情況是,一篇文章通常包含多種主題,而且每個主題所佔比例各不相同。因此,如果一篇文章 10% 和貓有關,90% 和狗有關,那麼和狗相關的關鍵字出現的次數大概會是和貓相關的關鍵字出現次數的 9 倍。一個主題模型試圖用數學框架來體現文件的這種特點。主題模型自動分析每個文件,統計文件內的詞語,根據統計的資訊來斷定當前文件含有哪些主題,以及每個主題所佔的比例各為多少。主題模型最初是運用於自然語言處理相關方向,但目前已經延伸至生物資訊學等其它領域。
一、主題模型歷史
二、直觀理解主題模型
聽名字應該就知道他講的是什麼?假如有一篇文章text,通過裡面的詞,來確定他是什麼型別的文章,如果文章中出現很多體育類的詞,比如,籃球,足球之類的,那麼主題模型就會把它劃分為體育類的文章。
因為主題模型涉及比較多的數學推導,所以我們先用一個小栗子,理解它要做的事。假設有這麼一個場景:
- 一個資深HR收到一份應聘演算法工程師的簡歷,他想僅僅通過簡歷來看一下這個人是大牛,還是彩筆,他是怎麼判斷呢?
他的一般做法就是拿到這份簡歷,看這個人的簡歷上寫的內容包括了什麼?
在此之前呢,他也一定是接觸了很多演算法工程師的面試,他根據這些招進來的人判斷,一個大牛,有可能是:
- 穿條紋襯衫
- 曾在BAT就職
- 做過大型專案
這個HR就會看這個面試者是不是穿條紋襯衫,有沒有在BAT就職過,做過什麼牛逼的專案,如果都滿足條件,那這個HR就會判斷這個人應該是大牛,如果他只是穿條紋襯衫,沒做過什麼拿得出手的專案,那就要猶豫一下了,因為他是彩筆的可能性比較大。
這個例子和主題模型的關係可以用這個圖表示:
三、幾種主題模型簡介
3.1 TF-IDF
早在上世紀 80 年代,研究者們常常使用 TF-IDF 法來進行文件的檢索和資訊的提取。
在 TF-IDF 方法中,先選擇一個基於詞或者片語的基本詞彙,然後對於語料庫中的每個文件,分別統計其中每個單詞的出現次數。經過合適的正則化後,再將詞的頻率計數和反向文件頻率計數相比較,得到一個詞數乘以文件數的向量 X。向量的每個行中都包含著語料庫中每個文件的 TF-IDF 值。
IF 和 IDF 的概念見下:
$$tf_{i,j}=\frac {n_{i,j}}{\sum_k n_{k,j}}$$
其中$tf_{i,j}$是該詞在檔案$d_j$中出現的次數,分母表示檔案$d_j$中所有字詞的出現次數之和。
$$idf_i =log \frac {|D|}{|{j:t_i in d_j}|}$$
|D|是語料庫中的檔案總數,$|{j:t_i in d_j}|$ 表示包含詞語 $t_i$ 的檔案數目。如果詞語不在語料庫中,為了避免分母為零的情況,一般會加上1.
$$tfidf_{i,j} = tf_{i,j} \times idf_{i,j}$$
對於某一特定檔案中的高頻詞語,如果含有該詞語的文件在整個檔案集中是低頻的,則我們可以得到一個較大的TF-IDF的值。因此,TF-IDF傾向於過濾去常見的詞語,保留重要的詞語。
但是整個TF-IDF演算法是建立在一個假設之上的:一個單詞出現的文字頻數越小,它區別不同類別文字的能力就越大。這個假設很多時候是不正確的,尤其是在引入IDF的過程中,單純地認為文字頻率小的單詞就越重要,文字頻率大的單詞就越無用,顯然這並不是完全正確的。其也不能有效地反映單詞的重要程度和特徵詞的分佈情況,因此精度有限。
3.2 LSA 隱形語言分析
如果說TF-IDF演算法體現的是文件中詞出現的頻率的情況,那麼LSA則更進了一步,其目的是為了從文字中發現隱含的topic。
在文件的空間向量模型中,文件被表示成由特徵詞出現概率組成的多維向量,這種方法可以通過對不同詞賦予不同的權重,應用於文字檢索、分類以及聚類等問題中。然而這種空間向量模型沒有能力處理一詞多義以及一義多詞這類問題。同義詞也分別被表示成獨立的一維,計算向量的餘弦相似度時會低估使用者期望的相似度,而某個詞項有多個詞義時,始終對應同一維度,因此計算的結果會高估使用者期望的相似度。
而LSA的方法就減輕了類似的問題。LSA使用矩陣的奇異值分解來確定一個在 TF-IDF 特徵空間中的線性子空間,實現大幅壓縮以及對同義和一詞多義等基本語言概念的捕捉。
通過SVD分解,我們可以構造一個原始向量矩陣的一個低秩逼近矩陣,具體的做法是將詞項文件矩陣做SVD分解:
$$C = U\Sigma V^T$$
其中C是以詞為行,文件為列的矩陣,設一共有t行d列, 矩陣的元素為詞項的TF-IDF值。然後把 $Sigma$ 的r個對角元素的前k個保留(最大的k個保留), 後面最小的r-k個奇異值置0, 得到 $Sigma_k$ ;最後計算一個近似的分解矩陣
$$C_k = U\Sigma_kV^T$$
$C_k$ 在最小二乘意義下是C的最佳逼近。由於 $Sigma_k$ 最多包含k個非零元素,所以 $C_k$ 的秩不超過k。通過在SVD分解近似,我們將原始的向量轉化成一個低維隱含語義空間,起到了特徵降維的作用。每個奇異值對應的是每個“語義”維度的權重,將不太重要的權重置為0,只保留最重要的維度資訊,去掉一些資訊 “nosie”,因而可以得到文件的一種更優表示形式。
LSA的優缺點
- 優點
1)低維空間表示可以刻畫同義詞,同義詞會對應著相同或相似的主題。
2)降維可去除部分噪聲,是特徵更魯棒。
3)充分利用冗餘資料。
4)無監督/完全自動化。
5)與語言無關。
- 缺點
1)LSA可以處理向量空間模型無法解決的一義多詞(synonymy)問題,但不能解決一詞多義(polysemy)問題。因為LSA將每一個詞對映為潛在語義空間中的一個點,也就是說一個詞的多個意思在空間中對於的是同一個點,並沒有被區分。
2)SVD的優化目標基於L-2 norm 或者 Frobenius Norm 的,這相當於隱含了對資料的高斯分佈假設。而 term 出現的次數是非負的,這明顯不符合Gaussian
假設,而更接近Multi-nomial
分佈。(需要進一步研究為什麼)
3)特徵向量的方向沒有對應的物理解釋。
4)SVD的計算複雜度很高,而且當有新的文件來到時,若要更新模型需重新訓練。
5)沒有刻畫term出現次數的概率模型。
6)對於count vectors 而言,歐式距離表達是不合適的(重建時會產生負數)。
7)維數的選擇是ad-hoc的。
8)LSA具有詞袋模型的缺點,即在一篇文章,或者一個句子中忽略詞語的先後順序。
9)LSA的概率模型假設文件和詞的分佈是服從聯合正態分佈的,但從觀測資料來看是服從泊松分佈的。因此LSA演算法的一個改進PLSA使用了多項分佈,其效果要好於LSA。
3.3 pLSA 潛在語義索引概率模型
儘管基於SVD的LSA取得了一定的成功,但是其缺乏嚴謹的數理統計基礎,而且SVD分解非常耗時。Hofmann在SIGIR’99上提出了基於概率統計的PLSA模型,並且用EM演算法學習模型引數。PLSA的概率圖模型如下:
其中D代表文件,Z代表隱含類別或者主題,W為觀察到的單詞,$P(d_i)$表示單詞出現在文件的概率,$P(z_k|d_i) $表示文件$d_i$中出現主題$z_k$下的單詞的概率,$P(w_j|z_k)$給定主題$z_k$出現單詞$w_j$的概率。並且每個主題在所有詞項上服從Multinomial分佈,每個文件在所有主題上服從Multinomial 分佈。整個文件的生成過程是這樣的:
(1) 以$P(d_i)$的概率選中文件$d_i$;
(2) 以$P(z_k|d_i)$的概率選中主題$z_k$;
(3) 以$P(w_j|z_k)$的概率產生一個單詞$w_j$。
我們可以觀察到的資料就是$(d_i, w_j)$對,而$z_k$是隱含變數。$(d_i, w_j)$的聯合分佈為:
$$P(d_i,w_j) = P(d_i)P(w_j|d_i), P(w_j|d_i) = \sum_{k = 1}^{K}P(w_j|z_k)P(z_k|d_i)$$
而$P(z_k|d_i)$和 $P(w_j|z_k)$分別對應了兩組Multinomial分佈,我們需要估計這兩組分佈的引數,一般是用EM演算法來估算出pLSA的引數。關於EM演算法可以詳見從EM演算法到GMM模型一文。在此不做推導證明,只列出最終答案:
$$P(w_j|z_k) = \frac{\sum_{i = 1}^{N}n(d_i,w_j)P(z_k|d_i,wj)}{\sum_{m = 1}^{M}{\sum_{i = 1}^{N}n(d_i,w_j)P(z_k|d_i,w_m)}}$$
$$P(z_k|d_i) = \frac{\sum_{j = 1}^{M}n(d_i,w_j)P(z_k|d_i,wj)}{n(d_i)}$$
如此不斷在E-step和M-step中迭代,直到滿足終止條件。(具體的參考過程可以詳見這篇博文)
pLSA將文件中的每個詞建模為一個來自混合模型的樣本。這個混合模型中的成分是可以被看作“主題”的多項式隨機變數。因此每個詞都是由單一一個主題產生的,文件中不同的詞語可以由不同的主題產生的。每篇文件可以表示為各種主題按照一定比例的混合,成為主題集下的分佈。儘管 Hofmann 的成果對於主題概率模型是具有啟發性的,但是在 pLSA 模型中,Hofman 僅僅將文件——主題、主題——詞的分佈視為引數而非隨機變數。這使得模型中的引數數目和語料庫呈線性關係,最終會導致由於語料庫的增大導致過擬合,此外其也缺乏對訓練集以外的文件的理論支援。
3.4 LDA (Latent Dirichlet Allocation)
David Blei在2003年提出了LDA(Latent Dirichlet Allocation)的概念,對pLSA模型進行了貝葉斯拓展,利用一種層級貝葉斯模型構建了LDA模型,通過把模型的引數看作隨機變數,引入控制引數的引數,實現模型概率化,避免同pLSA那樣隨著語料庫的增大而出現過擬合現象。
自從LDA的概念提出以來,主題模型已經在諸多文字挖掘的領域取得了令人矚目的成果。主題概率模型不同於以往的空間向量模型(以TF-IDF為例)和語言模型(n-gram 等),它通過主題在詞上的概率分佈將主題引入文件中,再將文件視為主題的概率分佈,從而分析出文件內潛在的主題。主題概率模型的優越性不僅僅體現在其能夠分析出文件中的潛在主題,更在於通過主題概率模型,我們能夠顯著地降低文件特徵的維度。相比較於TFIDF中詞→文件,主題概率模型通過詞→主題→文件將詞與文件隔離開,由於主題個數遠遠小於詞數,實現降維的過程。這種顯著的降維可以使得針對大資料的分析操作有了實踐基礎,擁有了更低的訓練模型成本。同時更低的維度也將資料自身的噪聲影響降得更低,使得訓練的結果更加優秀。
參考
https://www.jiqizhixin.com/graph/technologies/e49b21d8-935a-4da6-910d-504c79b9785f
https://www.dazhuanlan.com/2019/10/27/5db4ef2bd0fee/