詳文解讀微信「看一看」多模型內容策略與召回

編輯導讀:微信已經成了不少人獲取諮詢的來源之一,看一看功能在這基礎上實現內容的精確推薦,以及拓寬使用者閱讀興趣,打破資訊繭房。本文從六個方面,以多模型內容策略與召回的角度分析微信看一看,希望對你有幫助。

詳文解讀微信「看一看」多模型內容策略與召回

一、看一看介紹

相信對於不少人而言微信已經成為獲取資訊的主要場景。與此同時,由於微信使用者群體的龐大,也吸引了大量的內容生產者在微信公共平臺創造內容,以獲取使用者關注、點贊、收藏等。微信內的內容推薦產品:看一看應運而生。

基於微信透過多年的使用者沉澱,積累得到的大量“隱式反饋”閱讀興趣資訊,可以精準的實現內容與內容消費者之間的推薦。同時,秉承降低使用者獲取資訊繭房效應,拓寬使用者閱讀興趣,增強互動,強化使用者認知,及時獲取諮詢等等訴求,看一看不斷在演算法迭代的同時,引入各類騰訊系,外部圖文,影片,資訊,小影片等內容,豐富內容多樣性的同時不斷上線最佳化產品體驗與進行樣式最佳化。

二、內容庫與內容畫像

1。 內容源

看一看接入了非常多合作方的資料作為內容源,包含但不僅限於微信公眾平臺及其他外部內容等等。

由於接入資料來源較多,各家資料在內容、質量、品類等方面差異性比較大。看一看平臺方會對資料做“歸一化”操作,包括標籤統一化,推薦標籤提取,內容投放目標,投放人群傾向性等內容理解處理,這部分我們稱為看一看內容畫像部分。

2。 內容畫像

內容理解:對接各種外部圖文等內容,對接入內容做業務級內容多維基礎理解,同時進行外部標籤與自有標籤體系對齊,完成應用級內容打標。

反饋至下游應用方:使用者需求系統,召回策略,召回模型,排序/混排等使用。同時,在業務資料滾動與迭代中修正資料判斷精度與效果,逐步貼合與提升業務線效果。

詳文解讀微信「看一看」多模型內容策略與召回

我們將內容畫像,定義為兩個大維度:透過內容本身來理解內容, 透過使用者行為來理解內容。前者主要針對內容抽取靜態屬性標籤;後者則透過使用者行為積累的後驗資料、統計或模型預估內容的知識、傾向性、投放目標以及抽象表達。

3。 多模態標籤語義標籤

我們將文字語義按粗到細粒度分為:文字多分類(1-3級),主題topic model(長效topic,實時topic),tagCluster, tag/entity,這也是NLP領域持續在關注和研究的重點方向。

文字分類與模式識別中心合作對長/短文字訓練基於標註的增量多分類模型(1-2級分類準確率可以達到90%+),支援領域內DL文字分類模型。

Topic Model作為重要分支,為支援看一看推薦業務,解決了時效性熱點的快速topic增量模型,實現多層級(1000維,1500維度,5000維, 1W維)topic model,以及以此為基礎衍生出的topic Embedding技術等。

Tagcluster是介於tag和topic粒度之間的一類tag聚簇概念,維度為10W級;用於解決語義自動語義聚合的可解釋問題;關鍵詞提取(標籤提取),技術演進從傳統的基於標註,到半監督,到自動標註的序列提取的淺層模型;已經全部遷移為基於bilstm+attention+CRF 和 bert的一套深度模型系統。

標籤是推薦系統的核心基礎能力,深度模型的引入對演算法準確率與覆蓋率都有顯著的提升。

影片理解的相關維度,我們與外部團隊深度合作,建立起一套基於短/小影片,封面圖多維度的多媒體特徵體系,包括人臉識別,人臉embedding,標籤,一二級分類,影片embedding表示,水印,OCR識別,清晰度,低俗色情,敏感資訊等多種維度。有力輔助多媒體理解深度,並廣泛用於召回模型,曝光展示策略,過濾策略等,目前,在召回與策略層面已經證明有一定線上提升效果。

4。 基於知識體系的表示與可解釋標籤

知識圖譜作為知識承載系統,用於對接內外部關鍵詞資訊與詞關係資訊;內容畫像會將原關係資訊整合,並構建可業務應用的關係知識體系。

其次,依賴業務中積累使用者行為產生的實體關係資料,本身使用者需求的標籤資訊,一併用於構建業務知識的興趣圖譜,基於同構網路與異構網路表示學習等核心模型,輸出知識表示與表達,抽象後的圖譜用於文字識別,推薦語義理解,興趣拓展推理等場景,直接用於興趣推理的冷啟場景已經驗證有很不錯的收益。

