推荐系统遇上深度学习(九十七)-[阿里]使用用户未点击行为增强序列推荐效果

在推荐场景中,用户行为序列往往是很重要的一类特征,但过去介绍的模型中,大都只使用了用户有交互行为的序列,如点击序列,下单序列,这相当于是一种正反馈。而负反馈序列(包括显示负反馈如不喜欢和隐式负反馈序列如曝光未点击)往往涉及较少。之前在本系列的第八十八篇中,我们曾介绍过微信使用负反馈序列来增强推荐的效果。而本文,我们来看一下阿里是如何利用用户未点击序列来增强序列推荐效果的。

1、背景

当前的序列推荐模型,大都只使用用户点击或者购买的行为序列对用户兴趣进行建模,对于更为丰富的曝光数据往往关注较少,例如给用户曝光但未点击的数据。这些数据也包含一些有用的信息,比如用户未点击的行为中包含用户不偏好的信息。

那么应当如何使用这些未点击的数据呢?当前部分对于未点击行为序列的研究,大都停留在特征层面,忽略了未点击行为和点击行为之间的交互关系。而论文首先提出了三点发现:

1)用户未点击的item,确实在一定程度上反映了用户对于某类item的不偏好信息。如下图中的左图,用户很有可能是女性用户,点击的都是女性外套,而男性外套显然是其不感兴趣的。
2)由于这些物品大都是通过个性化推荐算法推荐出来的物品,因此相较于随机推荐的物品,用户的偏好程度往往更高,即用户的偏好程度由高到低为:点击的物品>曝光未点击物品>随机推荐未点击的商品。用户未点击也有可能是出于其他因素,如价格等。如下图中的有图,所有物品都是相似的,部分未点击的物品同样能够满足用户需求,但出于价格、样式上的考虑,用户并没有点击。
3)点击序列中也是存在一定噪声的,比如用户的误点击行为,模型需要通过曝光未点击的物品来消除这部分噪声。

基于上述的观察,本文提出了SRU2B(Sequential Recommendation with Unclicked User Behaviors)模型,我们在下一节中进行介绍。

2、SRU2B模型介绍

2.1 问题陈述

这里,我们使用U={u1,u2,...,um}代表用户的集合,使用I={i1,i2,...,in}代表物品的集合。使用S+u和S-u代表用户点击和曝光未点击的序列:

基于上述定义,序列推荐的问题可以定义为,给定用户u在t时刻的行为序列(包括点击和曝光未点击序列),来预测用户在t时刻后交互的物品集合。因此用于模型训练的label定义为用户在t时刻后点击的k个物品,计作Cu,t={c1,c2,...,ck}。

2.2 用户行为序列建模

接下来看下行为序列建模部分,也是本文的重点。

对于用户点击序列,使用DSR(Deep Sequential Recommenders)进行建模,如RNN,CNN,self-attention,每个物品在表示为对应的embedding之后,通过DSR得到固定长度的向量,计作hu,t:

其中eu代表用户画像特征向量。对于曝光未点击的序列,每个物品在表示为对应的embedding之后,首先进行avg-pooling,再经过多层全连接网络的到这部分的向量表示nu,t:

而对于label中的序列,进行与曝光未点击的序列同样的处理,得到向量cu,t。

如上文所说,用户点击行为数据中可能存在误点击带来的噪声,可以通过未点击序列在一定程度上消除这部分的影响,因此论文添加了fusion network,来得到最终的用户表示,具体计算如下:

2.3 损失设计

模型的损失主要包括两部分:

第一部分是与label计算的交叉熵损失,计算如下:

其中比较关键的是 sampled-softmax,这部分可以参考论文:《On using very large target vocabulary for neural machine translation》。

第二部分是triplet loss,这部分主要是通过度量学习的方法,来建模用户三个序列的关系。这三个序列即上文提到的t时刻的用户点击序列,曝光未点击序列以及t时刻后的label序列,其向量表示分别为hu,t、nu,t和cu,t。

首先,我们希望点击序列向量与label序列向量之间的距离,要比点击序列向量与未点击序列向量之间的距离更近,且至少要差m,否则会产生损失:

仅靠上面的损失,有时不一定能训练到想要的结果,如上图中的
n'u,t,其与cu,t距离反而比hu,t与cu,t的距离更近,这显然是不符合预期的。因此,需要进一步限制hu,t与cu,t比nu,t到cu,t的距离至少要差m'。因此triplet loss的损失如下:

其中[]+代表合页损失,当[]内结果大于0时,才会产生损失。

因此整体的损失如下:

最后,再来整体回顾一下SRU2B模型的结果:

3、模型实验

最后简单看下模型实验部分,不用多说,肯定是比众多的基线模型好:

(0)

相关推荐