時間:2017-09-01 來源:互聯網 瀏覽量:
VLDB是數據庫領域的頂級會議之一,由VLDB基金會讚助,和另外兩大會議SIGMOD、ICDE 一起構成了數據庫領域的三大頂級會議。VLDB是這三個會議中公認含金量最高的,VLDB的論文接受率總體很低,必須是創新性很高,貢獻很大的論文才有機會被錄用。近年來,隨著大數據的發展,VLDB也從數據庫擴展到大數據相關的領域,但是依然保持高質量的把控。
《LDA*:A Robust and Large-scale Topic Modeling System》的主要內容,是研究如何在工業界的環境中建立一個大規模的主題模型訓練係統。論文由騰訊TEG數據平台部與北京大學、蘇黎世聯邦理工學院的研究人員合作完成。此前已有很多相關的係統工作,包括 YahooLDA,微軟的 LightLDA 以及 Petuum 等,但
LDA*解決了如何在複雜的數據環境中得到更魯棒的采樣性能,以及詞的傾斜分布帶來的網絡通信這兩個難題。
在結合工程實現,LDA* 係統能夠勝過現有係統的10x,並已在騰訊內部使用,提供主題模型建模服務半年以上。
主題模型:用數學框架捕捉文檔潛在語義概率分布
主題模型(Topic Model)在機器學習和自然語言處理等領域是用來在一係列文檔中發現抽象主題的一種統計模型。一篇文章通常包含多種主題(比如“貓”、“狗”),而且每個主題所占比例各不相同。主題模型試圖用數學框架來體現文檔的這種特點。
在主題模型中,每個文檔都被看成一個話題(Topic)的分布,每個話題都被看成一個在詞語上的分布(Topic Distribution of Words)。通過主題模型對文本進行建模,我們將文檔被表示成一個話題分布(Topic Probability),從而可以對文檔進行聚類等分析。最初是運用於自然語言處理相關方向,主題模型現在已經用於多個領域,比如推薦係統、廣告CTR預估,用戶興趣分類……
在工業界的場景下訓練主題模型,主要有三大難點:
第一個是訓練的數據規模非常大,2T大小的樣本的數據量,有3000億個Token,需要幾個小時內跑出結果;
第二個是需要處理的數據和參數十分複雜,而且在各種數據和參數配置下,都必須提供較好的性能;
第三點是所有的任務都是在一個集中的集群上運行,係統需要具有較高的可擴展性和魯棒性。
對此,LDA* 論文作者從模型和工程兩方麵都進行了有針對的優化,讓 LDA*實現了廣泛的適用性和良好的性能。
同時,LDA* 構建於騰訊的大規模分布式機器學習開源平台 Angel 之上,得益於Angel的參數服務器架構,良好的擴展性和編程接口設計,LDA* 可以輕鬆處理TB級別的數據和百億維度的主題模型,並保持良好的性能。
痛點1:模型采樣平衡性
求解主題模型的一個常用方法是吉布斯采樣。但是,在數據規模大及話題個數較多的情況下,原始的吉布斯采樣求解效率非常低下。因此,有很多研究工作考慮如何降低采樣算法的複雜度。
目前,業界已有的 LDA 方法包括 AliasLDA,F+LDA,LightLDA 和 WarpLDA。其中,AliasLDA 和 F+LDA 利用主題模型參數的稀疏性質降低模型的采樣複雜度,也被叫做 Sparse-Aware Samplers;而 LightLDA 和 WarpLDA 則利用 Metropolis Hastings 方法,使每次采樣隻需要 O(1) 的計算複雜度。
由此,論文作者發現,Sparse-Aware Samplers 和 Metropolis Hastings Samplers 之間存在一個 tradeoff,單一的一種 sampler 並不能適用於所有的數據集或者參數設置,隻有發現這個 tradeoff 並有效地將這兩種 samplers 結合起來,才能達到最佳的性能。
實驗結果表明,Hybrid Sampler 在 PubMED 數據集上獲得與 F+LDA 相當的甚至更好的性能,而在騰訊真實數據集上也可以獲得比 WarpLDA 更好的性能。總的來說,Hybrid Sampler 在所有的數據集上和參數配置下,都能獲得最好的性能。
痛點2:非對稱結構,實現模型並行
主題模型的訓練常常需要大規模的數據集和較大的話題個數,因此大規模的主題模型常常使用分布式訓練。已有的主題模型係統,包括 LightLDA,YahooLDA 和 Petuum,都會采用參數服務器的架構來進行分布式訓練。但是,由於詞分布的傾斜特性,標準的參數服務器架構會在 Worker 端產生較大的網絡通信開銷,幾乎每個 worker 都需要把整個詞-話題(Word-Topic)矩陣模型從 PSServer 上拉取下來,這個對性能會有很大的影響。
實際的測試下,大部分的網絡開銷都產生於長尾的詞語,這些長尾的詞語產生的網絡開銷,在數據量和模型參數較大時帶來了性能損失。LDA* 對於這類長尾詞語進行了特殊的處理,將一部分長尾詞語的采樣推送到 PSServer 端進行,避免了對詞-話題矩陣的拉取操作。在這樣的架構中,PSServer 不僅僅作為一個分布式存儲,還參與了一定的計算任務,在某種程度上實現了模型並行,也即論文作者提到的“非對稱架構”。
性能數據:在騰訊真實的推薦數據集上最高是原有係統的 9 倍
論文作者將 LDA* 和之前開源的 Petuum 以及微軟的 LightLDA,在 2 個數據集上進行對比。一個是開源的 PubMED,一個是騰訊真實的推薦數據集。實驗結果表明,在數據量越大的情況下,LDA*的優勢越明顯。
論文作者還在騰訊內部生產集群上使用更大的數據集訓練 LDA*。從下圖的數據集可以看到,最大的一個數據集有 3000 億個 token,大約 1.8 TB的數據量。在所有的任務中,話題數設置為 8000,具體數據集大小如下:
在資源充足的情況下,LDA* 能夠得到非常好的擴展性,能夠擴展至數千個 worker,即便對 TB 級別的數據進行訓練,時間也能控製在小時的級別,很好地滿足了生產係統的需要。
結語
LDA* 無論是在模型準確度還是性能上都有不俗的表現和可擴展性,並已經應用於騰訊的多個推薦業務場景中,包括推薦,廣告 CTR 預估,用戶興趣分類等等。
團隊表示,LDA* 基於騰訊的 Angel 平台,伴隨著 Angel 的發展和推廣,希望業界會有更多的公司能夠從 LDA* 中受益,輕鬆擁有大規模主題建模的能力。