5。 嵌入表示

語義嵌入表示:這類是相對已經比較成熟的技術,基於短文字tag, word粒度,句子粒度,doc粒度都可以構建embedding表示。其次,除文字外,更為豐富的多媒體資訊的融入,已經可以驗證在一定程度上可以增強表達能力。

其次,我們基於微信閱讀場景的使用者點選/分享/關注等等序列結合場景的上下文資訊,以他們作為文字切割的序列標註資訊,早起基於傳統的HMM,CRF類淺層模型,發展至目前的seq2seq,RNN,transformer,Bert等序列類,語義類模型,將內容作為文字切割的一個子序列,從而實現對文字的序列的表示資訊。由於更加貼近推薦場景,這類嵌入表示業務可用性會更高,也體現在召回/排序模型的應用效果會更加明顯。

6。 傾向性與目標性識別

詳文解讀微信「看一看」多模型內容策略與召回

這部分是透過使用者行為資料來理解內容的重要體現。分為兩部分:內容傾向性與內容投放目標性。都是建立在一套基於文字,多媒體,kg,投放日誌等下的一套分類器進行打標,模型如上圖所示。

內容傾向性:內容透過分類模型預打“傾向性”標籤,例如:內容適合的性別傾向、年齡傾向性、地域傾向性等等,從而預判待投放內容的特殊人群傾向性。

目標性識別:看一看的場景會比較多,例如:主TL流,影片流,專題流,tag可點流,看一看+小程式,每個場景都有不同的投放目標(例如:主TL內容會以點選率為主,專題流會以時長消費為主,小程式分享率為主)。所以,我們會在item上同樣基於投放預估的模型預先打上一組目標識別標籤預判分數,供線上策略使用與內容庫構建、以及內容試探等。

綜上,透過內容理解與內容庫構建的概要流程圖如下:

詳文解讀微信「看一看」多模型內容策略與召回

這部分產生的判斷維度會對所有接入看一看的內容進行組合打標,透過不同產品場景或渠道來交叉組合,構建推薦的內容庫。同時,標籤會不同力度的用於線上召回過濾策略,作為模型召回、排序特徵來使用。應用證明對於新內容的冷啟動篩選,特定投放目標庫群體效率提升明顯。

三、召回架構

推薦系統的召回階段可以理解為根據使用者的歷史行為資料,為使用者在海量的資訊中粗選一批待推薦的內容,挑選出一個小的候選集的過程。在看一看召回演進路上,我們曾經調研大量主流的工業界推薦系統的召回架構的設計,如下:

詳文解讀微信「看一看」多模型內容策略與召回

可以看到各類同類競品的系統雖然細節上多少存在差異,但不約而同的採取了多路召回的架構,這類設計考慮如下幾點問題:

考慮使用者層面:使用者興趣的多元化,使用者需求與場景的多元化:例如:新聞需求,重大要聞,相關內容沉浸閱讀等等。

考慮系統層面:增強系統的魯棒性;部分召回失效,其餘召回佇列兜底不會導致整個召回層失效;排序層失效,召回佇列兜底不會導致整個推薦系統失效。

系統多樣性內容分發:圖文、影片、小影片;精準、試探、時效一定比例;召回目標的多元化,例如:相關性,沉浸時長,時效性,特色內容等等。

可解釋性推薦一部分召回是有明確推薦理由的:很好的解決產品性資料的引入。

看一看召回目前設計為多路召回形式,從功能性角度分為如下幾類:模型類召回、相關場景類召回、基礎屬性召回、社交類召回、試探類召回、產品策略/運營類召回六大類。

如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

模型類召回:目前看一看曝光佔比最大的一類召回策略,可以很好的解決推薦系統中長短期興趣自適應、一定程度的興趣擴充套件、業務場景擴充套件與遷移等幾個核心召回問題,為下文著重介紹的內容。

相關類召回:看一看包括多個相關推薦場景。這類召回依賴內容畫像對內容的語義判斷能力,採用孿生網路類設計思路,解決跨內容域(例如:影片與圖文,封面與標題等)相關性問題,滿足使用者在推薦系統內對沉浸式體驗的需求。

基礎屬性類召回:屬於比較基礎的一類召回,但具有幾點重要意義:由於多重標籤的對item的覆蓋度會比較高,所以這類召回很好的可以滿足冷啟類,兜底類場景;其次,屬性具備良好的可解釋性,可以很好的對模型類召回以及相關特殊外顯場景下的解釋性作用,通常也是產品訂製或規則的重要維度。

社交類召回:是看一看比較有特色的一類召回,基於微信豐富的社交場景,看一看設計了:“好友在讀”,“XXX都在看”,“在看”等幾類設計相關推薦。

