LDA模型的前世今生

來源:極客時間

作者:洪亮劼

編輯公號:小鳥編程


在文本挖掘中,有一項重要的工作就是分析和挖掘出文本中隱含的結構信息,而不依賴任何提前標註的信息。今天我要介紹的是一個叫做LDA(Latent Dirichlet Allocation)的模型,它在過去十年裡開啟了一個領域叫主題模型

從 LDA 提出后,不少學者都利用它來分析各式各樣的文檔數據,從新聞數據到醫藥文檔,從考古文獻到政府公文。一段時間內,LDA 成了分析文本信息的標準工具。從最原始的 LDA 發展出來的各類模型變種,則被應用到了多種數據類型上,包括圖像、音頻、混合信息、推薦系統、文檔檢索等等,各類主題模型變種層出不窮。下面我來簡單剖析一下 LDA 這個模型,聊聊它的模型描述以及訓練方法等基礎知識。

Advertisements

LDA 的背景介紹

LDA 的論文作者是戴維·布雷(David Blei)、吳恩達和邁克爾·喬丹(Michael Jordan)。這三位都是今天機器學習界炙手可熱的人物。論文最早發表在 2002 年的神經信息處理系統大會(Neural Information Processing Systems,簡稱 NIPS)上,然後長文章(Long Paper)於 2003 年在機器學習頂級期刊《機器學習研究雜誌》(Journal of Machine Learning Research)上發表。迄今為止,這篇論文已經有超過 1 萬 9 千次的引用數,也成了機器學習史上的重要文獻之一。

論文發表的時候,戴維·布雷還在加州大學伯克利分校邁克爾手下攻讀博士。吳恩達當時剛剛從邁克爾手下博士畢業來到斯坦福大學任教。戴維 2004 年從伯克利畢業后,先到卡內基梅隆大學跟隨統計學權威教授約翰·拉弗蒂(John Lafferty)做了兩年的博士後學者,然後又到東部普林斯頓大學任教職,先後擔任助理教授和副教授。2014 年轉到紐約哥倫比亞大學任統計系和計算機系的正教授。戴維在 2010 年獲得斯隆獎(Alfred P. Sloan Fellowship,美國聲譽極高的獎勵研究人員的獎項,不少諾貝爾獎獲得者均在獲得諾貝爾獎多年之前獲得過此獎),緊接著又在 2011 年獲得總統青年科學家和工程師早期成就獎(Presidential Early Career Award for Scientists and Engineers,簡稱 PECASE)。目前他所有論文的引用數超過了 4 萬 9 千次 。

Advertisements

吳恩達在斯坦福晉陞到副教授后,2011 年到 2012 年在 Google 工作,開啟了谷歌大腦(Google Brain)的項目來訓練大規模的深度學習模型,是深度學習的重要人物和推動者之一。2012 年他合作創建了在線學習平台 Coursera,可以說是打開了慕課(Massive Open Online Course,簡稱 MOOC)運動的大門。之後吳恩達從 2014 年到 2017 年間擔任百度首席科學家,並創建和運行了百度在北美的研究機構。目前他所有論文的引用數超過 8 萬 3 千次。

文章的第三作者邁克爾·喬丹是機器學習界的泰斗人物。他自 1998 年在加州大學伯克利任教至今,是美國三個科學院院士(American Academy of Arts and Sciences、National Academy of Engineering 以及 National Academy of Sciences),是諸多學術和專業組織的院士(比如 ACM、IEEE、AAAI、SIAM 等)。邁克爾可以說是桃李滿天下,而且其徒子徒孫也已經遍布整個機器學習領域,不少都是學術權威。他的所有論文有多達 12 萬次以上的引用量。

值得注意的是,對於三位作者來說,LDA 論文都是他們單篇論文引用次數最多的文章。

LDA 模型

要描述 LDA 模型,就要說一下 LDA 模型所屬的產生式模型(Generative Model)的背景。產生式模型是相對於判別式模型(Discriminative Model)而說的。這裡,我們假設需要建模的數據有特徵信息,也就是通常說的 X,以及標籤信息,也就是通常所說的 Y。

