首页 > 其他分享 >非内积级联学习

非内积级联学习

时间:2024-01-30 09:34:30浏览次数:18  
标签:采样 内积 级联 样本 学习 点击 召回

1.首页推荐非内积召回现状

非内积召回源是目前首页推荐最重要的召回源之一。同时非内积相比于向量化召回最终仅将user和item匹配程度表征为embeding内积,非内积召回仅保留item embedding,不构造user显式表征,而是通过一个打分网络计算用户-商品匹配程度,极大的提升了模型精准度的上限,有很大优化空间。

模型:采用dot-product attention对用户行为和目标商品进行交互,结合用户画像、原始商品表征生成打分

 

 

 

索引与检索: ◦索引:离线模型训练完成后,对 item embedding 基于l2距离构造hnsw索引 ◦检索:线上召回时,实时根据用户请求,在hnsw索引中逐层向下进行beam-search寻找最优结果 ▪多样性保证:在最后一层检索过程中,进行类目维度多样性剪枝 •样本 ◦正样本:首页点击和订单作为正样本, ◦负样本:全站点击随机负采样 + 底池均匀负采样 •特征:用户点击序列、用户画像特征、商品侧特征等 •学习目标: 对正负样本采用sampled softmax loss建模为多分类问题

 

2.非内积召回优化-级联学习与负样本扩充

非内积召回模型整体有更好的拟合能力,但目前方案中原有训练样本相对较为简单,并且负样本量级较少,阻碍了非内积召回能力的发挥。为提升召回与后续链路一致性,现加入曝光未点击、精排top打分样本进行级联学习。学习目标从原有的点击正样本和随机负采样多分类问题从升级为包含点击、曝光未点击、精排序样本、随机负采样之间的精细化序关系融合;同时扩充负样本量级,提升模型打分精准性。

2.1 相关工作

2.1.1 级联学习相关工作

级联学习旨在引入多种推荐系统链路中样本,采用排序学习方式拟合真实系统分布。京东搜索多目标实践引入订单、点击、曝光样本之间的级联[1],有效提升大盘效果。list-MLE[2]是广泛应用的学习排序方法,将list内样本给出预测分数,优化预测分数分布和真实排序一致。plist_MLE[3]解决了连续多目标优化问题,使用线性标量化策略将其转换为一个单目标优化问题。

2.1.2 负样本扩充相关工作

batch内负样本扩充主要分为inbatch、crossbatch两种方式。CBNS[4]采用crossbatch,既维护一个队列,存储之前batch的embedding,在每次迭代后,把当前batch的embedding和采样概率存入队列中,并将最早的embedding出队,在计算sampled softmax的时候可以用到batch内的和队列中的负样本。SBC[5]采用inbatch方式,随机采样同一个batchsize中的样本作为负样本。MNS[6]在采样时,使用了混合负采样,应用多种采样生产负样本。

2.2 级联学习与负样本扩充优化点

加入曝光未点击、精排top打分样本进行级联学习;同时扩充负样本量级,提升模型打分精准性。

2.2.1 级联学习

•样本优化: ◦加入曝光未点击样本、精排序样本。点击正样本:曝光未点击=1:4;将每个正样本对应的请求精排序分段采样,分段为精排打分序1-10、11-50、51-100、101-200、201-400、401-900,每个分段采样4条。 •学习目标优化: 1.原始学习目标: 正样本和负采样多分类问题 2.升级后学习目标:点击正样本、曝光未点击、精排序样本、随机负采样之间的精细化序关系融合: 1.点击正样本>曝光未点击>随机负采样 2.点击正样本>精排序top>精排序middle>精排序tail>随机负采样
新增曝光未点击精细化学习 新增精排序关系精细化学习
参考工作:京东搜索多目标召回模型实践 [1] 参考工作:Position-Aware ListMLE: A Sequential Learning Process for Ranking [3]

2.2.2 负样本扩充

之前的非内积优化实验及参考工作[4,5,6]验证扩充负样本可提升模型精准性。模型训练过程中,随机采样同一个batch中的样本作为负样本[6]可大幅扩充负样本个数。

优化点:负样本个数由百级别扩充至千级别。

 

3.离线&线上实验

通过离线消融实验验证各优化点对模型打分精准性提升。

3.1 离线实验

实验 vs base 点击hitrate@50 点击hitrate@100 点击hitrate@1200 订单hitrate@50 订单hitrate@100 订单hitrate@1200
消融实验-仅扩充负样本 +18.2% +27.1% +9.2% +9.1% +13.9% +1.1%
扩充负样本+只加曝光未点击 +20.3% +30.0% +12.5% +16.8% +18.6% +18.2%
扩充负样本+完整级联学习 +65.7% +56.6% +12.1% +67.3% +54.9% +26.7%

离线实验结论:

