用隐式反馈做推荐模型,你做对了吗
現(xiàn)在大家都習(xí)慣用隱式反饋來(lái)學(xué)習(xí)推薦模型,并作用于線(xiàn)上推薦系統(tǒng)(十方也不例外)。大量的隱式反饋數(shù)據(jù)確實(shí)緩解了數(shù)據(jù)稀疏的問(wèn)題,但是這些數(shù)據(jù)很多并沒(méi)有反饋用戶(hù)真正的需求。拿電商舉例,大量的點(diǎn)擊,并不會(huì)帶來(lái)支付行為,就算是支付,用戶(hù)也可能給差評(píng),這種情況往往應(yīng)該是負(fù)例,但是我們卻把它們當(dāng)初正例用于推薦模型,這樣不可避免帶來(lái)了噪聲。《Denoising Implicit Feedback for Recommendation》這篇論文發(fā)現(xiàn)了這種偏差對(duì)推薦產(chǎn)生了嚴(yán)重的負(fù)面影響,所以提出了一種新的訓(xùn)練策略Adaptive Denoising Training(ADT),在訓(xùn)練過(guò)程中就能發(fā)現(xiàn)噪聲。下面我們就看看如何用這種訓(xùn)練策略,去提升推薦質(zhì)量吧。
噪聲的惡劣影響
從下表中,我們可以看到有噪聲的數(shù)據(jù)訓(xùn)練(Normal training)在Recall和NDCG上都遠(yuǎn)低于用無(wú)噪聲訓(xùn)練(Clean training),所以糾偏就很重要了。
其實(shí)以往就有很多工作進(jìn)行糾偏,如下圖所示。(b)方法通過(guò)一些用戶(hù)行為過(guò)濾掉噪聲樣本,如用戶(hù)在頁(yè)面停留時(shí)間和一些其他行為模式,同時(shí)還增加了很多item特征,如item描述長(zhǎng)度,來(lái)達(dá)到糾偏效果。(c)通過(guò)補(bǔ)充其他反饋,從而緩解隱式反饋的影響。這些方法都要補(bǔ)充很難獲取且較少的數(shù)據(jù),并不是解決問(wèn)題的好方法。(d)就是本論文提出的好方法,并不需要任何額外數(shù)據(jù)。(d)方法糾偏,主要是發(fā)現(xiàn)了那些false-positive(FP)的交互的loss在訓(xùn)練的早期都偏大,所以會(huì)誤導(dǎo)模型學(xué)習(xí),并且在訓(xùn)練模型,模型就會(huì)過(guò)擬合這些噪聲,所以我們要對(duì)這種loss進(jìn)行糾偏,但是要避免錯(cuò)誤的對(duì)true-positive(TP)交互糾偏。
本文提到,該糾偏方法主要聚焦false-positive交互帶來(lái)的噪聲,忽視false-negative的交互。也很容易理解,正例遠(yuǎn)比負(fù)例稀疏,所以false-positive會(huì)帶來(lái)更多影響。需要注意的是,false-positive交互在早期訓(xùn)練中會(huì)非常難擬合,很容易擬合的樣本大多是非噪聲的樣本,過(guò)早的擬合hard的樣本也會(huì)損傷模型的泛化能力。從下圖中,我們對(duì)比true-positive和false-positive交互的loss,我們會(huì)發(fā)現(xiàn)兩種樣本的loss會(huì)最終收斂,說(shuō)明模型不僅記住了正確的信息,也把噪聲學(xué)到了。同時(shí)我們還發(fā)現(xiàn)兩種樣本loss下降速度不同,并在早期訓(xùn)練過(guò)程中,false-positive要遠(yuǎn)大于true-positive,這也說(shuō)明了模型很難學(xué)到這些噪聲,雖然最終還是學(xué)到了。
降噪兩板斧
Truncated Loss: 通過(guò)一個(gè)動(dòng)態(tài)閾值直接裁剪hard樣本的loss,如下式所示。
T-CE loss 會(huì)無(wú)差別的移除loss超過(guò)閾值的部分,這個(gè)閾值是不能固定的,因?yàn)閘oss會(huì)隨著訓(xùn)練的進(jìn)行逐漸下降,所以閾值也會(huì)有個(gè)drop rate。這個(gè)drop rate必須有個(gè)上限,限制丟掉loss的比例,該drop rate需要平滑的從0增長(zhǎng)到它的上限,這樣使得模型可以逐漸的區(qū)分true-positive和false-positive,所以drop rate定義如下:
整個(gè)T-CE loss的算法定義如下所示:
Reweighted Loss: 在訓(xùn)練中給hard樣本一個(gè)較小的權(quán)重。
這個(gè)定義如下式,就是給loss乘個(gè)weight:
同理,這個(gè)weight在訓(xùn)練過(guò)程中應(yīng)該動(dòng)態(tài)更新,盡量需要對(duì)hard的樣本給予一個(gè)較小的weight,并且可以適用于不同的模型和數(shù)據(jù)。該方法主要收到Focal Loss的啟發(fā),通過(guò)預(yù)估的score評(píng)估w的大小。預(yù)估的score是在[0,1]范圍,而CE loss范圍是[0,∞],對(duì)positive樣本預(yù)估較小的值會(huì)導(dǎo)致很大的CE loss,所以w定義如下:
這里beta是一個(gè)超參控制weights的范圍,從下圖我們可以看到用上述weights,我們可以顯著降低hard樣本的loss。
我們需要注意的是,負(fù)例也會(huì)產(chǎn)生很大的loss,所以我們把公式修訂為下式:
實(shí)驗(yàn)
從下面實(shí)驗(yàn)中我們發(fā)現(xiàn),使用這“兩板斧”效果還是不錯(cuò)的。
總結(jié)
以上是生活随笔為你收集整理的用隐式反馈做推荐模型,你做对了吗的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 入坑推荐系统,从Google这篇开始
- 下一篇: 模型调参指南北东西