一、LSA概論
1)LSA的引入
LSA(latent ?semantic?analysis)潛在語義分析,也被稱為LSI(latent?semantic?index),是Scott? Deerwester,?Susan?T.?Dumais等人在1990年提出來的一種新的索引和檢索方法。該方法和傳統向量空間模型(vector? space? model)一樣使用向量來表示詞(terms)和文檔(documents),并通過向量間的關系(如夾角)來判斷詞及文檔間的關系;而不同的 是,LSA將詞和文檔映射到潛在語義空間(這是個正交空間,該如何找到?下文),從而去除了原始向量空間中的一些“噪音”,提高了信息檢索的精確度。
2)傳統方法的缺點
傳統向量空間模型使用精確的詞匹配,即精確匹配用戶輸入的詞與向量空間中存在的詞。由于一詞多義(polysemy)和一義多詞(synonymy)的存 在,使得該模型無法提供給用戶語義層面的檢索。比如用戶搜索”automobile”,即汽車,傳統向量空間模型僅僅會返回包含”automobile” 單詞的頁面,而實際上包含”car”單詞的頁面也可能是用戶所需要的。
3) ?LSA如何解決這些問題
LSA 潛在語義分析的目的,就是要找出詞(terms)在文檔和查詢中真正的含義,也就是潛在語義,從而解決上節所描述的問題。具體說來就是對一個大型的文檔集合使用一個合理的維度建模,并將詞和文檔都表示到該空間,比如有2000個文檔,包含7000個索引詞,LSA使用一個維度為100的向量空間將文檔和詞表示到該空間,進而在該空間進行信息檢索。而將文檔表示到此空間的過程就是SVD奇異值分解和降維的過程。降維是LSA分析中最重要的一步,通過降維,去除了文檔中的“噪音”,也就是無關信息(比如詞的誤用或不相關的詞偶爾出現在一起),語義結構逐漸呈現。相比傳統向量空間,潛在語義空間的維度更小,語義關系更明確。
4)LSA的步驟
1. ?分析文檔集合,建立Term-Document矩陣。
2.?對Term-Document矩陣進行奇異值分解。
3.?對SVD分解后的矩陣進行降維,也就是奇異值分解一節所提到的低階近似。
4.?使用降維后的矩陣構建潛在語義空間,或重建Term-Document矩陣。
下面是Introduction ?to?Latent?Semantic?Analysis里面的一個例子,描述了完整的LSA步驟
假設文檔集合如下:
原始的Term-Document矩陣如下:
觀察這個矩陣,human和user,他們沒有在某篇文檔中共現過,他們的關系使用Spearman?coefficient來表示為
R(human,user)=-0.38,R(human,minors)=-0.29
對其進行奇異值分解:
然后對分解后的矩陣降維,這里保留{S}的最大兩個奇異值,相應的{W}{P}矩陣如圖,注意{P}在公式中需要轉置。
到了這一步后,我們有兩種處理方法,論文Introduction ?to?Latent?Semantic?Analysis是將降維后的三個矩陣再乘起來,重新構建了{X}矩陣如下:
觀察這個經過奇異值分解后重新構建的矩陣,同樣計算Spearman?coefficient系數,R(human,user)=0.94,R(human,minors)=-0.83,可以看到human和user的相關聯程度竟然達到了0.94,雖然他們在原始文檔中并沒有共現。
5)LSI在IR中的應用
對詞項-文檔矩陣進行SVD分解;
計算在新的低維空間下的文檔表示;
將查詢映射到新的低維空間:
由
推出(在C2左邊點乘U的轉置和Σ的轉置),q2即表示v2
計算q2和V2中所有文檔表示的相似度;
像以往一樣按照相似度高低輸出相似文檔
二、LSA推理及說明
LSI能夠發現文檔的語義上的關聯,但是在原始向量空間中,這些文檔的相似度不大(因為他們使用不同的詞語)。于是可以通過LSI將他們映射到新的低維向量空間中,在新的低維空間中,兩者相似度較高。因此LSI能夠解決一義多詞和語義關聯的問題,在標準的向量空間下,同義詞對文檔相似度計算沒有任何貢獻。
先通過一個例子,然后提出問題,解答問題。奇異值分解請參照http://hi.baidu.com/leifenglian/item/bd11affd02d4f00d84d278c8
例子矩陣C:
奇異值分解后矩陣U:
每個詞項對應一行,每個min(M,N)對應一列,其中M為詞項的數目,N是文檔的數目。這是個正交矩陣:
1)列向量都是單位向量,即CC'的正交特征向量集合;
2)任意列向量之間都是相互正交的,可以想象這些列向量分別代表不同的的“語義”維度,比如政治、經濟、體育等主題,元素Uij給出的是詞項i和第j個語義維度之間的關系強弱程度。
奇異值分解后矩陣Σ:
這是個min(M,N)?×min(M,N)的對角方陣。對角線上是矩陣C的奇異值,即CC'的特征值。奇異值的大小度量的是相應“語義”維度的重要性。我們可以通過忽略較小的值來忽略對應的“語義”維度。
奇異值分解后矩陣V’(轉置):
每篇文章對應一列,每min(M,N)對應一行,同樣也是正交矩陣:
1)每個行向量都是單位矩陣,即C'C的正交特征向量集合;2)任意兩個行向量也是正交。同樣每個行向量代表的是一個語義維度,矩陣元素Vij(注意沒轉置)代表的是文檔i和語義維度j的關系強弱程度。
問題一:為什么在LSA中使用SVD分解?
1)最關鍵的性質:每個奇異值對應的是每個“語義”維度的權重
2)將不太重要的權重置為0,可以保留重要的信息,去掉一些信息“枝節”,這些枝節可能是噪音(簡化的LSI噪音更少,是一種更好的表示方法),也有可能使本來應該相似的對象不相似,簡化的LSI由于其更好的表達相似度,因而是一種更優的表示方式。
3)“細節越少越好”,把顏色去掉的花朵更容易看到兩者的相似性。
只需要將矩陣Σ中的相應維度置為0即可,此時,相當于矩陣U和V的相應維度被忽略,然后重新計算出C,得到C2
C2可以看著是C的一個二維表示,ship和boat在原文檔中沒有共現,但在低維空間C2中語義相似
問題二:SVD的什么性質能使相似度的計算有所提高?
求CC'的特征向量集合得到了矩陣U,特征值得到了對角矩陣Σ;
求C'C的特征向量集合得到了矩陣V,CC'和C'C的特征值相同。
CC'是一個對稱矩陣,矩陣元素表示的是每個詞相互的共現度,從幾何意義上講,該對稱矩陣表示的是一個線性變換,求該對稱矩陣的特征向量集合即是尋找一組正交基來表示這個線性變換(每一個基向量可以看著是一個語義維度)。這組特征向量所表示的方向即是經矩陣變換后方向保持不變的方向而只做一定的拉伸,拉伸程度即特征值。先找到最大的一個特征值,表示在相應語義維度的重要性,即先找到一個最重要的語義維度,然后找次大的。每個語義維度之間的關聯盡可能小,因為特征向量集是正交的,表示完全不同的語義方向,因此形成不同的語義空間。最后,自己的語義空間中相似度得到提高,不同語義之間的相似度得以減小以加大區分度。
幾句話:
降維迫使我們忽略大量的“細節”;
我們將原始空間下不同的詞映射到低維空間的同一維中;
將同義詞映射到同一維的“開銷”遠小于無關詞的聚集;
SVD選擇開銷最小的映射方法;
因此,SVD會將同義詞映射到同一維;
但是,它同時能避免將無關詞映射到同一維。
問題三:第一個做LSA的人是如何發現前K個特征值對應的特征向量可以構建出潛在的語義(詞語義,主題語義)空間的?(關鍵!!!!)
還是看原始Term-Doc矩陣Am*n,m是特征詞的個數,n是文檔個數,即行向量是一個詞在各個文檔中的變化(可看著是一個變量的值變化情況),列向量是一篇文檔中各個詞的分布情況。
做LSA的過程即要求AA'的特征向量特征值,來看看AA'方陣元素表示的意義,A的行向量乘以A'的列向量,即各個詞之間變化規律的一種聯系,AA'對角線上的某個元素值表示每個詞自身變量的變化情況,非對角線上的某個元素值表示兩個詞之間的共現程度(相似程度)。
AA'在向量空間中表示了一組線性變換,但是這個方陣總是不大好的,充滿了噪聲和冗余,我們希望找到另外一個組基來對這個方陣進行優化,以將這個方陣轉變為一個空間變化意義明顯的矩陣,即能體現出潛在語義空間。那么我們希望將方陣AA'優化成怎樣的矩陣呢?我們希望優化成:
a)對角線上元素:擁有偏大的值。因為偏大的值表明這個詞只在一部分文檔中出現,且在這一類文檔中占重要地位,即屬于主題詞,代表一類語義(以TF-IDF作為權重,如果一個詞在A中所有文檔中出現,那么該詞的TF-IDF權重值肯定非常小,在做AA'時,權重的平方和將偏小,如果該詞只在一部分文檔中出現,即該詞是這類文檔的主題詞,那么該詞在這類文檔中的TF-IDF權重肯定很大,在做AA'時,權重的平方和將偏大。我們即需要這樣偏大的值)
b)非對角線上的元素:擁有零值。可能未優化前的方陣非對角線上元素為零值(這個最好了),也可能為很大的值(表明某個詞a和某個詞b存在很大的相似度,他們很可能是同一個語義,我很喜歡這個大值,因為表明找到了語義類,但注意了,他屬于冗余,因為同時在相應對角線上詞a(或b)也存在一個大值,我們只需要這一個大值就表示了這個語義類,多出一個都算冗余了,應該去除),也可能是一個很小的非零值(不喜歡這個很小的非零值,他可能是某個詞a本"不應該"出現在某類文章中,他代表噪聲,應該去除)
接下來,請看以下推導:
很明白了,我們就是要求XX'的特征值和特征向量,特征向量表示詞的語義維度方向,特征值表示該維度的重要程度。這樣我們就可以分解出原矩陣中所有詞的語義空間。
同時,我們可求X'X,X'中的行向量表示一篇文章各個詞的分布,可以把行向量看著是文檔變量,不同的詞組成不同的文檔變量,X'X后方陣的元素表示各文檔之間的相似度,對角線上的元素是文檔變量自身的變化,非對角線上的元素是文檔變量之間關聯。我們希望優化這個A=X'X矩陣,使之優化成:
a)對角線上元素:擁有偏大的值。以TF-IDF值作為矩陣元素權重,一篇文檔中,我們理想的希望有關這篇文檔的所有主題詞出現(主題詞的TF-IDF高),所有無關的詞盡量不要出現(非主題詞的TF-IDF小),這樣X'X后元素值的平方和達到最大,否則,由于非主題詞的干擾,會使得TF-IDF元素值的平方和沒有那么大。因此,使對角線上的元素擁有偏大值,即消除非主題詞噪聲的干擾。
b)非對角線上的元素:擁有零值。非對角線上的值可能出現很大值,此時表示兩篇文檔擁有很大的相似度,即表示了一個主題,次數我們只需要一個該主題的表示即可,因此他屬于冗余,我們希望它為零值。也可能出現很小的非零值,此時表示兩篇文檔沒有多少相似度,是兩個無關主題,但值并不為0,這是由于兩篇文檔中有些詞還是可能同時出現過,但此時他是噪聲。我們同樣希望它為零值。
因此,求X'X的特征值,特征向量,特征向量表示了某個主題維度方向,特征值表示該維度的權重。
因此,可直接對元素矩陣X進行奇異值分解,即可同時得到XX'的特征向量和X'X的特征向量,即同時得到詞的語義空間和文檔的主題空間!
Reference:
http://blog.csdn.net/wangran51/article/details/7408406
http://wenku.baidu.com/view/cb373a1c5f0e7cd184253634.html?lecture18-lsi信息檢索導論王斌
http://hi.baidu.com/leifenglian/item/abf63c11772020fe64eabf3f?主成分分析
【轉】PLSA 與 LSA
細節看http://blog.csdn.net/huangxy10/article/details/8091478
1. 引子
Bag-of-Words 模型是NLP和IR領域中的一個基本假設。在這個模型中,一個文檔(document)被表示為一組單詞(word/term)的無序組合,而忽略了語法或者詞序的部分。BOW在傳統NLP領域取得了巨大的成功,在計算機視覺領域(Computer Vision)也開始嶄露頭角,但在實際應用過程中,它卻有一些不可避免的缺陷,比如:
稀疏性(Sparseness): 對于大詞典,尤其是包括了生僻字的詞典,文檔稀疏性不可避免;
多義詞(Polysem): 一詞多義在文檔中是常見的現象,BOW模型只統計單詞出現的次數,而忽略了他們之間的區別;
同義詞(Synonym): 同樣的,在不同的文檔中,或者在相同的文檔中,可以有多個單詞表示同一個意思;
從同義詞和多義詞問題我們可以看到,單詞也許不是文檔的最基本組成元素,在單詞與文檔之間還有一層隱含的關系,我們稱之為主題(Topic)。我們在寫文章時,首先想到的是文章的主題,然后才根據主題選擇合適的單詞來表達自己的觀點。在BOW模型中引入Topic的因素,成為了大家研究的方向,這就是我們要講的Latent Semantic Analysis (LSA) 和 probabilitistic Latent Semantic Analysis (pLSA),至于更復雜的LDA和眾多其他的Topic Models,以后再詳細研究。
2. LSA簡介
已知一個文檔數據集
及相應的詞典
,采用BOW模型假設,我們可以將數據集表示為一個
的共生矩陣,
,其中,
表示詞典中的第j個單詞在第i個文檔中出現的次數。
LSA的基本思想就是,將document從稀疏的高維Vocabulary空間映射到一個低維的向量空間,我們稱之為隱含語義空間(Latent Semantic Space).
如何得到這個低維空間呢,和PCA采用特征值分解的思想類似,作者采用了奇異值分解(Singular Value Decomposition)的方式來求解Latent Semantic Space。標準的SVD可以寫為:
其中,
和
均為正交矩陣,有
,
是包含
所有奇異值的對角矩陣。LSA降維的方式就是只取
中最大的K個奇異值,而其他置為0,得到
的近似矩陣
,于是得到了共生矩陣的近似:
注意到如果我們利用內積來計算文檔與文檔之間的的相似度,即
的自相關矩陣,可以得到:
。于是,我們可以把
解釋為文檔樣本在Latent Space上的坐標,而
則是兩個空間之間的變換矩陣。下圖形象的展示了LSA的過程:
由LSA在訓練集合上得到的參數,當一個新的文檔向量
到來時,我們可以利用下式將其原始term space映射到latent space:
LSA的優點
低維空間表示可以刻畫同義詞,同義詞會對應著相同或相似的主題;
降維可去除部分噪聲,是特征更魯棒;
充分利用冗余數據;
無監督/完全自動化;
與語言無關;
LSA的不足
沒有刻畫term出現次數的概率模型;
無法解決多義詞的問題;
SVD的優化目標基于L-2 norm 或者是 Frobenius Norm的,這相當于隱含了對數據的高斯噪聲假設。而term出現的次數是非負的,這明顯不符合Gaussian假設,而更接近Multi-nomial分布;
對于count vectors 而言,歐式距離表達是不合適的(重建時會產生負數);
特征向量的方向沒有對應的物理解釋;
SVD的計算復雜度很高,而且當有新的文檔來到時,若要更新模型需重新訓練;
維數的選擇是ad-hoc的;
3. pLSA
類似于LSA的思想,在pLSA中也引入了一個Latent class,但這次要用概率模型的方式來表達LSA的問題,如下圖:
在這個probabilitistic模型中,我們引入一個Latent variable
,這對應著一個潛在的語義層。于是,完整的模型為:
代表文檔在數據集中出現的概率;
代表當確定了語義
時,相關的term(word)出現的機會分別是多少;
表示一個文檔中語義分布的情況。利用以上這些定義,我們就可以一個生成式模型(generative model),利用它產生新的數據:
首先根據分布
隨機抽樣選擇一個文檔
;
選定文檔后,根據
抽樣選擇文檔表達的語義
;
選定語義后,根據
選擇文檔的用詞;
這樣,我們得到了一個觀測對
,多次重復這一過程我們就得到了一個類似N的共生矩陣,而潛在的語義
在觀測值中并沒有表現出來。為了刻畫
的聯合分布,我們可得到以下公式:
用圖模型來表示以上公式如Figure3中的(a),而(b)是pLSA模型的另外一種等價形式,公式可寫作:
模型確定好了,已知的數據集N,我們可以利用Maximum Likelihood準則來確定模型的參數,目標函數可寫作:
此目標函數也可以解釋為使
與
兩個分布之間的K-L Divergence最小,即
更好的刻畫共生矩陣的實際分布。
EM求解
在似然值
的表達式中存在對數內部的加運算,所以球pLSA最大似然解的問題沒有閉式解,我們只能求助于EM算法,下面我們從最簡單的啟發式的角度推導出pLSA的求解過程。
既然似然值
無法直接求解最大值,那么我們轉而優化其下界
,并通過迭代不斷的將此下界提高,那么最終得到的解即為
近似最大解, 當然,此過程中尋求的下界
要求盡量緊確。利用琴生不等式和概率小于1的性質,我們可以得到如下推導:
這樣,我們就把
拿到了
外面來,接下來我們就可以對
直接求解了。注意這個最大化問題的約束條件是:
利用拉格朗日法,我們可以得到優化目標:
對此目標函數求導,我們可以得到EM算法中的M-step:
而EM算法中的E-step也就是求已知
時隱含變量
的后驗概率:
觀察可以得到,E-step與M-step互相依賴,可以證明每一步都使得下界
的期望值提高,通過不斷的迭代求解即可最后求得原問題的近似最大似然解。
pLSA與LSA的關系
由Figure4可以看到pLSA與LSA之間的對應關系。其中
刻畫了Latent Space也即topic space的信息;
刻畫了topic space與term space之間的關系,對應著LSA中的正交基
;在文檔分類是,這兩部分也就是我們在模型訓練結束需要保存的信息,當一個新的文檔的到來時, 我們可以再次利用EM算法得到新的文檔與主題的對應關系
,并由此得到文檔在topic空間上的表示
。
pLSA的優勢
定義了概率模型,而且每個變量以及相應的概率分布和條件概率分布都有明確的物理解釋;
相比于LSA隱含了高斯分布假設,pLSA隱含的Multi-nomial分布假設更符合文本特性;
pLSA的優化目標是是KL-divergence最小,而不是依賴于最小均方誤差等準則;
可以利用各種model selection和complexity control準則來確定topic的維數;
pLSA的不足
概率模型不夠完備:在document層面上沒有提供合適的概率模型,使得pLSA并不是完備的生成式模型,而必須在確定document i的情況下才能對模型進行隨機抽樣;
隨著document和term 個數的增加,pLSA模型也線性增加,變得越來越龐大;
當一個新的document來到時,沒有一個好的方式得到$p(d_i)$;
EM算法需要反復的迭代,需要很大計算量;
針對pLSA的不足,研究者們又提出了各種各樣的topic based model, 其中包括大名鼎鼎的Latent Dirichlet Allocation (LDA),在此就不再多說了。
4. 參考文獻
Thomas Hofmann, “Unsupervised Learning by Probabilistic Latent Semantic Analysis,” Machine Learning 42, no. 1 (January 1, 2001): 177-196.
轉自http://tech.bobgo.net/?p=135
什么是LDA?
主題模型LDA(latent dirichlet allocation)的應用還是很廣泛的,之前我自己在檢索、圖像分類、文本分類、用戶評論的主題詞抽取等都用過,做feature、降維等。例如可以用主題維度來表示原來的字典維度,大大的降低了文本表示的維度。這其實也很deep
learning中的對特征的抽象有點相似,通過一些聚類等的思想,將一些細粒度的特征組合到一個新的空間上去,例如主題空間。