1.多组消融实验验证了加入曝光未点击、精排样本的完整级联学习引入能带来离线明显受益,尤其在订单维度。

3.2 线上实验

大盘指标:外页uctr +0.02%(0.8),引商点击 +0.53%, uctr含内页 +0.14%,外页ucvr+4.93%(0.00),含内页ucvr+4.17%(0.00),外页推荐用户转化率 +4.64%(0.00),含内页推荐用户转化率 +3.67%(0.00)

召回源指标:非内积召回线上召回源曝光相对+25%,ctr持平、cvr相对+4%

 

4.总结与思考

1.精排top打分样本、曝光未点击样本引入+级联学习 可大幅提升离线hitrate指标,线上召回源曝光大幅增长(+25%),ctr持平、cvr显著提升。 2.负样本扩充实验中,随着负样本扩充hitrate增长。后续将继续摸底负采样扩量上限。

 

5.参考文献

[1] 京东搜索多目标召回模型实践

[2] Listwise approach to learning to rank: theory and algorithm

[3] Position-Aware ListMLE: A Sequential Learning Process for Ranking

[4] Cross-Batch Negative Sampling for Training Two-Tower Recommenders

[5] Sampling-bias-corrected neural modeling for large corpus item recommendations

[6] Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations

 

作者:京东零售 张树旺

来源:京东云开发者社区 转载请注明来源

标签:采样,内积,级联,样本,学习,点击,召回
From: https://www.cnblogs.com/Jcloud/p/17995793

相关文章

  • 寒假学习15
    今天接着学习声音转换训练: 点击脚本可以查看转换进度: http://localhost:6006/在转换声音数据的时候显示错误 问了问gpt:还是无法解决。......
  • ControlNet学习实战1--字体海报
    最近玩AI绘画的过程中,突然发现了一个可以生成特点字体海报的技巧,特此记录学习一下。本片文章介绍大家制作一张2024龙年海报。ControlNet介绍ControlNet是一个应用于Stable_diffusion一个插件,该插件可以让AI更加精准的生成准确的想要的图片,关于这些内容后期会专门更加细致的说明......
  • Java学习(day1)
    注释单行注释`//publicclass多行注释/*publicclasshellopvsm*/文档注释~~~(没啥用)/**213213**/标识符首字符可以字母、下划线、美元符(不能是数字和其他符号)StringAhello="Q";Stringheloo="Q";String$he="Q";String_hello="Q";大小写敏感......
  • 大三寒假学习进度笔记20
    今日对LangChain进行了一些了解。LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型(LLM)和聊天模型提供支持的应用程序的过程。LangChain可以轻松管理与语言模型的交互,将多个组件链接在一......
  • 【实战项目】想自己通过C语言编写贪吃蛇吗?先来学习一下什么是WIN32API
    WIN32API前言大家好,很高兴又和大家见面了!!!在开始今天的内容前,咱们先闲聊一下。博主是从2023.8.19号晚上23:28左右正式开始接触C语言,在此之前,我也只是一个对编程一窍不通的小白,我的本科专业是给排水科学与工程,一个就业前景还不错但是不太适合我本人的专业。在经历了一些事情之后,我......
  • 李宏毅《机器学习》总结 - RNN & LSTM
    在slot-filling问题(如给一个句子,自己分析出时间、地点等)如果只连着不同的FC,那么会导致无法读出是arrive还是leave的情况,导致错误因此,需要NN来考虑到整个句子的信息,也就是需要有memory,这就是RNNRNN原理有了memory,就可以初步解决同一个信息由于句子不同导致的意......
  • Java编程学习(intellij idea)
    打开IntelliJIDEA新建Project新建Module新建Package输入Package名,enter新建JavaClass在Class中编程......
  • 哈希学习笔记
    定义与基本求法定义:用于用一个进制数表示一个字符串,以方便存储和判断两字符串是否相等。基本求法:联系十进制,如\(1234\)即\(1\times10^3+2\times10^2+3\times10+4\)同样的对于一个字符串,去一个大于其中任意字符(\(\text{ASCII}\)码)的数\(base\)作为进制。也就有了......
  • 1.29学习进度
    datafram的组成在结构层面:   structtype对象描述整个datafrme的表结构   structfield对象描述一个列的信息在数据层面:   row对象记录一行数据   column对象记录一列数据并包含列的信息2.dataframe的代码构建–基于rdd方式   dataframe对象可以从rdd转换而来,都......
  • Maven学习之路--依赖范围scope 对于该包的依赖范围作用域,取值有:test、compile、provid
    Maven学习之路--依赖范围scope对于该包的依赖范围作用域,取值有:test、compile、provided、runtime。scope默认取值为compile。\   <scope></scope>表示对于该包的依赖范围作用域,取值有:test、compile、provided、runtime。scope默认取值为compile。<scope>test</scope>。te......