試探類召回:通常的推薦系統都會面臨“資訊繭房”問題,即:人們的資訊領域會習慣性地被自己的興趣所引導,從而產生多種主動行為:我們也稱為對推薦系統的隱式反饋資訊,這類行為又會作為推薦系統的學習目標,從而讓推薦結果逐步收斂,使用者再無法獲取更廣泛的內容,資訊桎梏於像蠶繭一般的“繭房”中的現象。興趣試探會解決這類問題。另外,推薦系統作為一類內容分發平臺,承擔著甄選優質內容,發現潛力優質內容,並在一定程度上去中心化投放的能力,內容試探佇列會解決這類問題。

運營&產品策略召回:滿足產品以及一些節日、新聞、話題、合作方等特殊定製場景。

粗排

四、佇列演進

詳文解讀微信「看一看」多模型內容策略與召回

看一看召回策略演進主要經歷了四個階段,這裡並不是代表後者替代前者,由於不同佇列的意義和解決的問題的差異性,各個階段的一些佇列目前還會有不同情況的保留在系統中。

1。 基於屬性召回

這一階段比較重的依賴內容畫像與使用者需求的細粒度判斷,我們走過了一段基於自然語言處理、基於使用者行為來對內容做豐富的細粒度內容打標籤的階段,接著,使用者需求會基於閱讀、搜尋等使用者行為將內容屬性標籤歸入使用者需求。

內容屬性標籤構建倒排與正排索引,各路召回線上基於使用者需求的多個細粒度維度判斷以及實時閱讀歷史的item屬性資訊,透過拉取倒排item拉鍊,得到各路召回的候選結果。

這階段中,例如:tag、類目、topic,已關注公眾號佇列佔到了召回大頭比例,這類屬性具備很好的可解釋性。

2。 協同&社交召回

CF主要的功能是預測和推薦。演算法透過對行為資料的挖掘發現使用者的偏好,構建使用者(user)需求或者內容(item)畫像,基於不同的偏好對使用者進行群組劃分來向用戶推薦可能感興趣的內容。協同過濾的核心思想,簡單地說就是:物以類聚,人以群分。

如下對CF類演算法的常用歸類示意圖(來自wiki)可以比較好的表達我們對協同類演算法的演進路徑。

詳文解讀微信「看一看」多模型內容策略與召回

首先一類是:Memory-based approach(圖中是Neighborhood-based),當時嘗試的這類協同過濾計算,思路為:“鄰居”的思想,分為User-based CF(簡稱UserCF)和Item-based CF(簡稱ItemCF)。

在前期階段中,行為+id維度構建的item cf 與user cf都有明顯的線上效果提升,歷史上線上曝光佔比一度非常高。但是這類方法依賴item或user維度有大量行為累計,否則泛化和推薦能力很差,且具有很強的驅熱性問題。

另一類,即考慮item內容資訊的content-base approach類,即內容協同:我們稱為ContentBase(解決誇內容域的各類相關計算場景的一類召回)。

看一看場景中有非常多語義相關的應用場景,例如:相關推薦、去重、打散、召回/排序特徵等等。我們解決跨域的語義相關問題,整理出一套統一框架,方便統一呼叫使用。

架構整體為三層,相關演算法層,並行最佳化層和演算法介面層。整體相關性框架如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

我們使用深度語義匹配模型來進行文字相關性的計算,主要透過embedding、滑動視窗、CNN、MaxPolling,前饋網路,最終透過餘弦距離計算兩個文字的相似度,如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

線上的item聚類演算法的難點是如何在幾十ms內完成上百篇文件的聚類相似度計算、語義相似內容召回等演算法,我們在並行最佳化層進行了“並集查詢加速”,“相似漏斗形加速”,“多執行緒”加速等多點最佳化。目前也已經服務化,滿足推薦場景下複用,落地看一看場景內各類相關性場景。

隨後,我們上線了Model-based approach,在這種方法中,重要的思路為利用模型來預測使用者對未評估item的評分。

有許多Model-based CF演算法:貝葉斯網路( Bayesian networks),聚類模型( clustering models),隱語義模型(LFM),如奇異值分解(SVD),機率隱語義分析( probabilistic latent semantic analysis),多乘法因子(multiple multiplicative factor),latent Dirichlet allocation(LDA)和基於馬爾可夫決策過程類模型(Markov decision process based models)。

例如,我們線上的一種比較有效的方案:BPR(Bayesian Personalized Ranking from Implicit Feedback)其核心原理非常自然:將user-item序列(可以是任意點選,閱讀,收藏行為)轉化為item-item 的knn標註矩陣,如圖:

詳文解讀微信「看一看」多模型內容策略與召回

方法中構造訓練資料考慮的feature-item包括三類:

