概述
深度会话兴趣网络DSIN
深度会话兴趣网络(Deep Session Interest Network,DSIN)是阿里浅梦发表在IJCAI 2019上的模型,是阿里既DIN、DIEN之后的又一CTR模型。不过二者应该属于阿里不同团队的研究工作,DIN和DIEN是阿里妈妈定向广告团队孵化的,去年跑到朝阳听过卞维杰分享的Talk,阿里妈妈最新的工作应该是ESMM、MIMN以及算法和工程co-design的相关研究。双方的开源工作分别是X-DeepLearning和DeepCTR,star数差不多,目前均为3k,但DeepCTR有文档更friendly,X-DeepLearning在官方Alibaba Organization下,曝光率高,但有利有弊,大公司更新官方repo流程可能会繁琐一些,谁能维持一个更好的community环境估计会是突破10k的关键吧。
Motivation
没有business value的技术再炫酷也一钱不值,毕竟凡人修仙之前还是要吃饭的。电商业务场景中,最有价值的莫过于海量的User Behavior数据,因此DIN、DIEN和DSIN可谓一脉相承,核心思想都是如何更契合实际地建模用户行为序列,挖掘用户真实兴趣。
淘宝用户数以亿计,每一个用户都是独立的个体,有着独一无二的shopping习惯和兴趣偏好,比如办公室美眉可能每天都逛淘宝,逛完上衣看靴子,冬天尚未结束已经开始浏览第二年的春装,默默喂给模型大量且高频有价值的交互信息。而吾等码农,可能新手机上市,上线一下;卫生纸用完了,补一下货,一年下来交互记录没有几条。推荐系统虽然号称千人千面,但不可能为每一个用户train一个模型,因此能捕捉大多数人的偏好习惯特征已算是不错。
DIN模型是直接将用户行为序列看做兴趣,并使用Attention机制来提取兴趣的多样性,但其潜在假设是用户行为序列中的每个行为都是独立不相关的,这当然过于理想化,比如用户当前对机械键盘感兴趣,看完Cherry红轴很可能会点击Flico茶轴。因此DIEN将用户行为序列看做用户兴趣不断进化的过程,并使用GRU序列模型+Attention机制来建模,选择GRU是模型效果和工程落地的权衡之举,当然DIEN也并不是完美的。
DSIN作者通过挖掘用户的交互记录,发现用户行为具有如下的特点 - “user behaviors are highly homogeneous in each session and heterogeneous cross sessions”。如上图所示,将用户的点击行为按时间排列,按间隔是否大于30 min划分为不同的session,可以看出这位女施主在第一个session中看得都是和裤子相关的商品,在第二个session中看得都是和戒指相关的商品,在第三个session中看得都是和上衣相关的商品。
个人感觉session划分的合理性(可解释性)在于用户购买商品时普遍会货比三家,但类似于番茄工作法,人只能保持25min高效集中的注意力,下一个session兴趣可能就转移了或者需要购买其他商品,除非极其贵重或有特殊意义的商品,为了买一瓶洗面奶而挑三个小时的人应该是比较少的。当然通过30min这条规则来划分session,作者是受到Airbnb论文的启发,简单且高效。
DSIN 模型框架
DSIN模型框架如图所示,左侧User Profile和Item Profile通过Embedding将Sparse Feature转化为Dense表示属于常规操作,不再赘述。重点在于右侧对于User Behavior序列的处理,DSIN将之分为四层,从下到上依次是:
- 1)序列切分层(Session Division Layer),负责将用户的历史行为记录划分到不同的Session;
- 2)会话兴趣抽取层(Session Interest Extrator Layer),负责学习Session的表征;
- 3)会话兴趣交互层(Session Interest Interacting Layer),用来学习Session之间的演变;
- 4)会话兴趣激活层(Session Interest Activating Layer),用于学习Target Ad和历史点击Session的相关性。
序列切分层(Session Division Layer)
将User Behavior Sequence按照时间排序,并根据两个行为之间的间隔是否大于30 min,切分为不同的Session。潜在假设是同一个Session内用户的行为是接近的,比如Session 1里都是裤子相关的商品,而不同Session之间的行为是有差异的。
经过切分,行为序列Sequence转化为Session序列,比如第
k
k
k个Session表示为:
Q
k
=
[
b
1
,
.
.
.
,
b
i
,
.
.
.
,
b
T
]
∈
R
T
×
d
m
o
d
e
l
Q_k = [b_1, ...,b_i,...,b_T] in R^{T times d_{model}}
Qk=[b1,...,bi,...,bT]∈RT×dmodel 其中
T
T
T是第
k
k
k个Session的长度,
b
i
b_i
bi是Session中第
i
i
i个行为,
d
m
o
d
e
l
d_{model}
dmodel是输入的Item的embedding大小。
会话兴趣抽取层(Session Interest Extrator Layer)
对每个Session,使用Transformer获取Session的表征。用户在同一Session内部的行为是高度相关的,但同时一些随意行为会偏离整个Session表达,为了刻画相同Session内行为间的相关性,同时减小不相关行为的影响,DSIN使用Multi-head Self-attention来对每个Session建模。同时为了刻画不同Session之间的顺序,DSIN引入偏置编码Bias Encoding,实际上是对序列中位置信息的编码。
会话兴趣交互层(Session Interest Interacting Layer)
用户的会话兴趣,是有序列兴趣的,DSIN使用Bi-LSTM来建模捕捉Session之间的演变。每个时刻的hidden state计算如下:
H
t
=
h
f
t
→
⊕
h
b
t
←
H_t = overrightarrow{h_{ft}} oplus overleftarrow{h_{bt}}
Ht=hft⊕hbt 相加的两项分别是前向传播和反向传播对应的
t
t
t时刻的hidden state,得到的隐藏层状态
H
t
H_t
Ht可以认为是混合了上下文信息的会话兴趣。
会话兴趣激活层(Session Interest Activating Layer)
用户的Session兴趣与Target Item商品越相近,那么应该赋予更大的权重,DSIN使用Attention机制来捕捉这种相关性。后面的操作,就是把四部分的向量:用户特征向量、待推荐物品向量、会话兴趣加权向量、带上下文信息的会话兴趣加权向量UH进行横向拼接,输入到全连接层中,得到输出。
DSIN 可视化
最后作者对Self-attention和Activation Unit做了可视化,颜色深浅表示Attention Weight的权重,可以看出Target Ad是裤子的时候,Session 1明显要深很多。
总结
模型确实很复杂,也许只有爱因斯坦才能天纵横才想出 E = m c 2 E = mc^2 E=mc2这种简单优雅的公式刻画真实的物理世界。
Reference
- 推荐系统论文DSIN:Deep Session Interest Network
- 深度会话兴趣网络 DSIN
- 推荐系统遇上深度学习(四十五)-探秘阿里之深度会话兴趣网络DSIN
最后
以上就是开朗草莓为你收集整理的推荐系统之深度会话兴趣网络DSIN深度会话兴趣网络DSIN的全部内容,希望文章能够帮你解决推荐系统之深度会话兴趣网络DSIN深度会话兴趣网络DSIN所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复