先占个坑~
本文首先分析推荐系统预测不准的部分因素:数据稀疏和数据分布偏差,其次基于这些因素从增广数据、定义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在推荐系统中的行为。
- Dropout:随机丢弃掉某些特征,这些特征不参与网络训练
- Mask:将某些特征Mask,这些特征用默认的embedding特征参与网络训练
b. 调整user行为序列
该方法可以生成多个user行为序列,进而得到user增广后的序列表征,用于挖掘user的兴趣意图。
- Mask:随机Mask user行为序列中的item,避免行为序列被局部信息主导
- Shuffle:打乱user行为序列的item位置,改变时序性
- Sample:使用不同的权重采样方法,在长期行为序列上随机采样
c. 调整图结构
- Node Dropout:以一定概率从图上被丢弃节点
- Edge Dropout:以一定概率从图上被丢弃边
- Random Walk:通过随机游走的方式生成不同的待聚合的子图
1.2 调整样本比例,主要用于加强学习稀疏反馈信号,和调整数据分布偏差
这块工作主要集中在负样本采样上,有以下几种方案
- In-Batch采样,如GoogleDNN双塔
- 负例队列采样,如阿里的CLRec
- 全局随机采样,如YoutubeDNN
- 全局 In-Batch采样,如Google双塔改进方案
- In-Batch 曝光未点击,如微博的FM召回
2. 基于模型
模型中有部分结构用于生成个体(如user或item)的表达向量,可以在隐层通过Dropout或增加随机噪声的方式生成不同的个体embedding。
- Dropout:在某个隐层,随机地 mask 掉一些神经元
- 增加随机噪声:如Gauss噪声
引入外部(跨域、跨场景)数据做增广
如果自身数据并不丰富,可以考虑引入外部数据做增广,来增加用户行为。
如果自身场景与辅助场景的User和Item都存在部分交集,则为跨场景推荐。
如果自身场景与辅助场景的User存在部分交集,Item不存在交集,则为跨域推荐。
定义Loss
衡量相似
对于使用自监督方式生成的新样本,约束其和原始样本在投影空间相似;
对于各种策略负采样得到的样本,约束其和正样本在投影空间不相似;
对于引入外部数据得到的样本,其样本和特征分布一般和目标场景分布不一致,需要约束两个场景的分布相似。
- 衡量样本相似
常见的有Cosine,内积等
其中Cosine = L2 norm 内积
2. 衡量分布相似
常见的有MMD,KL散度等
Loss设计
- NCE Loss 和 InfoNCE Loss
- NCE
输入一个pair,预测相似或者不相似
Word2Vec(Negative sampling),图里的DeepWalk用的就是这样的Loss,此处不再赘述。
- InfoNCE
输入一个正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
腾讯图神经网络与推荐预训练模型