上一篇(結合論文看Youtube推薦系統中召回和排序的演進之路(上)篇)主要介紹的是Youtube發表的三篇論文,但主要集中在機器學習方向,接下來會用幾篇論文說明一下Youtube在深度學習推薦系統方向做的作業,
在介紹Youtube的DNN之前,先介紹一篇Google的非常經典的深度學習推薦演算法Wide & Deep,雖然Youtube 也屬于Google,這里之所以先介紹Wide & Deep,因為我個人覺得這應該是深度學習應用在推薦系統排序上的「基石」之作,而且其提出的框架也是非常的經典,
2016年-Google Wide & Deep
Wide & Deep的論文全稱為:《Wide & Deep Learning for Recommender Systems》,其首次發表應該是在2015年末,然后2016年的時候中了ACM的Deep Learning for Recommender Systems Workshop,
背景
該論文提出了一種深度學習排序模型的框架,主要是聯合線性模型和深度學習模型一起訓練的新的框架下的模型,
Wide 部分是一個廣義線性模型,因為具有非線性特征變換功能,而廣泛應用在分類和回歸上,通過特征之間的組合來對用戶的興趣進行排序是十分有效和可解釋的,然后依賴大量的特征工程,相對于線性模型而言,DNN不強依賴人工特征,但可能由于高維稀疏的特征而產生過擬合,
推薦系統的一個挑戰是同時滿足對歷史行為的總結和擴展,即Memorizaton 和 Generalization,其具體含義如下:
- Memorization:近似的被定義為學習物品或特征的共性,探索用戶歷史行為資料中的相關性,
- Generalization:基于相關性的傳遞,探索在歷史行為中很少或者沒有出現過的新特征組合情況,
這篇論文的主要貢獻分為以下三點:
- Wide & Deep聯合訓練具有嵌入的前饋神經網路和具有特征變換的線性模型,用于具有稀疏輸入的通用推薦系統
- WD在google應用商店上進行了線上測驗和評估
- 在TensorFlow API中貢獻了原始碼,方便呼叫
演算法
Wide & Deep演算法的原理可以使用下面的一張圖表示:

a)Wide部分
wide部分對應上圖中的左側部分,通常是一個廣義線性模型: y = w ? x + b y=w*x + b y=w?x+b,
- y y y:是要預測的結果
- x x x:是一組特征向量
- w w w:模型的引數
- b b b:偏置量
特征集合包含的是原始輸入和他們對應的特征轉換,其中一個比較重要的轉換是:cross-product transformation,其對應的公式如下:
?
k
(
x
)
=
∏
i
=
1
d
x
i
c
k
i
\phi k(x)=\prod_{i=1}^{d} x_i^{c_{ki}}
?k(x)=i=1∏d?xicki??
c
k
i
c_{ki}
cki? 屬于
0
,
1
{0,1}
0,1
上邊的公式實作的其實就是one-hot編碼,比如當gender=female,language=en時為1,其他為0,
b)Deep部分
deep部分對應上圖中的右側部分,是一個前饋神經網路,對于分類特征,原始輸入是字串(比如language=en),這些稀疏、高維的分類特征第一步是轉化為低維、密集的向量,這些向量通常在10-100維之間,一般采用隨機的方法進行初始化,在訓練過程序中通過最小化損失函式來優化模型,這些低維的向量傳到神經網路的隱層中去,
每個隱層的計算方式如下:
a
(
l
+
1
)
=
f
(
W
l
a
l
+
b
l
)
a^{(l+1)} = f(W^la^l + b^l)
a(l+1)=f(Wlal+bl)
其中:
- l l l:神經網路的層數
- f f f:激活函式(通常是relus)
- a l a^l al:第l層的輸出值
- b l b^l bl:第l層的偏置
- W l W^l Wl:第l層的權重
c)聯合訓練
wide部分和deep部分使用輸出結果的對數幾率加權和作為預測值,然后將其輸入到一個邏輯回歸函式用來聯合訓練,論文中強調了聯合訓練(Join training)和整體訓練(ensemble)的區別,
- Ensemble:兩個模型分別獨立訓練,只在最終預測的時候才將兩個模型結合計算;單個模型需要更大(比如進行特征轉換)來保證結合后的準確率
- Join trainging:在訓練時,同時考慮wide部分和deep部分以及兩個模型拼接起來的權重來同時優化所有的引數;wide部分可以通過少量的特征交叉來彌補deep部分的弱勢
wide & deep的join training采用的是下批量梯度下降演算法(min-batch stochastic optimization)進行優化的,在實驗中,wide部分采用的是FTRL+L1,deep部分采用的是Adag,
對于LR,模型的預測結果如下:
P
(
Y
=
1
∣
x
)
=
σ
(
w
w
i
d
e
T
[
x
,
?
x
]
+
W
d
e
e
p
T
a
(
l
f
)
+
b
)
P(Y=1|x)=\sigma (w^T_{wide}[x,\phi x] + W^T_{deep}a^{(l_f)}+b)
P(Y=1∣x)=σ(wwideT?[x,?x]+WdeepT?a(lf?)+b)
其中:
- Y Y Y:label
- σ ( . ) \sigma (.) σ(.):表示sigmoid函式
- ? ( x ) \phi (x) ?(x):原始特征x的交叉轉換
- b b b:偏置
- w w i d e w_wide ww?ide:wide模型的權重
- w d e e p w_deep wd?eep: a ( l f ) a^{(l_f)} a(lf?)的權重
系統實作
Google的團隊主要是再APP商店上進行了演算法的實驗,并取得了不粗的效果,APP商店的架構圖如下:

