InfoQ技术大会双节活动折上折,限时特惠,满10000-1000>> 了解详情
写点什么

阿里 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:22350

评论

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

呕心沥血,整理200+最新面试题,面试之前看一下,事半功倍

小Q

Java 学习 程序员 架构 面试

The Go Blog-Article index

卓丁

【万字长文】探讨可信构架之道

华为云开发者社区

架构 服务端

合约跟单app,永续合约交易所带单交易软件

13823153121

大厂运维必备技能:PB级数据仓库性能调优

华为云开发者社区

架构 数据

使用开源软件构建工业互联网的平台

刘旭东

工业互联网 Odoo thingsboard

LeetCode题解:225. 用队列实现栈,两个队列,压入 -O(1), 弹出 -O(n),JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

20张图,大学四年都没整明白的操作系统就这么学会了

小Q

Java 程序员 架构 操作系统

传统产业数字化转型的思考与建议

CECBC区块链专委会

经济转型 企业经济

物联网通信技术最全科普!你一定要了解的NB-IoT

华为云开发者社区

物联网

Redis 哨兵模式

是老郭啊

redis redis哨兵模式 redis哨兵 redis哨兵集群

当心这些“坑”!阿里云服务器部署前后端分离项目

麦洛

nginx 前后端分离 跨域

XSKY ClickHouse如何实现存算分离

XSKY融合存储

市值做市机器人,操盘做市系统搭建

13823153121

模板方法模式——看看 JDK 和 Spring 是如何优雅复用代码的

Java架构师迁哥

MySQL高性能架构设计原则

李浩宇/Alex

CSS常用样式——绘制单(双)箭头的多种方法(2)

程序员学院

CSS html 程序员

教师节特别活动:第四范式多项自研技术及其应用实践分享

天枢数智运营

人工智能 推荐系统 第四范式 个性化推荐

“新基建”与“双循环”的二重奏:2020服贸会靠什么推动经济复苏

脑极体

架构师训练营作业(大数据与机器学习)

qihuajun

边缘计算,如何啃下集群管理这块硬骨头?

BoCloud博云

云计算 容器 边缘计算 PaaS 博云

Polkadot初识,不止于跨链

QTech

polkadot 跨链

indexOf原理,Java,javascript,python实现

叫练

算法

一步搞定任意圆角背景

mengxn

android xml 圆角

[翻译]The Go scheduler[Go调度]

卓丁

Go Go scheduler

[翻译]Go Concurrency Patterns[Go 并发模式]

卓丁

Go Rob Pike Go Concurrency Patterns Concurrency

云图说 | GPU共享型AI容器,让AI开发更普及

华为云开发者社区

AI 容器

协同新机遇:让研发敏捷起来

人称T客

未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

程序员内点事

Java RabbitMQ mqtt

去中心化交易所搭建,虚拟币去中心化交易系统

13823153121

交易所开发

甲方日常10

句子

工作 随笔杂谈 日常

阿里Deep Session Interest Network解读-InfoQ