0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

双塔模型扩量负样本的方法比较

深度学习自然语言处理 来源:NewBeeNLP 作者:雨下 2022-07-08 10:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

之前有一段时间做过双塔的召回模型[1],线上各个指标有了不错的提升。目前双塔模型也是被各大公司钟爱的召回模型。对主流召回模型的分享整理在:总结下自己做过的深度召回模型

双塔模型在训练时是对一个batch内样本训练。一个batch内每个样本 (user和item对)为正样本,该user与batch内其它item为负样本。这样训练的方式可能有以下问题:

负样本的个数不足。训练时负样本个数限制在了batch内样本数减1,而线上serving时需要在所有候选集中召回用户感兴趣的样本。模型只能从当前batch内区分出batch内正样本,无法很好地从所有候选集中区分正样本。

未点击的item没有做负样本。由于batch内的item都是被点击过的,因此没有被点击item无法成为负样本,在线上serving容易它们被召回出来。一种解决方法是之前没被点击过的item不导出到候选集中,然而这样存在的问题是召回的item很多是之前点击的热门item,而很多冷门的item没有机会召回。

最近,有两篇文章提出了双塔模型扩量负样本的方法。这两种方法我也曾尝试过,线下线上指标也有一定的提升。

一、Two Tower Model

再介绍其它方法之前,先回顾一下经典的双塔模型建模过程。

用 表示双塔模型计算的user 和item 的相似性:

是表示user塔,输出user表示向量; 是item,输出item表示向量。最后相似性是两个向量的余弦值。batch内概率计算公式为:表示一个batch的意思。损失函数是交叉熵。

作者在计算user和item的相似度时,用了两个优化方法:

。 可以扩大相似度范围,扩大差距。

。 是item 在随机样本中被采样的概率,也就是被点击的概率。

关于优化2的解释有很多。论文中说热门item出现在batch内概率较大,因此会被大量做负样本。另一种解释是增加对冷门item的相似度。相比热门item,冷门item更能反映用户兴趣。

图1反映了双塔模型的batch采样过程。query也可以表示user。我们采样一个batch的user和对应正样本的item,计算各自的embedding后,通过点乘得到logits(B*B)的矩阵。label矩阵是一个单位矩阵。logit矩阵与label矩阵的每对行向量一起求交叉熵。

e387cbe6-f6d4-11ec-ba43-dac502259ad0.png

图1:双塔模型batch采样

二、Mixed Negative Samping(MNS)

MNS[2]与双塔模型[1]出自谷歌团队的同一批作者。用一个batch数据训练时,MNS还会在所有的数据集中采样出 个item。这样可以让所有的item参与到训练中,一些曝光未点击的item也会当作负样本。同时,双塔模型中使用的 等于训练样本中的频率加上所有数据集中的频率分布。概率公式重新定义如下:

作者在这里只对负样本的相似性减去了频率的log值。

