YouTube推薦系統(下):Deep Neural Networks for YouTube Recommendations

咳,仍是要說說這篇文章,雖然講它的人已經不少了。畢竟做爲深度學習模型大規模應用於工業界推薦系統的標誌,這篇文章是繞不過去的。原文來自Deep Neural Networks for YouTube Recommendations,是YouTube2016年發表於Recosys的文章。算法

這篇文章的結構依然很經典:由deep candidate generation model(召回階段)和deep ranking model(排序階段)組成。網絡

Overview

YouTube的推薦系統的主要挑戰有三:ide

  • Scale:有一些算法在小規模的問題上表現很好,可是難以應用於較大規模的問題,而YouTube擁有世界上最大規模的推薦系統之一,規模化是一個算法可以應用的首要問題。
  • 新鮮性(其實咱們通常稱爲內容冷啓動):YouTube某種意義上是個短視頻公司,和Netflix以及Hulu這樣的公司不一樣,它的網站上隨時都有新鮮內容產生,怎麼把這些新鮮內容推薦出去是須要考慮的。
  • 噪聲:implicit feedback和content feature中都有大量的噪聲,須要好好利用這些有噪聲的數據。

YouTube的模型在Google Brain上訓練,它的開源版本即爲tensorflow。他們的模型有十億量級的參數數目,並在千億級別的數據量上訓練。 系統的結構圖以下:函數

能夠看到這是一個兩階段的模型。關於other candidate resource的部分個人 上一篇文章中有。

Candidate Generation

在召回階段,YouTube要從海量數據集中選出數百個召回結果。在使用神經網絡以前,YouTube使用的是MF算法。在使用深度學習算法時,YouTube把找回階段建模爲一個分類模型,其目標是根據上下文C,用戶 U,從集合V中找到時刻t最可能被觀看的視頻w_tP(w_t = i | U, C) = \frac{e^{v_iu}}{\sum_{j \in V} e^{v_ju}}post

其中u表明user和context的embedding,v表明video的embedding。deep learning的任務是從用戶觀看的歷史數據和當前上下文中學習用戶的embedding u,並使用softmax選擇最有可能被觀看的video。模型使用implicit feedback進行訓練,用戶觀看完視頻做爲正樣本。學習

在實際進行服務時,YouTube並不追求完整的softmax過程,而是使用最近鄰算法來選擇最有可能的N個結果。網站

Model Architecture

具體來講,召回階段的模型的結構以下:設計

而各層的設定爲:

Ranking

排序模型的結構和召回模型的結構很像,比較特殊的是它採用的目標函數是watch_minutes_per_impression的函數,而不是ctr的函數。這主要是爲了不click-bait問題。click-bait在中國的語境中應該是標題黨,即刻意用標題吸引人而內容乏味的video吸引用戶的注意力,致使用戶點擊以後很快退出。3d

特徵工程的部分我就不在這裏講了,有興趣的讀者能夠去看原文,咱們主要說一下loss function的問題。 模型的目標是預測impression致使的觀看時長,無論這個impression是正例仍是負例。正例的原始標籤爲用戶觀看視頻的時長,文章設計了一個加權邏輯迴歸函數來解決這個問題。本質上,他們仍是以邏輯迴歸的方法訓練模型,可是給全部負樣例賦以單位權重,給全部正樣例賦以一個觀看時間權重。所以,cdn

整個ranking模型的結構以下:

Model Expected Watch Time

咳,這算是本文中最難理解的一部分了,我說我本身的理解,但不必定對,歡迎批評指正:

文章採用watch_minutes_per_impression做爲預測目標,但這個目標很難被直接預測,因此做者對模型作了一些修改:

  • 全部正樣本的權重等於觀看時長
  • 全部負樣本的權重等於一
  • 採用加權邏輯斯蒂迴歸來處理這個問題。加權邏輯斯蒂迴歸的思想能夠去Weighted Logistic Regression Model一文中查閱。這是一種重採樣相關的方法。
  • 標準的logistic regression中,y的值爲[0,1]之間的數,其表達式爲y = \frac{1}{1 + e^{-w^Tx + b}},而它的odds表達爲odds = e^{w^Tx + b} = \frac{p(y = 1| x)}{p(y = 0|x)}。其中,正樣本出現的機率爲p = \frac{odds}{odds + 1} = \frac{e^{w^Tx + b}}{1 + e^{w^Tx + b}},負樣本出現的機率爲1 - p = \frac{1}{1 + e^{w^Tx + b}}
  • 在weighted logistic regression中,這個式子則被替換爲:odds = \frac{\sum{T_i}}{N - k},即正樣本出現的機率和/負樣本出現的機率和(其中T_i表明每一個正樣本的觀看時長,N表示樣本總數,k表示正樣本的數量)。
  • 而per impression的觀看時長的指望爲E(T) = \frac {\sum{T_i}}{N} = \frac{odds}{\frac{N}{N - k}},即odds = E(T) * \frac{N}{N-k} = E(T) * \frac{1}{1 - p} \simeq E(T) * ( 1 + p) \simeq E(T)。其中p即爲CTR,因爲p的值相對很小,最後的兩個約等於才能成立。因此咱們最終能夠用odds來估計expected watch minutes。
  • 所以在serving的時候,e^{w^Tx + b}即爲watch_minutes_per_impression的估計值。
相關文章
相關標籤/搜索