先占个坑~
本文首先分析推荐系统预测不准的部分因素:数据稀疏和数据分布偏差,其次基于这些因素从增广数据、定义Loss、设计Encoder来介绍对比学习技术是如何帮助推荐系统预估地更准,最后给出一些前人的实践经验和一些个人理解。
本文仅学习笔记,如有理解不到位或者理解有误的地方,还请评论区批评指教~
推荐系统中有相当大的功夫都花费在“猜你喜欢”上,即为用户提供个性化的建议。然而有时候预估的并不是那么准,可能受到数据稀疏和数据分布偏差的影响:
各类反馈信号的比例极度不均衡,某类稀疏的反馈信号对应的梯度更新被其他反馈对应的梯度淹没,模型没训好,预估不准。
模型对长尾Item预估和长尾User学习不充分,预估不准。
长尾item:用户行为数据分布通常呈现长尾分布,大部分item不存在或者存在极少的用户行为数据。
长尾user:这类用户在推荐系统具有极少行为
理论上要在公平的环境下,让user对所有item都存在交互才是无偏的。
然而推荐系统能只暴露有限数量item给user,这部分item才能和user进行交互,未曝光的item和user的实际交互是未知的,所以是有偏的。
对比无偏数据,模型使用有偏的数据建模,学习user有偏的喜好,预估不准(即推荐质量次优)。
曝光偏差会形成马太效应,user只和有曝光的item进行交互,慢慢的,多人都点的item(即流行item)会主导模型的梯度更新,使得模型更倾向预测流行的item高分推送给user,无法学习到个体user的兴趣偏好,导致预估不准。
针对上述两个问题,可以通过从各种方式来补充训练样本的角度,即增广数据,来使得模型预估地更准。
基于自身数据做增广,可以用来调整反馈信号的比例、增加用户行为、缓解数据分布偏差,最终达到模型的预估更准一点的效果。
1.1 自监督方式生成新样本
a. 调整user、item输入特征
该方法可以生成多个user, item的view,借助这些增强的样本可以丰富user和item在推荐系统中的行为。
b. 调整user行为序列
该方法可以生成多个user行为序列,进而得到user增广后的序列表征,用于挖掘user的兴趣意图。
c. 调整图结构
1.2 调整样本比例,主要用于加强学习稀疏反馈信号,和调整数据分布偏差
这块工作主要集中在负样本采样上,有以下几种方案
2. 基于模型
模型中有部分结构用于生成个体(如user或item)的表达向量,可以在隐层通过Dropout或增加随机噪声的方式生成不同的个体embedding。
如果自身数据并不丰富,可以考虑引入外部数据做增广,来增加用户行为。
如果自身场景与辅助场景的User和Item都存在部分交集,则为跨场景推荐。
如果自身场景与辅助场景的User存在部分交集,Item不存在交集,则为跨域推荐。
对于使用自监督方式生成的新样本,约束其和原始样本在投影空间相似;
对于各种策略负采样得到的样本,约束其和正样本在投影空间不相似;
对于引入外部数据得到的样本,其样本和特征分布一般和目标场景分布不一致,需要约束两个场景的分布相似。
常见的有Cosine,内积等
其中Cosine = L2 norm + 内积
2. 衡量分布相似
常见的有MMD,KL散度等
输入一个pair,预测相似或者不相似
Word2Vec(Negative sampling),图里的DeepWalk用的就是这样的Loss,此处不再赘述。
输入一个正pair,若干个负pair
使得正样本对之间的互信息最大,使负样本对之间的互信息最小,其中调整超参温度因子可以帮助挖掘困难负样本。
这个算是当前对比学习主流的Loss设计方法。
2. MMD Loss 和 KL Loss
直接从度量方法KL和MMD演变出来的Loss,用于约束两个分布相似性。
例如微信的多目标GNN提取模型中,通过MMD loss平滑跨域用户embedding分布。
同样的微信的C2-Rec模型中,通过KL loss约束对增广前后计算得到的softmax概率分布相似。
写累了,待补充~
Self-supervised Graph Learning for Recommendation
Self-supervised Learning for Large-scale Item Recommendations
S^3-Rec: Self-Supervised Learning for Sequential Recommendation with Mutual Information Maximization
C^2-Rec: An Effective Consistency Constraint for Sequential Recommendation
Rethinking the Promotion Brought by Contrastive Learning to Semi-Supervised Node Classification
Are Graph Augmentations Necessary? Simple Graph Contrastive Learning for Recommendation