對於某個使用者來說,在訓練時都被標為”0″的item,在預測時的評分也可以排序,因此不影響ranking任務的完成。在我們系統實踐時也沒必要使用全部歷史資料,只需要以session切片,從中按照上述形式構造pair-wise資料即可

透過這類方法,降維方法大多被用作補充技術來提高基於記憶體的方法的魯棒性和準確性。

另外一方面,對於像奇異值分解,主成分分析等方法,根據潛在因素將使用者專案矩陣壓縮成低維表示。使用這種方法的一個優點是,更好地處理原始矩陣的稀疏性。

此外,對於處理大型稀疏資料集時我們下文也會介紹,藉助大規模knn能力,這類矩陣相關性的計算可以得到很好的解決,非常適合召回場景。

第三類是Hybrid models(也就是前兩種的混合模型)。許多應用程式結合了memory-based CF演算法和model-based CF演算法。這些方法克服了原生CF方法存在的侷限性並提高了預測效能。其實上,這部分的進一步嘗試,已經歸類和被為下文將要介紹的深度模型召回所替換。

社交類召回,是微信場景下的特色資料,比如:

基於自然好友的:在看。

基於興趣的:在看,XXX為基於興趣關係得到的聚蔟關係。

又比如18年10月上線的在看頻道:基於使用者主動點選在看按鈕,收集效果一類社交閱讀場景。

3。 試探類召回

隨著業務發展與對使用者理解的深入,出現幾類問題亟待解決:使用者獲取資訊通常表現出很強的短期效應;我們線上透過引入使用者實時閱讀歷史資料,利用短期閱讀行為資訊作為觸發源,構建隱語義類召回策略。

但同時,我們很快發現,點選類指標提升帶來的代價是短期內容集中,內容型別快速收斂,主要原因也是策略過於依賴短期行為,召回內容的集中,導致上層模型快速收斂,使用者行為收斂,逐步導致很強的資訊繭房效應。

召回測試是急需引入更為泛化與具備試探能力的召回。隨著業務dau逐步提升,不斷有新使用者、新內容引入系統,如何解決冷啟問題也需要著重考慮。

1)知識圖譜類

在微信生態中,即使對於一個看一看新使用者,我們也可以根據極少的使用者/內容基本資訊進行推薦。內容協同使用了異構網路的方法進行文章召回。

詳文解讀微信「看一看」多模型內容策略與召回

我們搭建了基於知識圖譜的異構召回模型。該方法以知識圖譜給出的“先驗”關係資訊,將文章feature與使用者feature做關聯,構建出一個同時包括使用者特徵又包括文章的特徵的異構網路,透過圖譜異構網路的表示學習,得到異構節點的向量(user profile feature與doc feature)。

已經有相關理論支援,可以得到特徵之間的獨立性與向量的加和性,從而實現在特徵匱乏情況下,不會過渡依賴單一使用者需求或內容畫像特徵進行召回,對合並後的向量相關性計算召回與該使用者最相關文章。

2)試探(興趣試探/內容試探)

解決兩類問題,拓寬使用者的興趣面,減少發現優質內容的週期。試探能力需要打通整個推薦系統的綠色pass通路,允許內容或興趣召回可以全鏈路走特殊通路:包括:資料通路,模型通路,定製召回/排序/混排模型等能力。

詳文解讀微信「看一看」多模型內容策略與召回

我們召回透過設計兩類試探策略,解決上述問題:

興趣試探:我們系統中透過:跨域使用者興趣試探,中長尾閉集合興趣試探,全集合興趣試探模型三類策略就行興趣試探。並建設了一套以使用者需求的試探成功率,試探標籤的有點率,點選率衡量試探效果的實驗體系,可以閉環的驗證鏈路效果。

詳文解讀微信「看一看」多模型內容策略與召回

內容試探:我們設計了:內容質量識別(離線),運營系統(旁路),流量預估(線上),內容投放目標性識別(線上)來投放與最佳化投放效果,透過全鏈路的對內容標籤修訂,試探投放,日誌模型定製化,遷移學習,上線後以ABTest中以新內容系統獲取曝光後的試探內容點選率,試探成功率,試探多樣性衡量閉環效果。

詳文解讀微信「看一看」多模型內容策略與召回

4。 深度模型召回

下文對這部分工作進行概要介紹,按類別我們將模型召回分為四類:

五、深度模型召回

召回是處於推薦業務的底層位置,首先,處理資料規模相比上層排序要大幾個數量級,其次,要求準確的同時,兼顧多種業務和使用者體驗目標,例如:多樣性,社交,時長,負反饋,分享等等。在諸多限制下,模型召回系統會著重解決幾個問題:

