文章亮點:
1.提出“曝光未點擊”在召回場景中的雞肋作用
2.提出篩選負樣本的方案(主要是篩選hard負樣本的三種方案)
3.將hard負樣本訓練模型并行、串行運用到場景中
召回和排序在場景中的作用:
1.排序:可用高復雜模型
2.召回:可用低復雜模型,且有很多模型競爭
簡述Facebook EBR模型
1.模型的優(yōu)化:
使用FAISS計算User和Item向量
2.Loss的優(yōu)化:
loss=max(0,margin-<u,d_+>+<u,d_->);
<u,d_+>,<u,d_->分別代表正負樣本與user計算的score
BPR loss=$log(1+exp(<u,d_->-<u,d_+>))要比一般的Hinge loss好;即鼓勵margin優(yōu)勢越大越好。
3.離線評估
出現(xiàn)線下不明顯,線上提升明顯的模型,一個置信度高的離線評測手段仍然是召回工作中的痛點。
重中之重是"篩選(負)樣本"(本文的重點)
1.破除了“召回照搬排序”的迷信,明確指出,不能(只)拿“曝光未點擊”做負樣本
2.提出了easy negative/hard negative的樣本分級思路
3.提出了增強hard negative的思路(也不算首創(chuàng)了,和百度Mobius的思路幾乎一模一樣,也算英雄所見略同了)
為什么不能(只)拿"曝光未點擊"做負樣本?
排序模型:在比較優(yōu)質(zhì)的數(shù)據(jù)中挑選更加優(yōu)質(zhì)的數(shù)據(jù)
召回模型:在好壞混雜的數(shù)據(jù)中分離出好/壞樣本,并進行篩選;
如果只用曝光未點擊的數(shù)據(jù),有以下缺點:
1.該數(shù)據(jù)較優(yōu)質(zhì),已經(jīng)經(jīng)過上一次排序,召回篩選,只能在較優(yōu)質(zhì)與優(yōu)質(zhì)文章中篩選;
2.未見過壞樣本數(shù)據(jù),導致訓練強度不夠,導致訓練出結(jié)果偏差較大。
本質(zhì)為線上和線下樣本分布不一致。
拿隨機采樣做負樣本
為防止熱門綁架個性化數(shù)據(jù)
1.熱門點做正樣本,降采樣;做負樣本,過采樣;
挖掘Hard Negative增強樣本
樣本分三類:
1.正樣本(用戶點擊),
2.easy 負樣本(隨機篩選,可很好鑒別出來),
3.hard負樣本(能夠增加模型訓練難度,可提升模型關(guān)注細節(jié)能力的負樣本)
篩選hard負樣本方式:
1.增加屬性相似負樣本(例如同城Item);
2.增加被拒絕的負樣本;
3.自己挖掘負樣本:
利用上一版本模型召回算出101-500的文章作為負樣本;
Online樣本集:
一個batch中所有user與所有的cross join
Offline樣本集:上一版本的召回模型過一遍歷史數(shù)據(jù)。
easy:hard=100:1
不同難度的模型相互融合:
用不同難度的negative訓練不同難度的模型,再做多模型的融合。
并行融合
不同難度的模型獨立打分,最終取Top K的分數(shù)依據(jù)是多模型打分的加權(quán)和。
線上召回用Fassis時:embedding = model_weight1 * embedding1 :+ model_weight2 * embedding2 :+ model_weight3 * embedding3 (拼接)
挖掘數(shù)據(jù)出的hard負樣本訓練的模型+easy負樣本訓練的模型加起來評判效果最好
串行融合
通過easy模型初選,hard模型進行再次篩選
全鏈路優(yōu)化
需要優(yōu)化排序的結(jié)果
"曝光未點擊"就是雞肋
曝光未點擊在召回作為正、負樣本、并行、串行模型都無效果,在召回中十分雞肋;
原因:推薦系統(tǒng)認為用戶會喜歡,但用戶卻不喜歡;