上圖主要包含了兩部分,一部分是檢索系統,一部分是排序系統,當用戶進入app store時,被視作是一次query查詢,伴隨著的是用戶維度和背景關系維度的特征,檢索系統會根據這些資訊通過模型或者人工制定的規則匹配到一些用可能點擊或者購買的APP,同時,這一次的請求行為會記錄在日志中作為訓練資料使用,
資料庫中包含了百萬級別的app,每次查詢推薦系統不可能對所有的app進行排序,因此第一步是挑選候選集,然后在使用排序系統對候選集中的每個APP進行打分,計算出來的分數為P(y|x),即通過特征x計算出來的用戶行為y的可能性,這些特征包括:
- 用戶維度的特征(城市,年齡,人口統計學特征等)
- 背景關系特征(設備,幾點請求,周幾請求)
- APP維度特征(app上線時長,app的歷史統計資訊)
app推薦系統實作如下圖所示,主要包含:資料準備,模型訓練,模型服務,

a)資料準備

用戶和app的展示資料用來生成訓練資料,每次展示對應一條樣本,label是用戶是否安裝推薦的app,安裝的話為1,否則為0,
分類特征映射成ID編碼類資料,連續型特征先映射到CDF(累積分布函式),再離散化到0-1,其離散化的方式如下:
x
=
i
?
1
n
?
1
x = \frac{i-1}{n-1}
x=n?1i?1?
含義:首先將資料分為n份,落入第i份的資料離散化后為
x
x
x
b)模型訓練

訓練的模型結構圖如上所示,wide部分的包含了用戶安裝app和展示app的交叉特征,deep部分每個分類特征生成32維的特征向量,連接所有的特征向量作為低維密集的特征,大約1200維,
論文中提到了一個注意點:如果每一次都重新訓練的話,將會花費大量的時間和精力,為了解決這個問題,采取的方案時熱啟動,即每次新產生訓練資料的時候,從之前的模型中讀取embedding和線性模型的權重來初始化新模型,在接入實時流之前使用之前的模型進行校驗,保證不出問題,
c)模型服務
為了保證每個請求都可以在 10 ms 內回傳結果,我們通過多執行緒并行運行來優化性能,而不是單個 batch 內對所有候選集的 score 進行計算,
總結
Memorization(記憶) and generalization(泛化)對于推薦系統而言很重,線性模型能夠有效的記錄特征之間的互動,神經網路模型能夠低維的嵌入特征泛化到可能的特征交叉組合,目前wide & deep一般是企業進行深度學習推薦系統嘗試的首選,而且在企業應用也十分廣泛,
同時由于Wide & Deep演算法的左右部分很容易被替換,因此也開辟了很多嘗試和實驗的可能性,
2016年-Youtube 深度學習推薦系統
這篇論文是Youtube2016年發表在RecSys上的,16年之前Youtube關于推薦系統的優化主要集中在機器學習方向(一般會再往前推1到2年,一般方案成熟時才會公布出來),自此開啟了深度學習與推薦系統的主要作業,下面我們來看看這一篇論文介紹的內容,
論文詳細介紹了Youtube是如何基于深度學習構建推薦系統的,包括召回部分和排序部分,下面的內容將會分為三部分進行介紹:
- Youtube 深度推薦系統概述
- 基于深度學習做召回
- 基于深度學習做排序
- 實踐經驗和見解
Youtube 深度推薦系統概述
整個推薦系統的架構如下圖所示,其中candidate generation為生成候選池的神經網路,主要負責從大量的內容中產出少量的用戶感興趣的候選集合,ranking為排序的神經網路,最終推薦少量用戶感興趣的內容給用戶,

兩階段推薦方法允許我們從大量視頻中進行推薦,同時確保設備上出現的少量視頻是個性化的,并且適合用戶,此外,這種設計允許混合由其他來源生成的候選源,
論文中在驗證推薦系統的好壞時,離線主要參考:精確率(precision,準確率是Accuracy)、召回率、loss值,線上主要通過ABTest來進行相關指標的驗證,比如點擊率、觀看時長等,
基于深度學習的召回
a)網路結構
深度學習召回模型的網路結構如下圖所示:

