阿里Deep Session Interest Network解读

背景和介绍

如何从用户历史行为数据中建模他们动态、不断变化的兴趣特征已经成为CTR预估的一个关键问题,比如上一篇文章我们介绍了DIEN来建模用户的兴趣特征。但是大都数工作还是忽略了用户行为序列内在的结构:用户的行为sequences其实是由多个sessions组成,其中多个sessions是通过用户的点击时间来区分。

如下图,将用户的点击行为按照时间排序,判断每两个行为之间的时间间隔,前后的时间间隔大于30min,就进行切分。可以看上图,第一个session中,用户查看的都是跟裤子相关的物品,第二个session中,查看的是戒指相关的物品,第三个则是上衣相关。我们发现在同个session中的行为是相近的,而在不同session之间差别是很大的。这说明用户在同一个session下对购买商品有一个明确的、单独的需求,但是一旦开启一个新的session,他的兴趣将会发生很大的变化。基于该观察,我们提出了一个CTR预估模型,被称作Deep Session Interest Network(DSIN)。该模型充分利用了用户的多个历史行为sessions。

创新点:

  • 首先,根据点击时间将用户的行为序列区分成多个sessions,并使用带有bias编码的自注意力模块来抽取用户每个session的兴趣特征。
  • 使用双向LSTM建模用户在多个sessions间兴趣的演变过程。
  • 使用local activation单元自适应学习不同session的兴趣对target item的影响。

模型

  1. Base Model

Base Model是一个MLP网络,在basemodel中输入特征分为三部分:User Profile, Item Profile 和 User Behavior。User Profile包括性别、城市、用户ID等等,Item Profile特征包含商家ID、品牌ID等等,User Behavior历史行为序列特征主要是用户最近点击的物品ID序列。当然一些item的side information也可以加到输入特征中。

这些特征分别通过Embedding层转换为对应的embedding向量,拼接后输入到多层全连接中,并使用logloss指导模型的训练。

2. DSIN模型

如下图,在MLP之前DSIN包含两大部分,其中一部分是User Profile 和Item Profile通过embedding层然后concat的向量;另一部分User Behavior主要是对用户行为序列进行建模,从下到上分为四层:

  • session division layer:主要是将用户的历史行为序列划分为多个sessions

将用户的历史点击行为序列进行切分,首先将用户的点击行为按照时间排序,判断每两个行为之间的时间间隔,如果前后的时间间隔大于30min,就进行切分。切分后,我们可以将用户的行为序列S转换成会话序列Q。第k个会话Qk=[b1;b2;...;bi;...;bT], 其中,T是会话的长度,bi是会话中第i个行为。

  • session interest extractor layer:抽取用户session的兴趣

因为同个session中的行为是高度相关的,并且用户在当前session下的随意的一些行为会使得session的兴趣表示变得不准确。为了建模在同一session中多个行为的关系和减轻那些不大相关行为的影响。DSIN对每个session都使用Transformer中的multi-head self-attention模块来抽取用户session的兴趣特征。具体过程是:对用户行为序列中的每个session添加一个Positional Encoding,该模块被称为Bias Encoding,BE中的每个元素都分为三块:

其中BE是K * T * d的。BE(k,t,c)是第k个session中,第t个物品的embedding向量的第c个位置的偏置项。也就是说,对每个session中的每个物品对应的embedding的每个位置,都加入了偏置项。加入偏置项后Q变为,Q是用户行为session的表示:

在推荐系统中,用户的点击行为会受各种因素影响,比如颜色、款式和价格。Mulit-head self attention 模块可以在不同的表示子空间层面上建模这种关系。这里让QK表示为:

其中Qkh 是T*dh的,是Qk的第h个head,H是head的数量。其中第h个head的输出为:

然后将不同head的输出concat后输入到一个全连接网络中:

经过Mulit-head self attention 处理之后,每个Session得到的结果仍然是T * d大小的,随后,经过一个avg pooling操作,将每个session兴趣转换成一个d维向量。

  • session interest interacting layer:建模用户多个sessions之间的联系。每个时刻的hidden state计算如下:

相加的两项分别是前向传播和反向传播对应的t时刻的hidden state。这里得到的隐藏层状态Ht,混合了上下文信息的会话兴趣。

  • session interest activating layer:建模不同session和target item的关联度。也就是说用户的会话兴趣与目标物品越相近,越应该赋予更大的权重。使用注意力机制来刻画这种相关性:

同样,混合了上下文信息的会话兴趣,也进行同样的处理。最后将User profile向量、Item profile向量、会话兴趣加权向量UI、带上下文信息的会话兴趣加权向量UH进行横向拼接,输入到全连接层中,得到最终的输出。

实验

使用了两个数据集进行了实验,分别是阿里妈妈的广告数据集和阿里巴巴的电商推荐数据集。对比模型有YoutubeNet、Wide & Deep、DIN 、DIN-RNN、DIEN,评价指标为AUC。结果:



参考文献:

编辑于 2019-07-01

文章被以下专栏收录