推荐:负采样

https://zhuanlan.zhihu.com/p/387378387

负采样有很多种方法。线上用的是随机降采样 10% 的负例。

分类

规则式

随机(baseline)

优点:效率,避免引入新的偏差。广泛使用。

基于流行度

越热门的物品,越容易做负例。

优点:提高采样质量,用户不喜欢热门商品,可以很好的学习到用户的喜好。相反,一个大家都不喜欢的商品,将它用作负例学习,能带给模型的信息量很少。

缺点:流行度可能引入新的偏差,毕竟流行度是全局计算,忽略了个体的差异; 

基于模型的负采样

动态采样

提高被高估的负例的采样概率,提高负例的信息量。

GAN 

利用对抗网络,用生成器生成负例,来迷惑判别器。

SRNS

强效判别,假负例VS hard negative。

《Simplify and Robustify Negative Sampling for Implicit Collaborative Filtering》

优点:提升采样质量

缺点:假负例也提升了被采样的概率。GAN 的耗时影响模型训练

Simplify and Robustify Negative Sampling for Implicit Collaborative Filtering

考虑到线上流式计算,push 的假负例在负采样中提升了采样频率可能不是件好事!可能负采样针对时间也要降权。

作者观察到最重要的一点是:false negative 和 hard negative 都会有很大的分数,但是 false negative 有更低的预测方差。

我是不是可以理解成,hard negative 之所以 hard,是每次训练不收敛。

但是这个论文,只用在了 CF 上,也就是说,一个sample 会被反复训练,直至模型收敛。

而在我们 push 流式训练中,无法得到 variance。

结论:求 variance 没有借鉴意义。但是确实应该区分 false negative vs hard negative

实验:引入时间 vs negative sample。

缺点:无法去除天然的假负例,比如:用户没点击,是因为推荐系统已经给他推过类似的文章了。

原文地址:https://www.cnblogs.com/toonice/p/14987663.html