判別式模型常常直接對 Y 的產生過程(Generative Process) 進行描述,而對特徵信息本身不予建模。這使得判別式模型天生就成為構建分類器或者回歸分析的有利工具。而產生式模型則要同時對 X 和 Y 建模,這使得產生式模型更適合做無標籤的數據分析,比如聚類。當然,因為產生式模型要對比較多的信息進行建模,所以一般認為對於同一個數據而言,產生式模型要比判別式模型更難以學習。

一般來說,產生式模型希望通過一個產生過程來幫助讀者理解一個模型。注意,這個產生過程本質是描述一個聯合概率分佈(Joint Distribution)的分解過程。也就是說,這個過程是一個虛擬過程,真實的數據往往並不是這樣產生的。這樣的產生過程是模型的一個假設,一種描述。任何一個產生過程都可以在數學上完全等價一個聯合概率分佈。

LDA 的產生過程描述了文檔以及文檔中文字的生成過程。在原始的 LDA 論文中,作者們描述了對於每一個文檔而言有這麼一種生成過程:

  1. 首先,從一個全局的泊松(Poisson)參數為β的分佈中生成一個文檔的長度 N;

  2. 從一個全局的狄利克雷(Dirichlet)參數為α的分佈中生成一個當前文檔的θ;

  3. 然後對於當前文檔長度 N 的每一個字執行以下兩步,一是從以θ為參數的多項(Multinomial)分佈中生成一個主題(Topic)的下標(Index)z_n;二是從以φ和 z 共同為參數的多項分佈中產生一個字(Word)w_n。

從這個描述我們可以馬上得到這些重要的模型信息。第一,我們有一個維度是 K 乘以 V 的主題矩陣(Topic Matrix)。其中每一行都是一個φ,也就是某一個生成字的多項分佈。當然,這個主題矩陣我們在事先並不知道,是需要學習得到的。另外,對每一個文檔而言,θ是一個長度為 K 的向量,用於描述當前文檔在 K 個主題上的分佈。產生過程告訴我們,我們對於文檔中的每一個字,都先從這個θ向量中產生一個下標,用於告訴我們現在要從主題矩陣中的哪一行去生成當前的字。

這個產生模型是原論文最初提出的,有兩點值得注意。

第一,原始論文為了完整性,提出了使用一個泊松分佈來描述文檔的長度這一變化信息。然而,從模型的參數和隱變數的角度來說,這個假設並不影響整個模型,最終作者在文章中去除了這個信息的討論。在主題模型的研究中,也較少有文獻專註這個信息。

第二,原始論文並沒有在主題矩陣上放置全局的狄利克雷分佈作為先驗概率分佈。這一缺失在後續所有的主題模型文獻中得到修正。於是今天標準的 LDA 模型有兩類狄利克雷的先驗信息,一類是文檔主題分佈的先驗,參數是α,一類是主題矩陣的先驗,參數是β。

文章作者們把這個模型和當時的一系列其他模型進行了對比。比如說,LDA 並不是所謂的狄利克雷 - 多項(Dirichlet-Multinomial)聚類模型。這裡,LDA 對於每個文檔的每一個字都有一個主題下標。也就是說,從文檔聚類的角度來看,LDA 是沒有一個文檔統一的聚類標籤,而是每個字有一個聚類標籤,在這裡就是主題。這也是 LDA 是Mixed-Membership 模型的原因——每個字有可能屬於不同的類別、每個文檔也有可能屬於不同的類別。

LDA 很類似在 2000 年初提出的另外一類更簡單的主題模型——概率隱形語義索引(Probabilistic Latent Semantic Indexing),簡稱PLSI。其實從本質上來說,LDA 借用了 PLSI 的基本架構,只不過在每個文檔的主題分佈向量上放置了狄利克雷的先驗概率,以及在主題矩陣上放置了另外一個狄利克雷的先驗概率。

