推薦系統丨YouTube召回模型設計

管理員賬號

2019-09-27

隨著互聯網行業的高速發展,人們獲取信息的方式越來越多。人們對信息獲取的有效性和針對性的需求隨之出現,推薦系統也應運而生。推薦系統就是互聯網時代的一種信息檢索工具,推薦系統的任務就是連接用戶和信息,創造價值。

YouTube 是世界上最大的生產、分享、發現視頻內容的平臺。2016 年,YouTube 用深度神經網絡完成了工業級的視頻推薦系統,這幫助了10 億多用戶從不斷增大的視頻集中發現個性化的視頻內容。

在推薦系統中,由于待推薦的物品數量非常巨大,推薦系統不可能對所有物品進行模型預估,因此需要使用召回方法,以便高效地從海量物品中篩選出一小部分符合要求的物品(耗時不超過50ms或者100ms)。

本文選自《推薦系統算法實踐》,本文向大家介紹了YouTube 的召回模型,讓我們一同看看它是如何實現實現從百萬個視頻中篩選出一小部分視頻的。

要想了解YouTube的召回模型,需要依次掌握召回算法、召回模型網絡結構,以及召回特征和樣本設計。

為了生成候選集,需要從視頻語料庫中選出與用戶相關的視頻,可以將其看成一個極多分類問題(extreme multiclass classification problem)。

基于特定的用戶U 和上下文C ,在時刻t 將指定的視頻Wt 準確地劃分到第i 類中,其中(V 表示視頻語料庫),極多分類就是Softmax分類,公式如下:

其中,用戶向量u是由用戶觀看和搜索視頻記錄進行Embedding,再和上下文以及用戶的其他特征組合而成的一個向量。

vju表示第j個視頻的Embedding向量,這里每個視頻都Embedding成一個向量。

假設存在百萬個類別,訓練這樣的極多分類問題時會顯得異常困難,需要對Softmax多分類問題進行優化加速。其解決方法采用負類采樣(sample negative classes),通過采樣找到數千個負類,將多分類問題變成二元分類問題,如此一來運行速度大大提升。

在Word2vec語言模型(CBOW)中,我們將各個詞Embedding編碼到一個向量,并將詞的Embedding向量喂給前饋神經網絡進行學習。受此方法啟發,我們將每個視頻都映射(Embedding)到一個向量,并且將視頻的Embedding向量喂給神經網絡,其中神經網絡的輸入需要為固定大小的向量。我們可以簡單地將用戶觀看過的所有視頻ID的Embedding做聚合操作(最大、最小、平均、累加等),其中平均操作的效果最好。

另外,視頻的Embedding向量也可以通過正常的梯度下降反向傳播更新與所有其他模型參數一同學習。召回模型的網絡結構如下圖所示。

YouTube召回模型的網絡結構包含多層神經網絡:輸入層、中間層(多層網絡)、輸出層。接下來對各層神經網絡進行詳細介紹。

▊ 輸入層

在該網絡結構中,輸入數據都是一些異構數據,包括:

● 用戶觀看視頻序列ID:對視頻ID的Embedding向量進行累計并求平均值,得到觀看向量(watch vector)。

● 用戶搜索視頻序列ID:對視頻ID的Embedding向量進行累計并求平均值,得到搜索向量(search vector)。

● 用戶地理特征和用戶設備特征:均為一些離散特征。可以采用Embedding方法或者直接采用OneHot方法(當離散的維度比較小時),得到用戶的地理向量(geographic embedding)和設備向量。

● 人口屬性特征:可進行歸一化處理。其中,人口統計特征(如example age、gender)可以提供豐富的先驗信息,以實現比較好的對新用戶的推薦效果。

▊ 中間層

中間層包括兩層,其中每一層的激活函數為ReLU。

▊ 輸出層

輸出層的維度和視頻ID的Embedding維度一致,最終得到用戶向量u。

通過該網絡結構的學習,最終可以得到所有視頻的Embedding向量V,其維度為pool_size×k,其中pool_size為訓練集視頻資源池大小,k為Embedding的維度。我們還可以得到所有用戶的輸出向量u,其中每個用戶向量的維度是k維,和物品的Embedding維度一致。

在線服務階段,通過視頻向量V和用戶向量u,進行相似度計算,采用最近鄰查詢,取得Top相似視頻作為召回候選集。

接下來介紹召回模型輸入層的特征處理,以及如何進行樣本的設計和如何選擇模型參數。

▊ 異構信息處理

包括如下內容。

● 視頻ID向量化:基于此向量,可以得到用戶的曝光視頻向量、觀看視頻向量、搜索視頻向量等(得到用戶的各種視頻行為向量)。

● 用戶畫像特征歸一化處理:如地理位置、設備、性別、年齡、登錄狀態等連續或離散特征都被歸一化為[0,1],并和用戶視頻行為向量做連接(concat)。

● example age(視頻生命周期特征):該特征表示視頻被上傳之后的時間。在YouTube上,每秒都有大量視頻被上傳。推薦這些最新視頻對于YouTube來說是極其重要的。通過持續觀察,可知用戶更傾向于被推薦那些盡管相關度不高但卻為最新的視頻。推薦系統往往會利用用戶過去的行為預測未來。對于歷史行為,推薦系統通常能夠學習到一種隱式的基準。但是這對于視頻的流行度分布往往是高度不穩定的。為了解決這個問題,這里的推薦策略是,將example age作為一個特征拼接到DNN的輸入向量,在訓練時,時間窗口越靠后,該值越接近于0或者一個絕對值小的負數。加入example age特征后,模型效果和觀測到的實際數據更加逼近,參見下圖。

