非内积级联学习

news2024/11/17 7:26:12

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

作者:京东零售 张树旺

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1419824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

142. 环形链表 II(力扣LeetCode)

文章目录 142. 环形链表 II题目描述解题思路判断链表是否有环如果有环,如何找到这个环的入口 c代码 142. 环形链表 II 题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个…

thinkadmin操作栏审核通过(操作确认),审核驳回(录入信息)

录入信息页面 {extend name="../../admin/view/main"}{block name=content} <style>textarea {font-size: 16px;padding: 10px;border: 1px solid #ccc;

格子表单GRID-FORM | 嵌套子表单与自定义脚本交互

格子表单/GRID-FORM已在Github 开源&#xff0c;如能帮到您麻烦给个星&#x1f91d; GRID-FORM 系列文章 基于 VUE3 可视化低代码表单设计器嵌套表单与自定义脚本交互 新版本功能 &#x1f389; 不觉间&#xff0c;GRID-FORM 已经开源一年&#xff08;2023年1月29日首次提交…

蓝桥杯---加法变乘法

我们都知道:123 ….. 491225&#xff0c;现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如&#xff1a;123 ... 10*1112 ... 27*2829 ... 492015 就是符合要求的答案. 请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是 提交10)…

inode生命周期

1.添加inode到inode cache链表 当inode的引用计数器i_count为0后&#xff0c;会调用iput_final去释放 static void iput_final(struct inode *inode) {struct super_block *sb inode->i_sb;const struct super_operations *op inode->i_sb->s_op;unsigned long sta…

07.领域驱动设计:了解3种常见微服务架构模型的对比和分析

目录 1、概述 2、整洁架构 3、六边形架构 4、三种微服务架构模型的对比和分析 5、从三种架构模型看中台和微服务设计 5.1 中台建设要聚焦领域模型 5.2 微服务要有合理的架构分层 5.2.1 项目级微服务 5.2.2 企业级中台微服务 5.3 应用和资源的解耦与适配 6、总结 1、概…

云计算底层技术、磁盘技术揭秘虚拟化管理、公有云概述

查看本机是否具备虚拟化支持 硬件辅助虚拟化 处理器里打开 虚拟化Inter VT-x/EPT 或AMD-V 构建虚拟化平台工具软件包 yum 与 dnf Yum和DNF都是用于管理Linux系统中的软件包的工具&#xff0c;但它们在许多方面存在一些差异。以下是一些可能的区别&#xff1a; 依赖解…

Qt|QPushButton控件讲解

前提 按钮分为了四种状态&#xff1a;常态、聚焦、按下、禁用 前一段时间更新了MFC框架下CButton的自绘。因为MFC框架下的按钮限制性很高&#xff0c;所以只能由自绘实现各种风格&#xff0c;但是QT框架完美的解决了这个问题&#xff0c;我们只需要了解如何调用&#xff0c;就…

Doris简介及单机部署(超详细)

文章目录 一、Doris简介1、Doris介绍2、Doris架构 二、Doris单机部署&#xff08;Centos7.9&#xff09;1、下载Doris2、准备环境3、安装部署3.1 创建存储目录3.2 配置 FE3.3 启动 FE3.4 查看 FE 运行状态3.5 配置 BE3.6 启动 BE3.7 添加 BE 节点到集群3.8 查看 BE 运行状态3.9…

elementui中的tree自定义图标

需求&#xff1a;实现如下样式的树形列表 自定义树的图标以及点击时&#xff0c;可以根据子级的关闭&#xff0c;切换图标 <el-tree :data"treeList" :props"defaultProps"><template #default"{ node, data }"><span class&quo…

C++PythonC# 三语言OpenCV从零开发(7):图像的阈值

文章目录 相关链接前言阈值阈值使用代码PythonCCsharpcsharp代码问题 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程&#xff08;附带课程课件资料课件笔记&#xff09; OpenCV一个窗口同时显示多张图片 …

C++提取ICO图标(PE文件资源提取)

最近需要写一个提取EXE或者DLL图标资源的功能, 网上找了很久, 要么功能不好用, 最后结果如下: 1.很多是加载为HICON句柄后转换为图片保存, 全损画质..., 2.后来找了个还能用的, 详见 https://github.com/TortoiseGit/TortoiseGit/blob/master/src/Utils/IconExtractor.cpp …

【Axure教程0基础入门】04交互动效基础

04交互动效基础 1.Axure交互事件的基本概念 &#xff08;1&#xff09;交互动效Interaction 原型图中&#xff0c;原件与页面的动态效果&#xff08;dynamic behaviors&#xff09;。 &#xff08;2&#xff09;交互动效的构成 目标&#xff08;target&#xff09;&#xff1a;…

Windows系统本地安装Wnmp服务并结合内网穿透公网远程访问

目录 前言 1.Wnmp下载安装 2.Wnmp设置 3.安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4.固定公网地址访问 结语 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊Windows…

我用Rust开发Rocketmq name server

我是蚂蚁背大象(Apache EventMesh PMC&Committer)&#xff0c;文章对你有帮助给Rocketmq-rust star,关注我GitHub:mxsm&#xff0c;文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsmapache.com 1. Rocketmq-rust namesrv概述 经过一个多月的开发&#xff0c;终…

【Docker】docker安装jenkins

一、执行命令 下载jenkins镜像 #下载jenkins 镜像 docker pull jenkins/jenkins:latest-jdk8 启动jenkins容器 #启动jenkins 容器 #挂载 如果不挂载 每次启动jenkins的配置、插件、用户等信息都没有了 #jenkins_home 包含jenkins配置、插件、用户等信息。 要指定必须配置用…

StarRocks-3.1.0 单节点部署

1. 相关环境准备 FE&#xff1a; /opt/starrocks BE&#xff1a; /opt/starrocks 安装包下载 wget https://releases.starrocks.io/starrocks/StarRocks-3.1.0.tar.gz解压缩 tar -zxvf StarRocks-3.1.0.tar.gz 安装jdk (v2.5 及以上版本建议安装 JDK 11&#xff0c;我们使用…

260:vue+openlayers 通过webgl方式加载矢量图层

第260个 点击查看专栏目录 本示例介绍如何在vue+openlayers中通过webgl方式加载矢量图层。在做这个示例的时候,采用vite的方式而非webpack的方式。这里的基础设置需要改变一下。 ol的版本7.5.2或者更高。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文…

探索数字经济:从基础到前沿的奇妙旅程

新一轮技术革命方兴未艾&#xff0c;特别是以人工智能、大数据、物联网等为代表的数字技术革命&#xff0c;催生了一系列新技术、新产业、新模式&#xff0c;深刻改变着世界经济面貌。数字经济已成为重组全球要素资源、重塑全球经济结构、改变全球竞争格局的关键力量。预估到20…

ICLR 2024 Oral|微软推出多模态数学测试基准MathVista,挑战Google Gemini

微软等机构提出了首个以视觉场景为核心的数学推理基准 — MathVista。他们提供了一份长达 116 页的详尽报告&#xff0c;其中深入剖析了包括 GPT-4V 在内的 12 个大型模型的性能。令人瞩目的是&#xff0c;MathVista 已被 Google Gemini 采纳为其多模态数学测试的标准之一。此项…