詳文解讀微信「看一看」多模型內(nèi)容策略與召回
編輯導(dǎo)讀:微信已經(jīng)成了不少人獲取咨詢的來源之一,看一看功能在這基礎(chǔ)上實現(xiàn)內(nèi)容的精確推薦,以及拓寬用戶閱讀興趣,打破信息繭房。本文從六個方面,以多模型內(nèi)容策略與召回的角度分析微信看一看,希望對你有幫助。
一、看一看介紹
相信對于不少人而言微信已經(jīng)成為獲取資訊的主要場景。與此同時,由于微信用戶群體的龐大,也吸引了大量的內(nèi)容生產(chǎn)者在微信公共平臺創(chuàng)造內(nèi)容,以獲取用戶關(guān)注、點贊、收藏等。微信內(nèi)的內(nèi)容推薦產(chǎn)品:看一看應(yīng)運而生。
基于微信通過多年的用戶沉淀,積累得到的大量“隱式反饋”閱讀興趣信息,可以精準的實現(xiàn)內(nèi)容與內(nèi)容消費者之間的推薦。同時,秉承降低用戶獲取信息繭房效應(yīng),拓寬用戶閱讀興趣,增強互動,強化用戶認知,及時獲取咨詢等等訴求,看一看不斷在算法迭代的同時,引入各類騰訊系,外部圖文,視頻,資訊,小視頻等內(nèi)容,豐富內(nèi)容多樣性的同時不斷上線優(yōu)化產(chǎn)品體驗與進行樣式優(yōu)化。
二、內(nèi)容庫與內(nèi)容畫像
1. 內(nèi)容源
看一看接入了非常多合作方的數(shù)據(jù)作為內(nèi)容源,包含但不僅限于微信公眾平臺及其他外部內(nèi)容等等。
由于接入數(shù)據(jù)源較多,各家數(shù)據(jù)在內(nèi)容、質(zhì)量、品類等方面差異性比較大??匆豢雌脚_方會對數(shù)據(jù)做“歸一化”操作,包括標簽統(tǒng)一化,推薦標簽提取,內(nèi)容投放目標,投放人群傾向性等內(nèi)容理解處理,這部分我們稱為看一看內(nèi)容畫像部分。
2. 內(nèi)容畫像
內(nèi)容理解:對接各種外部圖文等內(nèi)容,對接入內(nèi)容做業(yè)務(wù)級內(nèi)容多維基礎(chǔ)理解,同時進行外部標簽與自有標簽體系對齊,完成應(yīng)用級內(nèi)容打標。
反饋至下游應(yīng)用方:用戶需求系統(tǒng),召回策略,召回模型,排序/混排等使用。同時,在業(yè)務(wù)數(shù)據(jù)滾動與迭代中修正數(shù)據(jù)判斷精度與效果,逐步貼合與提升業(yè)務(wù)線效果。
我們將內(nèi)容畫像,定義為兩個大維度:通過內(nèi)容本身來理解內(nèi)容, 通過用戶行為來理解內(nèi)容。前者主要針對內(nèi)容抽取靜態(tài)屬性標簽;后者則通過用戶行為積累的后驗數(shù)據(jù)、統(tǒng)計或模型預(yù)估內(nèi)容的知識、傾向性、投放目標以及抽象表達。
3. 多模態(tài)標簽語義標簽
我們將文本語義按粗到細粒度分為:文本多分類(1-3級),主題topic model(長效topic,實時topic),tagCluster, tag/entity,這也是NLP領(lǐng)域持續(xù)在關(guān)注和研究的重點方向。
文本分類與模式識別中心合作對長/短文本訓練基于標注的增量多分類模型(1-2級分類準確率可以達到90%+),支持領(lǐng)域內(nèi)DL文本分類模型。
Topic Model作為重要分支,為支持看一看推薦業(yè)務(wù),解決了時效性熱點的快速topic增量模型,實現(xiàn)多層級(1000維,1500維度,5000維, 1W維)topic model,以及以此為基礎(chǔ)衍生出的topic Embedding技術(shù)等。
Tagcluster是介于tag和topic粒度之間的一類tag聚簇概念,維度為10W級;用于解決語義自動語義聚合的可解釋問題;關(guān)鍵詞提?。撕炋崛。?,技術(shù)演進從傳統(tǒng)的基于標注,到半監(jiān)督,到自動標注的序列提取的淺層模型;已經(jīng)全部遷移為基于bilstm+attention+CRF 和 bert的一套深度模型系統(tǒng)。
標簽是推薦系統(tǒng)的核心基礎(chǔ)能力,深度模型的引入對算法準確率與覆蓋率都有顯著的提升。
視頻理解的相關(guān)維度,我們與外部團隊深度合作,建立起一套基于短/小視頻,封面圖多維度的多媒體特征體系,包括人臉識別,人臉embedding,標簽,一二級分類,視頻embedding表示,水印,OCR識別,清晰度,低俗色情,敏感信息等多種維度。有力輔助多媒體理解深度,并廣泛用于召回模型,曝光展示策略,過濾策略等,目前,在召回與策略層面已經(jīng)證明有一定在線提升效果。
4. 基于知識體系的表示與可解釋標簽
知識圖譜作為知識承載系統(tǒng),用于對接內(nèi)外部關(guān)鍵詞信息與詞關(guān)系信息;內(nèi)容畫像會將原關(guān)系信息整合,并構(gòu)建可業(yè)務(wù)應(yīng)用的關(guān)系知識體系。
其次,依賴業(yè)務(wù)中積累用戶行為產(chǎn)生的實體關(guān)系數(shù)據(jù),本身用戶需求的標簽信息,一并用于構(gòu)建業(yè)務(wù)知識的興趣圖譜,基于同構(gòu)網(wǎng)絡(luò)與異構(gòu)網(wǎng)絡(luò)表示學習等核心模型,輸出知識表示與表達,抽象后的圖譜用于文本識別,推薦語義理解,興趣拓展推理等場景,直接用于興趣推理的冷啟場景已經(jīng)驗證有很不錯的收益。
5. 嵌入表示
語義嵌入表示:這類是相對已經(jīng)比較成熟的技術(shù),基于短文本tag, word粒度,句子粒度,doc粒度都可以構(gòu)建embedding表示。其次,除文本外,更為豐富的多媒體信息的融入,已經(jīng)可以驗證在一定程度上可以增強表達能力。
其次,我們基于微信閱讀場景的用戶點擊/分享/關(guān)注等等序列結(jié)合場景的上下文信息,以他們作為文本切割的序列標注信息,早起基于傳統(tǒng)的HMM,CRF類淺層模型,發(fā)展至目前的seq2seq,RNN,transformer,Bert等序列類,語義類模型,將內(nèi)容作為文本切割的一個子序列,從而實現(xiàn)對文本的序列的表示信息。由于更加貼近推薦場景,這類嵌入表示業(yè)務(wù)可用性會更高,也體現(xiàn)在召回/排序模型的應(yīng)用效果會更加明顯。
6. 傾向性與目標性識別
這部分是通過用戶行為數(shù)據(jù)來理解內(nèi)容的重要體現(xiàn)。分為兩部分:內(nèi)容傾向性與內(nèi)容投放目標性。都是建立在一套基于文本,多媒體,kg,投放日志等下的一套分類器進行打標,模型如上圖所示。
內(nèi)容傾向性:內(nèi)容通過分類模型預(yù)打“傾向性”標簽,例如:內(nèi)容適合的性別傾向、年齡傾向性、地域傾向性等等,從而預(yù)判待投放內(nèi)容的特殊人群傾向性。
目標性識別:看一看的場景會比較多,例如:主TL流,視頻流,專題流,tag可點流,看一看+小程序,每個場景都有不同的投放目標(例如:主TL內(nèi)容會以點擊率為主,專題流會以時長消費為主,小程序分享率為主)。所以,我們會在item上同樣基于投放預(yù)估的模型預(yù)先打上一組目標識別標簽預(yù)判分數(shù),供在線策略使用與內(nèi)容庫構(gòu)建、以及內(nèi)容試探等。
綜上,通過內(nèi)容理解與內(nèi)容庫構(gòu)建的概要流程圖如下:
這部分產(chǎn)生的判斷維度會對所有接入看一看的內(nèi)容進行組合打標,通過不同產(chǎn)品場景或渠道來交叉組合,構(gòu)建推薦的內(nèi)容庫。同時,標簽會不同力度的用于在線召回過濾策略,作為模型召回、排序特征來使用。應(yīng)用證明對于新內(nèi)容的冷啟動篩選,特定投放目標庫群體效率提升明顯。
三、召回架構(gòu)
推薦系統(tǒng)的召回階段可以理解為根據(jù)用戶的歷史行為數(shù)據(jù),為用戶在海量的信息中粗選一批待推薦的內(nèi)容,挑選出一個小的候選集的過程。在看一看召回演進路上,我們曾經(jīng)調(diào)研大量主流的工業(yè)界推薦系統(tǒng)的召回架構(gòu)的設(shè)計,如下:
可以看到各類同類競品的系統(tǒng)雖然細節(jié)上多少存在差異,但不約而同的采取了多路召回的架構(gòu),這類設(shè)計考慮如下幾點問題:
- 考慮用戶層面:用戶興趣的多元化,用戶需求與場景的多元化:例如:新聞需求,重大要聞,相關(guān)內(nèi)容沉浸閱讀等等。
- 考慮系統(tǒng)層面:增強系統(tǒng)的魯棒性;部分召回失效,其余召回隊列兜底不會導(dǎo)致整個召回層失效;排序?qū)邮?,召回隊列兜底不會?dǎo)致整個推薦系統(tǒng)失效。
- 系統(tǒng)多樣性內(nèi)容分發(fā):圖文、視頻、小視頻;精準、試探、時效一定比例;召回目標的多元化,例如:相關(guān)性,沉浸時長,時效性,特色內(nèi)容等等。
- 可解釋性推薦一部分召回是有明確推薦理由的:很好的解決產(chǎn)品性數(shù)據(jù)的引入。
看一看召回目前設(shè)計為多路召回形式,從功能性角度分為如下幾類:模型類召回、相關(guān)場景類召回、基礎(chǔ)屬性召回、社交類召回、試探類召回、產(chǎn)品策略/運營類召回六大類。
如下圖所示:
- 模型類召回:目前看一看曝光占比最大的一類召回策略,可以很好的解決推薦系統(tǒng)中長短期興趣自適應(yīng)、一定程度的興趣擴展、業(yè)務(wù)場景擴展與遷移等幾個核心召回問題,為下文著重介紹的內(nèi)容。
- 相關(guān)類召回:看一看包括多個相關(guān)推薦場景。這類召回依賴內(nèi)容畫像對內(nèi)容的語義判斷能力,采用孿生網(wǎng)絡(luò)類設(shè)計思路,解決跨內(nèi)容域(例如:視頻與圖文,封面與標題等)相關(guān)性問題,滿足用戶在推薦系統(tǒng)內(nèi)對沉浸式體驗的需求。
- 基礎(chǔ)屬性類召回:屬于比較基礎(chǔ)的一類召回,但具有幾點重要意義:由于多重標簽的對item的覆蓋度會比較高,所以這類召回很好的可以滿足冷啟類,兜底類場景;其次,屬性具備良好的可解釋性,可以很好的對模型類召回以及相關(guān)特殊外顯場景下的解釋性作用,通常也是產(chǎn)品訂制或規(guī)則的重要維度。
- 社交類召回:是看一看比較有特色的一類召回,基于微信豐富的社交場景,看一看設(shè)計了:“好友在讀”,“XXX都在看”,“在看”等幾類設(shè)計相關(guān)推薦。
- 試探類召回:通常的推薦系統(tǒng)都會面臨“信息繭房”問題,即:人們的信息領(lǐng)域會習慣性地被自己的興趣所引導(dǎo),從而產(chǎn)生多種主動行為:我們也稱為對推薦系統(tǒng)的隱式反饋信息,這類行為又會作為推薦系統(tǒng)的學習目標,從而讓推薦結(jié)果逐步收斂,用戶再無法獲取更廣泛的內(nèi)容,信息桎梏于像蠶繭一般的“繭房”中的現(xiàn)象。興趣試探會解決這類問題。另外,推薦系統(tǒng)作為一類內(nèi)容分發(fā)平臺,承擔著甄選優(yōu)質(zhì)內(nèi)容,發(fā)現(xiàn)潛力優(yōu)質(zhì)內(nèi)容,并在一定程度上去中心化投放的能力,內(nèi)容試探隊列會解決這類問題。
- 運營&產(chǎn)品策略召回:滿足產(chǎn)品以及一些節(jié)日、新聞、話題、合作方等特殊定制場景。
- 粗排
四、隊列演進
看一看召回策略演進主要經(jīng)歷了四個階段,這里并不是代表后者替代前者,由于不同隊列的意義和解決的問題的差異性,各個階段的一些隊列目前還會有不同情況的保留在系統(tǒng)中。
1. 基于屬性召回
這一階段比較重的依賴內(nèi)容畫像與用戶需求的細粒度判斷,我們走過了一段基于自然語言處理、基于用戶行為來對內(nèi)容做豐富的細粒度內(nèi)容打標簽的階段,接著,用戶需求會基于閱讀、搜索等用戶行為將內(nèi)容屬性標簽歸入用戶需求。
內(nèi)容屬性標簽構(gòu)建倒排與正排索引,各路召回在線基于用戶需求的多個細粒度維度判斷以及實時閱讀歷史的item屬性信息,通過拉取倒排item拉鏈,得到各路召回的候選結(jié)果。
這階段中,例如:tag、類目、topic,已關(guān)注公眾號隊列占到了召回大頭比例,這類屬性具備很好的可解釋性。
2. 協(xié)同&社交召回
CF主要的功能是預(yù)測和推薦。算法通過對行為數(shù)據(jù)的挖掘發(fā)現(xiàn)用戶的偏好,構(gòu)建用戶(user)需求或者內(nèi)容(item)畫像,基于不同的偏好對用戶進行群組劃分來向用戶推薦可能感興趣的內(nèi)容。協(xié)同過濾的核心思想,簡單地說就是:物以類聚,人以群分。
如下對CF類算法的常用歸類示意圖(來自wiki)可以比較好的表達我們對協(xié)同類算法的演進路徑。
首先一類是:Memory-based approach(圖中是Neighborhood-based),當時嘗試的這類協(xié)同過濾計算,思路為:“鄰居”的思想,分為User-based CF(簡稱UserCF)和Item-based CF(簡稱ItemCF)。
在前期階段中,行為+id維度構(gòu)建的item cf 與user cf都有明顯的在線效果提升,歷史上在線曝光占比一度非常高。但是這類方法依賴item或user維度有大量行為累計,否則泛化和推薦能力很差,且具有很強的驅(qū)熱性問題。
另一類,即考慮item內(nèi)容信息的content-base approach類,即內(nèi)容協(xié)同:我們稱為ContentBase(解決夸內(nèi)容域的各類相關(guān)計算場景的一類召回)。
看一看場景中有非常多語義相關(guān)的應(yīng)用場景,例如:相關(guān)推薦、去重、打散、召回/排序特征等等。我們解決跨域的語義相關(guān)問題,整理出一套統(tǒng)一框架,方便統(tǒng)一調(diào)用使用。
架構(gòu)整體為三層,相關(guān)算法層,并行優(yōu)化層和算法接口層。整體相關(guān)性框架如下圖所示:
我們使用深度語義匹配模型來進行文本相關(guān)性的計算,主要通過embedding、滑動窗口、CNN、MaxPolling,前饋網(wǎng)絡(luò),最終通過余弦距離計算兩個文本的相似度,如下圖所示:
線上的item聚類算法的難點是如何在幾十ms內(nèi)完成上百篇文檔的聚類相似度計算、語義相似內(nèi)容召回等算法,我們在并行優(yōu)化層進行了“并集查詢加速”,“相似漏斗形加速”,“多線程”加速等多點優(yōu)化。目前也已經(jīng)服務(wù)化,滿足推薦場景下復(fù)用,落地看一看場景內(nèi)各類相關(guān)性場景。
隨后,我們上線了Model-based approach,在這種方法中,重要的思路為利用模型來預(yù)測用戶對未評估item的評分。
有許多Model-based CF算法:貝葉斯網(wǎng)絡(luò)( 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序列(可以是任意點擊,閱讀,收藏行為)轉(zhuǎn)化為item-item 的knn標注矩陣,如圖:
方法中構(gòu)造訓練數(shù)據(jù)考慮的feature-item包括三類:
- 用戶真正討厭的;
- 用戶missing的;
- 用戶喜歡的。
對于某個用戶來說,在訓練時都被標為”0″的item,在預(yù)測時的評分也可以排序,因此不影響ranking任務(wù)的完成。在我們系統(tǒng)實踐時也沒必要使用全部歷史數(shù)據(jù),只需要以session切片,從中按照上述形式構(gòu)造pair-wise數(shù)據(jù)即可
通過這類方法,降維方法大多被用作補充技術(shù)來提高基于內(nèi)存的方法的魯棒性和準確性。
另外一方面,對于像奇異值分解,主成分分析等方法,根據(jù)潛在因素將用戶項目矩陣壓縮成低維表示。使用這種方法的一個優(yōu)點是,更好地處理原始矩陣的稀疏性。
此外,對于處理大型稀疏數(shù)據(jù)集時我們下文也會介紹,借助大規(guī)模knn能力,這類矩陣相關(guān)性的計算可以得到很好的解決,非常適合召回場景。
第三類是Hybrid models(也就是前兩種的混合模型)。許多應(yīng)用程序結(jié)合了memory-based CF算法和model-based CF算法。這些方法克服了原生CF方法存在的局限性并提高了預(yù)測性能。其實上,這部分的進一步嘗試,已經(jīng)歸類和被為下文將要介紹的深度模型召回所替換。
社交類召回,是微信場景下的特色數(shù)據(jù),比如:
基于自然好友的:在看。
基于興趣的:在看,XXX為基于興趣關(guān)系得到的聚蔟關(guān)系。
又比如18年10月上線的在看頻道:基于用戶主動點擊在看按鈕,收集效果一類社交閱讀場景。
3. 試探類召回
隨著業(yè)務(wù)發(fā)展與對用戶理解的深入,出現(xiàn)幾類問題亟待解決:用戶獲取信息通常表現(xiàn)出很強的短期效應(yīng);我們在線通過引入用戶實時閱讀歷史數(shù)據(jù),利用短期閱讀行為信息作為觸發(fā)源,構(gòu)建隱語義類召回策略。
但同時,我們很快發(fā)現(xiàn),點擊類指標提升帶來的代價是短期內(nèi)容集中,內(nèi)容類型快速收斂,主要原因也是策略過于依賴短期行為,召回內(nèi)容的集中,導(dǎo)致上層模型快速收斂,用戶行為收斂,逐步導(dǎo)致很強的信息繭房效應(yīng)。
召回測試是急需引入更為泛化與具備試探能力的召回。隨著業(yè)務(wù)dau逐步提升,不斷有新用戶、新內(nèi)容引入系統(tǒng),如何解決冷啟問題也需要著重考慮。
1)知識圖譜類
在微信生態(tài)中,即使對于一個看一看新用戶,我們也可以根據(jù)極少的用戶/內(nèi)容基本信息進行推薦。內(nèi)容協(xié)同使用了異構(gòu)網(wǎng)絡(luò)的方法進行文章召回。
我們搭建了基于知識圖譜的異構(gòu)召回模型。該方法以知識圖譜給出的“先驗”關(guān)系信息,將文章feature與用戶feature做關(guān)聯(lián),構(gòu)建出一個同時包括用戶特征又包括文章的特征的異構(gòu)網(wǎng)絡(luò),通過圖譜異構(gòu)網(wǎng)絡(luò)的表示學習,得到異構(gòu)節(jié)點的向量(user profile feature與doc feature)。
已經(jīng)有相關(guān)理論支持,可以得到特征之間的獨立性與向量的加和性,從而實現(xiàn)在特征匱乏情況下,不會過渡依賴單一用戶需求或內(nèi)容畫像特征進行召回,對合并后的向量相關(guān)性計算召回與該用戶最相關(guān)文章。
2)試探(興趣試探/內(nèi)容試探)
解決兩類問題,拓寬用戶的興趣面,減少發(fā)現(xiàn)優(yōu)質(zhì)內(nèi)容的周期。試探能力需要打通整個推薦系統(tǒng)的綠色pass通路,允許內(nèi)容或興趣召回可以全鏈路走特殊通路:包括:數(shù)據(jù)通路,模型通路,定制召回/排序/混排模型等能力。
我們召回通過設(shè)計兩類試探策略,解決上述問題:
興趣試探:我們系統(tǒng)中通過:跨域用戶興趣試探,中長尾閉集合興趣試探,全集合興趣試探模型三類策略就行興趣試探。并建設(shè)了一套以用戶需求的試探成功率,試探標簽的有點率,點擊率衡量試探效果的實驗體系,可以閉環(huán)的驗證鏈路效果。
內(nèi)容試探:我們設(shè)計了:內(nèi)容質(zhì)量識別(離線),運營系統(tǒng)(旁路),流量預(yù)估(在線),內(nèi)容投放目標性識別(在線)來投放與優(yōu)化投放效果,通過全鏈路的對內(nèi)容標簽修訂,試探投放,日志模型定制化,遷移學習,上線后以ABTest中以新內(nèi)容系統(tǒng)獲取曝光后的試探內(nèi)容點擊率,試探成功率,試探多樣性衡量閉環(huán)效果。
4. 深度模型召回
下文對這部分工作進行概要介紹,按類別我們將模型召回分為四類:
- 序列模型
- 雙塔模型
- 混合模型
- 圖模型
五、深度模型召回
召回是處于推薦業(yè)務(wù)的底層位置,首先,處理數(shù)據(jù)規(guī)模相比上層排序要大幾個數(shù)量級,其次,要求準確的同時,兼顧多種業(yè)務(wù)和用戶體驗?zāi)繕?,例如:多樣性,社交,時長,負反饋,分享等等。在諸多限制下,模型召回系統(tǒng)會著重解決幾個問題:
- 候選數(shù)據(jù)規(guī)模大;對模型性能要求高;
- user-item 交叉類特征算法,由于召回的檢索邏輯限制,這類算法支持不友好;
- 底層數(shù)據(jù)種類繁多,模型需要具備很強的自適應(yīng)能力;
- 解決:多樣性與精確性的兩難選擇;
- 模型實時性問題增量模型;
- 用戶/內(nèi)容冷啟的召回問題;
- 橫向業(yè)務(wù)演化階段,模型如何快速孵化新業(yè)務(wù),即遷移能力。
對于深度模型召回來說,需要有特定的架構(gòu)模式來應(yīng)對,我們的解決方案如下圖所示。
模型訓練為離線實時訓練得到用戶與item兩側(cè)的參數(shù)或embedding數(shù)據(jù),參數(shù)部分依靠微信基礎(chǔ)平臺部提供的強大在線feature KV系統(tǒng)進行實時存取,user與item在線進行KNN計算實時查詢最近領(lǐng)結(jié)果作為召回結(jié)果,其中KNN服務(wù)由基礎(chǔ)平臺部基于對Facebook開源的faiss升級改造的一套系統(tǒng),可以在5ms內(nèi)完成千萬級內(nèi)容的快速查找。
1. 序列模型
推薦系統(tǒng)主要解決的是基于用戶的隱式閱讀行為來做個性化推薦的問題,所以,我們嘗試的方法是將用戶在隱式閱讀場景下表現(xiàn)出的點擊文章序列構(gòu)建為一個長文本,這樣閱讀文章和點擊可以當做是文檔的Term。
那么無數(shù)的用戶閱讀歷史序列就可以當作是天然的語料庫,如此可以將隱式推薦問題遷移為自然語言處理中的語義(語言)模型可cover的范疇。
基于神經(jīng)網(wǎng)絡(luò)模型學習得到Word2Vec模型,再后面的基于RNN的語言模型,這些方法都可以應(yīng)用到語料的學習中。此外,seq2seq的機器翻譯模型也可以幫助我們挖掘更多額外的信息。
2. N-Gram 語言模型
當然我們還有可以使用最基本和最經(jīng)典的語言模型N-Gram模型來挖掘這批語料,考慮計算2-gram,3-gram,可以幫助我們了解item之間的轉(zhuǎn)移概率信息。此外近幾年提出的Word2Vec的模型可以看作是從另外一個維度去描述判斷N-Gram的語言模型,Word2Vec的模型可以將term表達成一個稠密的向量,保存了語義信息,被認為是更加突出的語言模型。
3. RNN-based的語言模型
Rmb(rnn model based recommend)使用循環(huán)神經(jīng)網(wǎng)絡(luò)對用戶閱讀序列信息建模,捕捉用戶閱讀的序列關(guān)系和長期閱讀興趣的起止。訓練時使用用戶閱讀序列和文章語義信息,線上使用循環(huán)神經(jīng)網(wǎng)絡(luò)預(yù)測topk進行召回。
基于循環(huán)神經(jīng)網(wǎng)絡(luò)的推薦模型(Recurrent Based Recommendation)是對用戶閱讀順序使用循環(huán)神經(jīng)網(wǎng)絡(luò)的方法進行建模。該模型解決了在相同用戶屬性和相同閱讀集合的情況下召回內(nèi)容同質(zhì)的問題,rmb可以對用戶閱讀順序進行建模,即使相同用戶屬性,相同閱讀集合的用戶,如果他們閱讀內(nèi)容的順序不同,也會有不同的召回結(jié)果。rmb可以對長期用戶閱讀歷史和序列信息進行很好的建模。
為了更好使深度神經(jīng)網(wǎng)絡(luò)模型進行學習,首先使用item embedding方法將文章或者視頻的ID映射到一個固定維度的稠密向量空間中,然后根據(jù)用戶的閱讀行為和文章的語義,對用戶閱讀序列進行建模。
4. 使用基于seq2seq的encoder-decoder模型
用戶的閱讀歷史可以通過Session的切分原則劃分為很多個Document,也就是說我們可以將一個用戶抽象為文檔序列。
給定一個文檔序列,可以預(yù)測用戶接下來的閱讀序列,在這里我們將利用seq2seq來解決這個預(yù)測問題,將用戶的閱讀歷史進行encoder,然后decoder出一個新的序列來作為推薦候選集。
在預(yù)測的過程中我們將文檔中詞的Embedding向量組合成一個文章的向量,基于用戶的閱讀歷史序列可以進行有監(jiān)督的學習,優(yōu)化詞的Embedding向量。
這種思想借鑒了Seq2Seq,我們可以考慮使用用戶的前半部分session預(yù)測用戶的后半部分session。這些都是類似機器翻譯的NLP技術(shù),我們堅信這種策略能夠為我們提供合理有效的序列推薦。
5. Translation模型
在自然語言處理領(lǐng)域,神經(jīng)機器翻譯(Neural Machine Translation,NMT)模型大大提升了機器翻譯的質(zhì)量,使得機翻譯文在忠實度、流利度方面首次超越人類專業(yè)譯員。我們知道推薦業(yè)務(wù)中,線上粗排和精排的多隊列融合加權(quán),導(dǎo)致策略最終曝光量和多樣性會明顯下降。
因此,我們考慮基于NMT模型來提升線上視頻推薦結(jié)果的多樣性,主要原因有以下兩點:
- NMT建模處理較長序列(長度> 30),一方面,可以將時間、地點等Context信息、以及video自身的語義信息融合到用戶的點擊序列中,供模型學習;另一方面,根據(jù)用戶和video相關(guān)Context信息,對用戶進行視頻推薦。從兩個方面提升視頻推薦結(jié)果的獨立性和多樣性。
- NMT可以同時對item點擊序列中item之間的局部和全局依賴關(guān)系進行建模,可以召回存在遠距離依賴關(guān)系且用戶感興趣的item,豐富對推薦item的多樣性。
Trans隊列將機器翻譯模型(NMT)與用戶所處的Context信息相融合,進行推薦。用戶所處Context信息是指用戶訪問推薦系統(tǒng)的時間、地點、心情等信息。
Context信息對于提升推薦系統(tǒng)的多樣性至關(guān)重要,比如,白天上班時,用戶可能傾向于看行業(yè)相關(guān)最新信息;晚上睡覺前傾向于看一些搞笑幽默等適合放松的信息。利用NMT模型可以對較長的序列進行建模的優(yōu)點,將用戶點擊序列、video自身的語義信息、用戶Context信息等構(gòu)成序列供NMT學習,利用NMT可以同時對全局和局部信息建模的優(yōu)點,將這些信息融合并用于視頻推薦,以提升推薦系統(tǒng)的多樣性,優(yōu)化人均曝光tag數(shù)和二級類類目數(shù)等多樣性指標。
Trans模型主要分為User Encoder和Item Decoder兩個部分:User Encoder將用戶長期和短期的類目(cat)、Tag和Profile特征融合成。一個Context信息用于Item Decoder解碼;Item Decoder輸入來自兩個部分,一部分是User Encoder輸出Context信息,一部分是當前的Vid、以及當前Vid的Tag和類目。
6. Bert模型
從文本預(yù)訓練任務(wù)看,預(yù)訓練向量表示整體演進路線表現(xiàn)為:由靜態(tài)向量到基于上下文的動態(tài)向量,由單向到雙向再到同時考慮雙向。最近一兩年,以Bert為代表的動態(tài)雙向預(yù)訓練模型在自然語言處理領(lǐng)域大放異彩。推薦系統(tǒng)中用戶興趣建??梢越梃bBert預(yù)訓練目標。
主要原因有:
首先,無論是RNN模型還是Seq2Seq模型以及Translation模型,都是從前到后建模用戶歷史行為序列,單向結(jié)構(gòu)的建模有一定限制,而Bert類模型兼顧雙向進行建模。
其次,用戶行為順序性的假設(shè)有時并不適用,用戶行為順序與推薦系統(tǒng)展示順序有關(guān),比如打亂某些會話內(nèi)的推薦順序不用影響用戶行為。
Bert模型召回關(guān)鍵點在于樣本制作:
- 建模更長的用戶序列:序列長度128,對于長序列用戶采用滑動窗口截取樣本,對于短序列直接丟棄處理;
- 如何MASK:樣本真實長度為N,序列中1-N-1隨機MASK,MASK比例10%;為了擬合序列任務(wù),最后一位N強制MASK。
7. 雙塔模型
DSSM(Deep Structured Semantic Models)是一個用來解決搜索相關(guān)性的模型,通過將query和doc 分別計算成一個向量從而獲得query和doc相關(guān)性。
在推薦系統(tǒng)中認為給用戶推薦的item與其興趣相關(guān)性越高,用戶則越喜歡,利用DSSM這種相關(guān)性計算方法,通過計算user,item向量之間的相關(guān)性從而判斷用戶是否對item更感興趣。
模型框架方面,我們經(jīng)歷了從雙塔DSSM模型到Multi-View DNN,Multi-View DNN可以更好的結(jié)合圖文、視頻、小視頻等不同業(yè)務(wù)的信息來豐富用戶表示,使模型對用戶判斷更準確,這對業(yè)務(wù)遷移初期冷啟動用戶有明顯作用。
特征使用上,我們使用了user需求信息與Item的豐富side infomation,包括一些映射特征,比如用戶的類目與item類目,用戶的tag與item的tag等。模型訓練使用線上的曝光點擊,曝光分享等數(shù)據(jù)作為訓練數(shù)據(jù)(具體會因業(yè)務(wù)不同有所變化)。
由于召回側(cè)候選Item量級非常大,無法進行instance基本在線預(yù)測,實際使用采用了在線實時predict user embedding 與離線predict doc embedding結(jié)合的方法。將item embedding存在在線ANN server,每次請求使用ANN 取出與user embedding 最相近的top 1000 doc作為召回候選,具體模型框架如下圖所示:
我們對雙塔模型的優(yōu)化方向:
- 雙塔DSSM到Multi-Videw DNN,結(jié)合多業(yè)務(wù)信息,豐富用戶表達。
- 增加更多side information,學習更準確user、item表示。
- pair-wise 形式的雙塔模型,提高模型的預(yù)測能力。
- 結(jié)合attention,F(xiàn)M等結(jié)構(gòu),增強模型表達能力。
- 多塔多目標模型優(yōu)化,結(jié)合業(yè)務(wù)多指標,融合豐富信息建模多塔模型。
8. 混合模型
基于深度神經(jīng)網(wǎng)絡(luò)的推薦模型DMB(Deep Neural Networks based Model)是綜合使用了文章或視頻的語義信息、用戶的閱讀歷史、長短期興趣、上下文信息,推薦出相似語義的文章或視頻。
序列類模型采用的是無監(jiān)督的機器學習方法,能夠很好的學習到item的語義向量和協(xié)同向量,但是在推薦場景中還有大量的特征可以使用,因此需要一個對推薦數(shù)據(jù)擬合更好的模型去進行機器學習,DMB模型因此而產(chǎn)生,深度神經(jīng)網(wǎng)絡(luò)可以有效的對各種類型的特征進行融合,并且有很好的泛化能力,在當前的看一看系統(tǒng)中有著很高的召回占比和較高的用戶時長。
為了更好使深度神經(jīng)網(wǎng)絡(luò)模型進行學習,首先使用item embedding方法將文章或者視頻的ID映射到一個固定維度的稠密向量空間中。所有的特征會在向量化后concat在一起,做為DMB模型的第一層的輸入,后面是若干全連接層。
整個DMB模型的架構(gòu)如下圖所示:
在迭代的過程中發(fā)現(xiàn)用戶的最近的閱讀歷史(視頻播放歷史)對于用戶的興趣判斷非常重要。模型對于閱讀歷史建模做了比較多的嘗試,使用過RNN,CNN和簡單的self-Attentnion等建模方法,離線指標Hitrate都有一定的提升。
最近對模型進行了新的升級,新的模型將利用用戶的長期需求對用戶的播放歷史進行權(quán)重的重新建模,這里使用Attention建模方式來完成對閱讀歷史的重新建模。
先使用神經(jīng)網(wǎng)絡(luò)將用戶的長期需求Encoding成Query向量,使用該Query向量Attention所有的播放歷史,再進行加權(quán)平均。
同時,使用加入pos的建模,提高最近播放視頻重要性,可以避免因為受畫像的影響過多的關(guān)注符合長期興趣的播放歷史,而忽略了對新內(nèi)容的試探。具體的可以參考下面的新的模型結(jié)構(gòu)圖。這里只給出了User端建模方法,doc與之前一樣。
上面的迭代過程都是在不斷地優(yōu)化如何更好地進行用戶的興趣描述,使用更好的網(wǎng)絡(luò)結(jié)構(gòu)生成更好的用戶隱向量。這種將用戶直接生成一個高階隱向量的方法,可能會導(dǎo)致召回的結(jié)果過于泛化,不易保證精準性。通過在召回模型中引入FM層的User-Doc交叉特征可以很好的解決這個問題。
參考FM的公式如下,假設(shè)前m個特征是user相關(guān)的特征,后n個特征是doc相關(guān)的特征:
User和Doc的二階交叉特征可以拆解如下如下,可以拆解為user和doc各自的兩部分:
改造后的網(wǎng)絡(luò)結(jié)構(gòu)如下,新的網(wǎng)絡(luò)可以有效的完成低階+高階特征的融合,從而實現(xiàn)泛化和精準的有效平衡。
由于業(yè)務(wù)高速發(fā)展,引入新數(shù)據(jù),新場景的需求非常頻繁,通過引入遷移場景信息+訓練數(shù)據(jù)遷移可以大大加速新業(yè)務(wù)孵化情況下模型的收斂和效果。
特別說明的是,在現(xiàn)實系統(tǒng)中,綜合推薦系統(tǒng)經(jīng)常會引入新的數(shù)據(jù)源,這部分冷啟動的召回通道在行為稀疏時往往表現(xiàn)較差。為了解決這些問題,團隊近期將混合模型適配這類場景而提出一種Internal and contextual attention network (ICAN)模型,通過加強多隊列之間特征域(feature field)交互和環(huán)境信息,得到更好的(冷啟動)召回效果。目前ICAN已部署于看一看線上召回系統(tǒng)。此工作發(fā)表于IJCAI-2020。
9. 圖模型
推薦系統(tǒng)中User和Item相關(guān)的行為、需求、屬性和社交信息具有天然的圖結(jié)構(gòu),可以使用一張復(fù)雜的異構(gòu)圖來表示整個推薦系統(tǒng),如下圖所示。圖模型推薦算法就是基于這張復(fù)雜的異構(gòu)圖,使用圖算法來學習圖中包含的結(jié)構(gòu)信息并用于系統(tǒng)推薦。圖神經(jīng)網(wǎng)絡(luò)模型推薦就是基于這個想法,把異構(gòu)網(wǎng)絡(luò)中包含的結(jié)構(gòu)和語義信息編碼到結(jié)點Embedding表示中,并使用得到向量進行個性化推薦。
在這樣的背景下,看一看召回17年起開始搭建面向看一看推薦的圖算法平臺,逐步實現(xiàn)了Deepwalk、line、node2vec,PTE等淺層模型,并在線上文章、視頻推薦取得不錯的收益。2018年,以GCN為代表的深層圖神經(jīng)網(wǎng)絡(luò)模型出現(xiàn),效果遠優(yōu)于傳統(tǒng)的淺層模型。
因此,我們也開始對圖算法平臺進行升級,一方面,逐步實現(xiàn)GraphSAGE、GAT、MultiGAT、FM-GAT、Transformer-GAT、Transfer-GAT、MultiTask-GAT、Weighted-GAT等深度圖神經(jīng)網(wǎng)絡(luò)模型;另一方面,開發(fā)面向線上生產(chǎn)、處理千萬甚至億結(jié)點,百億級邊的大柜模型異構(gòu)網(wǎng)絡(luò)。
圖模型一路迭代至今,經(jīng)歷了幾個大的優(yōu)化階段如下:
- 模型維度:從淺層圖模型(Deepwalk、Line、PTE等)到深層圖模型(GraphSAGE、GAT等) ,再到自研深層圖模型(Multi-GAT、FM-GAT、Self-GAT等);
- 網(wǎng)絡(luò)結(jié)構(gòu):從同構(gòu)到屬性異構(gòu),再到用戶多元異構(gòu)、社交多元異構(gòu)。網(wǎng)絡(luò)規(guī)模也從十萬,到百萬、千萬,最終到達億級結(jié)點,百億級邊的大規(guī)模異構(gòu)網(wǎng)絡(luò)。
- 訓練目標:網(wǎng)絡(luò)訓練也從單目標持續(xù)將深度圖模型升級到多目標,再到多任務(wù)。迭代更新如下圖所示:
GraphSAGE(Graph Embedding with Sampling and Aggregation)模型介紹:
GraphSAGE是一種通過聚合當前結(jié)點i的k階鄰居結(jié)點信息,構(gòu)成結(jié)點i的embbedding的Network Embedding模型。與隨機游走的Network Embedding模型:DeepWalk、Line、node2vec,相比,GraphSAGE有如下3個優(yōu)點:
- 大量前沿論文證明GraphSAGE能夠更加準確、有效抽取結(jié)點Context信息,并生成更高質(zhì)量的node Embedding。
- GraphSAGE是一種歸納學習圖模型,可以學習動態(tài)網(wǎng)絡(luò)中新加入的結(jié)點Embeeding。
- GraphSAGE通過采樣當前結(jié)點K階領(lǐng)域結(jié)點來計算當前結(jié)點embedding,使得計算具有上億結(jié)點、數(shù)十億條邊大規(guī)模圖網(wǎng)絡(luò)變?yōu)榭赡堋?/li>
我們通過用戶觀看過的item來構(gòu)建圖網(wǎng)絡(luò),把同一用戶觀看過的時間關(guān)系上靠近的兩個item當做結(jié)點,結(jié)點之間用一條邊連接,然后通過GraphSAGE圖模型來學習圖中結(jié)點的Embedding,GraphSAGE模型結(jié)構(gòu)如下圖所示:
GraphSAGE首先通過采樣(Sample),從構(gòu)建好的網(wǎng)絡(luò)中抽取出一個子圖:隨機采樣一個源結(jié)點V1,然后采樣它的一階鄰接結(jié)點V2、V5,在采樣它的一階結(jié)點的一階結(jié)點(源節(jié)點的二階結(jié)點)。
然后進行一個反向的信息聚合(Aggregation):以源節(jié)點的二階結(jié)點原始Embedding作為輸入,通過聚合2得到源節(jié)點的鄰居結(jié)點的表示,然后再通過聚合1得到源節(jié)點V1的表示。聚合得到結(jié)點的表示之后,通過Pair-Wise的無監(jiān)督損失函數(shù),或者有監(jiān)督的交叉熵損失函數(shù)訓練網(wǎng)絡(luò)的參數(shù)。
GAT(Graph Attentional Neural Network)模型介紹:
GraphSAGE雖然能讓你更有效聚合結(jié)點信息,但它在進行結(jié)點信息聚合的時候存在一個明顯不足:把所有的鄰接結(jié)點都看成相同的權(quán)重,忽略了不同結(jié)點間重要程度的區(qū)分。
因此,我們引入了Attention機制對GraphSAGE模型進行升級,上線了GAT模型,在進行信息聚合的時候給不同的結(jié)點賦予不同的權(quán)重,以達到區(qū)分不同結(jié)點重要性的目標。
Attention機制的原理如下圖中左側(cè)圖所示:
GAT模型的基本結(jié)構(gòu)和GraphSAGE一樣,分為采樣和聚合兩步,最大的區(qū)別是,GAT在完成結(jié)點采樣,進行信息聚合的時候,通過傳統(tǒng)的Vallina Attention,給不同的結(jié)點賦予不同的權(quán)重,以達到區(qū)分不同結(jié)點重要性的目標。
多任務(wù)Multi-GAT模型介紹:
看一看召回中,一些新的優(yōu)化目標(比如用戶分享行為)或新任務(wù)存在數(shù)據(jù)稀稀疏的問題。因此我們基于GAT-Multi進行多任務(wù)/目標的學習,將不同業(yè)務(wù)或不同類型的輸入作為輸入,輸出端進行拆分,基于多目標或多任務(wù)提升embedding效果。
整個網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
從圖中可以發(fā)現(xiàn),模型輸入是多種數(shù)據(jù)類型或多業(yè)務(wù)類型的混合數(shù)據(jù)輸入,輸出端根據(jù)不同的目標進行了拆分。輸入是用戶點擊和分享構(gòu)成的異構(gòu)網(wǎng)絡(luò),輸出端拆分成了點擊和分享兩個目標,并在損失函數(shù)中對分享目標進行了提權(quán),目標期望通過用戶的點擊日志提升用戶的分享行為指標。
六、總結(jié)與展望
內(nèi)容策略與召回通常驗證收益路徑長,見效慢,這樣大大加大了這部分工作的協(xié)同開發(fā)的訴求,我們與工程同學經(jīng)過無數(shù)次性能優(yōu)化與PK,依賴兄弟團隊提供了大量工具幫助,最終實現(xiàn)目前比較高效的一條迭代路徑。
同時,由于召回與內(nèi)容策略在業(yè)務(wù)底層,策略相對比較多,也比較發(fā)散,獲得收益面通常也比上層要難,我的一些思考是,需要在工作中對這部分的工作梳理做足夠細致歸類,逐層優(yōu)化,集中人力與優(yōu)勢精細打磨,持續(xù)沉淀核心部分,緊跟業(yè)界學術(shù)界前言算法,在兼顧滿足業(yè)務(wù)發(fā)展的各類細碎需求的同時讓算法同學獲得成長與成就感。
相關(guān)閱讀:
個性化推薦如何滿足用戶口味?微信看一看的技術(shù)這樣做
作者:nevinzhang ;微信公眾號:微信AI
來源:https://mp.weixin.qq.com/s/s03njUVj1gHTOS0GSVgDLg
本文由 @ 微信AI 授權(quán)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議。
- 目前還沒評論,等你發(fā)揮!