您的当前位置:首页正文

self-supervised learning for large-scale item recommendations

2024-11-24 来源:个人技术集锦

解决的问题

长尾item的用户反馈数据稀疏是推荐系统中长期存在的一个问题。近期受到CV和NLP领域在自监督学习任务上进展的启发,我们提出了一个针对大规模item推荐的自监督学习(SSL)框架。框架主要通过更好地学习item特征之间的潜在联系来解决label稀疏的问题。特别地,SSL既优化了item表征,又优化了线上服务,从而提升了模型的泛化能力。除此之外,我们还在框架中提出一种新颖的利用特征交互来进行数据增强的方法。我们通过两个真实的数据集和一个线上真实的app-to-app推荐场景来评估我们的模型,实验结果表明我们的框架确实对模型性能有所提升。

本文的方法

模型框架

两步数据增强

我们在上面的图中引入了数据增强,它的主要思想是给出一个item特征集,通过将特征中的部分信息mask掉来产生两个新样本。一个好的数据增强方法应该做出尽可能少的假设,从而能够被广泛利用在大部分数据集和模型上。我们的mask思想源自于BERT的mask方法,与序列token不同的是,我们的特征之间不存在顺序关系。我们提出了Correlated Feature Masking (CFM)方法,通过挖掘特征之间的关联来设计masking pattern。
如果不采用数据增强,那么我们的模型输入是将所有特征拼接起来。我们的两步骤数据增强包括:

  • masking:我们使用一个默认embedding来替代在输入层被我们mask掉的特征
  • dropout:对于多值特征,我们按概率来丢掉每个value,这一做法能够进一步减少输入信息,增加SSL任务的难度
    接下来介绍masking阶段的策略。我们将Random Feature Masking (RFM)作为baseline,这种方法就是随机将一个样本的特征集分为两个不相交的特征子集,用两个特征子集生成两个样本。我们实际使用的方法是Correlated Feature Masking (CFM)。这种方法会根据两个特征的交互信息来度量特征的关联,在根据特征关联来进行特征的分割。计算方法如下: M I ( V i , V j ) = ∑ v i ∈ V i , v j ∈ V j P ( v i , v j ) l o g P ( v i , v j ) P ( v i ) P ( v j ) MI(V_i, V_j) = \sum_{v_i \in V_i, v_j \in V_j} P(v_i, v_j)log \frac{P(v_i, v_j)}{P(v_i)P(v_j)} MI(Vi,Vj)=viVi,vjVjP(vi,vj)logP(vi)P(vj)P(vi,vj) 其中 V i , V j V_i, V_j Vi,Vj表示词表,所有特征的交互信息都可以提前计算出来。
    有了提前计算好的特征交互信息,对于被mask的特征 F m F_m Fm,我们会把关联度高的特征一起mask掉:首先从特征集中均匀采样一个种子特征 f s e e d f_{seed} fseed,然后选择与它最相关的top N个特征,最终的特征是由种子和与它关联的特征组成的,即 F m = { f s e e d , f c 1 , . . . , f c n } F_m = \{f_{seed}, f_{c1}, ..., f_{cn}\} Fm={fseed,fc1,...,fcn},我们选择 n = k / 2 n = k/2 n=k/2,使得mask掉的特征和保留的特征数量能近似相等。我们每个batch变换种子特征,以使SSL任务学习到多种mask pattern。
多任务学习

为将SSL学到的表达用到推荐的分类或回归任务中,我们利用一个多任务训练策略,对我们的主要任务和辅助的SSL任务一并进行训练。举例来说,令 { ( q i , x i ) } \{(q_i, x_i)\} {(qi,xi)}为一个从训练集分布 D t r a i n D_{train} Dtrain中采样出来的query-item对的batch,令 { x i } \{x_i\} {xi}为一个从item分布 D i t e m D_{item} Ditem中batch的item,那么联合loss如下所示: L = L m a i n ( { ( q i , x i ) } ) + α ⋅ L s e l f ( { x i } ) L = L_{main}(\{(q_i, x_i)\}) + \alpha \cdot L_{self}(\{x_i\}) L=Lmain({(qi,xi)})+αLself({xi})
异构的样本分布 D t r a i n D_{train} Dtrain中采样出来的样本的边缘item分布基本服从幂律分布,如果用 D t r a i n D_{train} Dtrain来采样计算 L s e l f L_{self} Lself会使得学到的特征关联与头部item有出入。于是我们从 D i t e m D_{item} Ditem中采样item来计算 L s e l f L_{self} Lself。我们在实践中发现两个任务分别采样对于SSL提升监督任务的性能是至关重要的。
主任务的loss我们利用batch softmax loss作为主任务的loss。

评估

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

显示全文