候選資料規模大;對模型效能要求高;

user-item 交叉類特徵演算法,由於召回的檢索邏輯限制,這類演算法支援不友好;

底層資料種類繁多,模型需要具備很強的自適應能力;

解決:多樣性與精確性的兩難選擇;

模型實時性問題增量模型;

使用者/內容冷啟的召回問題;

橫向業務演化階段,模型如何快速孵化新業務,即遷移能力。

詳文解讀微信「看一看」多模型內容策略與召回

對於深度模型召回來說,需要有特定的架構模式來應對,我們的解決方案如下圖所示。

模型訓練為離線實時訓練得到使用者與item兩側的引數或embedding資料,引數部分依靠微信基礎平臺部提供的強大線上feature KV系統進行實時存取,user與item線上進行KNN計算實時查詢最近領結果作為召回結果,其中KNN服務由基礎平臺部基於對Facebook開源的faiss升級改造的一套系統,可以在5ms內完成千萬級內容的快速查詢。

詳文解讀微信「看一看」多模型內容策略與召回

1。 序列模型

推薦系統主要解決的是基於使用者的隱式閱讀行為來做個性化推薦的問題,所以,我們嘗試的方法是將使用者在隱式閱讀場景下表現出的點選文章序列構建為一個長文字,這樣閱讀文章和點選可以當做是文件的Term。

那麼無數的使用者閱讀歷史序列就可以當作是天然的語料庫,如此可以將隱式推薦問題遷移為自然語言處理中的語義(語言)模型可cover的範疇。

基於神經網路模型學習得到Word2Vec模型,再後面的基於RNN的語言模型,這些方法都可以應用到語料的學習中。此外,seq2seq的機器翻譯模型也可以幫助我們挖掘更多額外的資訊。

2。 N-Gram

語言模型

當然我們還有可以使用最基本和最經典的語言模型N-Gram模型來挖掘這批語料,考慮計算2-gram,3-gram,可以幫助我們瞭解item之間的轉移機率資訊。此外近幾年提出的Word2Vec的模型可以看作是從另外一個維度去描述判斷N-Gram的語言模型,Word2Vec的模型可以將term表達成一個稠密的向量,儲存了語義資訊,被認為是更加突出的語言模型。

3。 RNN-based的語言模型

Rmb(rnn model based recommend)使用迴圈神經網路對使用者閱讀序列資訊建模,捕捉使用者閱讀的序列關係和長期閱讀興趣的起止。訓練時使用使用者閱讀序列和文章語義資訊,線上使用迴圈神經網路預測topk進行召回。

基於迴圈神經網路的推薦模型(Recurrent Based Recommendation)是對使用者閱讀順序使用迴圈神經網路的方法進行建模。該模型解決了在相同使用者屬性和相同閱讀集合的情況下召回內容同質的問題,rmb可以對使用者閱讀順序進行建模,即使相同使用者屬性,相同閱讀集合的使用者,如果他們閱讀內容的順序不同,也會有不同的召回結果。rmb可以對長期使用者閱讀歷史和序列資訊進行很好的建模。

為了更好使深度神經網路模型進行學習,首先使用item embedding方法將文章或者影片的ID對映到一個固定維度的稠密向量空間中,然後根據使用者的閱讀行為和文章的語義,對使用者閱讀序列進行建模。

詳文解讀微信「看一看」多模型內容策略與召回

4。 使用基於seq2seq的encoder-decoder模型

使用者的閱讀歷史可以透過Session的切分原則劃分為很多個Document,也就是說我們可以將一個使用者抽象為文件序列。

給定一個文件序列,可以預測使用者接下來的閱讀序列,在這裡我們將利用seq2seq來解決這個預測問題,將使用者的閱讀歷史進行encoder,然後decoder出一個新的序列來作為推薦候選集。

在預測的過程中我們將文件中詞的Embedding向量組合成一個文章的向量,基於使用者的閱讀歷史序列可以進行有監督的學習,最佳化詞的Embedding向量。

這種思想借鑑了Seq2Seq,我們可以考慮使用使用者的前半部分session預測使用者的後半部分session。這些都是類似機器翻譯的NLP技術,我們堅信這種策略能夠為我們提供合理有效的序列推薦。

詳文解讀微信「看一看」多模型內容策略與召回

5。 Translation模型

在自然語言處理領域,神經機器翻譯(Neural Machine Translation,NMT)模型大大提升了機器翻譯的質量,使得機翻譯文在忠實度、流利度方面首次超越人類專業譯員。我們知道推薦業務中,線上粗排和精排的多佇列融合加權,導致策略最終曝光量和多樣性會明顯下降。

因此,我們考慮基於NMT模型來提升線上影片推薦結果的多樣性,主要原因有以下兩點:

NMT建模處理較長序列(長度> 30),一方面,可以將時間、地點等Context資訊、以及video自身的語義資訊融合到使用者的點選序列中,供模型學習;另一方面,根據使用者和video相關Context資訊,對使用者進行影片推薦。從兩個方面提升影片推薦結果的獨立性和多樣性。

NMT可以同時對item點選序列中item之間的區域性和全域性依賴關係進行建模,可以召回存在遠距離依賴關係且使用者感興趣的item,豐富對推薦item的多樣性。

詳文解讀微信「看一看」多模型內容策略與召回

Trans佇列將機器翻譯模型(NMT)與使用者所處的Context資訊相融合,進行推薦。使用者所處Context資訊是指使用者訪問推薦系統的時間、地點、心情等資訊。

Context資訊對於提升推薦系統的多樣性至關重要,比如,白天上班時,使用者可能傾向於看行業相關最新資訊;晚上睡覺前傾向於看一些搞笑幽默等適合放鬆的資訊。利用NMT模型可以對較長的序列進行建模的優點,將使用者點選序列、video自身的語義資訊、使用者Context資訊等構成序列供NMT學習,利用NMT可以同時對全域性和區域性資訊建模的優點,將這些資訊融合並用於影片推薦,以提升推薦系統的多樣性,最佳化人均曝光tag數和二級類類目數等多樣性指標。

Trans模型主要分為User Encoder和Item Decoder兩個部分:User Encoder將使用者長期和短期的類目(cat)、Tag和Profile特徵融合成。一個Context資訊用於Item Decoder解碼;Item Decoder輸入來自兩個部分,一部分是User Encoder輸出Context資訊,一部分是當前的Vid、以及當前Vid的Tag和類目。

6。 Bert模型

從文字預訓練任務看,預訓練向量表示整體演進路線表現為:由靜態向量到基於上下文的動態向量,由單向到雙向再到同時考慮雙向。最近一兩年,以Bert為代表的動態雙向預訓練模型在自然語言處理領域大放異彩。推薦系統中使用者興趣建模可以借鑑Bert預訓練目標。

主要原因有:

首先,無論是RNN模型還是Seq2Seq模型以及Translation模型,都是從前到後建模使用者歷史行為序列,單向結構的建模有一定限制,而Bert類模型兼顧雙向進行建模。

其次,使用者行為順序性的假設有時並不適用,使用者行為順序與推薦系統展示順序有關,比如打亂某些會話內的推薦順序不用影響使用者行為。

Bert模型召回關鍵點在於樣本製作:

建模更長的使用者序列:序列長度128,對於長序列使用者採用滑動視窗擷取樣本,對於短序列直接丟棄處理;

如何MASK:樣本真實長度為N,序列中1-N-1隨機MASK,MASK比例10%;為了擬合序列任務,最後一位N強制MASK。

詳文解讀微信「看一看」多模型內容策略與召回

7。 雙塔模型

DSSM(Deep Structured Semantic Models)是一個用來解決搜尋相關性的模型,透過將query和doc 分別計算成一個向量從而獲得query和doc相關性。

在推薦系統中認為給使用者推薦的item與其興趣相關性越高,使用者則越喜歡,利用DSSM這種相關性計算方法,透過計算user,item向量之間的相關性從而判斷使用者是否對item更感興趣。

模型框架方面,我們經歷了從雙塔DSSM模型到Multi-View DNN,Multi-View DNN可以更好的結合圖文、影片、小影片等不同業務的資訊來豐富使用者表示,使模型對使用者判斷更準確,這對業務遷移初期冷啟動使用者有明顯作用。

特徵使用上,我們使用了user需求資訊與Item的豐富side infomation,包括一些對映特徵,比如使用者的類目與item類目,使用者的tag與item的tag等。模型訓練使用線上的曝光點選,曝光分享等資料作為訓練資料(具體會因業務不同有所變化)。

由於召回側候選Item量級非常大,無法進行instance基本線上預測,實際使用採用了線上實時predict user embedding 與離線predict doc embedding結合的方法。將item embedding存在線上ANN server,每次請求使用ANN 取出與user embedding 最相近的top 1000 doc作為召回候選,具體模型框架如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

我們對雙塔模型的最佳化方向:

雙塔DSSM到Multi-Videw DNN,結合多業務資訊,豐富使用者表達。

增加更多side information,學習更準確user、item表示。

pair-wise 形式的雙塔模型,提高模型的預測能力。

結合attention,FM等結構,增強模型表達能力。

多塔多目標模型最佳化,結合業務多指標,融合豐富資訊建模多塔模型。

8。 混合模型

