大家好,我是对白。

今天给大家分享一下在推荐中召回和粗排是如何构造负样本的。

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

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

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

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

举个例子:

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

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

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

我们计算:

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

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

关于我

你好,我是对白,清华计算机硕士毕业,现大厂算法工程师,拿过8家大厂算法岗SSP offer(含特殊计划),薪资40+W-80+W不等。

高中荣获全国数学和化学竞赛二等奖。

本科独立创业五年,两家公司创始人,​拿过三百多万元融资(已到账)​,项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研清华后退居股东。

我每周至少更新三篇原创,分享人工智能前沿算法、创业心得和人生感悟。我正在努力实现人生中的第二个小目标,​上方关注后可以加我微信交流​。

期待你的关注,我们一起悄悄拔尖,惊艳所有~

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