写点什么

阿里 Deep Session Interest Network 解读

2019 年 12 月 02 日

阿里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 指导模型的训练。


  1. 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。结果:




参考文献:


https://arxiv.org/pdf/1905.06482.pdf


https://www.jianshu.com/p/82ccb10f9ede


本文转载自 Alex-zhai 知乎账号。


原文链接:https://zhuanlan.zhihu.com/p/71695849


2019 年 12 月 02 日 16:22253

评论

发布
暂无评论
发现更多内容

架构师训练营第四周作业

极客大学架构师训练营

Week 04- 作业二:学习总结

dean

极客大学架构师训练营

「架构师训练营」第 4 周作业 - 互联网技术

森林

系统架构知识-常识YES,能力NO

飞雪

架构师训练营第四周课程总结

狂奔嘀兔纸

极客大学架构师训练营

Week4-总结

龙7

<<架构师训练营>>第四周作业

R20114

第4周作业

系统架构

eazonshaw

极客大学架构师训练营

架构学习第四周总结

云峰

第四周学习总结

iHai

极客大学架构师训练营

互联网技术方案

allen

软件测试缺陷等级划分准则

海浪豆豆

软件测试

架构师训练营第四周作业

努力努力再努力m

极客大学架构师训练营

Week 04 学习总结

Jeremy

第四周学习总结

麻辣

第04周 设计系统架构 命题作业

Jaye

架构师训练营 第四周【学习总结】

小K

大型网站架构演化历程

stars

大型互联网应用架构中的主要技术,与其对应的业务问题

Ph0rse

架构师训练营第四周 - 作业

人世间

极客大学架构师训练营

第 04 周作业

Jeremy

第四周总结

AIK

作业04-互联网架构演化

梦子说

课程作业

架构师训练营 W4 作业

telliex

第四周作业

changtai

极客大学架构师训练营

第四周总结

changtai

极客大学架构师训练营

【架构师训练营】第 4周总结

花生无翼

课堂作业 week4

Dennis

架构师训练营第四周心得

努力努力再努力m

极客大学架构师训练营

<<架构师训练营>>第四周总结

R20114

阿里Deep Session Interest Network解读-InfoQ