使用到的特征包括:
- 觀看序列視頻的平均embedding、搜索關鍵詞的平均embedding、其他序列embedding
- 用戶的地理位置資訊、設備資訊(embedding編碼之后的)
- 人口統計學特征(年齡、性別、登錄狀態等,并將其進行歸一化到[0,1])
然后將所有特征進行拼接,得到網路的原始輸入特征,
這里需要注意的是,論文中將推薦問題看成了多分類問題來進行模型的訓練,如下面公式所示:
P
(
w
t
=
i
∣
U
,
C
)
=
e
v
i
u
∑
j
∈
V
e
v
j
u
P(w_t = i| U,C) = \frac {e^{v_i u}} {\sum_{j \in V} e^{v_j u}}
P(wt?=i∣U,C)=∑j∈V?evj?uevi?u?
其中:
- U U U 表示 u s e r user user
- C C C 表示背景關系
- w t w_t wt? 表示 t t t時刻看到的視頻
- u u u 表示 u s e r user user的embedding編碼
- v v v 表示 v i d e o video video的embedding編碼
b)召回模型中注意的點
論文中提到使用深度學習構建模型的好處是可以很輕松的添加連續、類別特征,在構建模型的程序中有幾個需要注意的點:
- 1、雖然Youtube平臺上包括顯式反饋資料,但是構建資料集的時候采用的是隱式反饋,即用戶觀看了一個視頻,則視為一條正樣本
- 2、因為作為分類來進行模型的訓練,負樣本規模巨大,所以采用隨機負采樣的方法構建負樣本
- 3、使用word2vec等方法產出基礎的video embedding,并隨著模型的訓練和其他引數一起更新
- 4、論文中特意提到了一個特征:Age,視頻的年齡特征,因為用戶上傳的視頻隨著時間的變化,其流行度是極其不平穩的,如果忽略了這個特征,會引起一定的偏差,因此定義了視頻年齡這個特征,對于新上傳的視頻是0,論文中還特意提到引入時間特征和不引入時間特征的對比圖,如下所示,藍色的線為基本模型,紅色的線為增加了age特征,可以看出增加該特征后,模型預估的分布十分接近經驗分布,

- 5、構建用戶序列資料時,應該是基于全平臺的資料進行構建的,而不僅僅是推薦結果,這樣有利于新內容的建模
- 6、構建序列時每個用戶采用相同長度的序列,目的是降低活躍用戶的影響
- 7、打亂搜索序列資料,避免時序帶來影響
- 8、選取序列時,只使用label前的序列資料,避免引起資料穿越
- 9、視頻和搜索關鍵詞被編碼成256長度的embedding,序列長度為50
- 10、用戶的最終表示向量和視頻的最終表示向量維度要一致,然后才能做內積計算,如結構圖的右上角所示
c)在線召回
在線服務階段,通過視頻向量 v v v和用戶向量 u u u 進行相似度計算,為了滿足時延要求,在進行實際的召回計算時采用的是最近鄰查詢的方式,對于每個用戶向量 u u u,對視頻庫中的所有視頻根據向量 v v v做最近鄰演算法,得到top-N的視頻作為召回結果,
基于深度學習的排序
a)網路結構
排序模型的網路結構圖如下所示:

整個結構分為:
- 特征輸入拼接層:序列embedding特征,類別特征的embedding,連續特征的處理之后進行拼接
- 三層的神經網路:每層神經網路激活函式使用的是ReLU,最優得結構為: 1024 ? > 512 ? > 256 1024 ->512 ->256 1024?>512?>256
- 輸出層:在訓練時,采用得時加權得邏輯回歸,在線預測時,采用的是 e W x + b e^{Wx + b} eWx+b
b)特征表示
模型使用到的特征是非常豐富的,首先將特征分為:離散特征和連續特征(每類特征的處理方式不同),離散特征又可以劃分為二值的(比如登錄狀態,即是否登錄)和多值的(用戶搜索關鍵詞),連續特征主要是一些統計類特征,比如觀看時長,年齡等,
論文中提到一些獨特的特征構造和一些通用的特征處理方式,
1、特征構造
- 用戶會上傳視頻到指定的頻道,那么用戶在其上傳頻道下的觀看視頻次數是一個很重要的特征(也可以擴展到,用戶在需要排序的item所屬頻道下的觀看次數等統計指標)
- 用戶距離上一次觀看item所屬頻道下的視頻的時間
- 用戶的實時互動特征也特別重要,比如第一刷的時候,用戶對視頻產生了行為(正向的或者負向的),那么在第二刷的時候應該被體現到(但是這個比較依賴資料實時處理技術,對資料延遲不太友好)
- 其他的就是一些正常的特征構造技巧,但一些獨特的特征還是需要深入業務進行了解和挖掘
2、類別特征的embedding編碼
- 類別特征的embedding編碼可以采用基礎的word2vec技術進行向量生成,然后通過look-up的技術進行使用
- 但是如果類別特征基數特別大時,加載全量的embedding特征也很困難,因此論文中提到了一種方法:根據item的點擊次數,只生成top N的item embeding向量,剩余的采用0向量進行填充
- 同一ID空間中的分類特征也共享底層的embedding,盡管embedding進行了共享,但每個特征都被單獨的輸入到網路中,這樣上面的層就可以學習到每個特征的表示
- 共享embedding對于模型的泛化性、訓練速度和減少記憶體都是至關重要的
3、連續特征的歸一化和其他處理
- 首先論文提到神經網路對于輸入特征的縮放和分布是非常敏感的,而其他的例如樹模型對這些則不受影響,這在平時使用樹模型做排序和dnn模型做排序時也可以深深的體會到
- 特征的正則化處理對于特征的融合十分重要
- 這里提到了幾種對連續特征的處理方式,假設原始的連續特征為
x
x
x
- 累計分位點(標準化操作): x ~ = ∫ ? ∞ x d f \tilde{x} = \int_{- \infty}^{x} df x~=∫?∞x?df
- 累計分位點求根號(獲得特征次線性 sub-linear): x ~ \sqrt{\tilde{x}} x~ ?
- 累計分位點求平方(獲得特征超線性 super-linear): x ~ 2 \tilde{x} ^2 x~2
c)用戶觀看時長建模
模型的目標是預測用戶觀看時長,有點擊行為的為正樣本,有曝光但是無點擊的為負樣本,正樣本需要根據觀看時長進行加權,因此,訓練階段網路最后一層用的是 w e i g h t l o g i s t i c r e g r e s s i o n weight logistic regression weightlogisticregression
∑
T
i
N
?
k
\frac{\sum T_i} {N -k}
N?k∑Ti??
其中:
- N N N 表示總的樣本數量
- k k k 表示正樣本的數量
- T i T_i Ti? 表示第 i i i個樣本的觀看時長
一般來講,
k
k
k 相對
N
N
N 較小,因此上述公式的期望可以轉換成:
E
[
T
]
(
1
+
P
)
E[T] (1+P)
E[T](1+P)
其中:
- P P P 是點擊率
- E [ T ] E[T] E[T] 是曝光視頻的期望觀看時長
由于 P P P 較小,這樣目標期望接近于 E [ T ] E[T] E[T],因此線上預測階段,采用的時 e x e^x ex作為激勵函式,就是近似的估計期望觀看時長,
d)隱層網路的選擇

