當前位置:
首頁 > 最新 > 回顧·搜狗信息流推薦演算法交流

回顧·搜狗信息流推薦演算法交流

DataFun社區

大數據、演算法的交流學習平台 圈內人都在關注

本文根據搜狗王東老師在6月9日,DataFunTalk演算法技術沙龍中分享的「搜狗信息流推薦演算法交流」編輯整理而成,在未改變原意的基礎上稍做修改。

本次分享將從上面四個方面介紹,挑選了在信息流分享領域最重要的三個方面,從這三個方面就能基本完成一個信息流產品。首先是推薦系統的架構,如下圖所示,是一個經典的推薦系統架構。首先是數據源,數據源可能是抓取的,或者是合作的,或者是自媒體產生的。數據源即包括圖文的數據源,也包括視頻的數據源。本文主要關注圖文領域。有了數據源之後,首先要進行一下NLP處理,它的作用就是對文章進行抽象,用有限的、關鍵的topic進行概括出來。接下來一層是召回層,就是通過用戶的興趣和點擊把用戶需要的文章召回出來,進行濃縮,從一億多文章到幾千左右的量級。再對幾千左右的文章進行個性化的排序,最後進行展現處理,推薦給客戶端。用戶在客戶端進行點擊操作時,反饋會回到系統中來更新用戶的畫像,對用戶新的請求進行新的推薦。本次主要講標橘紅色的內容。

文章NLP是推薦系統的基石,在搜狗公司文章NLP就是把文章分為三個不同維度的體系,這個維度每個公司都不一樣,有的簡單的話可能就兩個維度,複雜的話可能有更多維度。搜狗是採用三個維度的,大的維度是分類,分類是把整個客觀世界的信息分成若干個大的類別,能夠覆蓋主要的領域,比如說任何一篇文章都可以對應某一個相應的分類上去。比分類更低一級的是標籤,標籤是屬於一部分分類,它也是一個集合,比如說NBA這個標籤屬於體育分類,但是它也是一些概念的集合,比如說下面的火箭隊、喬丹。標籤是處於關鍵詞和分類中間的體系,像關鍵詞就屬於實體的集合,具體的話比如人名、綜藝節目。經過這三級體系,就把這整個文章形成一套非常有結構的組織,每一層體系都能代表用戶的興趣級別。

接下來具體討論下三個級別的概念是怎麼計算的。首先是分類這個級別是個比較大的領域,這個領域必須有一定的受眾,能夠把文章非常恰當的安放到領域當中,目前內容體系有上百個分類,幾十個熱門分類,比如娛樂、情感、軍事、體育等,絕大多數用戶的興趣都會集中在這幾個分類當中。怎麼訓練分類模型呢,採用的是FastText多分類模型,訓練的時候每個分類分別收集幾十萬的文章。

分類模型經過一些階段的迭代,最終選擇比較滿意的一個。最開始簡單的使用FastText模型,進行文本的多分類,最開始把content和title放在一起,作為文本輸入到神經網路當中進行分類,分類效果還可以。後來通過研究之後發現對於文章來說,title和content的重要度是不一樣的,很多情況下title是能表述文章的,把title和content分成兩部分進行FastText訓練,再進行全連接,進行多分類,這樣準確度能達到93%。後續優化的時候除了使用FastText還進行了多模型的融合,使用多個模型融合再進行投票,最終準確率達到96%。

接下來是標籤的方法,標籤和分類都是有限可數的,標籤有幾百個,都是人為總結出來的,描述比較精確。每個標籤都是對應分類當中的,在計算標籤的時候使用TextCNN分類模型,每個標籤收集幾萬篇文章。

TextCNN分類模型和FastText模型不一樣,FastText對於一個文章只會對應到一個分類當中,但是標籤不一樣,可以有多個標籤。TextCNN分類模型對進行了卷積計算,能在更高維度理解標籤的定義。模型的整個架構是把標題和正文分開進行卷積,用兩層卷積,再進行兩層全連接,最後輸出一個分類。為了使分類效果更好,也進行了一些數據增強的處理,比如說單篇文章拆分成多個樣本,在預測的時候把整篇文章拆成多段文本進行預測擬合,最後進行投票確定最終標籤。不同模型測試的實驗效果,人工評估比測試集評估準確率高的原因在於做測試集時一篇文章只會打一個標籤,人工評估可以分多個類別。fastText能達到75%,TextCNN能達到88%,然後採用「TextCNN+數據增強+多段結果預測」能達到90%,用RNN和RCNN結果差不多。

