在基於隱式反饋的協同過濾中,負採樣(negative sampling)是從大量的unlabeled data中獲取負樣本標籤比較經常使用和流行的方法。然而,負採樣的效率和有效性這兩個問題仍然沒有被很好的解決,由於它們使用比較複雜的結構,而且忽視了 false negative樣本的風險。本文首先經過實驗觀察,提供了一個關於負樣本比較新穎的理解。做者發現,在模型學習過程當中只有一小部分樣本比較重要,而且假負例(FN)在許多訓練迭代中傾向於有穩定的預測。基於此發現,做者提出了一個Simplify and Robustify 負採樣方法。html
協同過濾中的負採樣主要有兩個須要關注的問題:算法
PS: 這裏文章做者說將全部unlabeled data當作負樣本是不現實的。其實我本人不太贊同這句話,我認爲不管是負採樣,仍是將全部未知數據當作負樣本,都是兩種不一樣保守派的表現,一種是用戶沒點不表明不喜歡,但其實有的時候是真的不喜歡。因此這方面也不能太絕對,關鍵是如何去找到一個相對中和的假設?是否會更好呢?markdown
協同過濾中,最簡單的就是直接採用均勻分佈採樣,隨後又有很多論文提出了不一樣的、更復雜的採樣方法,好比hard sampling(由於它能夠帶給模型更多的有用信息)。app
與上述工做不一樣的是,本文將負採樣問題描述爲在有噪聲標籤的狀況下,對未標記數據的有效學習,即存在假陰性FN的狀況。 主要包括三個挑戰:函數
在隱式CF問題中,真負實例與假負實例一塊兒隱藏在大量未標記數據中。儘管其餘領域中的負實例遵循skewed分佈,而且能夠用簡單的模型來建模,可是這種先驗知識是否能夠應用於只指望真負實例的隱式CF問題仍然是未知的。學習
skewed distribution(偏態分佈): 頻數分佈有正態分佈和偏態分佈之分,正態分佈是指多數頻數集中在中央位置,兩端的頻數分佈大體對稱。 偏態分佈是指頻數分佈不對稱,集中位置偏向一側。 若集中位置偏向數值小的一側,稱爲正偏態分佈。集中位置偏向數值大的一側,稱爲負偏態分佈。若是頻數分佈的高峯向左偏移,長尾向右側延伸稱爲正偏態分佈,也稱右偏態分佈;一樣的,若是頻數分佈的高峯向右偏移,長尾向左延伸則成爲負偏態分佈,也稱左偏態分佈。(峯左移,右偏,正偏; 峯右移,左偏,負偏)測試
本文,做者發現預測分數高的負樣本對模型學習很是重要,可是他們很是少,也就是是一個偏態分佈。另一個發現是,在訓練的屢次迭代中,假陰性實例(false negative)老是有較大的分數,即較低的方差,這爲解決現有方法中存在的FN問題提供了一個新的視角。ui
基於此,做者提出了本文的方法SRNS,下面開始進行介紹.spa
一個CF model,通常包括如下三部分:score function ,目標函數 ,以及負採樣的分佈 。score function 計算用戶嵌入 ,商品嵌入 的相關性, 爲要學習的參數,好比GMF[1]等:設計
進一步有,觀察到的交互 的相關性爲 ,則相應的未觀察到的 得分爲 ,那麼 爲負樣本的機率爲:
對應的loss function:
學習上述目標至關於最大限度地提升成對排序關係的可能性
關於 的選擇,文中也列出一個表格:
爲了提升隱式CF中負採樣的魯棒性和效率,下面首先對不一樣的負採樣實例進行深刻理解,包括假負採樣和經過均勻採樣或硬負採樣得到的負採樣實例。最後,基於這些認識,介紹所提出的方法。
在之前的文章中,正樣本的分佈或者說預測的分數,被普遍的用來做爲採樣的標準,由於它與樣本的難度成正比。因而,做者就在ml-100k上作了個實驗,進行觀察。
首先,經過將測試集裏的ground-truth翻轉,能夠獲得必定的FN樣本,它其實是positive的,可是在負採樣階段是觀察不到的(也就是說負採樣也可能採到測試集中的ground truth item).
其次,除了使用均勻採樣,還經過不用的 ,獲得一些hard samples。主要包括兩步:a) 按照均勻分佈從unlabel data中採樣 個;b) 選出 最大的樣本,視爲難樣本。 越大,樣本越難,且當 時,兩種採樣徹底等價。
CCDF: ,表示負樣本 的機率。
基於上圖,能夠獲得一些觀察:
第一個發現代表,僅捕獲與那些較大的得分負實例相對應的完整分佈的一部分是有潛力的,這些負實例更有多是高質量的。對於第二個發現,它提供了一個可靠的方法來衡量樣本質量,也就是方差(其實hard 和false negative的區分也沒有很明顯,由於兩者其實原本就很難區分)。具體來講,咱們更喜歡那些同時具備大分數和高方差的負樣本,避免在屢次迭代訓練中老是具備大分數的FN實例。
基於上面的分析,其實本文的方法和思路已經基本很清晰啦! 一方面,首先爲每一個用戶存儲一部分有更大的潛力爲高質量負樣本的難樣本,經過慣出這部分樣本,極大的簡化了模型的結構,提升了採樣效率。另外一方面,經過基於方差的採樣策略來有效地得到哪些可靠和信息量大的樣本。算法過程以下:
爲用戶 的採樣池。爲了保證最有信息量的樣本被囊括,這裏設計了一個動態的更新策略: 首先從不在該集合的樣本中均勻採樣 個,隨後將其添加到 中,並基於以下策略進行更新:
其中
。就是保留分數最大的
個
過採樣hard negative實例可能會增長引入FN的風險,從而使基於上述分數的更新策略不那麼健壯。因而,對於給定的正樣本(u,i)以及 ,對於 ,保留其第 個訓練epoch的得分 ,經過以下方式從 中選擇負樣本(u,j):
來控制在
epoch高方差的重要性,當其=0時,此採樣方法就變成了根據樣本的難易進行選擇。因爲全部實例在早期訓練階段都有很高的方差,所以方差項不該加權太多,因而採用warm-start,細節在這裏不介紹了,見論文
文章中只用最近5epoch來計算方差:
Nips的風格就是理論很少就瘋狂作實驗。。。。論文裏實驗挺多的,感興趣的能夠看看。
[1] Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu, and Tat-Seng Chua. Neural collaborative filtering. In WWW, pages 173–182, 2017.