儘管看上去這是一個非常小的改動,但是這樣做的結果則是 LDA 的參數個數並不隨著文檔數目的增加而增加。那麼,相對於 PLSI 來說,LDA 並不容易對訓練數據過度擬合(Overfitting)。

值得注意的,原始文章說過度擬合主要是指,對於 PLSI 而言,文檔的主題分佈向量是必須需要學習的,而這個向量對於 LDA 是可以被忽略或者說是並不需要保存的中間變數。然而在實際的應用中,我們其實常常也需要這個向量的信息,因此這部分對於過度擬合的討論在後來的應用中並沒有特別體現。

LDA 模型的訓練和結果

LDA 雖然從某種意義上來說僅僅是在 PLSI 上增加了先驗信息。然而,這一個改動為整個模型的訓練學習帶來了非常大的挑戰。應該說,整個 LDA 的學習直到模型提出后近 10 年,才隨著隨機變分推理(Stochastic Variational Inference)的提出以及基於別名方法(Alias Method)的抽樣演算法(Sampling Method)而得以真正的大規模化。一直以來,LDA 的訓練學習都是一件很困難的事情。

不像 PLSI 可以依靠最大期望(EM)演算法得以比較完美的解決,傳統上,LDA 的學習屬於貝葉斯推理(Bayesian Inference),而在 2000 年代初期,只有馬爾科夫蒙特卡洛(Markov chain Monte Carlo),簡稱 MCMC,以及邁克爾·喬丹等人推崇的變分推理(Variational Inference),簡稱 VI,作為工具可以解決。這篇文章因為出自邁克爾的實驗室,當仁不讓地選擇了 VI。比較有意思的是,後續大多數 LDA 相關的論文都選擇了 MCMC 為主的吉布斯(Gibbs)採樣來作為學習演算法。

VI 的完整講解無法在本文涵蓋。從最高的層次上來理解,VI 是選取一整組簡單的、可以優化的所謂變分分佈(Variational Distribution)來逼近整個模型的后驗概率分佈。當然,由於這組分佈的選取,有可能會為模型帶來不小的誤差。不過好處則是這樣就把貝葉斯推理的問題轉化成了優化問題。

從 LDA 的角度來講,就是要為θ以及 z 選取一組等價的分佈,只不過更加簡單,更不依賴其他的信息。在 VI 進行更新θ以及 z 的時候,演算法可以根據當前的θ以及 z 的最新值,更新α的值(這裡的討論依照原始的 LDA 論文,忽略了β的信息)。整個流程俗稱變分最大期望(Variational EM)演算法

文章在 TREC AP 的文檔數據中做了實驗。首先,作者們使用了一個叫困惑度(Perplexity)的評估值來衡量文檔的建模有效程度,這個值越低越好。LDA 在好幾個數據集中都明顯好於 PLSI 以及其他更加簡單的模型。從這篇文章之後,主題模型的發展和對比都離不開困惑度的比較,也算是開啟了一個新時代。

然後,作者們展示了利用 LDA 來做文檔分類,也就是利用文檔主題向量來作為文檔的特徵,從而放入分類器中加以分類。作者們展示了 LDA 作為文檔分類特徵的有力證據,在數據比較少的情況下優於文本本身的特徵。不過總體說來,在原始的 LDA 論文中,作者們並沒有特別多地展現出 LDA 的所有可能性。

小結

今天我為你梳理了 LDA 提出的背景以及這篇論文所引領的整個領域的情況。你需要掌握的核心要點:第一,論文作者們目前的狀態;第二,LDA 模型本身和它的一些特點;第三,LDA 的訓練流程概況以及在原始文章中的實驗結果。

最後,我為你留一個思考題:LDA 的產生過程決定了對於一個文本而言,每個字都可能來自不同的主題,那麼如果你希望,對於某一個段落,所有的文字都來自同一個主題,你需要對 LDA 這個模型進行怎麼樣的修改呢?

Advertisements

你可能會喜歡