日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

奇异值分解SVD应用——LSI

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 奇异值分解SVD应用——LSI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

潛在語義索引(Latent Semantic Indexing)是一個嚴重依賴于SVD的算法,本文轉載自之前吳軍老師《數學之美》和參考文獻《機器學習中的數學》匯總。

————————————

在自然語言處理中,最常見的兩類的分類問題分別是,將文本按主題歸類(比如將所有介紹亞運會的新聞歸到體育類)和將詞匯表中的字詞按意思歸類(比如將各種體育運動的名稱個歸成一類)。這兩種分類問題都可用通過矩陣運算來圓滿地、同時解決。為了說明如何用矩陣這個工具類解決這兩個問題的,讓我們先來來回顧一下我們在余弦定理和新聞分類中介紹的方法。


分類的關鍵是計算相關性。我們首先對兩個文本計算出它們的內容詞,或者說實詞的向量,然后求這兩個向量的夾角。當這兩個向量夾角為零時,新聞就相關;當它們垂直或者說正交時,新聞則無關。當然,夾角的余弦等同于向量的內積。從理論上講,這種算法非常好。但是計算時間特別長。通常,我們要處理的文章的數量都很大,至少在百萬篇以上,二次回標有非常長,比如說有五十萬個詞(包括人名地名產品名稱等等)。如果想通過對一百萬篇文章兩篇兩篇地成對比較,來找出所有共同主題的文章,就要比較五千億對文章。現在的計算機一秒鐘最多可以比較一千對文章,完成這一百萬篇文章相關性比較就需要十五年時間。注意,要真正完成文章的分類還要反復重復上述計算。


在文本分類中,另一種辦法是利用
矩陣運算中的奇異值分解(Singular Value Decomposition,簡稱 SVD)。現在讓我們來看看奇異值分解是怎么回事。首先,我們可以用一個大矩陣A來描述這一百萬篇文章和五十萬詞的關聯性。這個矩陣中,每一行對應一篇文章,每一列對應一個詞。


在上面的圖中,M=1,000,000,N=500,000。第 i 行,第 j 列的元素,是字典中第 j 個詞在第 i 篇文章中出現的加權詞頻(比如,TF/IDF)。讀者可能已經注意到了,這個矩陣非常大,有一百萬乘以五十萬,即五千億個元素。


奇異值分解就是把上面這樣一個大矩陣,分解成三個小矩陣相乘,如下圖所示。比如把上面的例子中的矩陣分解成一個一百萬乘以一百的矩陣X,一個一百乘以一百的矩陣B,和一個一百乘以五十萬的矩陣Y。這三個矩陣的元素總數加起來也不過1.5億,僅僅是原來的三千分之一。相應的存儲量和計算量都會小三個數量級以上。


三個矩陣有非常清楚的物理含義第一個矩陣X中的每一列表示一類主題,其中的每個非零元素表示一個主題與一篇文章的相關性,數值越大越相關。最后一個矩陣Y中的每一列表示100個關鍵詞,每個key word與500,000個詞的相關性。中間的矩陣則表示文章主題keyword之間的相關性。因此,我們只要對關聯矩陣A進行一次奇異值分解,w 我們就可以同時完成了近義詞分類和文章的分類。(同時得到每類文章和每類詞的相關性)。

比如降至2維(rank=2),則document-term的關系可以在下面二維圖中展現:


?

在圖上,每一個紅色的點,都表示一個詞,每一個藍色的點,都表示一篇文檔,這樣我們可以對這些詞和文檔進行聚類,比如說stock 和 market可以放在一類,因為他們老是出現在一起,real和estate可以放在一類,dads,guide這種詞就看起來有點孤立了,我們就不對他們進行合并了。按這樣聚類出現的效果,可以提取文檔集合中的近義詞,這樣當用戶檢索文檔的時候,是用語義級別(近義詞集合)去檢索了,而不是之前的詞的級別。這樣一減少我們的檢索、存儲量,因為這樣壓縮的文檔集合和PCA是異曲同工的,二可以提高我們的用戶體驗,用戶輸入一個詞,我們可以在這個詞的近義詞的集合中去找,這是傳統的索引無法做到的。


現在剩下的唯一問題,就是如何用計算機進行奇異值分解。這時,線性代數中的許多概念,比如矩陣的特征值等等,以及數值分析的各種算法就統統用上了。在很長時間內,奇異值分解都無法并行處理。(雖然 Google 早就有了MapReduce 等并行計算的工具,但是由于奇異值分解很難拆成不相關子運算,即使在 Google 內部以前也無法利用并行計算的優勢來分解矩陣。)最近,Google 中國的張智威博士和幾個中國的工程師及實習生已經實現了奇異值分解的并行算法,我認為這是 Google 中國對世界的一個貢獻。


最后說說個人拙見,這里我們可以把document和term(word)中間加上一層latent semantics項,那么上圖中的X和Y矩陣就可以分別表示同一個latent semantics對不同document之間的相關性和同一latent semantics在不同terms之間的相關性聯系。X和Y的大小分別是m*r與r*n,r為A矩陣的rank(秩),最后,B是A的r個奇異值組成的對角方陣(r*r),在譜分解中也就是A的r個特征值。


總結

以上是生活随笔為你收集整理的奇异值分解SVD应用——LSI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。