Peacock:大规模主题模型及其在腾讯业务中的应用-2015
Peacock:大規模主題模型及其在騰訊業務中的應用
作者:趙學敏 王莉峰 王流斌 孫振龍 嚴浩 靳志輝 王益
摘要
如果用戶最近搜索了“紅酒木瓜湯”,那么應該展示什么樣的廣告呢?從字面上理解,可能應該返回酒水或者水果類廣告??墒悄阒绬?#xff1f;“紅酒木瓜湯”其實是一個民間豐胸秘方。如果機器能理解這個隱含語義,就能展示豐胸或者美容廣告——這樣點擊率一定很高。在廣告、搜索和推薦中,最重要的問題之一就是理解用戶興趣以及頁面、廣告、商品等的隱含語義。
讓機器能自動學習和理解人類語言中近百萬種語義,以及從海量用戶行為數據中歸納用戶興趣,是一個已經持續了20年的研究方向,稱為主題建模(Latent Topic Modeling)。目前業界的各種系統中最為突出的是Google Rephil,在Google AdSense廣告系統中發揮了重要作用。
追隨Google的腳步,騰訊SNG效果廣告平臺部(廣點通)的同學們成功的研發了Peacock大規模主題模型機器學習系統,通過并行計算可以高效地對10億x1億級別的大規模矩陣進行分解,從而從海量樣本數據中學習10萬到100萬量級的隱含語義。我們把Peacock系統應用到了騰訊業務中,包括文本語義理解、QQ群的推薦、用戶商業興趣挖掘、相似用戶擴展、廣告點擊率轉化率預估等,均取得了不錯的效果。
一、為什么我們要開發大規模主題模型訓練系統Peacock?
1.1 短文本相關性
在自然語言處理和信息檢索中,我們常常會遇到如下問題:給定查詢詞,計算查詢詞和文檔之間的相關性。比如表1給出了2個具體例子,此時我們需要計算短文本之間的相關性。常用的計算方法就是不考慮詞的相對順序,使用BOW(Bag-Of-Words)模型把文檔表示為詞向量,然后計算文本之間的相似度。如果直接采用文檔中詞的TF-IDF構建文檔特征向量,通過計算查詢詞特征向量和文檔特征向量的余弦夾角,我們會發現Q1與D1、D2都相關,而Q2與D1、D2都不相關。顯然,這與人對自然語言的理解并不相符:Q1和D2比較相關,都關于“蘋果”這種水果;而Q2和D1比較相關,都關于“蘋果”公司。
表1 短文本相關性之所以會出現這種差異,是因為上述文檔特征向量構建方法沒有“理解”文檔的具體語義信息,單純的將文檔中的詞表示為一個ID而已。通過主題模型,文檔可以表示為一個隱含語義空間上的概率分布向量(主題向量),文檔主題向量之間的余弦夾角就可以一定程度上反映文檔間的語義相似度了。
1.2 推薦系統
圖1 用戶-物品矩陣
主題模型的另一個主要應用場景是推薦系統。不管是電商網站的商品推薦,還是各大視頻網站的視頻推薦等,都可以簡化為如下問題:給定用戶-物品矩陣(圖1,矩陣中用戶u和物品i對應的值表示u對i的偏好,根據用戶行為數據,矩陣會得到部分“初始”值),如何“填滿”矩陣中沒有值的部分。
圖2 物品聚類在各種眼花繚亂的推薦算法中,直接利用用戶-物品矩陣進行推薦是最有效的方式(沒有長年的用戶、物品內容分析技術積累也一樣可以快速做出效果),而這其中的兩類主要算法都與主題模型有關系:
- 協同過濾[1]。以基于用戶的協同過濾為例,就是要向用戶推薦與之相似的用戶喜歡的物品,包含兩個主要步驟:計算用戶相似度和向用戶推薦與自己最相似的用戶喜歡的物品,難點在于計算用戶相似度。如果不引入外部數據,最簡單的計算用戶u和v相似度的方法可以直接利用用戶-物品矩陣的u行和v行,比如計算它們的余弦夾角。然而,真實的互聯網數據中,用戶-物品矩陣通常都非常稀疏,直接計算不能得到準確的結果。此時,常見的做法是對用戶(或物品)進行聚類或者將矩陣投影到更低維的隱空間(圖2、3),在隱空間計算用戶相似度可以更加準確。主題模型可以用來將用戶-物品矩陣投影到隱空間。
- 隱含語義模型 (Latent Factor Model, LFM)[2]。該類方法本質上和主題模型是一致的,直觀的理解是將用戶-物品矩陣分解為用戶-隱含語義(主題)矩陣和隱含語義(主題)-物品矩陣(圖3),通過更低維度的上述兩個矩陣,來重構原始用戶-物品矩陣,重構得到的矩陣將不再稀疏,可以直接用于推薦。具體例子可以參看“QQ群推薦”應用。
圖3 用戶-物品矩陣分解
實際上,從以上的討論中我們容易發現,當使用BOW模型處理文本,把文檔數據表示成文檔-詞(Doc-Word)矩陣的時候,其表示結構和用戶-物品(User-Item)矩陣結構是完全一致的。因此這兩類數據可以使用同樣的算法進行處理。使用隱含主題模型處理文檔-詞矩陣的時候,可以理解為把詞聚類為主題,并計算各個文檔和詞聚類之間的權重。類似地,處理用戶-物品矩陣的時候,可以理解為把物品聚類為主題,然后計算每個用戶和各個聚類之間的權重。圖2是這個過程的一個形象描述,而這個過程如圖3所示,可以理解為把原始矩陣分解為兩個較小的矩陣:左下的Topic-Item矩陣描述了物品聚類,每行一個主題(Topic)表示一個聚類;而右側的User-Topic矩陣每一行為主題權重向量,表示每個用戶和每個主題的緊密關系。
1.3 Peacock是什么?
從上面兩個小節我們已經看到,主題模型在互聯網產業中具有非常重要的應用。而Peacock系統著手開發時(2012年11月),一些開源以及學術界的主題模型訓練系統[5,6,7,8],要么只能處理小規模的訓練語料得到“小模型”,要么模型質量不佳?;谶@種狀況,我們設計并開發了Peacock系統(更多有關Peacock系統的設計哲學和開發進程,可以參考王益的博客[3]和圖靈訪談文章[4])。Peacock是一個大規模主題模型訓練系統,它既可以從數十億的網絡語料中學習出百萬級別的隱含語義(主題),也可以對數十億乘以幾億規模的矩陣進行“分解”。我們的工作總結成論文“Peacock: Learning Long-Tail Topic Features for Industrial Applications”發表在ACM Transaction on Intelligent System and Technology (2015)[15]。
圖4 Peacock文檔語義推斷系統Demo
圖5 Peacock文檔語義推斷示例1:“蘋果”
圖6 Peacock文檔語義推斷示例2:“蘋果 梨子”
圖7 Peacock文檔語義推斷示例3:“蘋果大尺度”
下面我們分別給定一些具體的例子,讓大家對Peacock有一些直觀上的認識:
- 自然語言處理的例子。圖4給出了Peacock在線推斷系統Demo的主要界面,手動輸入文檔以后,點擊“submit”就可以看到Peacock對輸入文檔的理解。這個例子中,我們利用訓練好的Peacock模型,在線推斷給定的輸入文檔的主題分布P(topic|doc)。每一行打印出一個語義主題,并給出主題的權重。具體的主題由一組相關的詞組成,每個詞都有權重。而第二部分 P(word|doc) 則給出了和該文檔相關的權重最高的詞。在Demo的例子中,我們可以看到 Peacock 對“紅酒木瓜湯”這個檢索串最重要的語義理解是“豐胸、產品、減肥、木瓜、效果”,非常符合人的語義理解。圖5、6、7演示了典型的多義詞“蘋果”在不同語境下Peacock對其的不同理解,可以看到“蘋果”這個檢索串在 Peacock 中被處理成了如下三種語義:“蘋果公司及其產品”、“水果”、“范冰冰《蘋果》電影”。而“蘋果、梨子”主要語義被理解為“水果”,“蘋果大尺度”的主要語義被理解為“范冰冰《蘋果》電影”??梢钥吹絇eacock可以比較準確的理解不同文檔的具體含義,這將有助于我們完成一系列自然語言處理和信息檢索的任務。
- 用戶-物品矩陣分解的例子。這個例子中,“用戶”(相當于“文檔”)為QQ,“物品”(相當于“詞”)為這部分用戶加入的QQ興趣群(在數據預處理中,我們會將QQ群分為關系群、興趣群等,興趣群可以比較好的反映用戶的興趣)。取非?;钴S的5億用戶和非?;钴S的1億QQ興趣群,得到一個5億x1億的矩陣,使用Peacock分解該矩陣后獲得Topic-Item矩陣(即主題-QQ群矩陣),圖8、9、10分別給出了該矩陣中的三個主題(只顯示權重最高的主要QQ群)。為了方便理解,同時將QQ群的描述信息顯示在群ID之后??梢钥吹?#xff0c;Peacock學習得到的主題含義比較明確,一定程度上可以反映出Peacock在處理用戶-物品矩陣上的有效性。
圖8 基于QQ-QQ群Peacock矩陣分解示例:炒股類主題
圖9 基于QQ-QQ群Peacock矩陣分解示例:塔防三國游戲類主題
圖10 基于QQ-QQ群Peacock矩陣分解示例:濟南母嬰類主題
通過一些具體的例子直觀的介紹了主題模型之后,接下來第二章將主要從算法的角度來回答“什么是主題模型”這個問題,第三章介紹對主題模型并行化的一些思考以及Peacock的具體做法,最后第四章介紹主題模型在騰訊業務中的具體應用。
二、什么是主題模型?
下面以文檔建模為例,簡單介紹一下主題模型。
2.1 主題模型的“三個過程”
主題模型一般包含了三個重要的過程:生成過程、訓練過程以及在線推斷。生成過程定義了模型的假設以及具體的物理含義,訓練過程定義了怎樣由訓練數據學習得出模型,在線推斷定義了怎樣應用模型。下面分別進行簡要介紹。
一般來說,主題模型是一種生成模型(生成模型可以直觀的理解為給定模型,可以生成訓練樣本)。給定模型,其生成過程如圖11:
- 模型有2個主題,主題1關于銀行(主要的詞為loan、bank、money等),主題2關于河流(主要的詞為river、stream、bank等)。
- 文檔1內容100%關于主題1,主題向量為<1.0, 0.0>,文檔中每一個詞的生成過程如下:以100%的概率選擇主題1,再從主題1中以一定的概率挑選詞。
- 文檔2內容50%關于主題1,50%關于主題2,主題向量為<0.5, 0.5>,文檔中每一個詞的生成過程如下:以均等的概率選擇主題1和2,再從選中的主題中以一定的概率挑選詞。
- 文檔3內容100%關于主題2,主題向量為<0.0, 1.0>,文檔中每一個詞的生成過程如下:以100%的概率選擇主題2,再從主題2中以一定的概率挑選詞。
圖11 主題模型的生成過程[9]
現實的情況是我們沒有模型,只有海量的互聯網文檔數據,此時我們希望有機器學習算法可以自動的從訓練文檔數據中歸納出主題模型(如圖12),即得到每個主題在詞表上的具體分布。通常來說,訓練過程還會得到一個副產品——每篇訓練文檔的主題向量。
圖12 主題模型的訓練過程[9]
有了主題模型,給定新的文檔,通過在線推斷,我們就可以得到文檔的主題向量(如圖13)。圖5、6、7給出了一些具體的例子。
圖13 主題模型的在線推斷
三個過程中,訓練過程是難點,后文將進行重點介紹。
2.2 LDA模型及其訓練算法
LDA(Latent Dirichlet Allocation)[10]作為一種重要的主題模型,自發表以來就引起了學術界和產業界的極大關注,相關論文層出不窮。LDA的訓練算法也多種多樣,下面以吉布斯采樣[11,12]為例,進行簡要介紹。
圖14 LDA訓練過程
跳過復雜的數學推導,基于吉布斯采樣的LDA訓練過程如圖14所示(每個詞用w表示,每個詞對應的主題用z表示,圖中節點z的不同顏色表示不同的主題):
- Step1: 初始時,隨機的給訓練語料中的每一個詞w賦值一個主題z,并統計兩個頻率計數矩陣:Doc-Topic計數矩陣Ntd
本文鏈接:Peacock:大規模主題模型及其在騰訊業務中的應用
本站文章若無特別說明,皆為原創,轉載請注明來源:火光搖曳,謝謝!^^
總結
以上是生活随笔為你收集整理的Peacock:大规模主题模型及其在腾讯业务中的应用-2015的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金融情报挖掘:面向公开文本的期货事件聚合
- 下一篇: SiameseSentenceSimil