SDM

8/2/2021 SDM

# SDM是如何结合用户长期和短期兴趣建模的?其结构如何?

在电商场景中,用户都会有短期兴趣和长期兴趣,比如在当前的浏览 session 内的一个点击序列,用户的需求往往是明确的,这属于用户短期的兴趣。另外用户还有一些长期的兴趣表达,比如品牌、店铺的偏好。因此通过模型分别建模用户的长、短期兴趣是有意义的。

上图中表示用户短期兴趣向量表示用户的长期兴趣向量,这里需要注意的是,在求长期和短期用户兴趣向量时都使用了 Attention 机制,Attention 的 Query 向量 表示 user 的 embedding,用的是基本的用户画像,如年龄区间、性别、职业等。得到长期和短期用户向量后,通过 gru 中的 gate 机制去融合两者:

上面的公式输出表示用户的 embedding 表示,而 item 的 embedding 表示和 YouTube DNN 一样,可以拿 softmax 层的权重。其实也可用 graph embedding 先离线训练好 item 的 embedding 表示。

线上预测:通过user id找到相应的user embedding,然后使用 KNN 方法 (比如faiss)找到相似度最高的 top-N 条候选结果返回。

# 请简述SDM模型整体结构。

首先定义SDM模型所要解决的问题:

我们想要预测,在时刻,用户是否有交互关系。

定义两次浏览间隔少于10分钟,则为同一个session(这个定义可根据具体场景变化),且一个session最大长度为50。

  • 用户短期行为:最近一个session,长度为m
  • 用户长期行为:发生在最近一个session前7天内的session
  • 任务:给定短期行为与长期行为,为用户推荐商品

  • Step1:学习用户短期行为
  • Step2:学习用户长期行为
  • Step3: 根据用户短期行为和长期行为学习fusion gate,预测用户t时刻行为
  • Step4: 利用用户时刻行为和item embedding V计算得分:, 时刻的正样本是下一时刻点击的item,其他为负样本,根据得分选择推荐候选项
  • Step5:利用item embedding选取topn n相近的进行推荐

# 请简述一下SDM模型中捕捉用户短期兴趣的结构。

此部分旨在捕捉用户在最近一个session中的兴趣,结构如图所示,分为三个部分:LSTM层,多头自注意力层,用户注意力层

  • LSTM层

利用LSTM捕捉短期兴趣序列,输入为用户item特征 ,输出为session的向量表示

  • 多头自注意力层

在线上购物时,用户经常会随意点击不相关的item,会影响序列表示,因此希望利用自注意力机制减少这种不相关活动的影响;另外一方面,用户在一个session中也有多元兴趣,比如说,当用户购买一个裙子时,颜色、风格、店铺都是做决定时的关键因素,因此单个注意力机制不能捕捉到多个方面,所以利用多头注意力机制来捕捉不同子空间不同位置的表示:

  • 用户注意力层

不同的用户,对同一个商品也会有不同的偏好,比如说A用户更看重这个商品的性价比,B用户更看重中这个商品的品牌,因此希望利用用户对上文得到的session进行加权,学习注意力得分:

通过上述三个部分,最终短期兴趣输出为

# 请简述一下SDM模型中捕捉用户长期兴趣的结构。

长期来看,用户多种维度积累的兴趣会对当下行为产生影响,因此此部分旨在捕捉用户的长期兴趣,分为两个部分,用户注意力层与特征拼接,模型结构如图所示:

  • 用户注意力层

用户长期特征,包括:item id,商品类别,店铺,品牌特征等,对每个特征联合用户信息计算注意力得分:

  • 特征拼接

利用注意力机制得到每个特征的表示后,将多个特征进行拼接:

最终得到来表示长期用户兴趣

# SDM模型是如何控制长短期的影响的?

类比LSTM中门思想,利用fusion gate来控制长短期的影响:

为用户u的预测行为输出。