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

    文章

    4572

    浏览量

    98749
  • fifo
    +关注

    关注

    3

    文章

    369

    浏览量

    43069

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

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

收藏 人收藏

    评论

    相关推荐

    模型Reward Model的trick应用技巧

    借助对比学习和元学习的方法。增加对比学习的loss,对比学习通过增强模型区分能力,来增强RM的对好坏的区分水平。元学习则使奖励模型能够维持区分分布外样本的细微差异,这种
    发表于 01-25 09:31 278次阅读
    大<b class='flag-5'>模型</b>Reward Model的trick应用技巧

    新技术在生物样本冷冻中的应用案例分析

      一、冷冻样本的新技术应用   1. 低温离心   低温离心是一种比较先进的生物样本冷冻处理技术,它可以在较低温度下将样本进行离心,从而有效地分离和保存其中的细胞和分子。相比传统的液
    发表于 12-26 13:30

    LabVIEW进行癌症预测模型研究

    病例和癌症相关死亡人数有所增加。其中,乳腺癌是女性中最常见的癌症类型。 本研究采用ML技术对乳腺癌进行预测,比较了当前方法和提出的方法。 使用诊断乳腺癌数据集包含699个样本,9个变量
    发表于 12-13 19:04

    探索高效的大型语言模型!大型语言模型的高效学习方法

    在大型语言模型(LLMs)的应用中,提示工程(Prompt Engineering)是一种关键技术,用于引导模型生成特定输出或执行特定任务。通过精心设计的提示,可以显著提高LLMs的性能和适用性。本文将介绍提示工程的主要方法和技
    发表于 12-13 14:21 321次阅读
    探索高效的大型语言<b class='flag-5'>模型</b>!大型语言<b class='flag-5'>模型</b>的高效学习<b class='flag-5'>方法</b>

    异构信号驱动下小样本跨域轴承故障诊断的GMAML算法

    论文提出了一种通用的模型不可知元学习(GMAML)方法,用于在异质信号驱动的不同工况下,进行轴承的少样本故障诊断。
    的头像 发表于 12-06 15:07 569次阅读
    异构信号驱动下小<b class='flag-5'>样本</b>跨域轴承故障诊断的GMAML算法

    ADCMP581是差分输出的比较器为什么会出现的输出电流?

    您好,我在查阅ADCMP581手册的时候发现581的最大输出电流为-40mA(手册第6页),我不太理解的是581是差分输出的比较器为什么会出现的输出电流?难道是一端为-40mA,另一端为+40mA
    发表于 11-23 06:20

    什么是零样本学习?为什么要搞零样本学习?

    样本分类的技术目前正处于高速发展时期, 所涉及的具体应用已经从最初的图像分类任务扩展到了其他计算机视觉任务乃至自然语言处理等多个相关领域。 对此, 本文将其称为广义零样本分类。 相应地, 我们将针对图像分类任务的零样本分类任务
    发表于 09-22 11:10 1054次阅读
    什么是零<b class='flag-5'>样本</b>学习?为什么要搞零<b class='flag-5'>样本</b>学习?

    TPU-Mlier在模型转换过程中使用的模型验证方法是什么?

    您好,请教一下模型转换中的验证方法用到的是什么,是否是通过比较模型输出并使用数学函数来检测差异?使用了什么数学函数,是否以公差进行对比判断呢?
    发表于 09-15 07:40

    使用快速Fourier变换法将ADC样本转换为频域频谱的方法和结果

    应用:展示使用快速Fourier变换法将ADC样本转换为频域频谱的方法和结果。 BSP 版本: NUC121/125系列 BSP CMSIS V3.01.003 硬件
    发表于 08-22 08:13

    如何在缺陷样本少的情况下实现高精度的检测

    导 读 缺陷检测是工业生产过程中的关键环节,其检测结果的好坏直接影响着产品的质量。而在现实场景中,但产品瑕疵率非常低,甚至是没有,缺陷样本的不充足使得需要深度学习缺陷检测模型准确率不高。如何在缺陷
    的头像 发表于 06-26 09:54 778次阅读
    如何在缺陷<b class='flag-5'>样本</b>少的情况下实现高精度的检测

    基于GAN的零缺陷样本产品表面缺陷检测

    缺陷检测是工业生产过程中的关键环节,其检测结果的好坏直接影响着产品的质量。而在现实场景中,但产品瑕疵率非常低,甚至是没有,缺陷样本的不充足使得需要深度学习缺陷检测模型准确率不高。如何在缺陷样本
    的头像 发表于 06-26 09:49 620次阅读
    基于GAN的零缺陷<b class='flag-5'>样本</b>产品表面缺陷检测

    M261的比较器,端采用DAC0的输出可以吗?

    M261的比较器,端采用DAC0的输出,可以吗?
    发表于 06-20 07:28

    nuc029内部比较器的端,可以设置一个可以选择的电压?

    nuc029,关于内部比较器的使用? nuc029,内部比较器的端,可以设置一个可以选择的电压?这个参考电压的值是如何设置的吗?
    发表于 06-15 08:45

    一个通用的自适应prompt方法,突破了零样本学习的瓶颈

    为了解决这个问题,这篇研究提出了一种Universal Self-adaptive Prompting (USP)方法,对LLMs的零样本学习进行了优化,同时也适用于少样本学习任务。USP只需要少量
    的头像 发表于 06-01 14:48 506次阅读
    一个通用的自适应prompt<b class='flag-5'>方法</b>,突破了零<b class='flag-5'>样本</b>学习的瓶颈

    高效扩充样本库 | AIDG AI 样本生成器 2.0 焕新而来

    高质量样本有利于快速构建理想的深度学习模型,然而在动力电池、3C电子、汽车制造等高良率的生产场景中,想要获取足够数量的缺陷样本用于AI品质检测,可能需要做出额外的努力。用图像处理软件制作缺陷
    的头像 发表于 05-08 09:41 1080次阅读
    高效扩充<b class='flag-5'>样本</b>库 | AIDG AI <b class='flag-5'>样本</b>生成器 2.0 焕新而来