上圖展示了不同隱藏層網路選擇下的資料指標,從中可以看出采用三層的神經網路( 1024 ? > 512 ? > 256 1024 -> 512 -> 256 1024?>512?>256)效果是最好的(當然由于這里沒有列出更多的隱藏層選擇,可能是因為效果不好,或者線上預測時的延遲太高),
在選定網路結構之后,論文作者也嘗試了對連續特征歸一化后不進行超線性和次線性的特征擴展,loss增加0.2%;把weighted lr 換成lr,效果下降了4.1%,
實踐經驗和見解
論文中提出的召回和排序模型結構相比較矩陣分解類召回、樹模型排序等取得了不錯的效果,這也說明深度學習推薦系統是工業界的主流趨勢,我們應該擁抱深度學習推薦系統,
論文中很值得借鑒和思考的點其實在上面的內容中已經介紹到了,主要包括:
- 經典的三層的網路結構
- 序列特征的處理方式
- 連續特征的處理方式
- 離線模型的評估和模型的優化擴展對比
- 在線實驗ABTest
- CTR類模型中label的選取
- … …
這里推薦王喆老師的一篇文章,也是介紹youtube dnn的,思考點也很多:https://zhuanlan.zhihu.com/p/52169807
2019年-Youtube 基于多任務學習的排序
這篇論文是Youtube2019年發表在RecSys上的,這篇論文主要是針對推薦系統排序階段的多任務深度學習模型,下面我們來看看這一篇論文介紹的內容,
論文名稱:Recommending What Video to Watch Next: A Multitask Ranking System
下面的內容后半部分來自公眾號:「資料與智能」,老哥總結的很全面,所有遷移過來了,點贊!
背景
論文提出了一個在Youtube視頻分享平臺上基于當前觀看視頻預測用戶下一部要觀看的視頻的大型多目標視頻排序系統(其業務形態如下圖所示),論文聚焦于推薦排序階段,其面臨的真實業務場景中的挑戰主要體現在:
- 1、面臨多個不同甚至相互沖突的的排序目標;比如,我們希望用戶觀看某個視頻,并且還希望他能夠給視頻高評分并分享給他的好友
- 2、用戶對推薦結果隱式反饋產生的選擇偏差;比如用戶可能會觀看一個評分比較高(因此排在推薦串列的前面)的視頻但是用戶本身不是特別喜歡這個視頻
為了解決如上兩個現實問題,論文通過軟引數共享技術(soft-parameter sharing techniques,比如Multi-gate Mixture-of-Experts,簡稱MMoE)來優化多個排序目標,另外通過引入Wide & Deep框架,該模型增加一個整合了偏差資訊的淺層塔結構來解決選擇偏差問題,最終在Youtube上做在線AB測驗驗證,可以顯著提高多種排序目標的推薦質量,