關鍵詞是各個分類中的熱點人物、機構、作品等實體內容,但推薦與知識圖譜不同並不需要很多實體,需要能代表興趣。因此將熱點實體經過人工篩選最終篩選出幾萬的實體量,都是相關領域熱門的有代表性的實體。實體詞需要實時的進行更新。關鍵是如何發現實體並將其加入實體集,我們我定期發掘新產生的的熱門辭彙,通過計算給相關的標註人員推薦給可以作為標註的人們關鍵詞,通過人工方式確定是否可以錄入。

關鍵詞的計算由於樣本太多無法通過分類來計算,解決方案是從文章中找關鍵詞,選擇與其topic相關的關鍵詞作為代表。做關鍵詞一般有兩種模型,一種是相似度模型(TF-idf、lda、word2vec),將詞與文章都用向量代表,算出詞與文章的相似度,找最相近的詞。另一個是概率模型Skip-Gram+層次softMax,下面著重介紹概率模型。

假如有一個文本S,有若干個詞,條件概率(見上圖)。概率越高則該詞更能表示這個文本,更適宜做文本的關鍵詞。將關鍵詞做一個貝葉斯假設,即是詞與詞之間轉換概率的乘積,對詞的轉換概率的建模。採用word2vec,Skip-Gram思想,輸入的是文本空間,經過embedding,然後softMax全連接,最後得出一個詞轉換為另一個詞的轉換概率,word2vec不需要右邊的樹,但是本模型主要利用樹結構,算出轉換概率後,依據貝葉斯假設選出概率最大的作為關鍵詞,最終準確率能夠達到89%。

接下來介紹下召回演算法,主要是基於內容召回、基於用戶、協同過濾的召回等。基於內容召回就是:顯式分類,標籤,關鍵詞,比如點擊周杰倫的文章,周杰倫就會進入你的用戶畫像裡面,下次進行刷新操作就會出現周杰倫相關的文章,進行排序。這三個維度都是人指定的,但是可以用lda等方式將文章分為幾百幾千的維度,每個維度內文章是相似的,相似原因不是人為可讀的,這也可以作為nlp處理的一個方向,還有點擊歷史相似的文章;協同過濾主要用的是Item-based、LFM、NCF等;還有一些其他的召回,如地域、人口屬性、搜索歷史、訂閱。其他召回不依賴用戶行為,對於沒有用戶行為的新用戶你可以通過額外信息進行召回,解決冷啟動的問題。

CB召回是在用戶畫像維護一個用戶興趣的集合以及相應的權重,線下會維護用戶興趣對應的文章列表。這些列表與用戶個性化聯繫緊密,只要一個用戶對軍事有興趣,就會將軍事列表拉回來做排序。興趣文章列表維護是CB召回的核心,有兩種策略,一種是基於規則的,第二種就是基於模型排序。我們在召回簡化為對CTR預測,使用的是LR模型。特徵的選取與文章排序預期有關,優質的文章可讀性很強,時效性(越新的文章信息量越足),相關度要高。

分為三個維度,一個是文章的基本特徵,文章樣式、圖文、長度、是否包含熱門關鍵詞、賬號等級(能夠很好區分出是否是好文章)、入庫時間;還有相關特徵,詞在文章中的位置、出現的頻率以及詞和詞的向量化與其他關鍵詞的夾角;熱度特徵主要就是文章的熱度、點擊、分享、不喜歡,還有文章裡面召回詞的熱度,在一定程度也體現文章的質量。將這些特徵作為線下模型計算的特徵。

