編者按:LDA是一個簡潔、優雅、實用的隱含主題模型,騰訊效果廣告平臺部(廣點通)的工程師們為了應對網際網路的大數據處理,開發了大規模隱含主題模型建模系統Peacock,通過並行計算對10億x1億級別的大規模矩陣進行分解,從而從海量樣本數據中學習10萬到100萬量級的隱含語義。Peacock已應用在騰訊的文本語義理解、QQ群的推薦、用戶商業興趣挖掘、相似用戶擴展、廣告點擊率轉化率預估等多個業務數據中。本文節選自Peacock團隊的論文《Peacock:大規模主題模型及其在騰訊業務中的應用》,分享了廣點通Peacock研發和訓練的技術思想和技術細節,以及Peacock在騰訊業務中的應用,供讀者參考。以下為節選章節:
LDA 的訓練算法貌似並不複雜,主要的工作就是在維護兩個頻率計數矩陣N_td 和N_wt。然而在這個時代,我們要面對的是網際網路的海量數據,想像一下,如果在圖15中,左邊的文檔節點是十億、中間的主題個數是百萬、右邊不同的詞的個數也是百萬,我們將需要處理一張多大的圖!
圖15文檔d_1中詞w主題重新採樣
在實際應用中,我們希望使用更多的數據訓練更大的模型,這包含了兩重意思:
下面分別從數據並行和模型並行兩個方面來介紹怎樣解決上述兩個問題。「數據並行」和「模型並行「是Google大神Jeff Dean在深度學習訓練系統DistBelief[13]中新提出的兩個概念,儘管Peacock系統開發的時候,DistBelief還沒有真正對外公布。隨著深度學習的持續升溫,大家現在已經逐漸熟悉了這兩個形象的名詞,此處請允許我們借用一下這兩個概念。
「數據並行」通俗的理解:通過多任務(每個任務都包含一份完整的模型)並行的處理數據訓練模型,任務之間的模型或同步或異步的進行融合。借用王益[3]的說法,「如果一個算法可以做數據並行,很可能就是可擴展的了」。幸運的是,David Newman團隊發現基于吉布斯採樣的LDA訓練算法可以「數據並行」,並給這個算法取了一個名字叫AD-LDA[14]。
注意,AD-LDA算法是吉布斯採樣的近似算法,因為嚴格的吉布斯採樣要求串行採樣,不能並行。直觀的理解就是語料中前一個詞w_1採樣更新後的N_wt和N_t應該應用於後一個詞w_2的採樣,而不是w_1和w_2的採樣都基於相同狀態的N_wt和N_t。AD-LDA算法會使得LDA的訓練收斂速度變慢,但在多幾輪迭代後,AD-LDA算法可以收斂到與串行吉布斯採樣相同的點。
圖17給出了AD-LDA算法的示意圖:
AD-LDA算法的整個過程和MapReduce的執行過程非常一致,所以早期有非常多的團隊使用MapReduce來實現AD-LDA算法[5]:
因為MapReduce使用磁碟進行數據交換,同時整個訓練任務需要調度幾百個Jobs,所以基於MapReduce的AD-LDA實現是非常低效的。
圖17 AD-LDA算法
圖18 模型並行1
上文提到,訓練大模型時,N_wt太大而無法整體放入任務的內存,直觀的解決方法如圖18所示,將N_wt沿詞的維度進行分片,每個採樣任務只加載一個模型分片N_wt^((i))。相應的,語料數據塊也需要做對應的詞維度切分,因為單個任務i只能採樣N_wt^((i))包含的詞w。細心的童鞋可能已經發現,圖18所示的模型並行方式在N_td上採用了類似AD-LDA算法的近似,L N_td間的融合與L N_wt間的融合類似,相應的算法也會減緩收斂(因為N_wt是所有訓練語料上的聚合結果,而N_td只和具體文檔d有關,後者變化比前者更加「快速」, N_td的並行近似採樣更加「危險」,很容易造成訓練不收斂)。
圖19 模型並行2
有沒有辦法不進行N_td的並行近似採樣,同時保持上述的模型切片方式呢?Peacock系統設計了圖19所示的並行採樣方式:加載了不同N_wt^((i))切片的任務並行的沿對角線方向對訓練語料數據塊(W,T)進行採樣,一條對角線採樣完成後,依次進行下一條對角線。這樣在對同一個文檔的不同數據塊間的詞進行採樣時,仍然保持了「串行性」,應用了之前數據塊中的詞對N_td的更新。圖19的模型並行採樣方式收斂性同AD-LDA是一致的。
圖20 Peacock中的數據並行和模型並行
為了「利用更多的數據訓練更大的模型」,Peacock系統結合了上述的「數據並行」和「模型並行」(圖20):
同上一小節「模型並行」的分析類似,Peacock系統的採樣方式收斂性同AD-LDA是一致的。Max Welling團隊提出的Async-LDA[6]證明了異步融合L N_wt^i方式的收斂性。當Peacock採用異步方式融合L N_wt^i時,相當於同時結合了AD-LDA和Async-LDA算法,實踐證明收斂性是沒有問題的。
當然,Peacock系統在具體實現上除了上述的主要設計思想,還有很多的實用技巧,比如:
在我們的論文[15]中,部分的解答了上述問題,更詳細的Peacock解密請關注我們的博客「火光搖曳」[16]^_^。
圖21 文本分析示例
為了理解網際網路上海量、多樣化、非結構化的自然語言描述的文本,我們通常會從詞法、句法、語義等維度進行分析。受限於文本字面信息量小,存在歧義現象,詞法和句法分析容易遭遇 Vocabulary Gap的問題,從海量文本數據中歸納 「知識」,從語義角度幫助理解文本,是一種非常重要的途徑。
例如,對於輸入文本 「紅酒木瓜湯效果怎麼樣?」,根據人的背景知識,很容易猜到這是一位女性用戶在詢問豐胸產品「紅酒木瓜靚湯」的效果。對於機器而言,通常會先進行詞法分析,對原始文本做切詞、詞性標註、命名實體識別等,然後使用詞袋模型(Bag of Words,BOW)或提取關鍵詞來表示文本。不難發現,從字面抽取的信息,很容易理解成「紅酒」、「木瓜」等餐飲類語義,並非原始文本真實的意思。當然,我們可以對關鍵詞做擴展,給出一些相似的詞條,但是,更好的是直接理解語義。一種常見的方法是文本分類,由於對標註語料庫的依賴,類別規模一般不會太大,粒度較粗。還有一種方法就是文本聚類,挖掘語義主題標籤,更細粒度的理解文本意思,隱含語義分析技術逐漸發展成為常用的解決方案。能夠從十億級別的文檔中歸納上百萬語義的Peacock系統更是在騰訊廣點通廣告系統扮演著核心角色。這些不同維度的文本分析模塊,包括詞袋、關鍵詞提取、關鍵詞擴展、文本分類和Peacock等(圖21),整合在一起構成了我們理解語言的基礎文本分析平臺TextMiner(圖22)。
圖22 文本分析平臺TextMiner
文本分類是一個典型的有監督的機器學習任務,我們在做在線廣告系統過程中遇到的任務就有許多,包括網頁分類、廣告分類、QQ群分類、用戶興趣分類等。在使用相同的標註數據集和機器學習算法情況下,如何找到有區分力的特徵無疑是最為關鍵的。
以QQ群分類為例,使用群名稱、群簡介、群公告等文本描述,類別體系是二級層次結構,共100+節點,標註訓練數據80,000。以BOW作為基礎特徵,新增Peacock主題特徵後,一級行業準確率和召回率均有顯著提升,達5%左右,二級行業在召回率降低不到1%的情況下,準確率提升達3.86%,達到了實際應用的需求。具體數據如圖23所示。
圖23 QQ群分類器效果
對給定的查詢語句,搜尋引擎會將檢索到的網頁進行排序,把相關性好的排在前面。同樣的,在線廣告系統應該保證展示給用戶的廣告與頁面內容、用戶興趣相關,以儘量不影響用戶體驗。這裡都涉及到一個共同的任務:排序學習。此問題通常被形式化為有監督的學習問題,我們會將查詢、網頁、用戶、廣告表示成語義特徵向量,從而在語義空間裡比較用戶意圖(查詢、網頁內容、用戶歷史行為)和網頁、廣告的相關性。
Peacock已成功應用在騰訊搜索廣告和情境廣告中,用於分析文本數據,歸納自然語言的語義,從而更好地匹配查詢詞和廣告,以及頁面內容和廣告。在情境廣告 Learning To Rank 相關性計算框架下,增加Peacock語義特徵後,NDCG@5提升達8.92%,線上A/B Test實驗 AdCTR 提升 8.82%。相關性評估效果圖24所示。
圖24 情境廣告相關性(相關性標註樣本包括4,000 查詢,200,000對(查詢, 廣告),標註0~3四檔打分)
廣告點擊率預估是預測給定場景下一個廣告被點擊的概率:P(click=1 | ad, user, context),user 表示當前用戶,context 表示當前的環境信息,譬如當前所在的網頁。點擊率預估是在線廣告系統最核心的技術之一,它決定著廣告的排序和計價。
業界一般做法是將廣告展示、點擊日誌作為訓練數據,抽取特徵,通過機器學習方法擬合訓練數據得到預估模型,進而做在線點擊率預估。選取有效的特徵對得到一個精準的點擊率預估模型起著至關重要的作用。
Peacock 是我們理解廣告語義的關鍵技術,被引入到廣告點擊率預估模型中提升效果。具體的,與 KDD Cup 2012 Track2 的數據集產生過程類似,我們使用了騰訊情境廣告系統的廣告展示、點擊日誌,使用L1範數正則的邏輯回歸訓練預估模型,通過 AUC 評估模型精度。 Baseline 使用一些基礎特徵,優化實驗分別在 baseline 特徵集合的基礎上引入主題規模為 1000、10,000 和 100,000 的 Peacock Top-N語義特徵。
圖25 pCTR增加不同粒度topic特徵模型AUC的提升
從圖25可以看出,加入Peacock 語義特徵後 AUC得到了顯著提升,尤其當增加 topic 規模為 100,000的Peacock語義特徵時,AUC 提升最大,約為1.8%,線上 A/B Test 實驗AdCTR 有 8.82% 的提升。
在騰訊效果廣告平臺廣點通系統裡,Peacock被用於理解用戶行為數據,從中歸納用戶興趣,提供廣告精準定向技術。
騰訊豐富的產品線擁有中國網際網路公司最多的用戶,有著海量、豐富的用戶關係和行為數據,如QQ好友關係,QQ 群關係,電商瀏覽、交易,新聞瀏覽,查詢 Query,UGC 內容(如微博、說說等),移動App 安裝,微信公眾號文章閱讀和廣告點擊行為等。通過用戶行為數據的挖掘可以幫助我們更好的了解用戶,以推送精準的廣告。而這些數據都可以形式化為用戶-物品矩陣,如用戶-用戶、QQ-QQ群,用戶-應用(Apps),用戶-搜索詞(或搜索Session),用戶-URLs等。我們利用Peacock系統對上述用戶-物品做矩陣分解(如圖3),從不同數據來源,多視角理解用戶興趣,進而挖掘相似用戶,提供給廣告主豐富的定向策略,如用戶商業興趣定向、關鍵詞定向和Look-Alike定向等。同時,獲取到的用戶特徵,也可以作為廣告CTR、CVR預估系統的重要特徵。
圖26 QQ群推薦
根據用戶已加QQ群社交關係數據,利用Peacock對QQ-QQ群做矩陣分解,我們發現語義相近的QQ群被比較好的歸到了相同的主題下,如圖8、9、10所示。非常直觀的,我們將Peacock 模型應用在QQ群消息面板推薦產品中(如圖26),相比基於QQ好友關係鏈的推薦算法,推薦群的點擊率和轉化率(即點擊後是否加入了該群)均有2~3倍的提升(圖27)。
圖27 QQ群推薦效果
論文《Peacock:大規模主題模型及其在騰訊業務中的應用》由趙學敏、王莉峰、王流斌執筆,靳志輝、孫振龍等修訂,相關工作由騰訊SNG效果廣告平臺部(廣點通)質量研發中心Peacock團隊王益、趙學敏、孫振龍、嚴浩、王莉峰、靳志輝、王流斌為主完成,蘇州大學曾嘉教授、實習生高洋等持續大力支持,是多人合作的結果。
本文由Peacock團隊授權CSDN首發,想要了解論文全文及其參考文獻,請關注CSDN下載。
論文的官方解讀,請參考靳志輝在2014中國大數據技術大會(BDTC2014)上的演講視頻。
如果您對本文有疑問或不同意見,歡迎評論交流。如果您也有人工智慧/機器學習的實踐經驗希望和業界同仁分享和交流,請聯繫zhoujd@csdn.net。
本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)