Loading...

召回和粗排负样本构造问题

智源社区10个月前发布 智源社区
226 0 0

转自:对白的算法屋

本文分享在推荐中召回和粗排是如何构造负样本的。

推荐系统通常分为召回->粗排->精排->重排这几个漏斗。

深度模型也从精排逐步下沉到了粗排和召回。

拿业界常用的粗排DSSM模型来说,模型训练样本的构造方式一般是复用精排下发的正负样本,但这会造成一个问题:粗排训练样本和实际线上打分样本分布不一致,训练样本仅是线上打分样本一个比较小的子集。面对这个问题大家通常的解法是,从精排未下发的样本里采一部分,添加至粗排模型的训练负样本中,通常会带来一定的提升。其中的原理是什么呢?以及如何更优雅的做负样本采样?

首先,明确一下粗排的目标:拟合精排模型。即粗排尽可能圈出精排模型能排到前面的item。这一点非常关键,如果只用精排下发的真实曝光样本来训练粗排模型,那么粗排模型对精排模型的拟合就会出现比较大的偏差。

举个例子:

粗排模型给1000条样本打分,最终截取score top300,给到精排模型,精排模型对这300条样本打分,进一步选出用户可能感兴趣的item,比如score top10。

一定会存在这样一种情况:对于粗排模型打分比较靠前的样本(比如top5),精排模型却把这部分样本打分很低(比如top250~300),那么,粗排打分很靠前的这几条样本是不会被曝光的,因此当我们复用精排模型的样本来训练粗排模型时,粗排模型是看不到这几条bad case的样本的,新粗排模型上线后,这几条样本很可能还被粗排模型排到靠前的位置。如果我们把这几条样本作为负样本来训练粗排模型,那么新的模型大概率就可以把这几条样本排到靠后的位置了。

以上是粗排模型扩充下沉负样本work的原因,那么怎么才能做更高效的负采样呢?

我们计算:

w=(归一化的粗排模型打分-归一化的精排模型打分)*系数

用w作为下沉负样本的权重,把粗排模型打分与精排模型打分的gap表达在负样本中,更细粒度地表达两个模型的差异。通常会取得更好的效果。

© 版权声明

相关文章

暂无评论

暂无评论...