相關作業
本部分作者主要探討三方面的內容:
- 1、工業推薦系統概況
- 2、多目標推薦系統
- 3、理解訓練資料中的偏差
a)工業推薦系統概況
大多數推薦系統包含兩部分:候選集的生成,排序,對于候選集的生成,可以使用多種演算法,比如基于共現的演算法、協同、基于圖的embedding表示法、矩陣分解等,排序側的演算法使用更是豐富,比如線性模型(pair-wise)、樹模型(point-wise)等LTR方法、基于point-wise的DNN演算法等,
更多關于LTR框架的知識可以參考:怎么理解基于機器學習“四大支柱”劃分的學習排序方法
論文中,首次明確了工業排序系統中的一個關鍵問題:用戶隱式反饋和用戶在推薦項上的真實反饋不一致問題,隨后,我們提出了一個深度神經網路排序模型,該模型使用多任務學習技術來支持多個排名目標,每個目標對應一種型別的用戶反饋,
b)多目標推薦系統
從訓練資料中學習和預測用戶的行為偏好是極具挑戰的,因為用戶的行為是豐富多樣的,比如點擊、評分、評論等,然后每種行為并不能真實的表現用戶的興趣,比如用戶點擊了一個item,但是用戶并不喜歡它,用戶可以僅僅對點擊的或者參與的其他item提供一個評分但是并不是真的喜歡它,
我們的排序系統需要有能力的、去學習和捕獲用戶的多種行為,然后結合這些估計去計算用戶最終的排序分數,
例如我們可以根據用戶的多種行為構建user-item的矩陣,但是這種方式在離線運行比較方便,線上實時排序時則失去了很好的擴展性,另一方面,許多存在的多目標排序系統是專為特定型別的功能和應用程式而設計,如文本和視覺,這些系統對于支持多目標任務的特征空間來講是具有很大的挑戰的,而其他考慮多種輸入特征的多目標排序系統由于其在有效共享多目標模型引數方面的局限性而無法擴展,
基于多任務學習的DNN已經廣泛應用于傳統的機器學習任務,比如表示學習、NLP、計算機視覺等,因此我們也可以將這些思路和做法移植和拓展到推薦系統上,
c)理解訓練資料中的偏差
用戶和推薦出的item之間的行為互動會產生選擇偏差,比如用戶點擊了一個排序系統推出的item,但是在整個語料庫中它可能并不是最有用的,
因此基于排序系統產出的訓練資料訓練的模型會向排序系統產生偏差,從而產生反饋回路效應,如何有效的學習研究排序系統中這樣的偏差情況是一個開放的問題,
Joachims等在論文《Evaluating the accuracy of implicit feedback from clicks and query reformulations in web search》首次分析了隱式反饋資料中的位置偏差和呈現偏差,以此訓練排序模型,通過比較點擊資料和顯式反饋的相關性,他們發現點擊資料中存在位置偏差,并且在估計查詢和檔案之間的相關性時可以顯著影響排序模型的學習,
選擇偏差指得是資訊流類的場景中,由于item的位置不同,用戶在進行點擊時會受到影響,這種一種選擇偏差,但一般去講選擇偏差時主要談的是位置偏差,因為分析表示,排在前邊的item點擊率是要比后邊的高,所以在文章中,會交替出現選擇偏差和位置偏差,我們可以理解是同一種意思,
一種常見的消除位置偏差的方法是將位置作為輸入模型的特征,在CTR模型中位置特征用來學習位置與目標的相關性概率: p ( r e l e v a n c e ∣ p o s ) p(relevance|pos) p(relevance∣pos),當在線預測時,另 p o s = 1 pos=1 pos=1,更加詳細的內容可以參考論文:《A dynamic bayesian network click model for web search ranking. In Proceedings of the 18th international conference on World wide web》
另外一種從位置中學習偏差的方法是將其作為一個正則化或標準化,通常要學習偏差項,需要使用失血隨機資料來推斷偏差項(稱為“全域偏差”,“傾向”)而不考慮相關性,在論文《Unbiased learning-to-rank with biased feedback》中,傾向得分(inverse propensity score,IPS)是通過反事實模型學習得到的,不需要隨機資料,在Rank-SVM模型中,位置特征被用作正則項,
在真實的推薦系統中,尤其是社會媒體平臺,比如說Twitter、Youtube,用戶的行為和item的流行趨勢變化的很快,IPS方法并不能很好的適用,因此在訓練排序模型時需要一種更加有效的方法去消除位置偏差,
問題描述
在真實的、稀疏的視頻推薦系統中,基于隱式反饋訓練排序模型需要考慮兩個重要的因素:
- 1、多模態特征空間,在一個背景關系感知的個性化推薦系統中,我們需要利用多模式生成的特征空間來學習候選視頻的用戶效果,例如視頻內容、縮略圖、音頻、標題和描述、用戶統計資訊,與其他的機器學習系統相比,從多模態特征空間中進行推薦的學習表示具有獨特的挑戰性, 它涉及兩個難題:
- 1、彌補低維內容特征的語意鴻溝,以此來實作內容的協同
- 2、從稀疏的專案空間中進行協作學習
- 2、可擴展性,主要指的是推薦系統的高效性和可擴展性
為了解決多模態特征空間問題:對于每個視頻,我們提取諸如視頻元資料和視頻內容信號之類的特征作為其表示,對于背景關系,我們使用諸如用戶人口統計,設備,時間和位置等特征,
為了解決系統的擴展性,采用了兩段式的推薦系統架構,即生成候選池、排序,
a)生成候選池
Youtube視頻推薦系統中依舊采用了多路召回的思路,比如:
- 匹配用戶搜索視頻的主題來進行召回
- 基于視頻的共現頻率進行的召回
- 基于序列模型的召回
- 基于背景關系的召回
最后將所有的召回形成一個集合,構建出候選池
b)排序
不同于候選池的生成,排序模型的主要目標是提供一個排序串列,用戶高概率會互動的視頻排列在前邊,因此,這里采用的是神經網路架構,以具有足夠的模型表達能力來學習特征的關聯及其與目標的關系,
模型架構
a)基本框架