基於深度神經網路的推薦模型DMB(Deep Neural Networks based Model)是綜合使用了文章或影片的語義資訊、使用者的閱讀歷史、長短期興趣、上下文資訊,推薦出相似語義的文章或影片。

序列類模型採用的是無監督的機器學習方法,能夠很好的學習到item的語義向量和協同向量,但是在推薦場景中還有大量的特徵可以使用,因此需要一個對推薦資料擬合更好的模型去進行機器學習,DMB模型因此而產生,深度神經網路可以有效的對各種型別的特徵進行融合,並且有很好的泛化能力,在當前的看一看系統中有著很高的召回佔比和較高的使用者時長。

為了更好使深度神經網路模型進行學習,首先使用item embedding方法將文章或者影片的ID對映到一個固定維度的稠密向量空間中。所有的特徵會在向量化後concat在一起,做為DMB模型的第一層的輸入,後面是若干全連線層。

整個DMB模型的架構如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

在迭代的過程中發現使用者的最近的閱讀歷史(影片播放歷史)對於使用者的興趣判斷非常重要。模型對於閱讀歷史建模做了比較多的嘗試,使用過RNN,CNN和簡單的self-Attentnion等建模方法,離線指標Hitrate都有一定的提升。

最近對模型進行了新的升級,新的模型將利用使用者的長期需求對使用者的播放歷史進行權重的重新建模,這裡使用Attention建模方式來完成對閱讀歷史的重新建模。

先使用神經網路將使用者的長期需求Encoding成Query向量,使用該Query向量Attention所有的播放歷史,再進行加權平均。

同時,使用加入pos的建模,提高最近播放影片重要性,可以避免因為受畫像的影響過多的關注符合長期興趣的播放歷史,而忽略了對新內容的試探。具體的可以參考下面的新的模型結構圖。這裡只給出了User端建模方法,doc與之前一樣。

詳文解讀微信「看一看」多模型內容策略與召回

上面的迭代過程都是在不斷地最佳化如何更好地進行使用者的興趣描述,使用更好的網路結構生成更好的使用者隱向量。這種將使用者直接生成一個高階隱向量的方法,可能會導致召回的結果過於泛化,不易保證精準性。透過在召回模型中引入FM層的User-Doc交叉特徵可以很好的解決這個問題。

參考FM的公式如下,假設前m個特徵是user相關的特徵,後n個特徵是doc相關的特徵:

User和Doc的二階交叉特徵可以拆解如下如下,可以拆解為user和doc各自的兩部分:

改造後的網路結構如下,新的網路可以有效的完成低階+高階特徵的融合,從而實現泛化和精準的有效平衡。

詳文解讀微信「看一看」多模型內容策略與召回

由於業務高速發展,引入新資料,新場景的需求非常頻繁,透過引入遷移場景資訊+訓練資料遷移可以大大加速新業務孵化情況下模型的收斂和效果。

特別說明的是,在現實系統中,綜合推薦系統經常會引入新的資料來源,這部分冷啟動的召回通道在行為稀疏時往往表現較差。為了解決這些問題,團隊近期將混合模型適配這類場景而提出一種Internal and contextual attention network (ICAN)模型,透過加強多佇列之間特徵域(feature field)互動和環境資訊,得到更好的(冷啟動)召回效果。目前ICAN已部署於看一看線上召回系統。此工作發表於IJCAI-2020。

9。 圖模型

推薦系統中User和Item相關的行為、需求、屬性和社交資訊具有天然的圖結構,可以使用一張複雜的異構圖來表示整個推薦系統,如下圖所示。圖模型推薦演算法就是基於這張複雜的異構圖,使用圖演算法來學習圖中包含的結構資訊並用於系統推薦。圖神經網路模型推薦就是基於這個想法,把異構網路中包含的結構和語義資訊編碼到結點Embedding表示中,並使用得到向量進行個性化推薦。

詳文解讀微信「看一看」多模型內容策略與召回

在這樣的背景下,看一看召回17年起開始搭建面向看一看推薦的圖演算法平臺,逐步實現了Deepwalk、line、node2vec,PTE等淺層模型,並在線上文章、影片推薦取得不錯的收益。2018年,以GCN為代表的深層圖神經網路模型出現,效果遠優於傳統的淺層模型。

因此,我們也開始對圖演算法平臺進行升級,一方面,逐步實現GraphSAGE、GAT、MultiGAT、FM-GAT、Transformer-GAT、Transfer-GAT、MultiTask-GAT、Weighted-GAT等深度圖神經網路模型;另一方面,開發面向線上生產、處理千萬甚至億結點,百億級邊的大櫃模型異構網路。

圖模型一路迭代至今,經歷了幾個大的最佳化階段如下:

