网站首页 > 技术文章 正文
作者 | 对白
出品 | 对白的算法屋
编者寄语:
世界是二元的,对比学习去噪用于下一个购物篮推荐。
卷友们好,我是对白。
在我们使用天猫或京东购物时,平台常常会进行购物篮推荐。而购物栏推荐也是序列化推荐的一个应用场景,今天我们介绍SIGIR2021的一篇关于推荐系统的文章,将对比学习与序列化推荐相结合,并且在四个真实数据集上取得了SOTA的效果,不禁感叹,对比学习真的厉害!
????????????????????????
一、背景介绍
下一个购物篮推荐旨在通过考虑用户之前购买的一系列购物篮来推断用户将在下次访问时购买的一组商品。现有的解决方案主要侧重于对其历史交互的顺序建模。然而,由于用户行为的多样性和随机性,并非所有购物篮都有助于识别用户的下一步行为。有必要对购物篮去噪并提取可信的相关Item以提高推荐性能。不幸的是,这个维度在当前的文献中通常被忽视。
为此,在本文中,我们提出了一种对比学习模型(命名为 CLEA)来自动提取与目标项目相关的项目以进行下一个购物篮推荐。具体来说,在 Gumbel Softmax 的支持下,我们设计了一个去噪生成器来自适应地识别历史篮子中的每个Item是否与目标Item相关。通过这个过程,我们可以为每个用户的每个篮子获得一个正子篮子和一个负子篮子。然后,我们通过基于 GRU 的上下文编码器基于其组成Item导出每个子篮子的表示,该编码器表达与目标Item相关的偏好或不相关的噪声。之后,设计了一个新颖的两阶段引导对比学习过程,以同时指导进行相关性学习,而无需任何Item的相关性监督。据我们所知,这是第一项以端到端的方式对购物篮进行Item级降噪以进行下一个购物篮推荐的工作。在具有不同特征的四个真实世界数据集上进行了广泛的实验。结果表明,我们提出的 CLEA 比现有的最先进的替代方案实现了显着更好的推荐性能。此外,进一步的分析还表明,CLEA 可以成功地发现与推荐决策相关的真实Item。
二、CLEA
CLEA网络结构框架如图:
网络框架图
??????整个框架分为三个部分:??????
1.Denoising Generator 去噪生成器
2. Context Encoder 上下文编码器
3. Contrastive Learning Process (anchor-based marginal loss)
先介绍图中一些基础符号:
蓝色的是一组篮子;里面是item1,2,4...ic是目标item。
2.1 去噪生成器
把每个篮子显式分成了两个正负不相交的子篮子,对应着和item相关的项目和无关的项目。 怎么实现的也比较简单,当前item和目标item的one-hot representatioin 【分别对应公示(2)的xj,xc】concat起来,MLP,gumbel softmax预测【这里用gumbel softmax处理是因为前面用的one-hot离散特征,可以实现反向传播】,以0.5为阈值,大于0.5就是与目标item相关的,小于0.5是无关的。 公式如下:
2.2 上下文编码
上一步每个篮子不是得到了两个子篮子吗,然后用GRU对分出来的序列进行编码,最后一层的隐状态作为特征的表达,分别表示与目标项相关的偏好和无关的噪声。vij是item的embedding【注意跟xj不同,xj是one-hot,这里是embedding,怎么获取的??】
2.3 对比学习
作者用这postive隐状态进行预测,并且刚开始用这两个特征构建了loss,公式如下:
但是这个loss只计算模型基于训练集估计用户偏好的准确性,在训练中表现的性能不稳定,所以采用对比学习来进行,改进后loss如下:
从这个loss来看,希望pos篮子学习到的偏好估计是好于anchor【anchor就是用原始分被拆分的篮子序列进行GRU编码得到】的,而neg篮子学习到的偏好是低于anchor的。
2.4 训练过程
最终的训练步骤是个二阶段的,具体就是先训练anchor表征,再训练pos/neg表征,两个步骤迭代进行。
在第二阶段,我们用已经训练好的 根据公式9去指导 和 的学习,迭代这两个步骤直到覆盖。
三、CLEA算法流程
四、实验结果
在四个真实的数据集上进行了实验。对于每一个用户,都随机采用了1000个负样本,然后在groud-truth基础上对这些负样本进行排序。
模型采用四个评估指标:Recall@K、Precision@K、F1@K和NDCG@K
对比结果:表明了这种hard把序列分成正负序列的做法,比attention那种softmax进行加权求和的方法要更好。以及,对比学习的两阶段训练比联合训练好。
五、总结
基本的序列推荐方法,是把所有的历史行为通过RNN、GRU等序列模型融合成固定长度的embedding,然后进行预测;但是用户行为的随机和多样性导致不是所有的行为都有助于下一个物品预测的,所以进一步有基于attention的方法,这类方法基本思路就是用过softmax加权求和的方式削弱历史不相关物品的影响,但是仍然保留了一些噪声。
因此本文提出了一种通过用对比学习进行有效的去噪,并且取得了SOTA的效果,是一篇非常值得精度的论文。
你好,我是对白,硕士毕业于清华,现大厂算法工程师,拿过八家大厂的SSP级以上offer。
高中荣获全国数学和化学竞赛二等奖。
本科时独立创业五年,成立两家公司,并拿过总计三百多万元融资(已到账),项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研后选择退居为股东。
我每周至少更新三篇原创,分享自己的算法技术、创业心得和人生感悟。我正在努力实现人生中的第一个小目标,上方关注后可以加我私信交流。
期待你关注我的公众号,我们一起前行。
您的“点赞/在看/分享”是我坚持的最大动力!
坚持不易,卖萌打滚求鼓励 (?>ω<*?)
猜你喜欢
- 2024-10-02 如何构建一个推荐系统的验证框架 推荐系统如何设计
- 2024-10-02 谷歌、南加州发布:从视频中自监督学习,研究机器人行为
- 2024-10-02 酷睿Ultra 9 285K跑分超锐龙9950,微软确认Recall功能不可卸载
- 2024-10-02 麦吉尔大学马辰博士:Top-K推荐中的自适应概率度量学习
- 2024-10-02 众包问答服务的工人推荐:三重因素感知方法
- 2024-10-02 推荐系统和TensorRec入门 推荐系统好做吗
- 2024-10-02 信息检索中的度量指标全解析 信息检索效率的评价指标是查全率和查准率
- 2024-10-02 深度度量学习的这十三年,难道是错付了吗?
- 2024-10-02 RAG技术:RAG中用来评估信息检索准确性的7个指标
- 2024-10-02 PlugIR:开源还不用微调,即插即用的多轮对话图文检索 | ACL 2024
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)