Time Lag Aware Sequential Recommendation
期刊发表日期
CIKM 22
目前阶段存在的问题和作者解决办法:
- 首先,现有方法往往缺乏对用户偏好的全局稳定性和局部波动的同步考虑,这可能会降低对用户当前偏好的学习。
- 其次,现有方法通常使用基于标量的加权模式来融合长期和短期偏好,这太粗糙了,无法学习当前偏好的表达嵌入。
- 作者提出了一种带有时间滞感知顺序推荐模型,该模型融合一种按时间划分的模型来学习用户的偏好,并且有长期和短期偏好的时滞敏感细粒度融合。
挑战
-
长期和短期偏好的时滞敏感细粒度融合。
长期偏好反映了用户的总体兴趣,通常变化缓慢,并且在会话中保持相对稳定,而短期偏好代表用户在会话中的品味,可能偏离她/他的长期偏好。
-
长期偏好反映了用户的总体兴趣,通常变化缓慢,并且在会话中保持相对稳定,而短期偏好代表用户在会话中的品味,可能偏离她/他的长期偏好。 为了做出有效的顺序建议,同时捕获用户在不同会话中的长期偏好和他们在最近会话中的短期偏好非常重要,以便了解用户的当前偏好。
本文的贡献
• 文章提出了一种称为时滞感知顺序推荐(TLSRec)的新模型,该模型可以捕获用户偏好的稳定性和波动性,并学习长期偏好和短期偏好的细粒度融合的融合偏好嵌入。
• 文章提出了一个分层的自我关注网络,将长期偏好和短期偏好的学习统一起来,从而更好地理解用户偏好在全球时间尺度上的稳定性以及用户偏好在局部时间尺度上的波动。
• 文章提出了一种神经时间门,在维度水平上提供长期偏好和短期偏好的基于门的细粒度融合,通过它可以学习更具代表性和更全面的融合偏好嵌入。
• 文章在真实数据集上广泛评估 TLSRec。实验结果表明,TLSRec在基线上的总体改进,以及所提出的分层自注意力网络和神经时间门的有效性。
模型框架
参数定义:
S u S_{}^{u} Su:用户u和他的项目的交互(按照时间划分)、 S i u ∈ S u S_{i}^{u} \in S_{}^{u} Siu∈Su表示第i个时刻用户u的交互、 S i u = { v i , 1 u , v i , 2 u . . . v i , ∣ S i u ∣ u } S_{i}^{u}=\left \{ v_{i,1}^{u},v_{i,2}^{u}...v_{i,\left | S_{i}^{u} \right | }^{u} \right \} Siu={vi,1u,vi,2u...vi,∣Siu∣u}表示u用户交互过的项目、 e i , j u e_{i,j}^{u} ei,ju用户编码之后交互的序列; v ∈ R M v\in R_{}^{M} v∈RM是one_hot向量代表了交互的物品v、 E i E_{i} Ei一个交互序列经过嵌入之后得出的新的交互物品矩阵,这里的 e i , j u e_{i,j}^{u} ei,ju表示的是用户u的第i个交互序列中第j个物品; α 、 β \alpha、\beta α、β是可学习的比例因子和偏置, ⊗ \otimes ⊗表示对应的元素相乘; μ 、 σ \mu、\sigma μ、σ是输入x的均值和方差、 ϵ \epsilon ϵ是一个正常的正数,用于防止除以0;
1. 模型大概
首先,TLSRec使用M维one - hot向量对项目进行编码,对于每一个session会话的历史交互序列而言,它会将每一个交互的序列转换为对应嵌入的序列。
然后在短期偏好神经网络中,用户的嵌入编码会被嵌入到
s
i
u
s_{i}^{u}
siu中,这里的嵌入使用的是一个跨session的共享子注意力模块。短期偏好学习模块的任务是通过用户的一系列交互序列去学习学些每一个序列的局部偏好,并以最后一次序列作为用户近期的偏好。在长期偏好计算网络中会使用多头注意力网络来融合多个session的编码最后产生
z
l
o
n
g
u
z_{long}^{u}
zlongu向量,这里的多头注意力网络使得模型抓住了多个session之中不同嵌入编码信息的交互信息,进而会产生更见全面和具有代表的编码。
在准备好长期和短期的用户偏好向量之后,模型会融合他们通过一个神经时间门去产生最终的的用户偏好。这里的时间门向量也会产生一个中间的向量来调节短期偏好和长期偏好(自适应),最后模型会输出排名预测;
2.分层自注意力网络
对于物品的编码嵌入每一个物品的编码嵌入使用
e
v
=
W
I
v
e_{v}=W_{}^{I}v
ev=WIv,进行嵌入,这的
W
I
W_{}^{I}
WI是可学习的参数,在嵌入之后将用户U交互的序列都嵌入之后得出一个新的矩阵
E
i
E_{i}
Ei;
短期偏好学习模块,每一个嵌入之后的编码向量首先产生三个矩阵,分别是
Q
i
S
=
W
S
Q
E
i
、
K
i
S
=
W
K
Q
E
i
、
V
i
S
=
W
V
Q
E
i
Q_{i}^{S}=W_{S}^{Q}E_{i}、K_{i}^{S}=W_{K}^{Q}E_{i}、V_{i}^{S}=W_{V}^{Q}E_{i}
QiS=WSQEi、KiS=WKQEi、ViS=WVQEi其中的W都是可以学习的参数,然后通过下列同时来计算
E
i
^
=
V
i
S
s
o
f
t
m
a
x
(
(
Q
i
S
)
T
K
i
S
d
)
\hat{E_{i}} =V_{i}^{S}softmax(\frac{(Q_{i}^{S})_{}^{T}K_{i}^{S}}{\sqrt{d} } )
Ei^=ViSsoftmax(d(QiS)TKiS)注意力分数并乘以对应的值,在计算完成之后
s
i
u
=
∑
j
=
1
m
e
i
,
j
u
^
s_{i}^{u}=\sum_{j=1}^{m}\hat{e_{i,j}^{u}}
siu=∑j=1mei,ju^得出第i个时间序列的短期偏好表示;
s
i
u
s_{i}^{u}
siu代表的是这个会话中的短期用户的偏好;
长期偏好学习模块,在得到短期的session网络输出以后,由于在网络中并没有编码位置的信息,因此,在长期偏好学习模块中需要先加上一个可学习的p向量来增强编码信息,因而输入到长期偏好学习网络中的数据为
S
^
=
S
+
P
\hat{S} =S+P
S^=S+P,然后将上述经过添加位置编码信息的矩阵信息经过多头注意力的计算之后输出新的矩阵
Z
Z
Z,包含用户多个时刻的新编码,在多头注意力模块计算完成之后需要经过一个降维的可学习矩阵将之前的合并矩阵转换成特定的维度。为了加速多头注意力的训练和使得模型稳定,这里文中在接下来的模块中加入了残差模块和归一化;公式如下所示:
N
o
r
m
(
X
)
=
[
n
o
r
m
(
x
i
)
]
i
=
1
T
,
n
o
r
m
(
x
i
)
=
α
⊗
x
−
μ
σ
2
+
ϵ
+
β
Norm(X)=[norm(x_{i})]_{i=1}^{T},norm(x_{i})=\alpha \otimes \frac{x-\mu }{\sqrt{\sigma _{}^{2}+\epsilon } }+\beta
Norm(X)=[norm(xi)]i=1T,norm(xi)=α⊗σ2+ϵx−μ+β
在经过归一化之后,作者使用了一个前馈神经网络来输出归一化之后的数据和加上位置编码的数据。这里的前馈神经网络公式如下所示:
f
f
n
(
x
)
=
W
2
F
m
a
x
(
0
,
W
1
F
+
b
1
)
+
b
2
ffn(x)=W_{2}^{F}max(0,W_{1}^{F}+b_{1})+b2
ffn(x)=W2Fmax(0,W1F+b1)+b2
最后经过计算之后得出嵌入的
z
i
u
z_{i}^{u}
ziu表示,最后使用vanilla attention 模块来输出用户的长期偏好向量;
vanilla attention module:在计算出各个时刻的嵌入表示之后,每一个时刻都使用如下的计算公式来计算最后的最后的长期偏好向量;
z
l
o
n
g
u
=
∑
i
=
1
T
w
i
z
i
u
,
w
i
=
f
u
T
r
e
l
u
(
W
L
z
i
u
+
b
L
)
∑
i
=
1
T
e
x
p
(
f
u
T
r
e
l
u
(
W
L
z
i
u
+
b
L
)
z_{long}^{u}=\sum_{i=1}^{T} w_{i}z_{i}^{u},w_{i}=\frac{f_{u}^{T}relu(W_{L}z_{i}^{u}+b_{L})}{\textstyle \sum_{i=1}^{T}exp(f_{u}^{T}relu(W_{L}z_{i}^{u}+b_{L})}
zlongu=∑i=1Twiziu,wi=∑i=1Texp(fuTrelu(WLziu+bL)fuTrelu(WLziu+bL)
3.神经时间门控
为了将时间lag加入到中间嵌入中,作者将其离散化为给定用户的任意两个连续交互的最小时间间隔的倍数。然后计算归一化门控向量,如下公式所示
g
=
s
i
g
m
o
i
d
(
W
l
z
l
o
n
g
u
+
W
s
z
s
h
o
r
t
u
+
W
δ
y
+
b
g
)
\mathcal{g} =sigmoid(W_{l}z_{long}^{u}+W_{s}z_{short}^{u}+W_{\delta }y+b_{g})
g=sigmoid(Wlzlongu+Wszshortu+Wδy+bg)最后,通过基于g的以下融合得到给定用户u的融合偏好嵌入:
z
u
=
g
⊗
z
u
s
h
o
r
t
+
(
1
−
g
)
⊗
z
u
l
o
n
g
z_{u}=\mathcal{g} \otimes z_{u}^{short}+(1-g)\otimes z_{u}^{long}
zu=g⊗zushort+(1−g)⊗zulong
4.序列推荐
在得到用户表示之后,通过以下的公式来输出预测推荐的物品:
r
^
u
,
v
=
s
i
g
m
o
i
d
(
z
u
T
e
v
)
\hat{r}_{u,v}=sigmoid(z_{u}^{T}e_{v})
r^u,v=sigmoid(zuTev)
5. 模型训练
对于每一个用户U,我们会构建一个训练集合
O
u
O_{}^{u}
Ou,其中含有T+1个
o
∈
O
u
o\in O_{}^{u}
o∈Ou,其中包含乐T+1个session将前T个session作为模型的输入,将第T+1个session作为监督的信号进行训练模型;模型采用Adam优化器进行优化。因为要推荐出一个带有排名序列的推荐模型,因此这里作者将
S
T
+
1
S_{T+1}
ST+1作为监督信号,并且对于这个序列中每一个物品v,需要从一个采样的负样本集中在选取一个不属于正样本集中的物品,让这个差值变大,也就是说需要让模型推荐监督信号的的物品,而不是别的样本中存在的物品。损失函数如下所示(带正则化):
L
(
Θ
)
=
−
∑
u
∈
U
∑
o
∈
O
u
∑
v
∈
V
o
+
,
v
∈
V
o
−
l
o
g
σ
(
r
^
u
,
v
−
r
^
u
,
v
、
)
+
λ
∥
Θ
∥
2
2
L(\Theta )=-\sum_{u\in U}^{} \sum_{o\in O_{}^{u}}^{} \sum_{v\in V_{o}^{+},v\in V_{o}^{-}}^{} log\sigma (\hat{r}_{u,v}-\hat{r}_{u,v_{}^{、}})+\lambda \left \| \Theta \right \| _{2}^{2}
L(Θ)=−∑u∈U∑o∈Ou∑v∈Vo+,v∈Vo−logσ(r^u,v−r^u,v、)+λ∥Θ∥22
Dissicusion
- 在多头注意力模型中,为什么第i个注意力头会依赖之前的i-1个注意力头?
- 是否存在其他的方式去提取这种用户的长期偏好的编码,不仅仅是利用用户短期的交互注意力输出的向量?