19CTR15会话兴趣⽹络
Posted 炫云云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19CTR15会话兴趣⽹络相关的知识,希望对你有一定的参考价值。
文章目录
1、前言
在CTR预估中,从用户的行为序列中捕捉用户动态变化的兴趣一直是一个热门课题。然而现在大部分研究都集中在Sequence中而不是Session。观察到,每个Session 中的用户行为都是高度同构的,而Session之间都是异构的。
基于这一发现,提出了一种新的CTR模型――深度会话兴趣网络(Deep Session Interest Network,DSIN)。该模型主要是基于用户的行为序列来构建多个Session,利用带有带有偏置的self-attention 来提取用户的在每个Session中兴趣,然后利用Bi-LSTM来建模用户兴趣的发展和演化,最后利用局部激活单元自适应的学习各种兴趣对目标item 的影响。
self-attention :5.1注意力机制 Attention is all you need
先来介绍一下 Sequence和 Session的概念。
Sequence是指用户总的行为序列,而Session会考虑给定时间内发生的行为序列。简单来说,Sequence是由多个 Session组成的。(虽然之前就有Session的概念,但是这里作者强调了一下Session的重要性)
作者发现单个Session 内的具有高度的同构性,而Session间则具有高度的异构性。图1是一个从真实的工业应用程序中收集的Session演示。图片下方的数字表示点击当前商品和点击第一个商品之间的时间间隔,单位为秒。Session按照时间间隔超过30分钟的原则进行划分。
图 1 图1 图1
我们可以看到该用户在Session 1是点击的都是裤子,Session 2是戒指,Session 3就变成了衣服,这反应用户兴趣的明确性(Session内)和变化性(Session间)。
2、相关知识
为什么提出DSIN?
经过观察,发现每个会话内的行为比较相近,不同会话之间差别较大。【说明数据分析的重要性,结合对业务的认知,对session进行建模,提出DSIN】
DSIN模型来对用户的多重Session进行建模,建模步骤如下:
- 首先将用户的顺序行为自然的划分为多个Session;
- 然后使用带有偏置的Self-Attention网络去编码每个 Session,self-attention可以捕捉Session内部的关联,进而提取用户的兴趣;
- 接着利用 Bi-LSTM来捕捉用户不同历史session兴趣间的发展和演化;
- 由于不同的session对目标项有不同的影响,利用局部激活单元来学习目标项与session之间的关系,得到最终的行为序列表示
- 文章贡献:
- 强调了用户在同一个session中相似度较高,在不同session中差异较大的问题,提出DSIN模型用于CTR任务
- 设计了偏移的自注意力机制得到每个session的表示;Bi-LSTM捕捉session之间的关系;利用局部激活单元学习不同session对目标项的影响
- 利用两个数据集实验,和多种模型比较并进行可视化分析,证明模型效果较好
3、模型结构
图2展示了 DSIN 模型的架构
图
2
:
D
S
I
N
模
型
D
S
I
N
。
总
的
来
说
,
在
M
L
P
层
之
前
,
D
S
I
N
有
两
个
主
要
组
成
部
分
。
一
个
是
稀
疏
特
征
,
另
一
个
处
理
用
户
行
为
序
列
。
从
下
至
上
,
首
先
将
用
户
行
为
序
列
S
划
分
为
s
e
s
s
i
o
n
Q
,
然
后
通
过
偏
置
编
码
和
s
e
l
f
−
a
t
t
e
n
t
i
o
n
意
提
取
s
e
s
s
i
o
n
兴
趣
I
。
通
过
B
i
−
L
S
T
M
,
融
合
s
e
s
s
i
o
n
兴
趣
I
与
上
下
文
信
息
隐
状
态
H
.
I
和
隐
状
态
H
和
用
户
特
征
嵌
入
向
量
和
商
品
嵌
入
向
量
连
接
,
然
后
送
入
M
L
P
层
最
后
预
测
。
图2:~~DSIN模型DSIN。总的来说,在MLP层之前,DSIN有两个主要组成部分。\\\\ 一个是稀疏特征,另一个处理用户行为序列。从下至上,首先将用户行为序列S\\\\ 划分为 session ~Q,然后通过偏置编码和 self-attention意提取 session 兴趣 I。 \\\\ 通过Bi-LSTM, 融合session 兴趣 I与上下文信息隐状态H .\\\\ I 和隐状态H 和 用户特征嵌入向量 和商品嵌入向量连接\\\\,然后送入MLP层最后预测。
图2: DSIN模型DSIN。总的来说,在MLP层之前,DSIN有两个主要组成部分。一个是稀疏特征,另一个处理用户行为序列。从下至上,首先将用户行为序列S划分为session Q,然后通过偏置编码和self−attention意提取session兴趣I。通过Bi−LSTM,融合session兴趣I与上下文信息隐状态H.I和隐状态H和用户特征嵌入向量和商品嵌入向量连接,然后送入MLP层最后预测。
DSIN的最上面的是一个MLP结构,其输入由两部分组成,一个是由User Profile 和 ltem Profile 的Embedding 特征组成的;另一块基于用户行为提取到的特征.
基于用户行为提取到的特征从低到上分为四层,分别为∶
- Session division layer:将用户的行为序列(sequence)划分为会话session;.
- Session interest extractor layer:抽取用户会话的兴趣;
- Session interest interacting layer:捕获会话兴趣之间的顺序关系;
- Session interest activating layer:利用局部激活单元自适应目标ltem。
Session division layer
首先是划分层, 输入一段用户的行为序列, 然后基于 30 分钟的时间间隔将用户的行为序列划分为多个session, 第 k \\mathrm{k} k 个 session 表达为 Q k = [ b 1 ; … ; b i ; … ; b T ] ∈ R T × d model , T \\mathbf{Q}_{k}=\\left[\\mathbf{b}_{1} ; \\ldots ; \\mathbf{b}_{i} ; \\ldots ; \\mathbf{b}_{T}\\right] \\in \\mathbb{R}^{T \\times d_{\\text {model }}}, \\mathrm{T} Qk=[b1;…;bi;…;bT]∈RT×dmodel ,T 是该 session 所含行为的长度, d model d_{\\text {model }} dmodel 为行为 Embedding 后的长度。
Session interest extractor layer
同一session 中的行为之间有着密切的联系,但其中也会包含一些用户随意行为带来的噪声。为了捕捉到同一session中行为之间的内在联系,减少不相关行为的影响,作者使用了带有偏置的多头自注意力机制来达到这一目的。
该层的架构如下图所示,从下往上看(multi-head attention层到add & norm层少了一个箭头)∶
Bias Encoding:在 Transformer 中, self-attention 使用 positional encoding 来考虑 sequence 的顺序性。这里作者设计 Bias Encoding 代替 positional encoding , 来捕捉 session 的顺序性和表示空间中的偏置。第k个session中第t个行为向量的第c个位置的偏移 :
B
E
k
,
t
,
c
=
w
k
K
+
w
t
T
+
w
c
C
\\mathbf{B} \\mathbf{E}_{k, t, c}=\\mathbf{w}_{k}^{K}+\\mathbf{w}_{t}^{T}+\\mathbf{w}_{c}^{C}
BEk,t,c=wkK+wtT+wcC
其中,
w
k
K
∈
R
K
\\mathbf{w}_{k}^{K} \\in \\mathbb{R}^{K}
wkK∈RK 表示第
k
\\mathrm{k}
k 个 session 的偏置向量;
w
t
T
∈
R
T
\\mathbf{w}_{t}^{T} \\in \\mathbb{R}^{T}
wtT∈RT 表示 session 中第
t
\\mathrm{t}
t 个行为的偏置向量;
w
c
C
∈
R
d
model
\\mathbf{w}_{c}^{C} \\in \\mathbb{R}^{d_{\\text {model }}}
wcC∈Rdmodel 为第C个位置的偏移量。
B
E
k
,
t
,
c
∈
R
K
×
T
×
d
model
\\mathbf{B E}_{k, t, c} \\in \\mathbb{R}^{K \\times T \\times d_{\\text {model }}}
BEk,t,c∈RK×T×dmodel
所以用户行为 session 为:
Q
=
Q
+
B
E
\\mathbf{Q}=\\mathbf{Q}+\\mathbf{B} \\mathbf{E}
Q=Q+BE
Multi-head Self-attention:作者利用多头自注意力机制来捕获不同特征子空间对的关系。用户的第
k
\\mathrm{k}
k 个session 为:
Q
k
=
[
Q
k
1
;
…
;
Q
k
h
;
…
;
Q
k
H
]
\\mathbf{Q}_{k}=\\left[\\mathbf{Q}_{k 1} ; \\ldots ; \\mathbf{Q}_{k h} ; \\ldots ; \\mathbf{Q}_{k H}\\right]
Qk=[Qk1;…;Qkh;…;QkH]
其中,
Q
k
h
∈
R
T
×
d
h
\\mathbf{Q}_{k h} \\in \\mathbb{R}^{T \\times d_{h}}
Qkh∈RT×dh 为
Q
k
\\mathbf{Q}_{k}
Qk 的第
h
\\mathrm{h}
h 个 head,
H
\\mathrm{H}
H 为 head 的数量,
d
h
=
d
model
/
h
\\boldsymbol{d}_{h}=\\boldsymbol{d}_{\\text {model }} / \\boldsymbol{h}
dh=dmodel /h 。
输出
h
e
a
d
h
head_{h}
headh 为: 以上是关于19CTR15会话兴趣⽹络的主要内容,如果未能解决你的问题,请参考以下文章 Django 测试用例错误“WSGIRequest”对象没有属性“会话” 在 iPhone 上的 Web 应用程序中维护 PHP 会话
head
h
=
Attention
(