双塔模型2之如何选择正确的正负样本
双塔模型:正负样本
选对正负样本的作用 > 改进模型的结构
正样本
什么是正样本?答:曝光且有点击的 “用户-物品” 二元组
-
存在的问题:存在28法则,即少部分物品(比如热门物品)占大部分点击,导致正样本大多数是热门物品
-
解决方案:过采样冷门物品,或降采样热门物品
如何选择负样本
- 召回阶段没有被召回的可以当负样本
- 粗排,精排阶段被筛除的可以当负样本
- 展示给用户曝光但没有被用户点击的可以当负样本(但这类不适应于做召回的负样本)

简单负样本
简单负样本是指未被召回的物品。
-
未被召回的物品,大概率是用户不感兴趣的。
-
未被召回的物品 ≈ 全体物品 (因为几亿个物品里只召回了几千个)。
-
根据2,只需从全体物品中做抽样,作为负样本。
-
如何做抽样?均匀抽样 or 非均匀抽样
全体物品负样本
均匀随机抽样: 对冷门物品不公平。
-
因为少部分物品占据大部分点击,正样本大多是热门物品。
-
若均匀抽样,产生的负样本大多是冷门物品。
总拿热门物品做正样本,冷门物品做负样本,这对冷门物品不公平,会导致热门物品更热冷门物品更冷,故需要非均匀抽样。
非均匀随机抽样:目的是打压热门物品。
- 负样本抽样概率与热门程度(点击次数)正相关。
- 抽样概率正比于点击次数^0.75 ,0.75是一个经验值。
Batch内负样本


解决对热门物品过度打压思路

困难负样本
困难负样本是被召回但是被排序淘汰的物品。这些物品被召回说明其跟用户的兴趣多少有点关系,被排序淘汰说明用户对该物品的兴趣不够强。对正负样本做二元分类时,这些物品容易被分错集容易被误判为正样品。
训练双塔模型是个二元分类任务,让模型区分正负样本:
- 全体物品(简单)分类准确率高
- 被粗排淘汰的物品(比较困难)因跟正样本有些相似,容易分错
- 精排分数靠后的物品(非常困难)因跟正样本很相似,更容易分错
工业界常见做法——混合简单,困难负样本作为训练数据

常见错误
如果你把曝光但未被点击的物品作为负样本来训练双塔模型,那么恭喜你踩雷了。

为什么不能把已曝光未点击的物品当作召回的负样本?从选择负样本的原理出发。

