【经典论文阅读10】MNS采样——召回双塔模型的最佳拍档
这篇发表于2020 WWW 上的会议论文,提出一种MNS方式的负样本采样方法。众所周知,MF方法难以解决冷启动问题,于是进化出双塔模型,但是以双塔模型为基础的召回模型的好坏十分依赖负样本的选取。为了解决Batch内负样本带来的选择性偏差问题,本文提出MNS方法融合了批采样和均匀采样。实验表明,配合这种负样本的采样的双塔模型的召回能力得到了明显提升。

1. 贡献
-
本文提出一种新颖的负样本采样方法——
MNS(Mixed Negative Sampling),用于缓解训练模型负样本的selection bias问题。
![[图片]](https://img-blog.csdnimg.cn/direct/adb0c2e2733f4952a5c6d25f54467dac.png)

-
MNS这一方法的主要是与之前通用的batch / unigram sampling methods(这两部分详见后面的介绍) 相比较。
2. 思想
2.1 历史方法
有许多工作在研究基于Embedding的信息检索。其中的典型工作就是MF。
- MF的关键问题在于冷启动;(i.e. it’s hard for this method to generalize to items that have no user interaction.)
于是人们想到的方法是利用content feature 去建模,从而避免这种对互动的依赖,从而引出了双塔模型。content feature 范围很广。作者在文中给出了一些示例:For instance, content features of an app could be text descriptions, creators, categories, etc.
2.2 当前方法
新提出的双塔模型(Dual Encoder)方法架构如下:
![[图片]](https://img-blog.csdnimg.cn/direct/5394420c7f014fc1aa0843fda11633b0.png)
但新的架构又出现了新的问题:大家发现,对于双塔模型来说,其关键在于负样本的选取。
![[图片]](https://img-blog.csdnimg.cn/direct/8d19408f7e3b42fe8215fa9509f09e69.png)
其背后的原因是:
- 正样本(用户参与点击、互动、反馈)很好收集,负样本则很难(一是因为负样本太多,二是因为负样本不直观)。
之前的负样本采样方法主要是:- unigram sampling:
- batch negatives :【也就是用同一batch类的样本做负样本】
batch negatives方法存在的问题有:
(1)训练数据的选择偏差(selection bias)。batch negatives的弊端很明显:因为用同batch内的正样本做为其它对的负样本就会导致负样本选择过于局限的问题(因为正样本要么是新热高时鲜、要么就是质量好的,无法代表用户不想点击的那波负样本)。
![[图片]](https://img-blog.csdnimg.cn/direct/7945ebf0c42445f6b9e30603a11acbfd.png)
(2)采样函数缺少灵活性
batch negatives 方法受限于训练数据的分布,但是这个训练数据又是根据用户的点击得到,很难被直接调整。
同时hierarchical softmax 和 sampled softmax 均不适合训练双塔结构,原因是:

如果我们将召回问题视作是一个多分类问题,也就是如下表述:

那么在反向传播更新梯度的时候,就会遇到一个问题——很难在低时间复杂度的情况下计算出梯度;原因见作者在文中给出的一个推导:

这个推导说明的是:在庞大的语料库中,求出第二项是不切实际的(而这第二项又是更新梯度的关键项)。作者原文用的话是:It is generally impractical to compute the second term over all items in a huge corpus.
综合分析上述种种,本文提出方法:In particular, in addition to the negatives sampled from batch training data, we uniformly sample negatives from the candidate corpus to serve as additional negatives. 该方法简称 MNS。
MNS 的优势在于:
- 通过引入全局负样本(因为作者使用了均匀负采样),缓解选择偏差问题。
- 调整采样分布,通过改变额外的负样本的数目。
MNS的思想简图如下所示:
![[图片]](https://img-blog.csdnimg.cn/direct/795b7fc384674d89a110066e5c0a851c.png)
3. 实验
3.1 实验细节

3.2 实验结果
实验结果从如下几个方面进行考量:
- 离线Recall@K指标表明MNS明显地提升了检索质量;在线指标表明带来更多的高质量app安装(本文的场景应该是谷歌play,用于app 推荐)。
- 在线指标(AB实验)
3.2.1 比较模型性能
观察的结论:
- Two-tower with Batch Negatives 比 MLP with Sampled Softmax 的效果都要差。Batch Negatives 的这版模型召回了非常多的不相关的长尾app(这也与作者前文所述的 selection bias 相符合。背后的真实原因就是:Low-quality tail apps do not appear as negatives frequent enough.)
3.2.2 取MNS的超参数
前文说到:要对不常见的样本进行采样,那么采多少条呢?实验证明,在作者的这个场景中,取值是8192,这个可借鉴意义不大。
4. 疑问
- 这里的with various formats 是什么意思?
- unigram distribution是什么意思?
- sampled softmax 是什么意思?
有两篇论文可以参考学习: - label is associated with a rich set of content features.
5. 好句分享
a body of...一群…This paper lies in this line of work.本文就是这一类研究工作之一。Accordingly, sampling batch negatives only from training data will end up with a model lacking resolution for long-tail apps, which seldom appear in the training data.
end up with以 … 结束
相关文章:
【经典论文阅读10】MNS采样——召回双塔模型的最佳拍档
这篇发表于2020 WWW 上的会议论文,提出一种MNS方式的负样本采样方法。众所周知,MF方法难以解决冷启动问题,于是进化出双塔模型,但是以双塔模型为基础的召回模型的好坏十分依赖负样本的选取。为了解决Batch内负样本带来的选择性偏差…...
串行低功耗芯片间媒体总线(SLIMbus)介绍
文章目录 SLIMbus简介slimbus设备和设备类Manager DeviceFramer DeviceInterface DeviceGeneric Device (Function)SLIMbus组件简单的SLIMbus组件复杂的SLIMbus组件SLIMbus的DATA和CLKSLIMbus的Clock Frequencies和GearsCells, Slots, Subframes, Frames, and...
esp32-S3 使用自带的大模型,实现本地文字转语言tts
目录 CMakeLists.txt文件中: 初始化以及实际运用代码: 在partitions.csv 内存分配文件中,添加voice_data项...
Redis事务(1)
什么是事务? Redis 的事务和 MySQL 的事务概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行。 但是注意体会 Redis 的事务和 MySQL 事务的区别: 弱化的原⼦性: redis 没有 “回滚机制”. 只能做到这些操作 “批量执⾏”. 不能做到 “⼀个失败就…...
202206青少年软件编程(Python)等级考试试卷(四级)
第 1 题 【单选题】 有如下 Python 程序, 包含 lambda 函数, 运行该程序后, 输出的结果是? ( ) g = lambda x,y:x*yprint(g(2,3))A :2 B :3 C :6 D :8 正确答案:C 试题解析: g = lambda x, y: x*y, lambda 函数返回参数 x 和 y 的积, 因此选 C。 第 2 题 【单选…...
大作业爬取手机数据,实现手机推荐系统以及朋友圈手机论坛
1、功能简介 (1)用户注册与用户登录 (2)手机搜索、手机比拼、手机个性化推荐 (3)点击搜索的手机图片会就用户行为,轮播展示用户行为,推荐点击次数靠前的手机 (4…...
Leetcode 环形链表|| 快慢指针解法
但是我们不知道 aaa 的值,该怎么办?依然是使用双指针法。考虑构建一个指针,此指针需要有以下性质:此指针和 slow 一起向前走 a 步后,两者在入口节点重合。那么从哪里走到入口节点需要 aaa 步?答案是链表头节…...
出书,是「盖你自己的房子」你知道吗?
出书是「盖你自己的房子」 尊敬的出书盟友: 你好!我希望这封信能够激发您对出书和阅读的热情。 在当今信息爆炸的时代,每个人都有机会分享自己的故事、思想和知识。而书籍作为一种流传百年的媒体,依旧承载着无限的力量和影响力…...
深入探索MySQL SELECT查询:从基础到高级,解锁数据宝藏的密钥
系列文章目录 更新ing... MySQL操作全攻略:库、表、数据、事务全面指南深入探索MySQL SELECT查询:从基础到高级,解锁数据宝藏的密钥MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能PyMySQL:连接P…...
驾校管理系统-手把手调试搭建
驾校管理系统-手把手调试搭建 驾校管理系统-手把手调试搭建...
知能行——考研数学利器
知能行使用体验全记录 首先,我先介绍一下自己,我是2018级的,2022年6月毕业,本科沈阳工业大学(双非),今年二战,专业课自动控制原理,数二英二,目标是江南大学控…...
pod 库发布脚本
repo_tag.sh 文件 #!/bin/zsh# 私有库名称 #PODNAME${PWD##*/} PODNAME"LBHorizontalCenterLayout"function obtain_git_tag {# 类似 "s.version 0.0.1"VERSION_STRINGgrep -E s.version.* ${PODNAME}.podspecTAGtr -cd "[0-9.]" <<&…...
Java 8 新特性:深入理解 Lambda 表达式的强大与应用
Java 8 新特性:深入理解 Lambda 表达式的强大与应用 Lambda 表达式是 Java 8 引入的重要特性之一,它允许将匿名函数(即无名称的函数)作为参数传递给方法,简化了代码的编写,使代码更加简洁和易读。本文将深…...
HTML5 Canvas图形绘制技术应用
HTML5 Canvas图形绘制技术应用 目录 Canvas基础知识基本绘图操作路径操作文本绘制图像绘制变换复合图形与剪切阴影渐变动画与交互高级技巧...
JMETER工具:以录制手机app为例
JMETER工具:以录制手机app为例子 JMETER安装和环境配置 pc需要安装jdk,并进行jdk的环境配置,安装好jdk并配置好后,通过命令行输入java –version出现以下界面就表示安装成功: (对应的jdk版本不可太低&…...
PDF文件权限密码保护:如何去除及解决方法
如果你忘记了PDF文件密码,不用担心!PDF解密、找回密码、去除密码的方法简单易行。只需两步:1、打开百度搜索“密码帝官网”;2、在官网页面点击“立即开始”,上传文件,稍等片刻即可找回密码。这种方法安全、…...
【电子信息(工程)】电子通信创新创业教育综合
电子通信创新创业教育 阐述电磁场、电磁波和电磁频谱及应用一、电磁场 法拉第根据电流与磁场的关系,提出了电磁感应定律:如果电磁场中有处于运动状态下的闭合回路导体存在,流经该导体磁场的磁场强度和磁场量,通常都会出现相应的变化,电磁感应电流由此而产生。随后,英国的…...
光伏无人机巡检的工作原理是什么?
随着科技的飞速发展,无人机技术已经深入到众多领域,其中光伏电站的巡检工作便是其应用的一个重要方向。光伏无人机巡检,通过搭载各种先进的传感器和设备,对光伏电站进行全面的、高效的、安全的检测,为电站的运维管理提…...
泛型中K T V E ? Object等分别代表的含义
E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型&…...
常用损失函数学习
损失函数(Loss Function),在机器学习和统计学中,是用来量化模型预测输出与真实结果之间差异的函数。简而言之,损失函数衡量了模型预测的好坏,目标是通过最小化这个函数来优化模型参数,从而提高预…...
软件构建管理中的依赖管理优化
软件构建管理中的依赖管理优化 在现代软件开发中,依赖管理是软件构建过程中的核心环节之一。随着项目规模的扩大和第三方库的广泛使用,依赖关系的复杂性急剧增加,如何高效管理这些依赖成为开发团队必须面对的挑战。优化依赖管理不仅能提升构…...
代码规范与团队协作效率
代码规范与团队协作效率:提升开发质量的关键 在软件开发中,代码规范与团队协作效率是决定项目成败的重要因素。统一的代码规范能减少维护成本,提高可读性,而高效的团队协作则能加速交付周期,降低沟通成本。尤其在多人…...
STM32 UDS Bootloader完整方案:简化学习ISO15765与ISO14429协...
uds bootloader stm32 完整方案 iso15765 iso14429 简化学习难度 需要可以加好友。 下载42k速度在15秒左右 第二版上位机:模仿vector vflash 设计简洁高效,下载速度提高到11k byte/s。01-firmware :包含stm32 boot 软件 设备驱动 应用程序 02-上位机 …...
别再只会用DS18B20了!用STM32+PT100搭建高精度测温系统,从电桥原理到代码实现的深度解析
STM32PT100高精度测温系统:从电桥设计到代码优化的全链路实践 在工业控制、实验室设备和精密制造领域,温度测量的准确性往往直接影响产品质量和生产效率。虽然DS18B20等数字温度传感器因其即插即用特性广受欢迎,但当测量精度要求达到0.3℃甚至…...
BLE按键服务设计:轻量级只读GATT特征值实现
1. 项目概述ble-button是一个面向嵌入式 BLE(Bluetooth Low Energy)应用的轻量级服务模板,其核心目标是为物理按键、拨动开关、触摸感应等单比特输入设备提供标准化、可复用的蓝牙 GATT(Generic Attribute Profile)服务…...
AI开发-python-langchain框架(--自定义Tool )挪
起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧ÿ…...
Arduino轻量级SNMP v1/v2c嵌入式协议栈
1. 项目概述 SNMP(Simple Network Management Protocol,简单网络管理协议)是TCP/IP协议族中用于网络设备监控与管理的核心应用层协议。该开源库为Arduino生态提供了轻量级、可裁剪的SNMP v1/v2c协议栈实现,支持在资源受限的微控制…...
5分钟上手IndexTTS2:让AI语音合成真正听懂你的情感!
5分钟上手IndexTTS2:让AI语音合成真正听懂你的情感! 【免费下载链接】index-tts An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System 项目地址: https://gitcode.com/gh_mirrors/in/index-tts 还在为视频配音找不到…...
AI Agent编排中的跨模型调用事务断裂:基于W3C Trace Context+自定义Saga元数据的工业级修复方案
第一章:AI原生软件研发分布式事务处理方案 2026奇点智能技术大会(https://ml-summit.org) AI原生软件在模型训练调度、向量服务编排、多模态推理流水线等场景中,天然具备跨服务、跨存储、跨云边端的强分布式特征。传统ACID事务难以覆盖LLM微服务协同推理…...
面向高端商用咖啡机的功率MOSFET选型分析——以高效能、高可靠电源与加热泵驱动系统为例
在精品咖啡文化与商业运营效率需求并重的背景下,高端商用咖啡机作为保障出品质量与连续运行稳定的核心设备,其性能直接决定了加热效率、压力控制精度和长期可靠性。电源与加热泵驱动系统是咖啡机的“心脏与肌肉”,负责为锅炉加热器、水泵、磨…...