MNS的batch采样方法见图2。最终计算的logits和label矩阵是一个B*(B+B')维的。其实就是在图1展示的基础上再增加B'列。logits的最后B'列是user与B‘内的item计算的相似性,label的最后B'列是全0矩阵。

相比于每个样本都随机采样出一定量的负样本,为每个batch都采样出B‘个负样本的不仅有先前双塔模型的计算效率,也缓和负样本不足的问题,并且让每个样本均有机会做负样本。

e3a3695a-f6d4-11ec-ba43-dac502259ad0.png

图2:MNS的batch采样

三、Cross Batch Negative Samping(CBNS)

CBNS[2]是清华大学和华为合作提出的方法。文中提到,双塔模型的计算优势在于利用了batch内的负样本,减小的计算量。如果我们想扩大batch内样本个数,加大负样本个数,需要很多的内存。因此,作者提出一个使用之前训练过的item作为负样本的方法。

神经网络训练达到一定轮数后,会对相同的样本产生稳定的向量。作者在论文中定义了这个想法。因此把之前训练过的item作为当前训练的负样本时,模型只需要把这些item的向量拿过来使用,不需要再输出到神经网络中产生新的向量,毕竟这两种向量的差距较小。

作者使用了FIFO(先进先出)队列,item塔输出向量时,会放进FIFO中。当warm-up training达到一定的轮数后,训练模型时,会从FIFO拿出一批向量作为负样本的向量。这样做不仅减少了计算量,在扩充负样本的时候也减少了内存的使用。计算公式与MNS差别不大:

也就是内容一中的优化2。B'在这里是从FIFO中取出的一批向量。

图3展示了CBNS与只用batch内负样本的不同。CBNS维持了一个memory bank。在训练时,会从里面拿出一定量的向量。

然而,CBNS的负样本只有点击过的样本,未点击的样本无法作为负样本。

e3b87548-f6d4-11ec-ba43-dac502259ad0.png

图3:CBNS采样方法

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4842

    浏览量

    108185
  • fifo
    +关注

    关注

    3

    文章

    407

    浏览量

    45907

原文标题:双塔模型如何选择负样本?

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    航空发动机滑油箱过载腔隔板溢流通道内油液输运行为及对供油能力贡献度量化分析

    针对滑油箱过载试验验证能力不足的工程瓶颈,基于VOF多相流模型与可实现的k-ε湍流模型,建立了滑油箱过载腔动态供油的数值模拟方法。通过构建包含
    的头像 发表于 04-21 09:50 227次阅读
    航空发动机滑油箱<b class='flag-5'>负</b>过载腔隔板溢流通道内油液输运行为及对供油能力贡献度量化分析

    海光DCU完成Qwen3.5多模态MoE模型适配

    近日,海光DCU完成Qwen3.5-397B MoE旗舰多模态模型、Qwen3.5-35B-A3B MoE多模态模型适配、精度对齐与推理部署验证。本次适配依托FlagOS专属vLLM-plugin-FL多芯片插件实现落地。
    的头像 发表于 03-26 09:35 727次阅读

    新一代单目标 AI 跟踪算法,解决典型困难场景下的跟踪稳定性问题

    作为具备算法定制开发的公司,成都慧视之前的目标跟踪算法均是采用相关跟踪,通过在线更新分类模型来实现目标的定位跟踪。即以当前帧目标区域为正样本,背景区域为样本,基于机器学习或其他
    的头像 发表于 03-17 17:59 680次阅读
    新一代单目标 AI 跟踪算法,解决典型困难场景下的跟踪稳定性问题

    模型 ai coding 比较

    第三方裁判更客观 样本说明:当前样本30题,统计意义有限,建议后续扩大到100+题 数据污染风险:评估经典题目被模型训练集见过的可能性
    发表于 02-19 13:43

    请问单片机程序存储器64KB是外的还是外加内部的呢?

    单片机程序存储器64KB是外的还是外加内部的呢?
    发表于 01-06 08:24

    模板驱动 无需训练数据 SmartDP解决小样本AI算法模型开发难题

    。但是这个平台不适用于小样本AI模型开发,特别是一些特殊行业,数据本来就不多,但又有着需求,因此陷于两难。面临这种市场困境,慧视光电推出了一个全新的AI平台Sma
    的头像 发表于 09-09 17:57 1563次阅读
    模板驱动  无需训练数据  SmartDP解决小<b class='flag-5'>样本</b>AI算法<b class='flag-5'>模型</b>开发难题

    模型推理显存和计算估计方法研究

    过程中需要占用大量显存,导致推理速度变慢,甚至无法进行。 计算量过大:大模型的计算较大,导致推理速度慢,难以满足实时性要求。 为了解决这些问题,本文将针对大模型推理显存和计算的估计
    发表于 07-03 19:43

    提高SEA模型PBNR计算精度的方法及策略

    方案即声学包对整车噪声传递的影响,同时克服了NR方法中由于声源特性、声源处麦克风安装位置等因素给测试带来的不利影响,PBNR已广泛用应用于整车SEA模型对标及声学包目标的设定及分解工作中,故而在数字开发阶段,提高整车SEA 模型
    的头像 发表于 06-30 09:30 1550次阅读
    提高SEA<b class='flag-5'>模型</b>PBNR计算精度的<b class='flag-5'>方法</b>及策略

    碳化硅衬底切割进给与磨粒磨损状态的协同调控模型

    摘要:碳化硅衬底切割过程中,进给与磨粒磨损状态紧密关联,二者协同调控对提升切割质量与效率至关重要。本文深入剖析两者相互作用机制,探讨协同调控模型构建方法,旨在为优化碳化硅衬底切割工艺提供理论与技术
    的头像 发表于 06-25 11:22 851次阅读
    碳化硅衬底切割进给<b class='flag-5'>量</b>与磨粒磨损状态的协同调控<b class='flag-5'>模型</b>

    EastWave应用:折射现象实时演示

    本案例使用“自定义模式”演示折射现象。 模型示意图 本案例为二维结构,将Y、Z 方向设置为周期边界,即Y、Z 方向为无限大拓展的平板,X 方向设置开放边界。本案例主要采用点光源入射到平板上来实时
    发表于 06-13 08:41

    嵌入式AI技术漫谈:怎么为训练AI模型采集样本数据

    Q 需要为嵌入式AI模型提供多少样本数据? 我在向客户介绍如何使用AI方法设计一款客户产品时,客户理解,AI嵌入式项目的开发都是围绕数据展开的,如此,我经常会被问到这样的问题:客户的工程师需要采集
    的头像 发表于 06-11 16:30 1549次阅读

    FA模型和Stage模型API切换概述

    在FA模型下使用。因此在切换到Stage模型时,需要将应用中用到的FAModelOnly接口替换成Stage模型下对应的接口。下面是startAbility的接口切换示例,全接口列表
    发表于 06-06 06:29

    FA模型访问Stage模型DataShareExtensionAbility说明

    FA模型访问Stage模型DataShareExtensionAbility 概述 无论FA模型还是Stage模型,数据读写功能都包含客户端和服务端两部分。 FA
    发表于 06-04 07:53

    Stage模型绑定FA模型ServiceAbility的方法

    Stage模型绑定FA模型ServiceAbility 本小节介绍Stage模型的两种应用组件如何绑定FA模型ServiceAbility组件。 UIAbility关联访问
    发表于 06-04 06:54

    Stage模型启动FA模型PageAbility方法

    Stage模型启动FA模型PageAbility 本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。 UIAbility启动PageAbility
    发表于 06-04 06:36