网站首页 > 技术文章 正文
本文将对推荐系统“召回模型负样本”的构造方法作详细介绍。以下内容均基于个人理解,难免谬误和肤浅,如有错漏欢迎指出。在本文所列出的诸多负样本论文中,仅挑选经典或前沿的论文在后续章节着重介绍,比如 2022 年提出的淘宝MOPPR 和 飞猪UMA2算法。
背景
推荐系统通常包含多个环节,粗略可分为召回 -> 排序 -> 重排。不同的环节有不同的职能,召回环节负责从海量物料库中快速筛选用户潜在感兴趣的物料;排序环节负责使用复杂模型对召回物料做精准的个性化推荐;重排环节负责对推荐列表做多样化处理以优化用户体验。物料由此从物料库中层层筛选曝光至用户,用户可选择喜好的物料来完成消费。按照不同环节所筛选的物料集合,物料流向路径为物料库空间 -> 召回空间 -> 曝光空间 -> 点击空间,如下图。
按照“样本应服从总体分布”原则,召回模型的训练样本应与线上分布保持一致。召回模型的职能为从整个物料库中筛选用户喜好的物料。因此其正样本应来源于代表用户喜好的点击空间,负样本应来源于物料库中除点击空间外的其他空间,即上图中曝光未点击 space A + 召回未曝光 space B + 未召回 space C。在此背景下产生各类负样本优化问题,下面将依次介绍。
全局负采样
点击空间相对物料库空间占比很小,space A + space B + space C ≈ 物料库空间。由此业内通常在物料空间中随机采样来作为负样本。但该负采样方式会引入偏差,如流行度偏差、假负样本、类别偏差等。
- 流行度偏差:负样本的全局随机采样方式决定其为均匀分布,但正样本中通常高热物料占主导。全局负采样下的召回模型比排序模型更容易产生流行度偏差。模型将倾向于将高热物料推送给用户,推荐系统或失去推荐功能。解决并利用流行度偏差的方法详见《推荐系统流行度偏差专题(1)深入理解流行度偏差》,本文不再赘述。
- 假负样本:随机而来负样本中可能存在用户喜好的假负样本,将齐剔除并利用或能提高模型表现。
UFNRec: Utilizing False Negative Samples for Sequential Recommendation(2022 OPPO & Tencent) - 类别偏差:物料库空间中各类别分布不均,随机采样方式导致负样本中大类别占主导。模型由此过度打压大类别物料,倾向于小类别物料。
FairNeg:Fairly Adaptive Negative Sampling for Recommendations(2023 www)?
Batch 负采样
batch 内负采样,指从 batch 内除本样本外的其他样本中随机选择物料作为负样本。该采样方法只在 batch 内做文章,与全局负采样相比训练成本更低。与全局采样中负样本均匀分布不同,batch 内样本通常为曝光样本或只为正样本,因此 batch 内负采样可实现对高热物料的打压,但有时打压过度。batch 内负样本中无法包含未曝光的低频物料,会造成模型对低频物料精度较差。针对以上缺点,Batch 负采样的改进方式如下。
Sampling-bias-corrected neural modeling for large corpus item recommendations(2019 Youtube)
MNS:Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations(2020 Google)
Hard 负样本
负样本应来源于 space A + space B + space C,其中 |C| >> |B| > |A|,A + B 可能只占物料空间的千分之一。尽管随机负采样有概率采集到 A + B 的物料,但其占比过低,该类型物料被海量 C 物料淹没,由此从训练效果来看 A + B + C ≈ C。但从与正样本相似度而言 C << B < A,若只含有与正样本差异大的 C,将导致模型无法捕捉用户细粒度喜好。以用户喜欢郭德纲相声而不喜欢郭德纲电影为例,用户观看郭德纲相声后可将其作为正样本。但由于负样本来源于物料库随机采样,与正样本八竿子打不着,模型只能模糊参照正样本对物料打分。“郭德纲电影”因与“郭德纲相声”相像也会有高打分值而被推荐给用户,但用户其实并不喜欢。另一方面,随机负样本过于简单,模型分类难度低,AUC 动则 95%+,沿增加拟合能力迭代模型性价比很低。为了能在复杂模型上“讲故事”,需要引入 hard 负样本增加分类难度。
为解决以上问题,挖掘与正样本相像的 hard 负样本一直是业界的热点。一类是利用全链路信息挖掘,即调整 space A + space B 的样本权重以增加其影响面。一类使用模型打分挖掘,选择与正样本打分相近但不太相近的的物料作为 hard 负样本。一类使用业务逻辑挖掘,比如在与正样本相同物料类别内随机负采样等。值得注意的是,召回模型的负样本需仍以 C 为主,以保证训练样本与线上分布的一致性。
经典论文:Embedding-based Retrieval in Facebook Search(2020 Facebook)
模型挖掘:ESAM: Discriminative Domain Adaptation with Non-Displayed Items to Improve Long-Tail Performance(2020 阿里)
全链路挖掘:MOPPR:Multi-Objective Personalized Product Retrieval in Taobao Search(2022 taobao)
业务逻辑挖掘:Real-time Personalization using Embeddings for Search Ranking at Airbnb(2018 Airbnb)
动态调整 hard 样本权重:UMA2:Re-weighting Negative Samples for Model-Agnostic Matching(2022 飞猪)
?
本文只站在了工业界实战的角度,对推荐系统召回负样本的构造方法做简单梳理。
参考
- 深度好文:百篇论文概览负采样方法的前世今生(综述类文章,推荐阅读)
- 负样本为王:评 Facebook 的向量化召回算法
- 召回模型中的负样本构造
- 涨点利器:推荐系统中对双塔模型的各种改造升级
猜你喜欢
- 2024-10-20 IJCAI 2019 | ProNE: 高精度快速网络表示学习算法
- 2024-10-20 (多图) 一种无刷直流电机电流高精度采样及保护电路的设计
- 2024-10-20 AI大模型企业应用实战(21)-RAG的核心-结果召回和重排序
- 2024-10-20 差分放大电路的应用 差分放大电路应用场景
- 2024-10-20 "全能选手"召回表征算法实践
- 2024-10-20 闲鱼搜索召回升级:向量召回&个性化召回
- 2024-10-20 机器学习评估指标 AUC 综述 机器学习auc小于0.5
- 2024-10-20 阿里飞猪个性化推荐:召回篇 阿里飞猪部门在哪个园区
- 2024-10-20 如何利用PyTorch中的Moco-V2减少计算约束
- 2024-10-20 揭秘:反馈点接到运放同相端,输出震荡了,电路还是负反馈吗?
你 发表评论:
欢迎- 11-18软考系统分析师知识点十六:系统实现与测试
- 11-18第16篇 软件工程(四)过程管理与测试管理
- 11-18编程|实例(分书问题)了解数据结构、算法(穷举、递归、回溯)
- 11-18算法-减治法
- 11-18笑疯了!巴基斯坦首金!没有技巧全是蛮力!解说:真远啊!笑死!
- 11-18搜索算法之深度优先、广度优先、约束条件、限界函数及相应算法
- 11-18游戏中的优化指的的是什么?
- 11-18算法-分治法
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)