双塔模型在推荐系统中的应用:正负样本选择、线上召回与模型更新
创作时间:
作者:
@小白创作中心
双塔模型在推荐系统中的应用:正负样本选择、线上召回与模型更新
引用
CSDN
1.
https://blog.csdn.net/qq_52342142/article/details/145723939
双塔模型是推荐系统中一种重要的模型架构,通过分别对用户和物品进行特征表示,然后计算两者之间的相似度来实现推荐。本文将详细介绍双塔模型中的正负样本选择策略、线上召回机制以及模型更新方法,帮助读者深入理解这一模型的工作原理和实践应用。
1 双塔模型:正负样本
1.1 正样本
- 正样本:曝光而且有点击的用户—物品二元组。(用户对物品感兴趣)。
- 问题:少部分物品占据大部分点击,导致正样本大多是热门物品。
- 解决方案:过采样冷门物品,或降采样热门物品。
- 过采样(up-sampling):一个样本出现多次。
- 降采样(down-sampling):一些样本被抛弃。
1.2 如何选择负样本?
简单负样本:全体物品
- 未被召回的物品,大概率是用户不感兴趣的。
- 未被召回的物品 ≈ 全体物品
- 几亿个物品里边只有几千个被召回,也就是说几乎所有的物品都没有被召回。
- 从全体物品中做抽样,作为负样本。
- 均匀抽样 or 非均匀抽样?
- 均匀抽样:对冷门物品不公平
- 正样本大多是热门物品。
- 如果均匀抽样产生负样本,负样本大多是冷门物品。
- 非均匀抽样:目的是打压热门物品
- 负样本抽样概率与热门程度(点击次数)正相关。
- 参考文献:
- Xinyang Yi et al. Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations. In RecSys, 2019.
- 该文献讲了如何修正偏差
- 如何修正偏差
- 物品被抽样到的概率:∝ 点击次数
- 预估用户对物品的兴趣:
- 做训练的时候,调整为:
这样可以纠偏,避免过分打压热门物品。训练结束之后,在线上做召回的时候,还是用原本的余弦相似度,线上召回的时候不用做这种调整
简单负样本:Batch 内负样本
正样本
负样本
- 一个 batch 内有 n 个正样本。
- 一个用户和 n−1 个物品组成负样本。
- 这个 batch 内一共有个负样本。
- 都是简单负样本。(因为第一个用户不喜欢第二个物品。)
Batch 内负样本存在一个问题 - 一个物品出现在 batch 内的概率∝ 点击次数。
- 物品成为负样本的概率本该是∝ (点击次数)^0.75,但在这里是∝ 点击次数。
- 热门物品成为负样本的概率过大。一个物品成为负样本的概率越大,模型对这个物品打压就越狠。对负样本应该打压,但这里打压的太狠了,这样会造成偏差。
困难负样本
- 困难负样本:
- 被粗排淘汰的物品(比较困难)。
- 精排分数靠后的物品(非常困难)。
- 对正负样本做二元分类:
- 全体物品(简单)分类准确率高。
- 被粗排淘汰的物品(比较困难)容易分错。
- 精排分数靠后的物品(非常困难)更容易分错。
训练数据
- 混合几种负样本。
- 50%的负样本是全体物品(简单负样本)。
- 50%的负样本是没通过排序的物品(困难负样本)。
常见的错误
很多人以为可以把曝光但是没有点击的物品作为负样本,其实这是错误的。
1.3 选择负样本的原理
召回的目标:快速找到用户可能感兴趣的物品。
- 全体物品(easy):绝大多数是用户根本不感兴趣的。
- 被排序淘汰(hard):用户可能感兴趣,但是不够感兴趣。
- 有曝光没点击(没用):用户感兴趣,可能碰巧没有点击。
有曝光没点击可以作为排序的负样本,不能作为召回的负样本。这是工业界的共识,是通过反复做实验得出的结果。
1.4 总结
- 正样本:曝光而且有点击。
- 简单负样本:
- 全体物品。
- batch内负样本。
- 困难负样本:被召回,但是被排序淘汰。
- 错误:曝光、但是未点击的物品做召回的负样本。
2 双塔模型:线上召回和更新
2.1 线上召回
离线存储
在训练好模型之后,开始线上服务之前,先用右边的物品塔提取物品的特征。向量数据库存储特征向量和物品ID的二元组,用作最近邻查找。
线上召回
用户塔不要事先计算和存储向量,而是当用户发起推荐请求的时候,调用神经网络在线上现算一个特征向量,然后把向量作为 query,去数据库中做检索查找最近邻。
总结:双塔模型的召回
- 离线存储:把物品向量b存入向量数据库。
- 完成训练之后,用物品塔计算每个物品的特征向量b。
- 把几亿个物品向量b存入向量数据库(比如 Milvus、Faiss、HnswLib)。
- 向量数据库建索引,以便加速最近邻查找。
- 线上召回:查找用户最感兴趣的 k 个物品。
- 给定用户 ID 和画像,线上用神经网络算用户向量a。
- 最近邻查找:
- 把向量a作为 query,调用向量数据库做最近邻查找。
- 返回余弦相似度最大的 k 个物品,作为召回结果。
接下来这些物品会跟 ItemCF、Swing、UserCF 等召回通道的结果融合,然后经过排序,最终展示给用户。
思考
事先存储物品向量b,线上现算用户向量a,why?
- 每做一次召回,用到一个用户向量a,几亿物品向量b。(线上算物品向量的代价过大。)
- 用户兴趣动态变化,而物品特征相对稳定。(可以离线存储用户向量,但不利于推荐效果。)
2.2 模型更新
全量更新
全量更新:在每天今天凌晨,用前一天的数据训练模型。
- 在昨天模型参数的基础上做训练。(不是随机初始化)
- 用昨天的数据,训练 1 epoch,即每天数据只用一遍。
- 发布新的用户塔神经网络和物品向量,供线上召回使用。
- 全量更新对数据流、系统的要求比较低。
全量更新不需要实时的数据流,对生成训练数据的速度没有要求,延迟一两个小时也没有关系。全量更新对系统的要求也很低,每天做一次全量更新,所以只需要把神经网络和物品向量每天发布一次就够了
增量更新
增量更新:做 online learning 更新模型参数。
- 用户兴趣会随时发生变化。
- 实时收集线上数据,做流式处理,生成 TFRecord 文件。
- 对模型做 online learning,增量更新 ID Embedding 参数。(不更新神经网络其他部分的参数。)
- 发布用户 ID Embedding,供用户塔在线计算用户向量。
只有在做全量更新的时候才会更新全连接层的参数。
全量更新 vs 增量更新
问题:能否只做增量更新,不做全量更新?
只做增量更新当然要比既做全量又做增量简单,工程实现会更容易,训练消耗的机器资源也会更少。实验后发现只做增量效果不好,最好还是既做全量又做增量。
效果不好的原因:
- 小时级数据有偏;分钟级数据偏差更大。
- 全量更新:random shuffle 一天的数据,做 1 epoch 训练。
- 增量更新:按照数据从早到晚的顺序,做 1 epoch 训练。
- 随机打乱优于按顺序排列数据,全量训练优于增量训练。
做全量训练的时候,要随机排列数据,也就是 random shuffle,这样是为了消除偏差。
3 总结
双塔模型
- 用户塔、物品塔各输出一个向量,两个向量的余弦相似度作为兴趣的预估值。
- 三种训练的方式:pointwise、pairwise、listwise。
- 正样本:用户点击过的物品。
- 负样本:全体物品(简单)、被排序淘汰的物品(困难)。
召回
- 做完训练,把物品向量存储到向量数据库,供线上最近邻查找。
- 线上召回时,给定用户 ID、用户画像,调用用户塔现算用户向量a。
- 把a作为 query,查询向量数据库,找到余弦相似度最高的 k 个物品向量,返回 k 个物品 ID。
更新模型
- 全量更新:今天凌晨,用昨天的数据训练整个神经网络,做 1 epoch 的随机梯度下降。
- 增量更新:用实时数据训练神经网络,只更新 ID Embedding,锁住全连接层。
- 实际的系统:
- 全量更新&增量更新相结合。
- 每隔几十分钟,发布最新的用户 ID Embedding,供用户塔在线计算用户向量(这样的好处是,可以捕捉到用户最新的兴趣点)。
热门推荐
姜黄素治疗COPD获重要突破,谭淞文团队创新载药技术受表彰
姜黄素遇上MitoQ:科学实证的免疫增强新选择
老年人骨折康复饮食指南:专家推荐
老年人骨折康复食谱大揭秘
中医饮食调养,助爸妈骨折康复
魅力湘西创新演绎土家摆手舞,非遗文化绽放新光彩
茅古斯舞:土家族古老祭祀舞,中国舞蹈戏剧的活化石
成都茶店子:15分钟生活圈+智慧养老,打造社区治理新样本
从“金点子”到“金果子”:奥林社区民主协商解决23个民生难题
石墨烯电地暖:冬日家居的温暖守护者
石墨烯控制技术能消灭99.9%表面细菌
新村换古村,篁岭从凋敝走向振兴
狗狗咳嗽怎么办?从原因判断到科学护理全攻略
儿童甲流防治指南:从症状区分到全面预防
普拉多博物馆《蒙娜丽莎》复制品巡展:跨越时空的艺术对话
运动达人必备:缓解股外侧皮神经炎的小技巧
达·芬奇的《蒙娜丽莎》:艺术设计的永恒魅力
揭秘《蒙娜丽莎》:从创作传奇到文化符号
卢浮宫《蒙娜丽莎》打卡全攻略:从门票到最佳观赏位置
柠檬黄色素应用广泛,国家监管确保安全
蓝光克星玉米黄素:6种常见食物帮你守护视力
黄素片和茶黄素都对心血管有益,但联合效果待考
罗汉果黄素:天然甜味剂的健康之选,兼具多重生物活性
等离子电瓶修复仪:黑科技还是智商税?
电动车电池修复仪:让旧电池焕发新生
布洛芬使用攻略:科学止痛不踩坑
2025加州山火已致24死,政府失职保险拒赔引发民怨
线上阴线买入策略,助你股市制胜
米兰华人店铺遭纵火,3人遇难包括2未成年人
合盛硅业6月起全员降薪,硅料价格暴跌考验企业韧性