模型的基本框架如上圖所示,最終的優化目標分為兩大類:
- 1、用戶參與度(engagement objectives)指標,比如點擊率、為用戶推薦視頻的用戶滿意度等
- 2、用戶滿意度(satisfaction objectives)指標,比如用戶點贊視頻、用戶給推薦視頻的評分等
為了學習和估計多樣的用戶行為,該模型基于wide & deep模型架構做了拓展,采用MMoE技術來自動學習多個可能存在沖突的目標的共享模型引數,上圖中間偏右的Mixture-of-Experts模塊從多種輸入資料源中學習資料不同維度的特征,每個維度可以類比為某個方面的“專家”(Experts),再通過使用多個門控網路(Gating Networks)模塊(見上圖中間部分),不同的學習目標可以選擇不同的或者共享的”專家“來最終優化多目標任務,
為了減少從有偏差的訓練資料中產生的模型偏差(比如位置偏差),該模型加入了一個淺層塔(shallow tower)模塊(見上圖左邊藍色的shollow tower模塊),這個模塊可以類比wide & deep模型中的wide部分,該模塊通過整合推薦的視頻的位置資訊等可能產生偏差的資訊,最終作為主模型的偏差項(淺塔模型輸出是一個具體的數值)整合進主模型進行學習,而在推斷時,可以將位置引數設定為pos=1來消除位置產生的影響,
論文的主要貢獻點:
- 引入一個端到端的推薦排序模型
- 將排序模型抽象為一個多任務學習問題,并且利用MMoE技術優化多目標學習
- 通過采用wide & deep架構,引入淺層塔結構避免位置偏差
- 通過在Youtube上進行AB測驗,證明可以大幅度提升模型的效果
b)系統概述
論文中的排序系統學習兩類用戶反饋:
- 用戶參與行為(如點擊、播放等)
- 用戶滿意度行為(喜歡、不喜歡等),
對每個待排序的候選視頻,排序模型利用候選視頻的特征、query(如用戶播放歷史或者用戶人口統計學特征等)、背景關系(如觀看時的時間等)作為輸入來預測多種用戶行為
采用LTR(learning to rank)框架,將預測問題建模為分類或者回歸問題,具體是利用point-wise方法,而不是pair-wise或者list-wise LTR方法,主要是因為point-wise更簡單,可以有效地拓展到大規模的候選集排序中,盡管pair-wise和list-wise方法可以增加預測結果的多樣性,
c)排序目標的定義
排序模型利用用戶的行為作為訓練的label,在「b)系統概述」中提到排序模型預測參與性目標與滿意性目標,對于參與度目標(如點擊與播放),將預測行為建模為二分類任務(如點擊) 和回歸任務(如用戶播放時長)兩大類,類似地,對于滿意度目標,也可以建模為二分類任務和回歸任務兩大類,比如,喜歡某個視頻可以看成是二分類任務,對視頻進行評分可以看成是回歸任務,對于二分類任務,可以采用交叉熵(cross entropy)損失函式,而對于回歸任務,可以采用平方損失函式,
一旦多任務排序的目標和建模問題型別確定了,我們可以訓練多任務排序模型來進行最終的排序,對任意一個候選視頻,我們通過多個目標預測模型的輸入獲得一個綜合得分(通過多個預測模型得分的加權乘積,權重通過手動調整,需要權衡用戶參與度和滿意度目標),
d)利用MMoE來對任務的相關性和沖突性建模

