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

    文章

    4785

    浏览量

    101279
  • fifo
    +关注

    关注

    3

    文章

    390

    浏览量

    43930

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

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

收藏 人收藏

    评论

    相关推荐

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    重复项或使用编辑距离算法比较文本相似度。数据标注:高质量的数据标注直接影响模型的性能。标注过程应遵循明确标注规则、选择合适的标注工具、进行多轮审核和质量控制等原则。数据增强:提高模型泛化能力的有效
    发表于 01-14 16:51

    Kaggle知识点:使用大模型进行特征筛选

    方法依赖于数据集中的样本点进行统计推断,而基于文本的方法需要描述性的上下文以更好地在特征和目标变量之间建立语义关联。这种方法利用了大型语言模型
    的头像 发表于 12-03 01:06 1397次阅读
    Kaggle知识点:使用大<b class='flag-5'>模型</b>进行特征筛选

    云端语言模型开发方法

    云端语言模型的开发是一个复杂而系统的过程,涉及数据准备、模型选择、训练优化、部署应用等多个环节。下面,AI部落小编为您分享云端语言模型的开发方法
    的头像 发表于 12-02 10:48 220次阅读

    RNN与LSTM模型比较分析

    RNN(循环神经网络)与LSTM(长短期记忆网络)模型在深度学习领域都具有处理序列数据的能力,但它们在结构、功能和应用上存在显著的差异。以下是对RNN与LSTM模型比较分析: 一、基本原理与结构
    的头像 发表于 11-15 10:05 961次阅读

    常见AI大模型比较与选择指南

    在选择AI大模型时,明确具体需求、了解模型的训练数据、计算资源要求和成本,并考虑模型的可解释性和社区支持情况等因素至关重要。以下是对常见AI大模型
    的头像 发表于 10-23 15:36 1356次阅读

    AI大模型的性能优化方法

    AI大模型的性能优化是一个复杂而关键的任务,涉及多个方面和策略。以下是一些主要的性能优化方法: 一、模型压缩与优化 模型蒸馏(Model Distillation) 原理:通过训练一个
    的头像 发表于 10-23 15:01 1185次阅读

    气密性检测:为什么在压测试中泄漏是正值,什么时候出现负值

    本文介绍了气密性检测的基本原理,解释了为什么在正压和压测试中泄漏都显示为正值,还揭示了差压气密性检测结果出现负值的有趣现象。通视频案例,帮助读者轻松理解气密性检测中的各种情况,提高实际工作中解决问题的能力。
    的头像 发表于 08-22 16:59 719次阅读
    气密性检测:为什么在<b class='flag-5'>负</b>压测试中泄漏<b class='flag-5'>量</b>是正值,什么时候出现负值

    OPA564能否补偿宽增益带宽积?

    OPA564有无方法宽增益带宽积,若无,是否有能满足2Mhz正弦偏置电流输出能力的方法
    发表于 07-30 07:16

    ai大模型训练方法有哪些?

    AI大模型训练方法是一个复杂且不断发展的领域。以下是ai大模型训练方法: 数据预处理和增强 数据清洗:去除噪声和不完整的数据。 数据标准化:将数据缩放到统一的范围。 数据增强:通过旋转
    的头像 发表于 07-16 10:11 2004次阅读

    BP神经网络样本的获取方法

    的训练样本是至关重要的。 数据收集 数据收集是构建BP神经网络模型的第一步。根据研究领域和应用场景的不同,数据来源可以分为以下几种: 1.1 实验数据:通过实验或观察获得的数据,如生物实验、化学实验等。 1.2 传感器数据:通过传感器收集的数据,如温度、湿度、压力等。
    的头像 发表于 07-11 10:50 728次阅读

    人脸识别模型训练失败原因有哪些

    : 1.1 数据不足 人脸识别模型需要大量的数据进行训练,以提高模型的泛化能力。如果数据不足,模型可能无法学习到足够的特征,导致训练失败
    的头像 发表于 07-04 09:17 789次阅读

    【大规模语言模型:从理论到实践】- 每日进步一点点

    据中微小变化的敏感度,从而提高模型的泛化能力。 二、常见的归一化方法 Batch Normalization(BatchNorm) 原理:在batch数据中对数据的一定维度进行归一化,通常用于深度
    发表于 05-31 19:54

    助听器降噪神经网络模型

    用提前停止。该模型以 32 的批量大小进行训练,每个样本的长度为 15 秒。 Nvidia RTX 2080 TI 上一个训练周期的平均时间约为 21 分钟。使用尺度敏感的 SNR [20] 作为
    发表于 05-11 17:15

    【大语言模型:原理与工程实践】大语言模型的应用

    类任务上表现出色,甚至在零样本条件下也能取得良好效果。另一类则需要逐步推理才能完成的任务,类似于人类的系统2,如数字推理等。然而,随着参数量的增加,大语言模型在这类任务上并未出现质的飞跃,除非有精心
    发表于 05-07 17:21

    请问tc297外的emux模拟通道可以配置成硬件触发吗?

    现在遇到问题把adc模块都配置成了定时触发,emux也配置成定时触发,外的采集不到
    发表于 02-20 07:00