Youtube經典論文相關問題《Deep Neural Networks for YouTube Recommendations》


在這裏插入圖片描述
在這裏插入圖片描述

論文中召回階段都用了哪些特徵,哪些特徵令你印象深刻?

先用word2vec方法對video和search token做了embedding;然後加入了用戶的地理位置的embedding,年齡,性別等。然後把所有這些特徵concatenate起來,餵給上層的ReLU神經網絡。
我對"Example Age"印象深刻,看論文的圖片,我們可能認爲該特徵表示視頻被上傳之後距現在的時間。

論文排序階段用了哪些特徵,哪些特徵令你印象深刻?

impression video ID embedding: 當前要計算的video的embedding
watched video IDs average embedding: 用戶觀看過的最後N個視頻embedding的average pooling
language embedding: 用戶語言的embedding和當前視頻語言的embedding
time since last watch: 用戶上次觀看同頻道時間距現在的時間間隔
previous impressions: 該視頻已經被曝光給該用戶的次數

前面三組特徵是比較好理解的,我們重點來看一下後面兩組特徵的作用。第4個特徵是用戶上次觀看同頻道時間距現在的時間間隔,這裏有一點attention的意思,加入我們剛看了一場NBA比賽的集錦,我們很可能繼續觀看NBA頻道的其他視頻,那麼這個特徵就很好地捕捉到了這一行爲。第5個特徵previous impressions則一定程度上引入了exploration的思想,避免同一個視頻持續對同一用戶進行無效曝光。儘量增加用戶沒看過的新視頻的曝光可能性。

論文中訓練樣本怎麼設置的?

正樣本是用戶所有完整觀看過的視頻,其餘可以視作負樣本
訓練樣本是從Youtube所有的用戶觀看記錄裏產生的,而並非只是通過推薦系統產生的。同時,針對每一個用戶的觀看記錄,都生成了固定數量的訓練樣本,這樣,每個用戶在損失函數中的地位都是相等的,防止一小部分超級活躍用戶主導損失函數

論文中測試樣本是怎麼設置的?

在處理測試集的時候,YouTube沒有采用經典的隨機留一法(random holdout),而是把用戶最近的一次觀看行爲作爲測試集。避免產生與事實不符的數據穿越。

每一個備選video都會是一個分類,使用softmax訓練時有何改進?

進行了負採樣(negative sampling)並用importance weighting的方法對採樣進行calibration。文中同樣介紹了一種替代方法,hierarchical softmax,但並沒有取得更好的效果。

爲什麼不直接採用訓練時的model進行預測,而是採用了一種最近鄰搜索的方法?

在model serving過程中對幾百萬個候選集逐一跑一遍模型的時間開銷顯然太大了,因此在通過candidate generation model得到user 和 video的embedding之後,通過最近鄰搜索的方法的效率高很多。我們甚至不用把任何model inference的過程搬上服務器,只需要把user embedding和video embedding存到redis或者內存中就好了。
最近鄰用局部敏感哈希算法

爲什麼不採取類似RNN的Sequence model,而是完全摒棄了用戶觀看歷史的時序特徵,把用戶最近的瀏覽歷史等同看待,這不會損失有效信息嗎?

這個原因應該是YouTube工程師的“經驗之談”,如果過多考慮時序的影響,用戶的推薦結果將過多受最近觀看或搜索的一個視頻的影響。YouTube給出一個例子,如果用戶剛搜索過“tayer swift”,你就把用戶主頁的推薦結果大部分變成tayer swift有關的視頻,這其實是非常差的體驗。爲了綜合考慮之前多次搜索和觀看的信息,YouTube丟掉了時序信息,講用戶近期的歷史紀錄等同看待。

在確定優化目標的時候,YouTube爲什麼不採用經典的CTR,或者播放率(Play Rate),而是採用了每次曝光預期播放時間(expected watch time per impression)作爲優化目標?

這個問題從模型角度出發,是因爲 watch time更能反應用戶的真實興趣,從商業模型角度出發,因爲watch time越長,YouTube獲得的廣告收益越多。而且增加用戶的watch time也更符合一個視頻網站的長期利益和用戶粘性。
這個問題看似很小,實則非常重要,objective的設定應該是一個算法模型的根本性問題,而且是算法模型部門跟其他部門接口性的工作,從這個角度說,YouTube的推薦模型符合其根本的商業模型,非常好的經驗。

在進行video embedding的時候,爲什麼要直接把大量長尾的video直接用0向量代替?

這又是一次工程和算法的trade-off,把大量長尾的video截斷掉,主要還是爲了節省online serving中寶貴的內存資源。當然從模型角度講,低頻video的embedding的準確性不佳是另一個“截斷掉也不那麼可惜”的理由。

針對某些特徵,比如previous impressions,爲什麼要進行開方和平方處理後,當作三個特徵輸入模型?

這是很簡單有效的工程經驗,引入了特徵的非線性。從YouTube這篇文章的效果反饋來看,提升了其模型的離線準確度。

爲什麼ranking model不採用經典的logistic regression當作輸出層,而是採用了weighted logistic regression?

因爲我們已經知道模型採用了expected watch time per impression作爲優化目標,所以如果簡單使用LR就無法引入正樣本的watch time信息。因此採用weighted LR,將watch time作爲正樣本的weight,在線上serving中使用e(Wx+b)做預測可以直接得到expected watch time的近似,完美。

發佈了81 篇原創文章 · 獲贊 7 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章