看一看介紹node
相信對於很多人而言微信已經成爲獲取資訊的主要場景。與此同時,因爲微信用戶羣體的龐大,也吸引了大量的內容生產者在微信公共平臺創造內容,以獲取用戶關注、點贊、收藏等。微信內的內容推薦產品:看一看應運而生。算法
基於微信經過多年的用戶沉澱,積累獲得的大量「隱式反饋」閱讀興趣信息,能夠精準的實現內容與內容消費者之間的推薦。同時,秉承下降用戶獲取信息繭房效應,拓寬用戶閱讀興趣,加強互動,強化用戶認知,及時獲取諮詢等等訴求,看一看不斷在算法迭代的同時,引入各種騰訊系,外部圖文,視頻,資訊,小視頻等內容,豐富內容多樣性的同時不斷上線優化產品體驗與進行樣式優化。小程序
內容庫與內容畫像跨域
■ 2.1 內容源性能優化
看一看接入了很是多合做方的數據做爲內容源,包含但不只限於微信公衆平臺及其餘外部內容等等。微信
因爲接入數據源較多,各家數據在內容、質量、品類等方面差別性比較大。看一看平臺方會對數據作「歸一化」操做,包括標籤統一化,推薦標籤提取,內容投放目標,投放人羣傾向性等內容理解處理,這部分咱們稱爲看一看內容畫像部分。網絡
■ 2.2 內容畫像session
內容理解:對接各類外部圖文等內容,對接入內容作業務級內容多維基礎理解,同時進行外部標籤與自有標籤體系對齊,完成應用級內容打標;反饋至下游應用方:用戶需求系統,召回策略,召回模型,排序/混排等使用;同時,在業務數據滾動與迭代中修正數據判斷精度與效果,逐步貼合與提高業務線效果;多線程
咱們將內容畫像,定義爲兩個大維度:經過內容自己來理解內容, 經過用戶行爲來理解內容。前者主要針對內容抽取靜態屬性標籤;後者則經過用戶行爲積累的後驗數據、統計或模型預估內容的知識、傾向性、投放目標以及抽象表達。架構
■ 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識別,清晰度,低俗色情,敏感信息等多種維度。有力輔助多媒體理解深度,並普遍用於召回模型,曝光展現策略,過濾策略等,目前,在召回與策略層面已經證實有必定在線提高效果。
■ 2.4 基於知識體系的表示與可解釋標籤
知識圖譜做爲知識承載系統,用於對接內外部關鍵詞信息與詞關係信息;內容畫像會將原關係信息整合,並構建可業務應用的關係知識體系,其次,依賴業務中積累用戶行爲產生的實體關係數據,自己用戶需求的標籤信息,一併用於構建業務知識的興趣圖譜,基於同構網絡與異構網絡表示學習等核心模型,輸出知識表示與表達,抽象後的圖譜用於文本識別,推薦語義理解,興趣拓展推理等場景,直接用於興趣推理的冷啓場景已經驗證有很不錯的收益。
■ 2.5 嵌入表示
語義嵌入表示:這類是相對已經比較成熟的技術,基於短文本tag, word粒度,句子粒度,doc粒度均可以構建embedding表示。其次,除文本外,更爲豐富的多媒體信息的融入,已經能夠驗證在必定程度上能夠加強表達能力。
其次,咱們基於微信閱讀場景的用戶點擊/分享/關注等等序列結合場景的上下文信息,以他們做爲文本切割的序列標註信息,早起基於傳統的HMM,CRF類淺層模型,發展至目前的seq2seq,RNN,transformer,Bert等序列類,語義類模型,將內容做爲文本切割的一個子序列,從而實現對文本的序列的表示信息。因爲更加貼近推薦場景,這類嵌入表示業務可用性會更高,也體如今召回/排序模型的應用效果會更加明顯。
■ 2.6 傾向性與目標性識別
這部分是經過用戶行爲數據來理解內容的重要體現。分爲兩部分:內容傾向性與內容投放目標性。都是創建在一套基於文本,多媒體,kg,投放日誌等下的一套分類器進行打標,模型如上圖所示。
內容傾向性:內容經過分類模型預打「傾向性」標籤,例如:內容適合的性別傾向、年齡傾向性、地域傾向性等等,從而預判待投放內容的特殊人羣傾向性;
目標性識別:看一看的場景會比較多,例如:主TL流,視頻流,專題流,tag可點流,看一看+小程序,每一個場景都有不一樣的投放目標(例如:主TL內容會以點擊率爲主,專題流會以時長消費爲主,小程序分享率爲主),因此,咱們會在item上一樣基於投放預估的模型預先打上一組目標識別標籤預判分數,供在線策略使用與內容庫構建、以及內容試探等。
綜上,經過內容理解與內容庫構建的概要流程圖以下:
這部分產生的判斷維度會對全部接入看一看的內容進行組合打標,經過不一樣產品場景或渠道來交叉組合,構建推薦的內容庫。同時,標籤會不一樣力度的用於在線召回過濾策略,做爲模型召回、排序特徵來使用。應用證實對於新內容的冷啓動篩選,特定投放目標庫羣體效率提高明顯。
召回架構
推薦系統的召回階段能夠理解爲根據用戶的歷史行爲數據,爲用戶在海量的信息中粗選一批待推薦的內容,挑選出一個小的候選集的過程。在看一看召回演進路上,咱們曾經調研大量主流的工業界推薦系統的召回架構的設計,以下:
能夠看到各種同類競品的系統雖然細節上多少存在差別,但不約而同的採起了多路召回的架構,這類設計考慮以下幾點問題:
1.考慮用戶層面:用戶興趣的多元化,用戶需求與場景的多元化:例如:新聞需求,重大要聞,相關內容沉浸閱讀等等
2.考慮系統層面:加強系統的魯棒性;部分召回失效,其他召回隊列兜底不會致使整個召回層失效;排序層失效,召回隊列兜底不會致使整個推薦系統失效
3.系統多樣性內容分發:圖文、視頻、小視頻;精準、試探、時效必定比例;召回目標的多元化,例如:相關性,沉浸時長,時效性,特點內容等等
4.可解釋性推薦一部分召回是有明確推薦理由的:很好的解決產品性數據的引入;
看一看召回目前設計爲多路召回形式,從功能性角度分爲以下幾類:模型類召回、相關場景類召回、基礎屬性召回、社交類召回、試探類召回、產品策略/運營類召回六大類。以下圖所示:
1.模型類召回:目前看一看曝光佔比最大的一類召回策略,能夠很好的解決推薦系統中長短時間興趣自適應、必定程度的興趣擴展、業務場景擴展與遷移等幾個核心召回問題。爲下文着重介紹的內容。
2.相關類召回:看一看包括多個相關推薦場景。這類召回依賴內容畫像對內容的語義判斷能力,採用孿生網絡類設計思路,解決跨內容域(例如:視頻與圖文,封面與標題等)相關性問題。知足用戶在推薦系統內對沉浸式體驗的需求。
3.基礎屬性類召回:屬於比較基礎的一類召回,但具備幾點重要意義:因爲多重標籤的對item的覆蓋度會比較高,因此這類召回很好的能夠知足冷啓類,兜底類場景;其次,屬性具有良好的可解釋性,能夠很好的對模型類召回以及相關特殊外顯場景下的解釋性做用,一般也是產品訂製或規則的重要維度。
4.社交類召回:是看一看比較有特點的一類召回,基於微信豐富的社交場景,看一看設計了:「好友在讀」,「XXX都在看」,「在看」等幾類設計相關推薦。
5.試探類召回:一般的推薦系統都會面臨「信息繭房」問題,即:人們的信息領域會習慣性地被本身的興趣所引導,從而產生多種主動行爲:咱們也稱爲對推薦系統的隱式反饋信息,這類行爲又會做爲推薦系統的學習目標,從而讓推薦結果逐步收斂,用戶再沒法獲取更普遍的內容,信息桎梏於像蠶繭通常的「繭房」中的現象。興趣試探會解決這類問題。另外,推薦系統做爲一類內容分發平臺,承擔着甄選優質內容,發現潛力優質內容,並在必定程度上去中心化投放的能力,內容試探隊列會解決這類問題。
6.運營&產品策略召回:知足產品以及一些節日、新聞、話題、合做方等特殊定製場景。
7.粗排
隊列演進
看一看召回策略演進主要經歷了四個階段,這裏並非表明後者替代前者,因爲不一樣隊列的意義和解決的問題的差別性,各個階段的一些隊列目前還會有不一樣狀況的保留在系統中:
■ 4.1 基於屬性召回
這一階段比較重的依賴內容畫像與用戶需求的細粒度判斷,咱們走過了一段基於天然語言處理、基於用戶行爲來對內容作豐富的細粒度內容打標籤的階段,接着,用戶需求會基於閱讀、搜索等用戶行爲將內容屬性標籤納入用戶需求。內容屬性標籤構建倒排與正排索引,各路召回在線基於用戶需求的多個細粒度維度判斷以及實時閱讀歷史的item屬性信息,經過拉取倒排item拉鍊,獲得各路召回的候選結果。這階段中,例如:tag、類目、topic,已關注公衆號隊列佔到了召回大頭比例,這類屬性具有很好的可解釋性。
■ 4.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包括三類:
• 用戶真正討厭的;
• 用戶missing的;
• 用戶喜歡的;
對於某個用戶來講,在訓練時都被標爲"0"的item,在預測時的評分也能夠排序,所以不影響ranking任務的完成。在咱們系統實踐時也不必使用所有歷史數據,只須要以session切片,從中按照上述形式構造pair-wise數據便可
經過這類方法,降維方法大多被用做補充技術來提升基於內存的方法的魯棒性和準確性。另一方面,對於像奇異值分解,主成分分析等方法,根據潛在因素將用戶項目矩陣壓縮成低維表示。使用這種方法的一個優勢是,更好地處理原始矩陣的稀疏性。此外,對於處理大型稀疏數據集時咱們下文也會介紹,藉助大規模knn能力,這類矩陣相關性的計算能夠獲得很好的解決,很是適合召回場景。
第三類是Hybrid models(也就是前兩種的混合模型)。許多應用程序結合了memory-based CF算法和model-based CF算法。這些方法克服了原生CF方法存在的侷限性並提升了預測性能。其實上,這部分的進一步嘗試,已經歸類和被爲下文將要介紹的深度模型召回所替換。
社交類召回,是微信場景下的特點數據,好比:
基於天然好友的:在看;
基於興趣的:在看,XXX爲基於興趣關係獲得的聚蔟關係;
又好比18年10月上線的在看頻道:基於用戶主動點擊在看按鈕,收集效果一類社交閱讀場景。
■ 4.3 試探類召回
隨着業務發展與對用戶理解的深刻,出現幾類問題亟待解決:用戶獲取信息一般表現出很強的短時間效應;咱們在線經過引入用戶實時閱讀歷史數據,利用短時間閱讀行爲信息做爲觸發源,構建隱語義類召回策略。
但同時,咱們很快發現,點擊類指標提高帶來的代價是短時間內容集中,內容類型快速收斂,主要緣由也是策略過於依賴短時間行爲,召回內容的集中,致使上層模型快速收斂,用戶行爲收斂,逐步致使很強的信息繭房效應。召回測試是急需引入更爲泛化與具有試探能力的召回。隨着業務dau逐步提高,不斷有新用戶、新內容引入系統,如何解決冷啓問題也須要着重考慮。
知識圖譜類
在微信生態中,即便對於一個看一看新用戶,咱們也能夠根據極少的用戶/內容基本信息進行推薦。內容協同使用了異構網絡的方法進行文章召回。
咱們搭建了基於知識圖譜的異構召回模型。該方法以知識圖譜給出的「先驗」關係信息,將文章feature與用戶feature作關聯,構建出一個同時包括用戶特徵又包括文章的特徵的異構網絡,經過圖譜異構網絡的表示學習,獲得異構節點的向量(user profile feature與doc feature)。已經有相關理論支持,能夠獲得特徵之間的獨立性與向量的加和性,從而實如今特徵匱乏狀況下,不會過渡依賴單一用戶需求或內容畫像特徵進行召回。對合並後的向量相關性計算召回與該用戶最相關文章。
試探(興趣試探/內容試探)
解決兩類問題,拓寬用戶的興趣面,減小發現優質內容的週期。試探能力須要打通整個推薦系統的綠色pass通路,容許內容或興趣召回能夠全鏈路走特殊通路:包括:數據通路,模型通路,定製召回/排序/混排模型等能力。
咱們召回經過設計兩類試探策略,解決上述問題:
興趣試探:咱們系統中經過:跨域用戶興趣試探,中長尾閉集合興趣試探,全集合興趣試探模型三類策略就行興趣試探。並建設了一套以用戶需求的試探成功率,試探標籤的有點率,點擊率衡量試探效果的實驗體系,能夠閉環的驗證鏈路效果;
內容試探:咱們設計了:內容質量識別(離線),運營系統(旁路),流量預估(在線),內容投放目標性識別(在線)來投放與優化投放效果,經過全鏈路的對內容標籤修訂,試探投放,日誌模型定製化,遷移學習,上線後以ABTest中以新內容系統獲取曝光後的試探內容點擊率,試探成功率,試探多樣性衡量閉環效果。
■ 4.4 深度模型召回
下文對這部分工做進行概要介紹,按類別咱們將模型召回分爲四類:
序列模型
雙塔模型
混合模型
圖模型
深度模型召回
召回是處於推薦業務的底層位置,首先,處理數據規模相比上層排序要大幾個數量級,其次,要求準確的同時,兼顧多種業務和用戶體驗目標,例如:多樣性,社交,時長,負反饋,分享等等。在諸多限制下,模型召回系統會着重解決幾個問題:
1.候選數據規模大;對模型性能要求高
2.user-item 交叉類特徵算法,因爲召回的檢索邏輯限制,這類算法支持不友好;
3.底層數據種類繁多,模型須要具有很強的自適應能力
4.解決:多樣性與精確性的兩難選擇
5.模型實時性問題增量模型
6.用戶/內容冷啓的召回問題
7.橫向業務演化階段,模型如何快速孵化新業務,即遷移能力
對於深度模型召回來講,須要有特定的架構模式來應對,咱們的解決方案以下圖所示,模型訓練爲離線實時訓練獲得用戶與item兩側的參數或embedding數據,參數部分依靠微信基礎平臺部提供的強大在線feature KV系統進行實時存取,user與item在線進行KNN計算實時查詢最近領結果做爲召回結果,其中KNN服務由基礎平臺部基於對Facebook開源的faiss升級改造的一套系統,能夠在5ms內完成千萬級內容的快速查找。
■ 5.1 序列模型
推薦系統主要解決的是基於用戶的隱式閱讀行爲來作個性化推薦的問題;因此,咱們嘗試的方法是將用戶在隱式閱讀場景下表現出的點擊文章序列構建爲一個長文本,這樣閱讀文章和點擊能夠當作是文檔的Term。那麼無數的用戶閱讀歷史序列就能夠看成是自然的語料庫,如此能夠將隱式推薦問題遷移爲天然語言處理中的語義(語言)模型可cover的範疇。基於神經網絡模型學習獲得Word2Vec模型,再後面的基於RNN的語言模型,這些方法均可以應用到語料的學習中。此外,seq2seq的機器翻譯模型也能夠幫助咱們挖掘更多額外的信息。
■ 5.2 N-Gram 語言模型
固然咱們還有可使用最基本和最經典的語言模型N-Gram模型來挖掘這批語料,考慮計算2-gram,3-gram,能夠幫助咱們瞭解item之間的轉移機率信息。此外近幾年提出的Word2Vec的模型能夠看做是從另一個維度去描述判斷N-Gram的語言模型,Word2Vec的模型能夠將term表達成一個稠密的向量,保存了語義信息,被認爲是更加突出的語言模型。
■ 5.3 RNN-based的語言模型
Rmb(rnn model based recommend)使用循環神經網絡對用戶閱讀序列信息建模,捕捉用戶閱讀的序列關係和長期閱讀興趣的起止。訓練時使用用戶閱讀序列和文章語義信息,線上使用循環神經網絡預測topk進行召回。
基於循環神經網絡的推薦模型(Recurrent Based Recommendation)是對用戶閱讀順序使用循環神經網絡的方法進行建模。該模型解決了在相同用戶屬性和相同閱讀集合的狀況下召回內容同質的問題,rmb能夠對用戶閱讀順序進行建模,即便相同用戶屬性,相同閱讀集合的用戶,若是他們閱讀內容的順序不一樣,也會有不一樣的召回結果。rmb能夠對長期用戶閱讀歷史和序列信息進行很好的建模。
爲了更好使深度神經網絡模型進行學習,首先使用item embedding方法將文章或者視頻的ID映射到一個固定維度的稠密向量空間中,而後根據用戶的閱讀行爲和文章的語義,對用戶閱讀序列進行建模。
■ 5.4 使用基於seq2seq的encoder-decoder模型
用戶的閱讀歷史能夠經過Session的切分原則劃分爲不少個Document,也就是說咱們能夠將一個用戶抽象爲文檔序列。給定一個文檔序列,能夠預測用戶接下來的閱讀序列,在這裏咱們將利用seq2seq來解決這個預測問題,將用戶的閱讀歷史進行encoder,而後decoder出一個新的序列來做爲推薦候選集。在預測的過程當中咱們將文檔中詞的Embedding向量組合成一個文章的向量,基於用戶的閱讀歷史序列能夠進行有監督的學習,優化詞的Embedding向量。這種思想借鑑了Seq2Seq,咱們能夠考慮使用用戶的前半部分session預測用戶的後半部分session。這些都是相似機器翻譯的NLP技術,咱們堅信這種策略可以爲咱們提供合理有效的序列推薦。
■ 5.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和類目。
■ 5.6 Bert模型
從文本預訓練任務看,預訓練向量表示總體演進路線表現爲:由靜態向量到基於上下文的動態向量,由單向到雙向再到同時考慮雙向。最近一兩年,以Bert爲表明的動態雙向預訓練模型在天然語言處理領域大放異彩。推薦系統中用戶興趣建模能夠借鑑Bert預訓練目標。主要緣由有:
首先,不管是RNN模型仍是Seq2Seq模型以及Translation模型,都是從前到後建模用戶歷史行爲序列,單向結構的建模有必定限制,而Bert類模型兼顧雙向進行建模;
其次,用戶行爲順序性的假設有時並不適用,用戶行爲順序與推薦系統展現順序有關,好比打亂某些會話內的推薦順序不用影響用戶行爲。
Bert模型召回關鍵點在於樣本製做:
1.建模更長的用戶序列:序列長度128,對於長序列用戶採用滑動窗口截取樣本,對於短序列直接丟棄處理;
2.如何MASK:樣本真實長度爲N,序列中1-N-1隨機MASK,MASK比例10%;爲了擬合序列任務,最後一位N強制MASK。
■ 5.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等結構,加強模型表達能力。
多塔多目標模型優化,結合業務多指標,融合豐富信息建模多塔模型。
■ 5.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。
■ 5.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個優勢:
1.大量前沿論文證實GraphSAGE可以更加準確、有效抽取結點Context信息,並生成更高質量的node Embedding;
2.GraphSAGE是一種概括學習圖模型,能夠學習動態網絡中新加入的結點Embeeding。
3.GraphSAGE經過採樣當前結點K階領域結點來計算當前結點embedding,使得計算具備上億結點、數十億條邊大規模圖網絡變爲可能。
咱們經過用戶觀看過的item來構建圖網絡,把同一用戶觀看過的時間關係上靠近的兩個item當作結點,結點之間用一條邊鏈接,而後經過GraphSAGE圖模型來學習圖中結點的Embedding,GraphSAGE模型結構以下圖所示:
GraphSAGE首先經過採樣(Sample),從構建好的網絡中抽取出一個子圖:隨機採樣一個源結點V1,而後採樣它的一階鄰接結點V二、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,依賴兄弟團隊提供了大量工具幫助,最終實現目前比較高效的一條迭代路徑。
同時,因爲召回與內容策略在業務底層,策略相對比較多,也比較發散,得到收益面一般也比上層要難,個人一些思考是,須要在工做中對這部分的工做梳理作足夠細緻歸類,逐層優化,集中人力與優點精細打磨,持續沉澱核心部分,緊跟業界學術界前言算法,在兼顧知足業務發展的各種細碎需求的同時讓算法同窗得到成長與成就感。