接下來講一下協同過濾召回,主要是協同召回矩陣,橫的是doc,豎的是用戶。Item-based就是用戶來表示文章doc的向量,通過計算doc與doc之間的相似度來確定doc與doc間的相關性,進而推薦相關的內容。首先是維護每一個doc相關的文章排序,除此之外還有query的協同,如搜doc1的人也搜了query,那麼搜query的人可能也對doc1感興趣,location協同,人口屬性也是類似。第一種效果最好,後面相對差一些,但是好處如果冷啟動發生,下面兩種方法就能推出相關的文章。冷啟動無法避免,但是CF某種程度能解決這方面的問題。

上面的CF是基於矩陣,算的是item與item間的關係,並不直接算item與user的相似度。而隱語模型將矩陣進行分解,變成兩個矩陣,將user與item轉化為同一個維度,就是對用戶點擊的分類,就可以直接計算item與user的相似度。目前用的比較多的就是隱語模型,主要用在電影評分領域,在推薦領域也是可以使用。還有一種方式是NCF,就是用神經網路的方式來訓練user與item的相似度,通過同樣的embedding維度,將user與item統一到同一個向量空間,通過神經網路訓練出各自的向量,最後得出用戶與item的向量關係。

召回的目的是為了從幾億空間裡面找出可以精排的集合,召回基於用戶畫像,召回與召回間不可比,因此需要對召回集合做個性化排序。

依據信息流產品個性化排序大致分為以下幾個階段:起先基於規則的,然後就是基於LR的預估,最常用的點擊率預估模型,速度快,效果好,與人工規則相比,效果提升顯著。後續進行優化,一種是GBDT+LR(Facebook提出的一種方法)實驗過程中速度受限,對比LR優化效果不明顯。後續用了FTRL優化,思想是在線更新LR模型,在LR的基礎上,效果提升明顯。目前用的比較多的是基於深度學習,wide&deep模型,在FTRL的基礎上,效果再次提升6%。傳統機器學習主要處理特徵比較明顯,表格式的學習任務,深度學習主要解決圖像、語音、文本等。推薦問題正好是兩者問題的交叉,兩種方法都可以使用。

著重講一下Wide&deep learning模型,該模型將邏輯回歸和深度神經網路結合在一起,邏輯回歸有一個記憶能力,deep層有泛化能力,wide和deep層的特徵需要甄別,能夠很好地提升效果。特徵工程主要分為三個方面,一方面文章本身的特徵,比如內容方面(nlp特徵、圖片、篇幅、深度),屬性就是文章熱度、長好特徵、時效性、原創性;還有就是用戶特徵,如用戶興趣、年齡、性別、學歷、地域;第三部分就是做特徵交叉,在做GDBT+LR時還需要做人工交叉,比如用戶興趣與內容的匹配度,還會利用FM還做自動交叉。

FM交叉也需要embedding,目前流行的用deep,就是FM和deep層用同一層embedding的結果,參數並沒有增加,同時完成深度與廣度層的embedding,最後進行一個最終預測。

最後做一下總結,首先文章NLP是做推薦的基石,開始做文章處理,後續做用戶畫像、特徵交叉時都需要用到文章NLP。文章NLP不僅限對文章抽象,還包括文章的分級,比如深度文章、淺度文章,還有地域類文章。召回演算法有很多,策略和演算法同樣重要,在召回層並不需要使用特別複雜的演算法,你用什麼策略召回更重要。個性化排序都是從傳統模型向深度模型轉換,向頭條等巨頭使用的是多模型融合,效果也更好。對於初期信息流產品可能不需要這些東西,用戶畫像需要但不需要太細,但是在演進過程中不可或缺。比如多樣性,用CTR預測必然收斂,就需要解決如何打散,如何進行用戶新興趣發現等,還有冷啟動問題,沒有用戶行為時如何推薦,還有質量控制也是必須的,比如現在大環境下一旦有不合適東西推薦出來就會出現嚴重後果;時效性也很重要,但是評估很困難,有些還需要人工與演算法結合,人力也是一個挑戰;視頻在信息流產品比重越來越重,與圖像類似,目前基本以CTR乘以時長作為目標預測,圖文基本以CTR為主;視頻title很短,如果對視頻進行topic、tag等操作抽象往往得不到一個好的結果。

——END

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 DataFunTalk 的精彩文章:

回顧·AI在OPPO個性化推薦中的應用

TAG:DataFunTalk |