今天給大家介紹一篇相當(dāng)棒的經(jīng)典推薦領(lǐng)域的論文《Deep Neural Networks for YouTube Recommendation》,這篇文章主要介紹如何將深度學(xué)習(xí)應(yīng)用在推薦。
1 整體結(jié)構(gòu)
YouTube視頻目前服務(wù)于10億的用戶量,每天視頻庫(kù)也在大量的增長(zhǎng),面對(duì)這樣一個(gè)場(chǎng)景,YouTube的挑戰(zhàn)主要有:
1、規(guī)模大?。╯cale)
目前推薦算法主要都是針對(duì)相對(duì)較小的規(guī)模,而YouTube則需要強(qiáng)大的分布式學(xué)習(xí)算法已經(jīng)強(qiáng)大的在線服務(wù)能力
2、新鮮度(freshness)
YouTube每天都在上傳大量的視頻,如何快速把新鮮的視頻推薦給用戶以及如何權(quán)衡過去高質(zhì)量的視頻推薦。
3、噪聲
視頻推薦也較難獲得用戶的滿意反饋,往往也只能從隱性反饋中學(xué)習(xí),這也造成噪聲不可避免,加上用戶的行為稀疏性和多樣性。因此尋找一個(gè)穩(wěn)定的訓(xùn)練集和特征是重要的。
借助Google Brain的強(qiáng)大計(jì)算力,問題1這個(gè)基本也都不是問題了,這篇論文的推薦架構(gòu)也是經(jīng)典的兩階段方法,但是在很多細(xì)節(jié)處理上有許多值得我們借鑒的地方,下面就簡(jiǎn)單聊聊(不論是視頻推薦,很多排序算法也可以參考這個(gè)做法來(lái)做)
2 召回模塊(候選集生成Candidate Generation)
這里描述的方法其實(shí)也是一種矩陣分解的方法,早期做法是通過淺層網(wǎng)絡(luò)來(lái)模擬矩陣分解,而且僅僅對(duì)用戶的觀測(cè)歷史進(jìn)行embedding,從這個(gè)角度來(lái)看,本文做法可以看成是一個(gè)非線性的分解技術(shù)。
2.1 特征表示階段
這里把候選集推薦當(dāng)成一個(gè)多分類問題:根據(jù)用戶以及當(dāng)前上下文特征,為用戶在t時(shí)刻推薦一個(gè)視頻,其中視頻來(lái)源于視頻池,表示為:
其中u表示用戶和context的組合embedding,v表示視頻embedding,因此我們的目標(biāo)是通過神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)瀏覽歷史和上下文的embedding function來(lái)表征用戶,然后一個(gè)softmax分類器來(lái)判斷哪個(gè)視頻被預(yù)測(cè)概率最大。
用戶特征主要來(lái)源如下幾個(gè)特征拼接:
- 一段時(shí)間內(nèi)的觀看歷史視頻的average embedding (這里用到的video的embedding也是最后softmax里的video embedding)
- 一段時(shí)間用戶搜索(query)的關(guān)鍵詞的average embedding
- 用戶的年齡特征
- 性別特征
- 地理位置/設(shè)備型號(hào) embedding
- example age :表示視頻上傳時(shí)間距離當(dāng)前時(shí)間差(時(shí)間差越小表示視頻越新鮮)
特征拼接后經(jīng)過幾層的全鏈接層(激活函數(shù)采用ReLU)
這里用戶的query特征主要是由unigram和bigram來(lái)表征,然后訓(xùn)練各自的embedding。
地理位置信息對(duì)于新用戶來(lái)說(shuō)是個(gè)非常重要的特征,YouTube把用戶地理位置和設(shè)備型號(hào)都進(jìn)行embedding。對(duì)于簡(jiǎn)單的二值/連續(xù) 特征,則采用mult-hot/one-hot的編碼方式。
example age這個(gè)特征則表示視頻的新鮮度,YouTube有根據(jù)這個(gè)特征來(lái)模擬其流行度。
2.2 訓(xùn)練階段
由于只能通過用戶的隱性反饋來(lái)獲取正負(fù)樣本,YouTube定義完成一個(gè)視頻觀看作為正樣本。由于視頻的候選集十分巨大(至少百萬(wàn)級(jí)/千萬(wàn)級(jí)),因此傳統(tǒng)的softmax訓(xùn)練非常慢而且效果不理想,這里采用了負(fù)采樣的方法進(jìn)行訓(xùn)練,在進(jìn)行負(fù)采樣的時(shí)候也采用importance weighting。文章中也提到不采用Hierarchical softmax的原因。
For each ex ample the cross-entropy loss is minimized for the true label and the sampled negative classes.
In practice several thousand negatives are sampled, corresponding to more than 100 times speedup over traditional softmax.
2.3 在線服務(wù)
每次推薦的時(shí)候都計(jì)算所有視頻池然后排序,需要消耗大量的時(shí)間。這里打分問題被看成一個(gè)最近鄰搜索問題。這是個(gè)很棒的技巧,可以預(yù)計(jì)算好所有視頻的embedding,然后通過大規(guī)模的最近鄰搜索算法直接根據(jù)(U,C)的embedding尋找TopN視頻即可。
做推薦的同學(xué)都知道,如果僅僅使用模型推薦的結(jié)果曝光和點(diǎn)擊數(shù)據(jù)來(lái)進(jìn)行訓(xùn)練,會(huì)陷入一個(gè)局部最優(yōu),而且導(dǎo)致新的內(nèi)容無(wú)法被挖掘出來(lái)。
It is important to emphasize that recommendation often involves solving a surrogate problem and transferring the result to a particular context.
Training examples are generated from all YouTube watches (even those embedded on other sites) rather than just watches on the recommendations we produce. Otherwise, it would be very difficult for new content to surface and the recommender would be overly biased towards exploitation.
另外一個(gè)要注意的問題就是label的選擇,在一個(gè)序列中,如果某個(gè)視頻Vt被選為預(yù)測(cè)對(duì)象,那么應(yīng)該把Vt以前的觀看歷史作為輸入特征,不能泄露Vi(i=t+1, t+2,...)的信息,例如下圖(b)
3 排序模塊
初步篩選之后,可能選擇近百個(gè)視頻進(jìn)行排序。但影響用戶點(diǎn)擊與否的特征不單單是視頻內(nèi)容,還有包括視頻的圖片信息,因此這個(gè)階段需要更多的特征來(lái)進(jìn)行精細(xì)排序。雖然深度學(xué)習(xí)為我們特征工程減輕了負(fù)擔(dān),但特征還是需要精心設(shè)計(jì)。
我們先看下排序階段的模型架構(gòu)圖:
其實(shí)工作重心依然是在特征工程
- 某個(gè)視頻是否會(huì)被用戶喜歡,很大程度和該用戶是否觀看過同類視頻的特征相關(guān),因此同類視頻的觀看次數(shù)、上一次觀看同類視頻的時(shí)間距離(如圖的time since last watch)都可以作為特征
- embedding categorical features 同召回階段
- 神經(jīng)網(wǎng)絡(luò)對(duì)輸入特征的scale是敏感的,因此歸一化很重要,除了對(duì)原始值進(jìn)行歸一化,我們可以通過其他方式表征連續(xù)型變量的特征:power(x, 2), sqrt(x) 等
- 待推薦的視頻被曝光的次數(shù)也可以作為特征,如果曝光次數(shù)越多,往往被再次點(diǎn)擊的可能性較低。
訓(xùn)練階段
這里不是僅僅把點(diǎn)擊作為正樣本,未點(diǎn)擊作為負(fù)樣本,而是利用觀測(cè)時(shí)間進(jìn)行加權(quán),這里稱為weighted logistic regression技術(shù)
Our goal is to predict expected watch time given training examples that are either positive (the video impression was clicked) or negative (the impression was not clicked). Positive examples are annotated with the amount of time the user spent watching the video. To predict expected watch time we use the technique of weighted logistic regression, which was developed for this purpose.
其實(shí)就是加權(quán)的邏輯回歸,在計(jì)算損失函數(shù)的時(shí)候,加上用戶觀看視頻的時(shí)間因子作為權(quán)重
The model is trained with logistic regression under cross-entropy loss .
However, the positive (clicked) impressions are weighted by the observed watch time on the video.
Negative (unclicked) impressions all receive unit weight
具體的參數(shù)配置以及l(fā)oss情況如下表所示
最后文章也提到該方法相對(duì)于之前的矩陣分解技術(shù)有很大的提升
Our deep collaborative filtering model is able to effectively assimilate many signals and model their interaction with lay- ers of depth, outperforming previous matrix factorization approaches used at YouTube .