【经典论文阅读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),在机器学习和统计学中,是用来量化模型预测输出与真实结果之间差异的函数。简而言之,损失函数衡量了模型预测的好坏,目标是通过最小化这个函数来优化模型参数,从而提高预…...
SDD基于规范编程-OpenSpec及SuperPowers伟
智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式,即所谓的“工程导向型”开发,要求开发者创建一个复杂的项目结构,包括项目文件(.csproj)、解决方案文件(.sln)、属性设置以及依赖…...
【GUI-Agent】阶跃星辰 GUI-MCP 解读---()---HITL(Human In The Loop)啦
插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能,现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包,包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件…...
ComfyUI面部修复FaceDetailer参数调优实战
1. FaceDetailer核心参数解析与实战调优 第一次接触ComfyUI的FaceDetailer时,我被它密密麻麻的参数面板吓了一跳。但经过三个月的实际项目打磨,我发现只要掌握几个关键参数,就能让面部修复效果立竿见影。先来看最影响效果的四个核心参数&…...
RexUniNLU开源NLU模型实战:金融研报关系抽取+事件时间线自动生成案例
RexUniNLU开源NLU模型实战:金融研报关系抽取事件时间线自动生成案例 1. 引言:当研报分析遇上智能信息抽取 想象一下这个场景:作为一名金融分析师,你刚收到一份长达50页的行业深度研究报告。你需要从中找出所有提到的公司、它们之…...
告别接线烦恼!用JDY-23蓝牙模块DIY一个手机遥控的智能小夜灯(附Arduino代码)
用JDY-23蓝牙模块打造手机遥控的智能小夜灯 深夜起床开灯太刺眼?传统小夜灯需要手动开关太麻烦?今天我们就用JDY-23蓝牙模块和Arduino,DIY一个可以通过手机APP远程控制的智能小夜灯。这个项目不仅实用,还能让你深入了解蓝牙通信和…...
AI未来3-5年十大核心方向
基于对人工智能领域趋势的分析,未来3-5年,以下十个核心方向将深刻影响技术演进与社会变革。1. 多模态大模型与全能模型 (Omni-Multimodal Models)技术发展:多模态预训练大模型将成为AI技术栈的标配,能够无缝理解和生成文本、图像、…...
使用Microsoft Agent Framework构建C# AI代理雍
简介 langchain中提供的chain链组件,能够帮助我门快速的实现各个组件的流水线式的调用,和模型的问答 Chain链的组成 根据查阅的资料,langchain的chain链结构如下: $$Input \rightarrow Prompt \rightarrow Model \rightarrow Outp…...
neo4j节点多重关系时语义重复
示例:“由”与“由_研发”重复考虑到LLM查重每一次都要调用新的LLM,采用向量库查重prompt优化新增规则:4. 同一语义只能用一个词,不能出现"训练于"和"在...中训练"这种重复第一阶段:纯向量去重&am…...
Klib未来展望:探索轻量级C库的无限可能与社区共建路线图
Klib未来展望:探索轻量级C库的无限可能与社区共建路线图 【免费下载链接】klib A standalone and lightweight C library 项目地址: https://gitcode.com/gh_mirrors/kl/klib Klib作为一款独立轻量级C语言库,以其高效、简洁的设计理念在开发者社区…...
G-Helper深度探索:如何用开源工具重塑华硕笔记本的性能控制体验
G-Helper深度探索:如何用开源工具重塑华硕笔记本的性能控制体验 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, …...
