Google提出用对比学习解决推荐系统长尾问题

关注 ▲对白▲ 和百万AI爱好者,一起向上生长

图片

这是对白的第 87 期分享

作者 l 知乎@吴家丫头1990    出品 l 对白的算法屋


大家好,我是对白。

本文主要分享一下Google今年提出的《Self-supervised Learning for Large-scale Item Recommendations》如何采用对比学习解决推荐长尾问题 。

一、 定义


  • 长尾效应:20%的热门item占据了80%的曝光量,剩下80%的小众、长尾item得不到多少曝光机会,自然在训练样本中也是少数、弱势群体。

  • 一般的推荐模型是迎合多数人群的,长尾的item曝光机会少,就导致小众兴趣难以满足,这对一个成熟的生态系统来说,不利于用户增长。

  • 场景举例:有些原来不受到重视的销量小但种类多的商品,由于总量巨大,累积起来的总收益超过了主流商品。这种情况下,算法挖掘小众兴趣的能力显得尤为重要。

二、 对比学习


  • 对于样本不均衡的问题,一般首要想到的办法是做数据增强(data agument), 对比学习的核心就是采用数据增强构建正负变体,倾向于无监督学习,学习一个比较好的特征提取器。推荐系统中引入对比学习用于推荐debias,解决“少数人群+冷门物料,标注样本少”的问题,从逻辑上看是可行的。

  • 《Self-supervised Learning for Large-scale Item Recommendations》, 就是利用对比学习辅助训练双塔召回模型,目的是让item tower对冷门、小众item也能够学习出高质量的embedding,从而改善内容生态。从公式上看,可以理解为将对比学习的loss作为主任务loss的一个正则项。

图片

三、 论文解读


我认为论文中有两个核心的技术点,一个在对比学习部分,另一个在联合训练部分。

3.1 数据增强


在对比学习数据增强部分,论文提出对于item特征的数据增强分为两个步骤:Masking和Dropout,其中masking是采用默认embedding随机掩盖一些输入特征,dropout就是简单的随机丢失一些输入特征。

3.2 Random Feature Masking(RFM)


文中定义了一个baseline Random Feature Masking(RFM) ,采用互补masking模式,即将特征集拆分为两个互斥特征集,构建为两个扩展变体。具体来说,将特征集随机分成两个不相交的子集。大致结构如下:

图片

  • 某个item xi, 随机抽取一半的特征h,得到变体yi,再经过Encoder H,得到向量zi;保留剩下的另一半特征g,得到变体yi’,再经过Encoder G,得到向量zi’。

  • 来自同一个item xi 的两种变体对应的embedding zi和zi’,两者之间的相似度应该越大越好。

  • 按照同样的作法,另一个item xj,用一半特征h得到变体,再经过Encoder H得到yj;用另一半特征g,得到变体,再经过Encoder G得到yj’。

  • 来自不同item的变体对应的embedding,两者之间的相似度应该越低越好。

3.3 Correlated Feature Masking(CFM)


论文基于信息论中的互信息,提出了Correlated Feature Masking (CFM)方法,这个方法每个batch进行训练时,先会随机选取一个特征 f_seed , 然后选择topn(n 为item的特征总数的一半) 构建一个特征集做为变体。

3.4 为什么采用CFM


此处丫头主要想讨论一下的是:为什么要采用互补masking模式构建对比学习的变体呢,为什么采用互信息高的特征集会比随机masking效果好呢。

在论文中有这么一段描述:

For instance, the SSL contrastive learning task may exploitthe shortcut of highly correlated features between the twoaugmented examples, making the SSL task too easy.
复制代码

从字面意思看,是说随机masking 可能有一些高度相关的feature 分到两个变体中, CL Train的就太easy了,所以要加大一下难度的样子。

大致意思是由于物品的不同特征可能存在着一些关联性,随机masking可能会使得模型在对比学习的过程中,通过关联度较高的特征来“猜”出被mask的特征,使得任务训练变得简单。

这里丫头尝试举个例子,来强行解释一下吧,假设:item是个商品,它有品类,品牌,产品系列,价格 等特征,假设“品牌“ 被拆分到变体h中,”产品系列“被拆分到变体g中,看上去两个变体都是不同的,但是两个特征包含的隐信息其实没太大区别,最终两个变体的embedding太容易相似,就不到训练模型的目的。至于为什么要采用互补masking模式,大致也是为了保证变体的差异性。

3.5 联合训练


做完对比学习,下一个步骤就是联合训练了 ,先上个论文中的模型图:

图片

从上图可以看出,整个item tower是被user-item双塔召回的主任务、对比学习辅助任务中的encoder H和G,这三者所共享的。

图片

异构的样本分布:从  中采样出来的样本的边缘item分布基本服从幂律分布,如果用  来采样计算  会使得学到的特征关联与头部item有出入。于是我们从  中采样item来计算  。我们在实践中发现两个任务分别采样对于SSL提升监督任务的性能是至关重要的。

主任务的loss:我们利用batch softmax loss作为主任务的loss。

D t r a i n D_{train}

论文的第二个重点来了,“We sample items uniformly from the corpus for Lself ” ,论文中明确表示参与对比学习的样本,和参与主任务的样本,来自不同的样本空间。主任务,需要拟合用户与item之间的真实互动,还是以已经曝光过的user/item为主。对比学习部分,是为了消除推荐长尾问题,主要是要关注曝光率低的item。

四、 实验结果

评估结果显示,对比学习方法对于baseline方法,对于长尾item的推荐效果有更大的提升。

图片

图片

技术交流群邀请函

已建立CV/NLP/推荐系统/多模态/内推求职等交流群!想要进交流群学习的同学,可以直接扫下方二维码进群。

加的时候备注一下:昵称+学校/公司。群里聚集了很多学术界和工业界大佬,欢迎一起交流算法心得,日常还可以唠嗑~

图片

往期精彩回顾

[

图片

发了一篇小红书,阅读量破了20W…

](mp.weixin.qq.com/s?__biz=Mzg…)

[

图片

《动手学深度学习》中文版2.0beta版发布!

](mp.weixin.qq.com/s?__biz=Mzg…)

[

图片

业界总结 | BERT的花式玩法

](mp.weixin.qq.com/s?__biz=Mzg…)

最后欢迎大家关注我的微信公众号: 对白的算法屋duibainotes),跟踪NLP、推荐系统和对比学习等机器学习领域前沿,日常还会分享我的创业心得和人生感悟。想进一步交流的同学也可以通过公众号加我的微信,和我一同探讨技术问题,谢谢!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享