
本文介紹的論文題目是:《Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations》
論文下載地址是:https://dl.acm.org/citation.cfm?id=3346996
本文是谷歌工業(yè)風(fēng)論文的新作,介紹了在大規(guī)模推薦系統(tǒng)中使用雙塔模型來做召回的一些經(jīng)驗(yàn),值得細(xì)細(xì)品讀。本文僅對(duì)文章內(nèi)容做一個(gè)簡單介紹,更多細(xì)節(jié)建議閱讀原論文。
1、背景
大規(guī)模推薦系統(tǒng)一般分為兩階段,即召回和排序階段,本文重點(diǎn)關(guān)注召回階段。
給定{用戶,上下文,物品}的三元組,一個(gè)通用的方法首先是分別計(jì)算{用戶,上下文} 和 {物品} 的向量表示,然后通過一定的方式如點(diǎn)積來計(jì)算二者的匹配得分。這種基于表示學(xué)習(xí)的方法通常面臨兩個(gè)方面的挑戰(zhàn):
1)工業(yè)界中物品的數(shù)量十分巨大。
2)通過收集用戶反饋得到的數(shù)據(jù)集十分稀疏,導(dǎo)致模型對(duì)于長尾物品的預(yù)測具有很大的方差,同時(shí)也面臨著物品冷啟動(dòng)的問題。
近幾年來,隨著深度學(xué)習(xí)的發(fā)展,雙塔模型常用來用做召回階段的模型,雙塔模型的一般結(jié)構(gòu)如下:

可以看到,雙塔模型兩側(cè)分別對(duì){用戶,上下文} 和 {物品} 進(jìn)行建模,并在最后一層計(jì)算二者的內(nèi)積。對(duì)于每一個(gè)正樣本,需要隨機(jī)采樣一些負(fù)樣本,當(dāng)物品數(shù)量十分巨大的時(shí)候,上述結(jié)構(gòu)的雙塔模型很難得到充分訓(xùn)練。
那么如何對(duì)雙塔模型進(jìn)行一定的改進(jìn)呢?本文主要提出了以下兩個(gè)要點(diǎn):通過batch softmax optimization來提升訓(xùn)練效率和通過streaming frequency estimation來修正sampling bias。
2、模型介紹
2.1 batch softmax optimization
假設(shè)訓(xùn)練集包含T條,物品數(shù)量為M:

x包括了用戶特征和上下文特征,y則是物品特征,r是對(duì)應(yīng)的label,x和y經(jīng)過雙塔模型得到對(duì)應(yīng)的向量表示,分別記作u(x,θ)和v(y,θ),并通過內(nèi)積得到二者的相似性得分:

那么給定一個(gè)x,從M個(gè)物品中選擇對(duì)應(yīng)y的概率可以經(jīng)由下面的softmax方程得到:

損失函數(shù)如下:

上述的做法相當(dāng)于把該樣本中的y作為正樣本,其余所有的物品當(dāng)作負(fù)樣本。但是當(dāng)M非常巨大時(shí),使用所有的物品來計(jì)算softmax方程并不是十分合適。一種通用的做法是通過隨機(jī)mini-batch的方式來優(yōu)化損失函數(shù)。假設(shè)一個(gè)包含B條數(shù)據(jù)的mini-batch,那么對(duì)于任意一條數(shù)據(jù),softmax計(jì)算公式如下:

這種做法相當(dāng)于把一個(gè)batch中此條數(shù)據(jù)之外物品當(dāng)作負(fù)樣本。但是這種做法存在的缺點(diǎn)就是會(huì)因?yàn)殡S機(jī)采樣偏差而導(dǎo)致模型效果不好。對(duì)于熱門物品來說,由于采樣到的概率非常高,當(dāng)作負(fù)樣本的次數(shù)也會(huì)相應(yīng)變多,熱門物品會(huì)被“過度懲罰”。因此基于如下的公式對(duì)于x和y的評(píng)分進(jìn)行一定程度的修正:

上式中,pj代表第j條樣本對(duì)應(yīng)的物品yj被一個(gè)mini-batch采樣到的概率,這在下一節(jié)會(huì)詳細(xì)介紹。
那么此時(shí),softmax計(jì)算公式變?yōu)椋?/p>

而batch的損失函數(shù)計(jì)算如下:

好了,整個(gè)的雙塔模型訓(xùn)練過程再來回顧一下:

上圖中采樣概率的預(yù)估算法,就是我們下一節(jié)要介紹的內(nèi)容。
2.2 streaming frequency estimation
由于youtube中不斷會(huì)有新物品出現(xiàn),那么使用固定長度的詞表不太合適,因此采用hash的方式來對(duì)物品的采樣概率進(jìn)行更新。
具體來說,假設(shè)有一個(gè)散列地址大小為H的hash函數(shù)h,對(duì)物品ID進(jìn)行映射。同時(shí)使用兩個(gè)長度為H的數(shù)組A和B,通過h(y)來得到其在數(shù)組A和B中下標(biāo)。
那么,A[h(y)]記錄上一次物品y被采樣到的訓(xùn)練時(shí)刻,B[h(y)]記錄物品y采樣的預(yù)估頻率(這里頻率的意思是預(yù)估每過多少步可以被采樣到一次,那么倒數(shù)就是預(yù)估被采樣到的概率)。當(dāng)?shù)趖步物品y被采樣到,基于如下的公式更新B[h(y)]:

而A[h(y)]則被賦予當(dāng)前的訓(xùn)練步驟t。當(dāng)訓(xùn)練完成時(shí),預(yù)估的物品y的采樣概率是1/B[h(y)]。
完整的過程如下:

既然是hash過程,當(dāng)H<M時(shí),就會(huì)存在沖突的情況。沖突的情況會(huì)導(dǎo)致B[h(y)]較小,因?yàn)閠-A[h(y)]會(huì)較小。從而導(dǎo)致采樣概率預(yù)估過高。這里的改進(jìn)方案是使用multiple hashings。即使用多組hash方程和數(shù)組A和B。當(dāng)訓(xùn)練完成時(shí)使用最大的一個(gè)B[h(y)]去計(jì)算采樣概率。具體過程如下:

2.3 Nearest Neighbor Search
當(dāng)模型訓(xùn)練完成時(shí),物品的embedding是可以保存成詞表的,線上應(yīng)用的時(shí)候只需要查找對(duì)應(yīng)的embedding即可。因此線上只需要計(jì)算{用戶,上下文}一側(cè)的embedding,而基于hash技術(shù)(如局部敏感Hash)得到對(duì)應(yīng)的候選集。
2.4 Normalization and Temperature
文中還介紹了雙塔模型在使用時(shí)兩點(diǎn)工業(yè)經(jīng)驗(yàn)。
1)對(duì)兩側(cè)輸出的embedding進(jìn)行L2標(biāo)準(zhǔn)化,如:

2)對(duì)于內(nèi)積計(jì)算的結(jié)果,除以一個(gè)固定的超參:

除以超參的效果如下,可以看到softmax的效果更加明顯:

超參的設(shè)定可以通過實(shí)驗(yàn)結(jié)果的召回率或者精確率進(jìn)行微調(diào)。
3、雙塔模型應(yīng)用于Youtube推薦
雙塔模型應(yīng)用于Youtube視頻推薦的框架如下:

訓(xùn)練Label:這里訓(xùn)練集Label并不是點(diǎn)擊即為1,未點(diǎn)擊為0。而是當(dāng)一個(gè)視頻被點(diǎn)擊但是觀看時(shí)長非常短時(shí),label同樣是0。當(dāng)視頻被完整看完時(shí),label才是1。
視頻側(cè)特征:視頻側(cè)包含的特征既有類別特征如視頻ID、頻道ID,也有連續(xù)特征。類別特征中有分為單值類別特征和多值類別特征,對(duì)于多值類別特征,采用對(duì)embedding加權(quán)平均的方式得到最終的embedding。
用戶側(cè)特征:用戶側(cè)特征主要是基于用戶的歷史觀看記錄來捕獲用戶的興趣。比如使用用戶最近觀看過的k個(gè)視頻的embedding的平均值。對(duì)于類別特征,embedding在模型的兩側(cè)是共享的。
實(shí)時(shí)更新:模型基于Tensorflow實(shí)現(xiàn),并且進(jìn)行了分布式實(shí)現(xiàn)。同時(shí),模型會(huì)進(jìn)行天級(jí)別更新。
4、實(shí)驗(yàn)結(jié)果
接下來,看一下幾個(gè)關(guān)鍵的實(shí)驗(yàn)結(jié)果。
4.1 頻率預(yù)估實(shí)驗(yàn)
對(duì)于實(shí)驗(yàn)設(shè)置,這里共有M個(gè)物品,每個(gè)物品的真實(shí)出現(xiàn)概率為qi,所有qi的和為1。在前一萬步,qi正比于i2,在后一萬步,qi正比于(M-1-i)2。如果每次采樣B個(gè)物品,那么每個(gè)物品被采樣到的概率為pi=qi * B,并作為label。而預(yù)測的概率則是剛才介紹的公式1/B[h(y)],二者通過MAE計(jì)算誤差。
使用不同的alpha來更新B,結(jié)果如下:

可以看到,當(dāng)alpha越來越小時(shí),隨著訓(xùn)練步數(shù)的增加,誤差是越來越小的。
當(dāng)使用不同數(shù)量的Hash方程時(shí),誤差如下:

可以看到,使用更多的Hash方程數(shù)量,誤差越小。
4.2 Youtube離線&在線實(shí)驗(yàn)
在youtube數(shù)據(jù)集上進(jìn)行離線訓(xùn)練,結(jié)果如下:

上圖中,plain-sfx表示不通過概率對(duì)采樣偏差進(jìn)行修正,correct-sfx表示修正采樣偏差,可以看到修正后效果更為顯著。線上結(jié)果同樣如此:

5、總結(jié)
本文作為一篇工業(yè)實(shí)戰(zhàn)類型的推薦文章,詳細(xì)介紹了雙塔模型在使用時(shí)的一些小技巧,一起簡單來回顧下:
1)使用batch softmax optimization來訓(xùn)練模型。
2)使用frequency estimation來修正采樣偏差,修正方法基于Multiple Hashings。
3)線上應(yīng)用時(shí)使用hash等技術(shù)來提高檢索效率。
4)對(duì)兩側(cè)得到的Embedding進(jìn)行正則化。
5)通過對(duì)得到的內(nèi)積除以一個(gè)超參數(shù),使得softmax結(jié)果更加明顯。
好了,本文就到這里了,大伙一定要去看原論文喲。