algolearn

V1

2022/01/05阅读:233主题:默认主题

召回排序中的负样本优化问题

1 召回中的负样本优化

  1. 展示未点击数据。常用的方式,但是会导致Sample Selection Bias,可以通过和其他负样本选择方法来缓解
  2. 全局随机选择负例。从全局候选物料里面随机抽取item做为召回或者粗排的负例。例如 Youtube DNN双塔模型。虽然保证了输入数据的分布一致性,但这么选择的负例和正例差异太大,导致模型太好区分,可能学到的知识不够充分。
  3. batch 内随机负例。输入数据只有正例,在训练的时候,在batch内随机采样一定比例的负样本,一定程度上可以解决Sample Selection Bias问题。
  4. 展示数据内随机负例。在所有的展示物品中,随机选择负例。
  5. 随机负例+热门打压。随机选择,但是越是流行的Item,越大概率会被选择作为负例。例如word2vec中,某物料成为正样本的概率 ,其中 是第i个物料的曝光或点击占比,理解为降低高展item成为正样本的概率。某物料成为负样本的概率 。其中n(w)是第i个物料的出现次数,而 一般取0.75,理解为增加高展item成为负样本的概率。
  6. hard负例。hard negative能够增加模型在训练时的难度,让模型关注细节。Airbnb根据业务逻辑来选取hard negative:(1)增加与正样本同城的房间作为负样本,增强了正负样本在地域上的相似性,加大了模型的学习难度(2)增加“被房主拒绝”作为负样本,增强了正负样本在“匹配用户兴趣爱好”上的相似性,加大了模型的学习难度。也可以将排序模型打分靠后的作为hard negtive,但是选择100-200还是300-5就只能去尝试了

2 排序中的负样本优化

电商场景下,排序中中所周知的正例延迟上报问题,导致部分晚上报的正例在前面训练过程中作为了负例。

当天未购买可能并不一定是真正意义上的未购买,而可能是加购物车了但是没有当天下单, 而是过了一天下单, 而这样的标签如果我们直接默认其为负样本就会有正样本被当成负样本训练的问题,只是反馈延迟了。

  1. 设置一个时间窗口,如果没有出现正例,就直接当作负例训练。
  2. 如果正样本被当成了负样本训练,后续在训练的时候用两个正样本,一个抵消一个训练。
  3. 将cvr预估拆分为两个模型,转化模型(conversion model,CVR)和 延迟模型(Delayed Feedback Model,DFM)。CVR模型用户预估用户最终是否发生转化,DFM则预估点击后第几天发生转化。
  4. Faked nagative weighted。其实就是importance sampling,观察到的样本的分布是 biased distribution b,但是需要求解真实的样本的分布 p的期望。
  5. Positive-Unlabeled Learning。通过修改损失函数进行优化。

参考

1.SENet双塔模型:在推荐领域召回粗排的应用及其它

2.Delayed FeedBack In Computational Advertising

3.负样本为王:评Facebook的向量化召回算法

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

分类:

人工智能

标签:

深度学习

作者介绍

algolearn
V1