长尾item的用户反馈数据稀疏是推荐系统中长期存在的一个问题。近期受到CV和NLP领域在自监督学习任务上进展的启发,我们提出了一个针对大规模item推荐的自监督学习(SSL)框架。框架主要通过更好地学习item特征之间的潜在联系来解决label稀疏的问题。特别地,SSL既优化了item表征,又优化了线上服务,从而提升了模型的泛化能力。除此之外,我们还在框架中提出一种新颖的利用特征交互来进行数据增强的方法。我们通过两个真实的数据集和一个线上真实的app-to-app推荐场景来评估我们的模型,实验结果表明我们的框架确实对模型性能有所提升。
我们在上面的图中引入了数据增强,它的主要思想是给出一个item特征集,通过将特征中的部分信息mask掉来产生两个新样本。一个好的数据增强方法应该做出尽可能少的假设,从而能够被广泛利用在大部分数据集和模型上。我们的mask思想源自于BERT的mask方法,与序列token不同的是,我们的特征之间不存在顺序关系。我们提出了Correlated Feature Masking (CFM)方法,通过挖掘特征之间的关联来设计masking 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的推荐效果有更大的提升。