近期讀了兩篇YouTube的兩篇關於“偏差”的論文,感覺挺有意思的,一篇sampling bias corrected neural modeling for large corpus item recommendations是關於取樣偏差的,另一篇recommending what video to watch next a multitask ranking system是關於推薦時候的系統產生的偏差的,如位置偏差等,類似於解決倖存者偏差(意思是指,當取得資訊的渠道,僅來自於倖存者時,因為死人不會說話,此資訊可能會存在與實際情況不同的偏差)。均在“偏差”層面想使推薦系統更加“公平”和高效。

sampling bias corrected neural modeling for large corpus item recommendations

工業界現有的推薦系統都需要從一個超大規模的候選集中拉取item進行打分排序。解決資料稀疏和指數級候選集分佈的一種通常做法是從item的內容特徵中學習出item的稠密表示。

這裡很自然地就想到了工業界大名鼎鼎且應用廣泛的雙塔神經網路結構

,其中的一塔就是從豐富的item內容特徵中學習到item的表示。

工業界目前訓練雙塔結構一般是透過隨機mini-batch的方式來最佳化損失函式。這種訓練方式存在的

一個顯著問題就是in-batch

loss會因為隨機取樣偏差而導致模型效果不好

,尤其是當樣本分佈出現明顯傾斜的時候。這篇論文

提出了一種全新的演算法,可以從流式資料中預估item的頻率

。透過理論分析和實驗,新演算法有能力在不知道候選集全部的詞典情況下做出無偏差的估計並且可以自適應候選集分佈的變化。在Youtube線上的實驗也證明了該演算法的有效性。

我們考慮一種通用的推薦問題設定:給定一系列query和候選集,目標就是在給定query的情況下返回最相關的一個候選子集。針對這裡的query和候選集中的item,都可以用各自的特徵向量來進行表示。

在個性化推薦場景中,則是使用者user和會話的上下文context構成這裡的query側

都知道Youtube的推薦架構主要分為兩個階段:召回和排序,具體可以看這篇濃濃的工業風論文Deep Neural Networks for YouTube Recommendations。而這篇論文則主要聚焦於新增一路如下圖所示的雙塔召回。query側的塔是由大量的使用者觀看歷史形成的user features以及共同的seed features構成,候選集側的塔則是由影片特徵構成。訓練樣本的Label則是由使用者的點選和播放時長加權得到。

YouTube近期的兩篇關於“偏差”的論文筆記

但是一般訓練的時候都是選擇batch softmax optimization,item的機率是根據隨機batch內的資料來計算的,這樣如果不進行糾正的話,就使得batch softmax方法易受懸著偏差影響。這篇論文使用估計的item的頻率來進行糾正。

YouTube近期的兩篇關於“偏差”的論文筆記

這裡的基本建模方式還是常規方法:

樣本是(item特徵,query特徵,依照業務制定的reward)

YouTube近期的兩篇關於“偏差”的論文筆記

最後選擇的機率是由softmax計算的

YouTube近期的兩篇關於“偏差”的論文筆記

損失函式由加權對數似然定義

YouTube近期的兩篇關於“偏差”的論文筆記

相似性由雙塔NN計算的點積給出

YouTube近期的兩篇關於“偏差”的論文筆記

但是在標準問題定義之上進行了部分修正,以利於實現:

相似性在點積基礎上進行頻率修正降低偏差

YouTube近期的兩篇關於“偏差”的論文筆記

softmax由批內進行近似計算,這在詞向量等處也有類似的應用方式,

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

相似性加上一個引數控制,使得logit更陡峭,訓練效果會更好

YouTube近期的兩篇關於“偏差”的論文筆記

對向量表示進行l2正則化會提升效果,

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

問題定義之後,文章主要引入了頻率的估計,使得在分散式環境下的流式訓練時候也可以應用。流式訓練對效果提升還是蠻大的。而分散式訓練對於工業界大量級的樣本來說也是必不可少的。畢竟是大資料時代呀。

首先,引入一個在分散式下可以同步的量,global step,然後將頻率的估計向這個方向來靠。並且巧妙的應用了兩個變數來估計頻率。當然這其中還使用了hash的方式,可能和他們ps的實現有關?反正這個hash技術在分散式訓練中提到的也挺多了。並且感覺這個頻率估計近似一點兒可能也沒關係。

具體方法,實踐中具體看看就好,主要是個思路吧:

Youtube的訓練資料按天依次產生,訓練資料以streaming的方式餵給分散式訓練叢集。這樣模型就可以自動學習並適應最新資料分佈的變化。訓練演算法如下圖所示,當收到一個batch的訓練樣本時,首先

針對候選集的item進行取樣機率預測

,然後

根據預測的取樣機率構建損失函式

,最後迭代訓練即可。

流式頻率預估的演算法如下圖所示。由於候選集item的詞典不是固定的,時刻都會有新的item產生。因此這裡針對item使用hash函式做了一個對映。針對一個指定的候選item y,A表示 y 被取樣最近一次步驟,B則表示 y 的預估頻率。一旦候選item y在迭代步驟 t 中出現,即可以按照下面迭代公式更新B。

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

最後整體的系統結構:

YouTube近期的兩篇關於“偏差”的論文筆記

大概就是流式訓練,定期savemodel和建立索引吧。

另一篇文章recommending what video to watch next a multitask ranking system,主要是對類似推薦中的倖存者偏差來進行建模,主要消除了位置偏差,另外對推薦中的多個目標同時建模,並且應用了MMoE的結構來解決MultiTask問題。文章還是濃濃的工業風,總是不離考慮系統性能的問題,實踐中還是可以借鑑很多的。

在這個paper中,我們介紹了一個大規模多目標排序系統,用於在工業界影片分享平臺上推薦下一個要觀看的影片。該系統會面臨許多挑戰,包括:存在多個競爭性的排序目標(ranking objectives),以及在user feedback中的隱式選擇偏差(implicit selection biases)。為了解決這些挑戰,我們探索了多種軟引數共享技術(soft-parameter sharing techniques),比如:Multi-gate Mixture-of-Experts,以便對多個排序目標進行有效最最佳化(optimize)。另外,會採用一個Wide&Deep框架來緩和選擇偏差(selection biases)。演示了我們提出的技術可以在youtube推薦質量上產生有效提升。

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記

YouTube近期的兩篇關於“偏差”的論文筆記