引言
最近復習以前學習過的比較干貨的paper,整理成一個系列,會陸續更新。做個筆記供以后翻閱。請勿轉載。
- FTRL
- GBDT+FTRL
- Wide&DeepModel
- Deep Neural Networks for YouTube Recommendations
Youtube推薦的難點
- 數據規模大;
- 對時效性要求強,用戶實時行為和新上傳的video;
- 數據噪聲大,沒有真實的ground truth。只有用戶的implicit反饋信號。而且,內容缺少必要的拓撲結構信息。
評論:這些基本上也是大公司面臨的常見問題。
貢獻&亮點
- 將deeplearning引入到推薦領域的match(candidate generation model)&rank(ranking model)框架。
- 使用邏輯回歸對expected watch time而不是點擊率建模。
match
把推薦當作一個多分類問題,學習user和video的embedding向量。
評論:計算量會很大,對推薦引擎的架構要求很高,facebook開源的faiss一定程度加快該領域的應用進展。
model結構
有用策略:
- embedding策略:sum, component-wise max, avg, etc.
- 機器學習是從歷史學習規律來預測未來,如果特征做的不好,模型很容易泛化不好。表現就是對于new content的預估分會很低或者很高,youtube的經驗是將“Days Since Upload”特征加入后,預估分會更準。
- label其實存在比較明顯不對稱性,比如看電視劇,一般是從頭看到尾,這就需要在特征和label上做好時序的處理。
- 對用戶的sample進行均勻采樣,保證每個用戶都有一定的訓練數據,防止過度活躍用戶dominate訓練集。
- 因為搜索頁面的點擊樣本不是很好的推薦結果,所以需要把搜索頁面的點擊樣本去掉。
評論:這些經驗比較干貨。
train
樣本的選取對于模型訓練來說至關重要。為了加快訓練速度,文章采用importance weighting的方法來進行負樣本采樣。然后基于google的tensorflow平臺進行訓練。
評論:樣本采樣是比較常用的技術,但是不得不佩服google的底層計算平臺的強大。
評論:相比于模型的復雜度,特征的作用更加明顯,而且兩者可以做到1+1>2。
predict
評論:文章沒有對candidates的產生做表述,可能是故意藏著不說,這里一般深藏玄機。
rank
排序是對于match的一次精排,這個部分往往比較明確,工業界已經耕耘多年,已有相對成熟的工程體系。
模型結構
有用的特征工程:
- 最重要的信號特征是刻畫用戶過去交互過的items和與之相似的items。比如“用戶過去在這個頻道看過多少視頻?”,“最近一次看這個topic的時間”,以及用戶過去在需要預估item的相似items上的行為。
- match和rank的聯動很重要,把match來源和score放入rank模型會有很大收益。
- 引入用戶的實時交互信號,實時更新推薦結果非常重要。
- 參與embedding的離散特征只保留topN點擊的特征,減少模型復雜度。
- 神經網絡對于特征的scale和distribution很敏感,連續特征歸一化到[0,1)的均勻分布對于模型的收斂有很大的幫助。
- 引入連續特征的sublinear變形特征也有很大的幫助,比如x^2。
評價:整體采用embedding+dnn的網絡架構,特征工程實踐是干貨。底層計算基礎設施很重要。
評價:2層基本上足夠了
對觀看時間建模
如果不考慮觀看時間,一個正常的分類模型很好理解。用戶點擊的視頻是正樣本,用戶沒有點擊的視頻是負樣本。其中,點擊視頻還有一個用戶觀看時間。為了將用戶觀看時間引入到模型中,使用weighted logisitc model來刻畫,用戶點擊樣本權重是用戶觀看時長,用戶未點擊樣本的權重保持為1。
odds = frac{\sum(T_i)}{N-k}, 其中N是訓練樣本個數,k是正樣本個數,T_i是觀看時長。等價變換得到odds = frac{E(T)}{1+P},其中P=k/N,如果k遠小于N,那么odds=E(T),也就是expected觀察時長。
理論完備,注意使用的時候這里的近似條件。