模型維度:從淺層圖模型(Deepwalk、Line、PTE等)到深層圖模型(GraphSAGE、GAT等) ,再到自研深層圖模型(Multi-GAT、FM-GAT、Self-GAT等);

網路結構:從同構到屬性異構,再到使用者多元異構、社交多元異構。網路規模也從十萬,到百萬、千萬,最終到達億級結點,百億級邊的大規模異構網路。

訓練目標:網路訓練也從單目標持續將深度圖模型升級到多目標,再到多工。迭代更新如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

GraphSAGE(Graph Embedding with Sampling and Aggregation)模型介紹:

GraphSAGE是一種透過聚合當前結點i的k階鄰居結點資訊,構成結點i的embbedding的Network Embedding模型。與隨機遊走的Network Embedding模型:DeepWalk、Line、node2vec,相比,GraphSAGE有如下3個優點:

大量前沿論文證明GraphSAGE能夠更加準確、有效抽取結點Context資訊,並生成更高質量的node Embedding。

GraphSAGE是一種歸納學習圖模型,可以學習動態網路中新加入的結點Embeeding。

GraphSAGE透過取樣當前結點K階領域結點來計算當前結點embedding,使得計算具有上億結點、數十億條邊大規模圖網路變為可能。

我們透過使用者觀看過的item來構建圖網路,把同一使用者觀看過的時間關係上靠近的兩個item當做結點,結點之間用一條邊連線,然後透過GraphSAGE圖模型來學習圖中結點的Embedding,GraphSAGE模型結構如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

GraphSAGE首先透過取樣(Sample),從構建好的網路中抽取出一個子圖:隨機取樣一個源結點V1,然後取樣它的一階鄰接結點V2、V5,在取樣它的一階結點的一階結點(源節點的二階結點)。

然後進行一個反向的資訊聚合(Aggregation):以源節點的二階結點原始Embedding作為輸入,透過聚合2得到源節點的鄰居結點的表示,然後再透過聚合1得到源節點V1的表示。聚合得到結點的表示之後,透過Pair-Wise的無監督損失函式,或者有監督的交叉熵損失函式訓練網路的引數。

GAT(Graph Attentional Neural Network)模型介紹:

GraphSAGE雖然能讓你更有效聚合結點資訊,但它在進行結點資訊聚合的時候存在一個明顯不足:把所有的鄰接結點都看成相同的權重,忽略了不同結點間重要程度的區分。

因此,我們引入了Attention機制對GraphSAGE模型進行升級,上線了GAT模型,在進行資訊聚合的時候給不同的結點賦予不同的權重,以達到區分不同結點重要性的目標。

Attention機制的原理如下圖中左側圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

GAT模型的基本結構和GraphSAGE一樣,分為取樣和聚合兩步,最大的區別是,GAT在完成結點取樣,進行資訊聚合的時候,透過傳統的Vallina Attention,給不同的結點賦予不同的權重,以達到區分不同結點重要性的目標。

多工Multi-GAT模型介紹:

看一看召回中,一些新的最佳化目標(比如使用者分享行為)或新任務存在資料稀稀疏的問題。因此我們基於GAT-Multi進行多工/目標的學習,將不同業務或不同型別的輸入作為輸入,輸出端進行拆分,基於多目標或多工提升embedding效果。

整個網路結構如下圖所示:

詳文解讀微信「看一看」多模型內容策略與召回

從圖中可以發現,模型輸入是多種資料型別或多業務型別的混合資料輸入,輸出端根據不同的目標進行了拆分。輸入是使用者點選和分享構成的異構網路,輸出端拆分成了點選和分享兩個目標,並在損失函式中對分享目標進行了提權,目標期望透過使用者的點選日誌提升使用者的分享行為指標。

六、總結與展望

內容策略與召回通常驗證收益路徑長,見效慢,這樣大大加大了這部分工作的協同開發的訴求,我們與工程同學經過無數次效能最佳化與PK,依賴兄弟團隊提供了大量工具幫助,最終實現目前比較高效的一條迭代路徑。

同時,由於召回與內容策略在業務底層,策略相對比較多,也比較發散,獲得收益面通常也比上層要難,我的一些思考是,需要在工作中對這部分的工作梳理做足夠細緻歸類,逐層最佳化,集中人力與優勢精細打磨,持續沉澱核心部分,緊跟業界學術界前言演算法,在兼顧滿足業務發展的各類細碎需求的同時讓演算法同學獲得成長與成就感。

相關閱讀:

個性化推薦如何滿足使用者口味?微信看一看的技術這樣做

作者:nevinzhang ;微信公眾號:微信AI

本文由 @ 微信AI 授權釋出於人人都是產品經理,未經許可,禁止轉載。

題圖來自 Unsplash,基於CC0協議。