谷歌最新双塔DNN召回模型——应用于YouTube大规模视频推荐场景
“?谷歌基于雙塔DNN框架提出一個大規(guī)模最近鄰召回系統(tǒng),為降低采樣偏差帶來的影響,文章對batch softmax的損失函數(shù)進(jìn)行了改進(jìn),同時從工程的角度介紹了大規(guī)模雙塔DNN召回模型的訓(xùn)練、部署、應(yīng)用等細(xì)節(jié)”
文章來源:https://zhuanlan.zhihu.com/p/128988454?點擊文末【閱讀原文】關(guān)注專欄及時獲得更多更新!
一、創(chuàng)新點
1、文章將視頻召回問題看做一個多分類問題,為解決全庫數(shù)據(jù)量巨大難以高效快速訓(xùn)練的問題,文章采用采樣的方式來處理實時流數(shù)據(jù),同時提出一種新的算法用于估計某個視頻從實時流中被采樣的概率,這個概率用于對損失函數(shù)進(jìn)行優(yōu)化
2、文章基于雙塔DNN框架提出一個大規(guī)模最近鄰召回系統(tǒng),為降低采樣偏差帶來的影響,文章對batch softmax的損失函數(shù)進(jìn)行了改進(jìn)
3、文章同時從工程的角度介紹了大規(guī)模雙塔DNN召回模型的訓(xùn)練、部署、應(yīng)用等細(xì)節(jié)
二、論文背景
本文提出的雙塔DNN模型主要使用在類似于猜你喜歡這種場景下,即當(dāng)你在YouTube上觀看某個視頻時,下方或者右側(cè)會給你推薦一些其他的視頻,這些視頻會經(jīng)過召回——排序——重排序等過程最終展現(xiàn)給用戶,而如何從海量的候選視頻庫中精準(zhǔn)的篩選出用戶更加感興趣的視頻是論文主要關(guān)注的地方。
YouTube視頻推薦
一般在推薦場景下,實時性是十分重要的,一些熱點新聞、資訊、視頻都需要及時的推送給用戶。同時像YouTube這種用戶量巨大的視頻網(wǎng)站,如何在滿足實時性的基礎(chǔ)上,對海量的用戶進(jìn)行精準(zhǔn)的個性化召回、排序與最終進(jìn)行推薦是技術(shù)人員亟待解決的。YouTube將視頻召回看做一個多分類問題,多分類問題中最常使用的激活函數(shù)就是softmax,但是要知道YouTube上視頻素材庫中的視頻數(shù)量是巨大的,當(dāng)類別數(shù)量特別大時,使用softmax來訓(xùn)練模型是比較耗時的。所以一種常用的方法就是進(jìn)行采樣,采樣理所當(dāng)然會有一定的偏差,無法保證采樣后的分布和原始數(shù)據(jù)分布是一樣的,這樣模型學(xué)習(xí)到的將會是錯誤的分布從而影響模型的效果,所以文章一方面對損失函數(shù)進(jìn)行了改進(jìn)(加權(quán)對數(shù)似然函數(shù)),另一方面提出了一種對采樣概率進(jìn)行自適應(yīng)修正的算法,
三、整體框架
「1、損失函數(shù)」
整個召回系統(tǒng)采用的是雙塔結(jié)構(gòu),即分別構(gòu)建請求側(cè)的Embedding和視頻側(cè)的Embedding,兩個塔的輸出就為各自的embedding向量,最終模型的輸出為兩個Embedding內(nèi)積后的結(jié)果,即
文章將視頻召回看做一個多分類的問題,通常各個類別的權(quán)重都為1,但是在該場景中,文中引入了一個用戶偏好的權(quán)重(用戶觀看某視頻的時長),由于是多分類問題,將模型的輸出經(jīng)過一個softmax函數(shù)之后得到具體對應(yīng)的label,softmax函數(shù)如下
基于上述softmax函數(shù)的輸出和用戶偏好權(quán)重,損失函數(shù)采用加權(quán)對數(shù)似然函數(shù)的形式,具體如下
當(dāng)視頻素材庫的視頻數(shù)量巨大時(M非常大),計算上述的softmax函數(shù)是十分低效且不太現(xiàn)實的,所以一個常用的方法就是對全量的視頻集合進(jìn)行采樣,傳統(tǒng)的做法是訓(xùn)練所需的負(fù)樣本從固定的集合中采樣得到,但是論文中的做法是對實時流中的數(shù)據(jù)采樣出一個batch,訓(xùn)練的負(fù)樣本即這個batch中的負(fù)樣本,但是這樣就會引入偏差,即熱門的一些視頻有更大的可能成為負(fù)樣本,所以文章對上文中兩個embedding向量計算得到的內(nèi)積進(jìn)行了logQ修正,即
其中pj表示的是視頻j被隨機選中到batch中的采樣概率。基于此經(jīng)過修正后的softmax函數(shù)的輸出以及修正后的損失函數(shù)如下所示
然后利用SGD即可進(jìn)行參數(shù)的更新。具體的模型訓(xùn)練算法如下所示
「上述模型訓(xùn)練過程可以歸納為:」
(1)從實時數(shù)據(jù)流中采樣得到一個batch的樣本
(2)基于下文即將提到的采樣概率估計算法得到采樣概率pi
(3)計算上文介紹的修正后的損失函數(shù)
(4)利用SGD更新模型參數(shù)
「2、采樣概率修正」
這部分主要對采樣概率進(jìn)行估計,這里的核心思想是假設(shè)某視頻連續(xù)兩次被采樣的平均間隔為B,那么該視頻的采樣概率即為1/B,如果該商品上一次被采樣的時刻為A的話,那么當(dāng)該商品在時刻t被采樣時,文章提出的算法利用A輔助更新B,即
文章這里給出的是矩陣的形式,可以認(rèn)為上式中的函數(shù)h()是一個hash函數(shù),他將某個視頻的id映射到具體的索引上,然后利用該索引從矩陣B和矩陣A中分別得到該商品對應(yīng)的平均采樣間隔和上一次該商品被采樣的時刻,從而進(jìn)行梯度更新。當(dāng)B更新完之后,需要對A進(jìn)行更新(將時刻t賦值給A)。整體采樣頻率檢測算法如下所示
具體的證明過程可以參考論文中的描述,這里不做贅述
「3、其他」
(1)近鄰搜索:當(dāng)模型訓(xùn)練完成之后,我們首先可以對候選視頻進(jìn)行inference得到視頻側(cè)的embedding向量,并對這些embedding構(gòu)建索引用于線上查詢使用,當(dāng)線上有用戶側(cè)的請求到來是,模型只需要首先對該用戶進(jìn)行預(yù)測得到請求側(cè)的embedding,然后從構(gòu)建好索引的視頻側(cè)embedding中檢索出top視頻即可,這里需要說明的是很難進(jìn)行最近鄰的搜索(線上耗時的考慮),所以會采用一些近似最近鄰的檢索算法或者方式進(jìn)行處理
(2)歸一化處理:文章提到對兩個塔輸出的embedding向量進(jìn)行歸一化處理后會有效果上的提升,同時對歸一化后的內(nèi)積值引入了一個超參數(shù)用來調(diào)整最終的輸出
(3)模型分布式訓(xùn)練:論文中對模型分布式訓(xùn)練進(jìn)行了簡要的介紹,具體可以參考論文中的表述
(4)hash沖突:由于在采樣頻率估計中使用到了hash算法,會在一定程度上存在hash沖突的問題,為了解決該問題,文章提出了一種改進(jìn)的采樣頻率估計算法,感興趣的可以具體參考盧文中的介紹,具體改進(jìn)算法如下
四、模型結(jié)構(gòu)與線上部署
雙塔DNN模型的結(jié)構(gòu)與索引構(gòu)建流程如下圖所示,
論文中對模型的結(jié)構(gòu)、使用的特征進(jìn)行的詳細(xì)的介紹,都是一些比較常規(guī)的特征處理方法,具體可以詳細(xì)參考論文中的描述,而且具體部署時候的方法與之前我們實際業(yè)務(wù)中的部署方案類似,感謝興趣的可以同時參考下之前的文章。
向量化召回在360信息流廣告的實踐
五、實驗結(jié)果
這里只貼出線上AB實驗的效果,論文中還花了大量的篇幅對其他的超參數(shù)進(jìn)行了詳細(xì)的分析與對比,具體可以參考論文中的分析。線上A/B Test的結(jié)果如下圖所示
線上A/B Test結(jié)果
plain-sfx表示不通過概率對采樣偏差進(jìn)行修正,correct-sfx表示修正采樣偏差,可以看到修正后效果更為顯著。
六、總結(jié)
論文詳細(xì)介紹了工業(yè)界應(yīng)用雙塔DNN模型解決大規(guī)模視頻召回場景下的問題,同樣是一篇工程性很強的論文。相信很多人對雙塔DNN模型并不陌生,也有很多公司實際在這么做(也包括我所在的公司),但是文章中提到的很多細(xì)節(jié)問題可能是我們平時所忽略的(國內(nèi)公司快糙猛,有效果就趕緊上線,之后再看要不要迭代優(yōu)化),比如對embedding進(jìn)行歸一化處理、對embedding內(nèi)積引入修正系數(shù)、線上如何進(jìn)一步提高檢索效率等。所以如果真的需要在實際業(yè)務(wù)中應(yīng)用類似的架構(gòu)設(shè)計,推薦大家去看一下原始的論文。
參考資料
-
Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations
總結(jié)
以上是生活随笔為你收集整理的谷歌最新双塔DNN召回模型——应用于YouTube大规模视频推荐场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么可以让额头长出头发
- 下一篇: 因果推断在阿里文娱用户增长中的应用