這里在訓練時將訓練樣本的example age值作為一個特征進行訓練學習;而在線上進行在線推薦服務時,會將example age這個特征值設置為0(或絕對值比較小的負數),以反映模型正在訓練窗口的末端進行預測。

▊ 樣本選擇和上下文選擇

包括如下兩項內容。

● 樣本選擇:訓練樣本是從YouTube的全部觀看記錄中產生的,而不僅僅包括推薦系統生成的觀看記錄。這樣做的好處是便于加入對新視頻的測試,防止對推薦者的觀看記錄過度利用;同時用戶通過其他途徑的觀看行為也容易被推薦系統采集到,從而可以通過CF快速傳播用戶行為。另外,對每一個用戶所產生的觀看記錄生成固定數量的訓練樣本,使得每個用戶在損失函數中的權重都是相等的,防止一小部分超級活躍用戶影響損失函數的公平性。對于搜索樣本的無序化處理問題,要注意防止過擬合的情況。比如,利用用戶的最后一次搜索生成推薦的主頁,效果通常比較糟糕。將用戶的搜索序列做無序化處理,推薦系統不再直接獲知搜索樣本的原始值,效果會更好。

● 上下文選擇:用戶觀看視頻時,遵循的是一種非對稱模式,即在初始的觀看序列中,范圍會比較廣泛;在后期的觀看序列中,范圍會逐漸集中。我們還發現按照順序預測用戶觀看的下一個視頻,會比隨機挑選某一個視頻并根據該視頻的上下文來預測該視頻本身的性能要好。大部分協同過濾算法在推薦時,往往利用的是用戶的全量觀看歷史,從用戶的觀看歷史序列中,隨機選擇一個視頻作為label,將該視頻的上下文作為輸入,通過該上下文輸入來預測label,這一過程可以描述為下圖(a)那樣,但是這種情況會出現label提前泄漏的問題。相比之下,在輸入時只選擇label發生之前的視頻,就可以避免這個問題,該過程可以描述為下圖(b)那樣。

▊ 神經網絡深度參數選擇

通過增加特征數量和神經網絡的深度,可以顯著提高準確性,如下圖所示。

在上圖的實驗中,總共有數以百萬計的視頻和搜索詞匯,我們取最多50個觀看視頻和50個最近搜索視頻,映射成256維的float數組。最后一層網絡的輸出是一個256維的向量,其中最后的輸出結果會通過一個Softmax函數,計算得到1MB視頻的得分,即分類結果。模型基于所有YouTube用戶數據進行訓練,直至收斂。網絡結構呈一個常見的塔狀,底部的網絡最寬,每往上一層節點數就減半。深度為0的網絡和之前的推薦系統非常相似,是一個高效的線性分解模型。

● 深度為0:這時網絡會把連接起來的輸入層轉換一下,和Softmax的256維輸出對應起來。

● 深度為1:第一層為256個節點,激活函數是ReLU。

● 深度為2:第一層為512個節點,第二層為256個節點,激活函數都是ReLU。

● 深度為3:第一層為1024個節點,第二層為512個節點,第三層為256個節點,激活函數都是ReLU。

本書循序漸進地講解推薦系統中的召回算法和排序算法,以及各個算法在主流工具Sklearn、Spark、TensorFlow等中的實現和應用。并配有豐富的工程案例和源代碼,可以幫助讀者進行工程實踐并在實際工作中應用。

? 關 于 作 者

黃美靈

現任一線互聯網公司的高級工程師,擁有多年大型互聯網公司推薦系統和機器學習實戰經驗,現從事廣告推薦、應用分發和資訊Feeds流推薦相關工作。

? 本 書 架 構

讀者評論

相關專題

相關博文

  • 機器學習:數據驅動的科學

    機器學習:數據驅動的科學

    管理員賬號 2017-05-27

    小編說:傳統上,計算機會按照我們輸入的指令一步步執行。而機器學習卻是通過輸入數據而不是指令來進行各種工作。 機器學習,也被稱為統計機器學習,是人工智能領域的一個分支,其基本思想是基于數據構建統計模型,并利用模型對數據進行分析和預測...

    管理員賬號 2017-05-27
    1011 0 0 0
  • 你聽過無人駕駛,但你了解無人駕駛的算法嗎?

    你聽過無人駕駛,但你了解無人駕駛的算法嗎?

    管理員賬號 2017-05-26

    小編說:我們已經拉開了全自動無人駕駛的序幕,在幕布之后是我們精彩的未來,但你可能不知道的是無人駕駛系統是一個復雜的系統,系統主要由三部分組成:算法端、Client端和云端。算法端從傳感器原始數據中提取有意義的信息以了解周遭的環境情況,...

    管理員賬號 2017-05-26
    1208 0 0 0
  • 無人駕駛的分級以及產品化后會帶來的改善

    無人駕駛的分級以及產品化后會帶來的改善

    管理員賬號 2017-05-24

    小編說:人工智能是時代,機器人開始作為服務的承載體出現,其中的一個具體事例就是無人駕駛的產品化。無人駕駛并不是一個單一的新技術,而是一系列技術的整合。本文將向您介紹這一技術對生活帶來的改善以及無人駕駛的分級。本文選自《第一本無人駕駛技...

    管理員賬號 2017-05-24
    181 0 0 0
0k000澳客网竞彩