大家好,我是对白。
本文主要分享一下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的推荐效果有更大的提升。