部分参考 Facebook的EBR模型论文:
https://dl.acm.org/doi/pdf/10.1145/3394486.3403305
搜索推荐流程中,对于负样本采样,是选择曝光未点击样本还是随机采样作为负样本,需要看所处的阶段是在召回阶段还是排序阶段。
排序阶段的负样本采样
在排序阶段,通常使用“曝光未点击”的样本做负样本。此刻,曝光未点击就代表着用户的真实偏好,如果进行随机抽取的话,可能该样本就没有进行曝光过,不能断定用户一定不喜欢。
为此,还有所谓above click的作法,即只拿点击以上的未点击文章做负样本。
召回阶段和排序阶段的不同之处
召回和排序除了要求速度不同之外,二者的目标也决定了面临的数据环境不尽相同。
- 排序目标是:“从用户可能喜欢的当中挑选出用户最喜欢的”,属于优中选优。
- 召回目标在于:“是将用户可能喜欢的,和海量对用户根本不靠谱的,分隔开”,所以召回在线上所面对的数据环境,就是 鱼龙混杂、良莠不齐 。
召回阶段的负样本采样
所以,要求喂入召回模型的样本,既要让模型见过<user,doc>最匹配的,也要让模型见过<user,doc>最不靠谱的,才能让模型达到" 开眼界、见世面 "的目的,提高泛化能力。
其中,最匹配的自然就是曝光点击样本。
而最不匹配的并不是“曝光未点击样本”。因为曝光未点击样本是从线上日志获得的训练样本,已经是上一版本的召回、粗排、精排替用户筛选过的,即已经是对用户“ 比较靠谱 ”的样本了。拿这样的样本训练出来的模型做召回,相当于将负样本的门槛拉低了,这并不是最差的负样本,把它当做0标签,所产生的模型的线上效果会大大降低。
因此,召回阶段,为了模拟线上召回阶段的数据分布,使用随机采样,才能更加合理
离线训练数据的分布,应该与线上实际应用的数据,保持一致 。