多目標排序系統的學習一般使用一個共用的底層模型(如上圖左邊的網路結構),但是硬編碼的引數共享往往對學習多目標是有副作用的,特別是當這些不同學習任務相關性很低時,為了避免這種情況,這篇論文采用了MMoE技術,MMoE采用軟引數共享結構,可以消除多任務目標中的存在沖突的目標,
MMoE采用Mixture-of-Experts(MoE)結構應對多任務學習,讓多個任務共享這些“專家”,同時,每個任務配備一個訓練好的門控網路(gating network)來協調不同“專家“所起的作用,相比于共享的底層模型結構,MMoE需要更少的引數,MMoE的核心思想是對每個學習任務將共享的ReLU層替換為MoE層并加上門控網路,
推薦排序系統通過在共享的隱含層之上增加”專家“層(如上圖右邊網路結構),讓最終的模型可以從輸入中學習模塊化的資訊,在輸入層或者隱含層之上增加”專家“層,最終可以更好地對多模態的特征空間進行建模,但是直接加在輸入層之上會增加模型訓練和推斷的時間開銷(因為輸入層維度相比隱含層包含更多的引數,引數越多,訓練效率往往越低),因此該論文采用”專家“層直接加在隱含層之上的方法,
該模型的”專家“網路是利用ReLU作為激活函式的多層感知機,對于任務
k
k
k 和預測值
y
k
y_k
yk?及最后一個隱含層
h
k
h^k
hk,包含
n
n
n個"專家"的MMoE層在任務
k
k
k上的輸出為:
f
k
(
x
)
f^k(x)
fk(x),可以用如下方程來表示:
y
k
=
h
k
(
f
k
(
x
)
)
w
h
e
r
e
f
k
(
x
)
=
∑
i
=
1
n
g
(
i
)
k
(
x
)
f
i
(
x
)
y_k = h^k (f^k(x)) \\ where f^k(x) = \sum_{i=1}^{n} g_{(i)}^k (x) f_i(x)
yk?=hk(fk(x))wherefk(x)=i=1∑n?g(i)k?(x)fi?(x)
這里
x
∈
R
d
x \in R^d
x∈Rd 是共享隱含層的低維嵌入向量,
g
k
g^k
gk是任務
k
k
k的門控網路,
g
k
(
x
)
∈
R
n
g^k(x) \in R^n
gk(x)∈Rn 是第
i
i
i 個分量,而
f
i
(
x
)
f_i(x)
fi?(x) 是第
i
i
i 個"專家",門控網路是輸入通過簡單線性變換后再經過softmax變換,即:
g
k
(
x
)
=
s
o
f
t
m
a
x
(
W
g
k
x
)
g^k(x) = softmax(W_{g^k}x)
gk(x)=softmax(Wgk?x)
這里, W g k W_{g^k} Wgk?是線性變換的自由引數,“專家"的數量可以設定為很多個,但是論文構建的模型中只用少量的"專家”,期望"專家"可以被更多的任務共享,這樣做主要是期望提升模型的訓練效率("專家"數越多引數越大),
e)通過整合淺層塔結構提出位置等帶來的偏差
隱式反饋資料被廣泛用于排序學習模型的訓練中,從用戶行為日志中可以獲得大量的隱式反饋資訊,因此可以利用復雜的神經網路模型來學習排序特征,但是,很多隱式反饋是從推薦排序系統的產品互動中產生的(我們通過給用戶推薦視頻,用戶點擊推薦的視頻產生隱式反饋行為),因此是帶有偏差的,位置偏差(推薦的視頻在推薦串列中所排的次序)及其他型別的偏差被大量研究者在排序學習模型中所證實,
在我們的排序系統中,這里的查詢請求是當前用戶正在觀看的視頻(如果將推薦問題看成一個搜素問題,那么當前在看的視頻可以等價于搜素的查詢關鍵詞),候選視頻是相關的視頻,用戶通常傾向于點擊并觀看顯示在串列頂部的視頻,而不管這些視頻的真實用戶效用(與觀看視頻的相關性、用戶的偏好)如何(這是一種先入為主的效應,因此會產生位置偏差),我們的目標是從排序模型中消除這種位置偏差,在我們的訓練資料中或在模型訓練程序中通過建模減少選擇偏差可以提升模型質量,
我們的模型采用跟wide & deep類似的結構,將模型預測分解為兩個部分:來自主塔的用戶效用(user-utility)部分和來自淺層塔的偏差部分,具體地說,我們訓練一個包含選擇偏差(如位置偏差)特征的淺塔模型,然后將其輸出添加到主模型的Logit中,如下圖5所示,在訓練中,使用所有視頻的位置資訊,采用drop-out的思路,隨機丟棄10%的位置資訊,以防止我們的模型過度依賴位置特征,在模型推斷期間,將位置特征設定為缺失值(這樣所以視頻的位置資訊都不考慮了,從而剔除了位置偏差),同時我們將位置特征與設備特征交叉(是因為在不同型別的設備上觀察到不同的位置偏差),