召回的任务是区分用户不感兴趣的物品和可能感兴趣的物品。
排序的任务是区分比较感兴趣的和非常感兴趣的。
有曝光没点击:物品可以通过精排模型曝光给用户,说明该物品已经非常匹配用户的兴趣点了,每次给用户展示几十个物品,用户不可能每个都点击,没有点击不代表对该物品不感兴趣,可能是碰巧没有点击或者可能是用户对别的物品更感兴趣。
故有曝光没点击的物品已经算是非常匹配用户的兴趣了,只是可能不是非常感兴趣,这可以作为排序的负样本,甚至可以作为召回的正样本但不应该把这类当作召回的负样本。
小结,曝光没点击的物品只适合于训练排序模型,不适用于训练召回模型(工业界的共识,反复做实验得出的结论)。
总结
-
正样本:曝光且有点击
-
简单负样本:
- 全体物品
- batch内负样本
-
困难负样本:被召回,但被排序淘汰
-
曝光且未点击的物品不能做召回的负样本,可以做排序的负样本
相关文章:
双塔模型2之如何选择正确的正负样本
双塔模型:正负样本 选对正负样本的作用 > 改进模型的结构 正样本 什么是正样本?答:曝光且有点击的 “用户-物品” 二元组 存在的问题:存在28法则,即少部分物品(比如热门物品)占大部分点击…...
《八大排序算法》
相关概念 排序:使一串记录,按照其中某个或某些关键字的大小,递增或递减的排列起来。稳定性:它描述了在排序过程中,相等元素的相对顺序是否保持不变。假设在待排序的序列中,有两个元素a和b,它们…...
清晰易懂的Rust安装与配置教程
Rust 是一门以安全性和性能著称的系统级编程语言,适合开发操作系统、游戏引擎和高性能服务。本教程将手把手教你安装 Rust 并配置开发环境,从安装到运行第一个程序,全程无坑! 一、安装 Rust(全平台通用) 1…...
零基础使用AI从0到1开发一个微信小程序
零基础使用AI从0到1开发一个微信小程序 准备操作记录 准备 想多尝试一些新的交互方式,但我没有相关的开发经验,html,JavaScript 等都不了解,看了一些使用AI做微信小程序的视频教程,觉得自己也行…...
基于Spring Boot的社区互助平台的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
【Elasticsearch入门到落地】10、初始化RestClient
接上篇《9、hotel数据结构分析》 上一篇我们讲解了导入的宾馆数据库tb_hotel表结构的具体含义,并分析如何建立其索引库。本篇我们来正式进入链接Elasticsearch的Java代码的编写阶段,先进行RestClient的初始化。 RestClient的初始化分为三步,…...
【AI大模型系列】DeepSeek V3的混合专家模型机制-MoE架构(八)
一、什么是MoE架构 MoE架构的核心思想是将输入数据分配给不同的专家子模型,然后将所有子模型的输出进行合并,以生成最终结果。这种分配可以根据输入数据的特征进行动态调整,确保每个专家处理其最擅长的数据类型或任务方面,从而实…...
HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览
一、文件下载 ① 网络请求配置 下载在线文件,需要访问网络,因此需要在 config.json 中添加网络权限: {"module": {"requestPermissions": [{"name": "ohos.permission.INTERNET","reason&qu…...
HTML5贪吃蛇游戏开发经验分享
HTML5贪吃蛇游戏开发经验分享 这里写目录标题 HTML5贪吃蛇游戏开发经验分享项目介绍技术栈核心功能实现1. 游戏初始化2. 蛇的移动控制3. 碰撞检测4. 食物生成 开发心得项目收获后续优化方向结语 项目介绍 在这个项目中,我使用HTML5 Canvas和原生JavaScript实现了一…...
AI 的出现是否能替代 IT 从业者?
AI 的出现是否能替代 IT 从业者? AI 的快速发展正在深刻改变各行各业,IT 行业也不例外。然而,AI 并非完全替代 IT 从业者,而是与其形成互补关系。本文将从 AI 的优势、IT 从业者的不可替代性、未来趋势等方面,探讨 AI…...
git 操作记录
1、检查子模块是否在主分支上 [git submodule foreach --recursive \\n [ "$(git rev-parse HEAD)" "$(git rev-parse origin/master)" ] \\n && echo " 一致: $name" || echo "不一致: $name"] 使用 git submodule fore…...
QSettings用法实战(相机配置文件的写入和读取)
很多情况,在做项目开发的时候,将参数独立出来是比较好的方法 例如:相机的曝光次数、曝光时长等参数,独立成ini文件,用户可以在外面修改即可生效,无需在动代码重新编译等工作 QSettings便可以实现该功能 内…...
机器学习——集成学习框架(GBDT、XGBoost、LightGBM、CatBoost)、调参方法
一、集成学习框架 对训练样本较少的结构化数据领域,Boosting算法仍然是常用项 XGBoost、CatBoost和LightGBM都是以决策树为基础的集成学习框架 三个学习框架的发展是:XGBoost是在GBDT的基础上优化而来,CatBoost和LightGBM是在XGBoost的基础上…...
SpringBoot集成Logback终极指南:从控制台到云端的多维日志输出
一、基础配置:快速启用Logback 1. 依赖管理(SpringBoot默认支持Logback) <!-- 无需额外依赖,但需要排除其他日志框架 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>…...
[蓝桥杯 2023 省 A] 网络稳定性
题目来自DOTCPP: 思路: ①由于题目没有告诉我们成树形结构,可能成环。因此,我们要自己构建树。 ②本体我们通过kruskal重构树,按边权从大到小排序,那么查询的两个点的最近公共祖先权值就是答案。 ③在通…...
SSM框架加成SpringBoot项目
🍓博主介绍: 资深程序设计专家,专注于网站开发与文档写作,拥有六年互联网行业经验。精通Java、Python、PHP等主流语言,擅长从需求分析到系统设计的全流程开发。累计开发过数百个网站及应用程序,注重代码质量…...
鸿蒙项目源码-天气预报app-原创!原创!原创!
鸿蒙天气预报项目源码包运行成功含文档ArkTS语言。 我半个月写的原创作品,请尊重原创。 原创作品,盗版必究!!!! 原创作品,盗版必究!!!! 原创作品…...
一文聊聊接入钉钉H5微应用系统实现免登操作技术思路实现验证
一文聊聊接入钉钉H5微应用系统实现免登操作技术思路实现验证 如何创建钉钉应用实现H5端免登录创建钉钉内部应用1.进入钉钉开放平台,配置自己的应用信息2.配置应用相关信息(建议选择旧版,后续有一个token获取,新版会提示URL不安全&…...
测试开发-定制化测试数据生成(Python+jmeter+Faker)
实现步骤 步骤一:使用pythonfaker随机生成测试数据 在python中开发脚本,随机生成所需要的数据。import json from faker import Faker faker Faker(locale"zh_CN")def generate_faker_user():return {"name" : faker.name(),&qu…...
智能体开发平台与大模型关系图谱
架构层级分解(以飞速灵燕智能体平台为例)动态交互流程 3. 关键连接点说明 4. 典型数据流示例...
LinuxTCP/UDP基础概念
TCP(传输控制协议) TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的主要特点包括: 面向连接:在传输数据之前,需要通过“三次握手”建立连接;传输结束后,通过“四次挥手”断开…...
docker日志大小和保存管理
目录 背景:云服务器小磁盘被docker日志占满 docker日志存放位置查看 避免被无感占满,建议进行配置日志选项,可以缩小文件保留大小和保留个数/时间 注意:compress选项 背景:云服务器小磁盘被docker日志占满 docke…...
Hive SQL实现近N周的数据统计查询
文/朱季谦 先前遇到过一个需求,需要基于HIVE统计近N周范围的数据,例如,统计近7周范围的数据指标。 需要用HIVE SQL去实现该功能,而HIVE SQL并没有PostgreSQL那样例如通过函数to_char((to_date(202550, YYYWW) - INTERVAL 5 weeks…...
【百日精通 JAVA | SQL篇 | 第一篇】初识数据库
一、数据库是什么? 数据库是一类软件,数据库的作用用于管理系统(这是一款成品软件,内部应用了很多数据结构)。 二、数据库分为两大类 1.关系型数据库 对于数据的要求比较严格 通常是以表格的方式来组织数据的。(和Excel差不多) 典型代表…...
大数据Spark(五十六):Spark生态模块与运行模式
文章目录 Spark生态模块与运行模式 一、Spark生态模块 二、Spark运行模式 Spark生态模块与运行模式 一、Spark生态模块 Spark 生态模块包括:SparkCore、SparkSQL、SparkStreaming、StructuredStreaming、MLlib 和 GraphX。与 Hadoop 相关的整个技术生态如下所示…...
Postman 7.3.5 旧版下载指南(Win64)及注意事项
Postman-win64-7.3.5-Setup 是 Postman 的一个旧版本(2019年发布,适用于 Windows 64位系统)。以下是相关信息和建议: 1. Postman 7.3.5 版本说明 功能:用于 API 开发、测试和协作。 系统要求:Windows 64位…...
人工智能在自然语言处理中的应用:从理论到实践的探索
自然语言处理(Natural Language Processing,NLP)一直是人工智能领域的重要研究方向。随着深度学习技术的飞速发展,NLP在近年来取得了突破性进展,从文本生成到机器翻译,从情感分析到智能问答,自然…...
Gossip协议:分布式系统中的“八卦”传播艺术
目录 一、 什么是Gossip协议?二、 Gossip协议的应用 💡三、 Gossip协议消息传播模式详解 📚四、 Gossip协议的优缺点五、 总结: 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式&…...
Oracle初识:登录方法、导入dmp文件
目录 一、登录方法 以sys系统管理员的身份登录 ,无需账户和密码 以账户密码的用户身份登录 二、导入dmp文件 方法一:PLSQL导入dmp文件 一、登录方法 Oracle的登录方法有两种。 以sys系统管理员的身份登录 ,无需账户和密码 sqlplus / a…...
微服务架构中的精妙设计:环境和工程搭建
一.前期准备 1.1开发环境安装 Oracle从JDK9开始每半年发布⼀个新版本, 新版本发布后, ⽼版本就不再进⾏维护. 但是会有⼏个⻓期维护的版本. ⽬前⻓期维护的版本有: JDK8, JDK11, JDK17, JDK21 在 JDK版本的选择上,尽量选择⻓期维护的版本. 为什么选择JDK17? S…...
