簡介
前言
本文是Deep Neural Networks for YouTube Recommendations 論文的學習筆記,淘寶的召回模型曾經使用過這篇論文里面的方案,后續淘寶召回模型升級到了MGDSPR:多粒度深度語意商品檢索,
轉向深度學習
和谷歌的其他產品一樣,you2b也經歷了向深度學習轉變的程序,矩陣分解技術在推薦系統中使用廣泛研究多,而深度學習當時在推薦系統中應用并不多,y2b有超過10億用戶,應用DL的挑戰
-
由于用戶規模、語料庫規模的龐大,很多在小問題上應用效果不錯的模型演算法,在y2b上面效果卻一般,
-
用戶偏好新的內容,每秒鐘有大量新的視頻內容產生,這些新的資料如何于現有系統的資料協同好
-
用戶的歷史行為非常稀疏,視頻元資料缺乏良好的結構定義
系統概覽
1 系統架構圖

如圖所示系統架構圖非常簡單,先試召回,然后排序,最經典、最古老的召回是倒排召回,近年來基于神經網路興起的向量召回也逐漸流行并應用起來,比如facebook構建了基于倒排的ANN檢索;淘寶構建了基于倒排、協同過濾、ANN檢索的多路檢索系統,召回階段至關重要,召回的質量決定了下一個階段排序能達到的上限,因為召回能看到語料庫中的全部資料,而排序則基于召回的少量資料LIST.
2 召回
以用戶的歷史行為作為輸入,產出小批量相關的視頻給用戶,并通過協同過濾提供寬泛的個性化,用觀看過的視頻ID、搜索的query以及統計出的特征來衡量用戶之間的相似度
3 排序
在召回大相關視頻之間,應該細粒度地區分它們之間的重要性,這個就是排序階段要做的事情,排序階段會給每一個召回的視頻賦予一個打分,打分越高,就排到越前面,這個打分是基于我們期望的目標函式,以用戶特征、視頻特征為輸入訓練出來的
迭代評估
基于離線訓練的評估指標迭代模型,但是在線的表現并不完全跟離線訓練的行為一致,且在線可以通過多種無法在離線評估中使用的指標來評價模型效果,因此在線A/B測驗
召回
問題定義
y2b推薦系統從大規模語料庫里面檢索出數百個相關的結果給用戶,論文里把推薦系統看作一個極端多分類問題: 將預測問題轉化為在用戶U+背景關系C的情況下,從大規模語料庫準確地分類出用戶在時間t觀看的視頻\(w_t\)

-
\(u\) 代表用戶和背景關系經過embedding后的低維稠密向量
-
\(v\) 代表視頻item的向量表示
-
\(V\) 是語料庫,或者索引庫
為了敘述的方便,此處忽略指數,這個運算式的分母是語料庫\(V\)中每一個視頻和當前用戶大向量乘積,分子是特定某個視頻和用戶之間的乘積,衡量的是某個視頻應該被推薦給用戶的概率,顯然這些概率的和是1,這個其實就是softmax操作,
極端多分類
為了訓練規模高達數百萬類別的模型,從候選集中挑選抽樣負樣本,并通過加權修正的方式來進行調整,訓練的程序最小化\(true\) 標簽和抽樣負樣本之間的交叉熵的值,通過抽樣的方式softmax訓練效率相對于傳統softmax提高了100倍,層次softmax也是一種高效的方案,然而經常在不相關的節點之間游走遍歷,使得分類問題非常困難,性能也惡化,
模型架構
用戶的歷史行為由一系列視頻ID組成,這些視頻ID已經編碼為稠密向量,最后這些向量進行平均操作作為歷史行為的表示,

異構信號
深度學習的優點是可以很容易地將任意特征引入到模型中,論文中用戶的搜索query、觀看歷史被同等對待,query基于1-gram、2-gram語言模型進行分詞,分詞后的token編碼為向量,它們經過平均后代表用戶的歷史行為,另外地理位置、設備也會embedding為向量輸入模型,一些簡單的特征如性別、登陸狀態等歸一化到\([0,1]\) 直接輸入到模型,
age特征
每秒鐘都有很多小時的視頻被上傳到y2b,這些新的內容如何快速地推薦給用戶是非常重要的,因為在不損失相關性的前提下,用戶偏好新的內容,由于模型基于過去的老資料訓練,容易偏向推薦老的內容給用戶,
為了解決這個問題將age 作為樣本的一個特征,參與模型訓練,在線服務的時候將age設定為\(0\) 或者稍微負數一點,已表明模型預測最近的一個時間視窗,