排序模型核心亮點解讀
通過上面的詳細講解,我們介紹完了這篇非常有工程參考價值的推薦排序學習模型,在這一節我們來梳理一下該模型的核心亮點,這些點都是值得我們參考借鑒的,
a)通過多任務學習來進行排序
該模型通過將用戶的行為分為參與度行為與滿意度行為兩大類,作為獨立的任務,通過機器學習中的多任務學習框架來建模,參與度行為更多的是隱式反饋,而滿意度行為更多的用戶的主動反饋,在同一個模型中整合這兩類反饋可以充分利用已知資訊,提升模型的精準度,使用多種型別的隱式反饋信號和多個排序目標,我們獲得了更多調控手段,更好地平衡模型預測結果和用戶真實興趣之間的關系,
b)通過MMoE技術來平衡多目標
有了多任務框架,那么怎么來學習和平衡這兩類任務呢?MMoE框架通過在不同任務之間共享“專家”的方式來更好地平衡多任務之間的沖突和相關關系,可以更好地學習多任務模型,這個思想是非常樸素的,不同的”專家“有不同的優點和特長,不同任務通過在不同“專家”上學習到不同的權重引數分布(可以簡單理解為選擇適合自己的“專家”),最終達到更好地刻畫每個任務的目的,最終提升整體模型的效果,
分布式訓練一般可能會導致模型發散,在MMoE模型中,采用softmax激活函式的門控網路會導致“專家”分布不平衡的問題,最終導致很多“專家”的效用為0,該論文作者在實驗中發現大概20%的概率會出現這種情況,作者采用drop-out的方式來解決了該問題,具體就是采用10%的概率隨機設定”專家“的效用為0,并且重新歸一化softmax的輸出,
c)通過整合位置資訊來消除偏差
采用wide & deep的雙塔結構,在淺層塔中通過整合位置資訊,讓模型學到位置偏差,最終在模型推斷時剔除掉位置偏差,從而讓模型有更好的表現,位置偏差等選擇偏差是推薦演算法工程師在構建推薦模型中很少會考慮的(但是一般是會意識到這個問題的)的一類影響因子,該模型提供了一種消除位置偏差的解決方案和思路,
d)按照時間序將資料灌入模型訓練
作者按照樣本產生的時間順序依次訓練模型,先訓練之前的資料,當有新的樣本產生時再將新樣本加入訓練中,通過這樣做,模型可以適應最新的資料,這對于許多實際的推薦應用來說是非常關鍵的,在這些實際應用中,資料分布和用戶模式會隨著時間的推移而動態變化,
建模程序中面臨的挑戰
在構建YouTube排序推薦模型程序中會面臨很多問題與挑戰,這里我們簡要整理一下,本篇論文對這些問題與挑戰給出了相應的解決方案,在前面都有所講解,這些問題及經驗教訓值得我們多思考,
a)構建基于神經網路的推薦排序演算法面臨的問題
許多推薦系統研究擴展了最初為傳統機器學習應用設計的模型體系結構,如自然語言處理的multi-headed attention和計算機視覺的cnn演算法,然而,許多適合于特定領域的表示學習的模型體系結構并不直接適用于YouTube的推薦需求,這是由于:
多模態特征空間
YouTube排序模型依賴多種資料源的特征,這些特征包括類別特征、文本、影像等等,從混合特征中進行學習是非常有挑戰的,
可拓展性及多目標排序
很多模型結構被設計來建模某種資訊,它們在提升某個目標的同時可能損害另外一個目標,通過構建復雜的模型結構來處理多目標又往往無法拓展到大規模資料場景,
包含噪音及區域稀疏的資料
排序系統需要訓練視頻和查詢的嵌入向量,然而,大多數稀疏特性遵循冪律分布,并且在用戶反饋上有較大的差異,比如,在同一條件下,用戶可能會播放或者不播放一個視頻僅僅由于推薦視頻的視頻海報圖清晰度上的一點點差異,而這些差異又很難被演算法捕捉到,因此,對于長尾內容訓練出好的嵌入表示是非常困難的,
利用mini-batch隨機梯度下降法來分布式訓練
當資料量大,模型表達能力強(模型復雜,引數多)時,必須要用分布式技術進行訓練,這本身在工程上就是一件非常有挑戰的事情(需要搭建分布式計算平臺來支持模型訓練,還要實作分布式演算法),論文作者基于TensorFlow利用TPU來訓練模型,利用TFX(見參考文獻7)來提供生產服務,
效果與效率的平衡
在工業級推薦系統中,效率除了影響請求時間外,也會影響用戶體驗,過于復雜的模型會顯著增加生成視頻推薦結果的延遲,從而降低用戶滿意度和在線指標,因此,我們通常更熱衷于使用更簡單、更直接的模型,
b)訓練資料中的偏差
除了位置偏差外,模型可能還存在其他種類的偏差,這些偏差可能是未知的,自動化地學習和捕獲這些偏差本身就是一個非常復雜的問題,
c)模型評估面臨的挑戰
由于排序模型使用隱式反饋,線下評估好的模型上線后不一定真實的線上指標就好,甚至有時真實線上指標效果會更差,一般來說,可以選擇一個簡單的模型,這樣可以更好地推廣到線上,產生相對較好的結果,也就是說,簡單的模型能更好地保證線下和線上指標的一致性,
優化方向
論文作者在文章最后總結了幾個對該模型進行優化的方向,具體包含如下3點:
a)探索新模型架構,在穩定性、可訓練性、強表達能力等三方面達到平衡
MMoE技術通過靈活選擇哪些“專家”可以共享來提升多任務排序模型的性能,參考文獻5提供了另一種架構,除了可以保證模型性能外,還能提升模型穩定性,是值得研究的一個方向,
b)理解和識別偏差
為了對已知和未知的偏差進行建模,探索從訓練資料中自動識別潛在偏差并學習如何減少這些偏差的模型架構和目標函式是一個值得研究的方向,
c)模型壓縮
為了降低請求延遲,可以使用不同型別的模型壓縮技術(見參考文獻6),減少模型大小,從而提升處理效率,
總結
該論文通過構建多任務學習模型,利用MMoE技術來平衡多個任務之間的相關或者沖突關系從而更好地平衡多個目標,同時將位置偏差資訊整合進模型,消除偏差影響,最終達到非常好的線上效果,
從這篇文章出發,我們可以進行更深入的思考,比如視頻一般是包含貼片廣告的,增加貼片廣告(從而為公司創造廣告收益)和用戶體驗之間也是一對沖突的目標,是否可以采用多任務學習的方式來尋求廣告收益和用戶體驗的平衡呢?除了位置偏差外,視頻海報的顏色、清晰度是否會產生偏差呢?怎么通過將這些因素引入模型解決相關的偏差呢?這些都是值得探索的問題,相信本文給我提供了很好的思路,為我們指明了探索的方向,
掃一掃 關注微信公眾號!號主 專注于搜索和推薦系統,嘗試使用演算法去更好的服務于用戶,包括但不局限于機器學習,深度學習,強化學習,自然語言理解,知識圖譜,還不定時分享技術,資料,思考等文章!
CSDN認證博客專家
圖書作者
推薦系統研究者
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253578.html
標籤:AI
上一篇:開放公開,火力全開(第二部分)