如圖是隨著時間的流逝,模型輸出的視頻分類概率,\(Empirical\) 這條線是根據經驗判斷一個內容流行度隨著視頻流逝而變化的曲線圖:剛開始出現時有新鮮感比較受歡迎,越來越多的人看過后,新鮮感消失,流行度下降,可以看出\(baseline\) 接近一條直線,沒有考慮實效性的影響,而帶上\(Age\)特征后,曲線比較接近經驗上的走勢
標簽和背景關系的選擇
樣本來源
訓練樣本來自y2b全部的觀看資料,而不僅僅是y2b的推薦系統,否則容易產生一個偏差:新的內容很難展現出來,因此如果用戶通過推薦系統以外的方式進行探索,那么可以通過協同過濾傳播給其他用戶,
筆者注 在谷歌的一片關于冷啟動的論文里,使用推薦系統的資料輔助搜索的模型訓練,以解決那些新的沒有點擊過的但是實際上又是相關的用戶感興趣的檔案不在訓練資料中的冷啟動問題,而本文用推薦系統以外的觀看行為來\(enhance\) 推薦系統,正好形成一個回路,
活躍用戶
一些極度活躍的用戶會導致模型訓練時,他們的資料會影響目標函式導致產生訓練偏差,解決辦法是對每個用戶產生固定數目的訓練樣本,
反直覺
有一個反直覺的發現模型會利用網站的結構等資訊導致過擬合問題,例如用戶搜索了\(泰勒斯威夫特\),那么在這個背景下,推薦系統會將對應的搜索結果頁作為內容推薦給用戶,但是表現非常差,通過丟棄用戶歷史搜索行為的順序、亂序詞包,可以解決這個問題,
Future Leak
許多協同過濾系統從觀看序列移除一個事件,用前后的背景關系資訊來預測被移除的事件,但是這樣會泄漏future information,而y2b的做法是將被預測的那個事件及時間序列之后的都移除,如下圖所示,驗證來看用b 訓練出的模型表現好于a,

排序
排序階段使用類似召回階段的模型結構,給每一個召回的候選資料賦予一個分數,然后按照這個分數對結果List進行排序,點擊率具有欺騙性,用戶可能點擊了某個視頻,但是并沒有完成觀看,因此觀看時間更能代表用戶對結果的認可度,
特征表達
1 特征工程
深度學習的興起能夠減輕特征工程的負擔,然而y2b的原始資料不適合直接輸入模型,因此仍然花費了大量的資源進行特征標注,難點在于如何表達用戶活動的時序序列,以及和他們相關的視頻item如何打分,
在特征工程中觀察到2個重點:
-
用戶之前和某個item(以及和這個item相似的其他item)的互動
-
將召回階段的特征傳遞到排序階段比較重要
2 Embeding類目特征
類似召回階段稀疏多類目特征會轉為稠密向量以適合神經網路模型的輸入,每一個獨立的ID空間獨立學習embedding表示,空間會進行裁剪,此處的空間即詞匯表,例如所有用戶搜索過的所有query分詞后產出一個詞匯表,這個表會進行裁剪,只有出現次數達到一定閾值的TOP-N才會被選中,除了共享的特征(例如視頻ID),其他的特征都會單獨輸入神經網路,以學習到這個特征特有的表示,
3 歸一化連續特征
與決策樹不同的是,神經網路對資料的規模后分布比較敏感,歸一化特征資料有利于模型的快速收斂,對于一個符合\(f\) 分布的連續特征\(x\) ,通過按比例縮放歸一化到區間\([0,1)\) 得到歸一化后的特征值\(\hat{x}\) .經過指數操作后得到的形如 \(\hat{x}^2\) \(\sqrt{{\hat{x}}}\) 也作為模型的輸入,可以提高模型的精度,
4 預期觀看時間的建模
模型的目標是預測視頻的觀看時長,正樣本根據標注的觀看時長進行加權,負樣本不加權,通過邏輯回歸和交叉熵損失進行訓練,學習到到概率是\(\frac{{\sum{T_i}}}{N - k}\) \(N\)是訓練樣本的數目,\(k\)是正樣本的數目,\(T_i\)是第\(i\) 個樣本的觀看時長,假設正例的樣本少到可以忽略, 點擊的概率是P, 學習到的觀看時長的可能性是\(E[T ](1 + P )\) ,由于\(P\)比較小,那么預測的結果接近\(E[T]\) .
在線推理階段,最后一層使用指數函式,來預測幾率,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554856.html
標籤:其他
上一篇:AtCoder Beginner Contest 305
下一篇:返回列表
