论文《Session-based Social Recommendation via Dynamic Graph Attention Networks》阅读
论文概况
本文是2019年WSDM上的一篇论文,该篇文章聚焦于使用RNN、GNN、注意力机制来解决会话社交推荐问题
Introduction
作者提出了几个问题
- 用户兴趣是不断变化的,同时用户兴趣也受到朋友影响
- 当前推荐方法只关注用户动态兴趣或者社交影响,没有一个方法将他们们同时考虑
对于上述问题,作者提出了新的推荐方法:(1)同时学习用户动态兴趣与社交影响(2)提出了一种新的基于动态图注意网络的推荐方法,用于建模动态用户兴趣和上下文相关的社交影响,该方法可以有效地扩展到大型数据集(3)使用双线性函数来捕获项目之间的特征相关性。
Method
A.Dynamic Individual Interests
设用户为U,每个用户都有连续的会话集
I
T
u
=
{
S
⃗
1
u
,
S
⃗
2
u
,
…
,
S
⃗
T
u
}
I_{T}^{u}=\left\{\vec{S}_{1}^{u}, \vec{S}_{2}^{u}, \ldots, \vec{S}_{T}^{u}\right\}
ITu={S1u,S2u,…,STu}每个会话中包含若干项目
{
i
t
,
1
u
,
i
t
,
2
u
,
…
,
i
t
,
N
u
,
t
u
}
\left\{i_{t, 1}^{u}, i_{t, 2}^{u}, \ldots, i_{t, N_{u, t}}^{u}\right\}
{it,1u,it,2u,…,it,Nu,tu}对于用户u,给定新的对话
S
⃗
T
+
1
u
=
{
i
T
+
1
,
1
u
,
…
,
i
T
+
1
,
n
u
}
\vec{S}_{T+1}^{u}=\left\{i_{T+1,1}^{u}, \ldots, i_{T+1, n}^{u}\right\}
ST+1u={iT+1,1u,…,iT+1,nu}
利用RNN来获取用户动态兴趣的表征
h
n
=
f
(
i
T
+
1
,
n
u
,
h
n
−
1
)
(1)
h_{n}=f\left(i_{T+1, n}^{u}, h_{n-1}\right)\tag{1}
hn=f(iT+1,nu,hn−1)(1)
利用LSTM来按顺序整合近期会话项目
x
n
=
σ
(
W
x
[
h
n
−
1
,
i
T
+
1
,
n
u
]
+
b
x
)
f
n
=
σ
(
W
f
[
h
n
−
1
,
i
T
+
1
,
n
u
]
+
b
f
)
o
n
=
σ
(
W
o
[
h
n
−
1
,
i
T
+
1
,
n
u
]
+
b
o
)
c
~
n
=
tanh
(
W
c
[
h
n
−
1
,
i
T
+
1
,
n
u
]
+
b
c
)
c
n
=
f
n
⊙
c
n
−
1
+
x
n
⊙
c
~
n
h
n
=
o
n
⊙
tanh
(
c
n
)
(2)
\begin{aligned} x_{n} &=\sigma\left(\mathbf{W}_{x}\left[h_{n-1}, i_{T+1, n}^{u}\right]+b_{x}\right) \\ f_{n} &=\sigma\left(\mathbf{W}_{f}\left[h_{n-1}, i_{T+1, n}^{u}\right]+b_{f}\right) \\ o_{n} &=\sigma\left(\mathbf{W}_{o}\left[h_{n-1}, i_{T+1, n}^{u}\right]+b_{o}\right) \\ \tilde{c}_{n} &=\tanh \left(\mathbf{W}_{c}\left[h_{n-1}, i_{T+1, n}^{u}\right]+b_{c}\right) \\ c_{n} &=f_{n} \odot c_{n-1}+x_{n} \odot \tilde{c}_{n} \\ h_{n} &=o_{n} \odot \tanh \left(c_{n}\right) \end{aligned}\tag{2}
xnfnonc~ncnhn=σ(Wx[hn−1,iT+1,nu]+bx)=σ(Wf[hn−1,iT+1,nu]+bf)=σ(Wo[hn−1,iT+1,nu]+bo)=tanh(Wc[hn−1,iT+1,nu]+bc)=fn⊙cn−1+xn⊙c~n=on⊙tanh(cn)(2)
B.Representing Friends’ Interests
朋友的兴趣也分为短期兴趣和长期兴趣,二者都会影响用户喜好。
短期喜好还是用近期会话通过RNN来计算
s
k
s
=
r
N
k
,
T
=
f
(
i
T
,
N
k
,
T
k
,
r
N
k
,
T
−
1
)
(2)
s_{k}^{s}=r_{N_{k, T}}=f\left(i_{T, N_{k, T}}^{k}, r_{N_{k, T-1}}\right)\tag{2}
sks=rNk,T=f(iT,Nk,Tk,rNk,T−1)(2)
因为长期兴趣不随时间发生巨大变动,我们用一个单独的向量来表示长期兴趣,利用用户嵌入来表示用户k的长期兴趣
s
k
l
=
W
u
[
k
,
:
]
(3)
s_{k}^{l}=\mathbf{W}_{u}[k,:]\tag{3}
skl=Wu[k,:](3)
使用非线性变换连接朋友的短期和长期偏好
s
k
=
ReLU
(
W
1
[
s
k
s
;
s
k
l
]
)
(4)
s_{k}=\operatorname{ReLU}\left(\mathbf{W}_{1}\left[s_{k}^{s} ; s_{k}^{l}\right]\right)\tag{4}
sk=ReLU(W1[sks;skl])(4)
C.Context-dependent Social Influences
首先构建会话图,单纯的待预测用户作为中心点连接所有朋友,也没有权重关系。待预测用户的初始向量为
h
u
(
0
)
=
h
n
h_{u}^{(0)}=h_{n}
hu(0)=hn,其余朋友点的初始向量为
{
h
k
(
0
)
=
s
k
,
k
∈
N
(
u
)
}
\left\{h_{k}^{(0)}=s_{k}, k \in N(u)\right\}
{hk(0)=sk,k∈N(u)}每一轮GNN利用用户与朋友喜好的相似度来计算注意力,得到用户的社交影响
α
u
k
(
l
)
=
exp
(
f
(
h
u
(
l
)
,
h
k
(
l
)
)
)
∑
j
∈
N
(
u
)
∪
{
u
}
exp
(
f
(
h
u
(
l
)
,
h
j
(
l
)
)
)
(5)
\alpha_{u k}^{(l)}=\frac{\exp \left(f\left(h_{u}^{(l)}, h_{k}^{(l)}\right)\right)}{\sum_{j \in N(u) \cup\{u\}} \exp \left(f\left(h_{u}^{(l)}, h_{j}^{(l)}\right)\right)}\tag{5}
αuk(l)=∑j∈N(u)∪{u}exp(f(hu(l),hj(l)))exp(f(hu(l),hk(l)))(5)
h
~
u
(
l
)
=
∑
k
∈
N
(
u
)
∪
{
u
}
α
u
k
(
l
)
h
k
(
l
)
(6)
\tilde{h}_{u}^{(l)}=\sum_{k \in N(u) \cup\{u\}} \alpha_{u k}^{(l)} h_{k}^{(l)}\tag{6}
h~u(l)=k∈N(u)∪{u}∑αuk(l)hk(l)(6)
D.Recommendation
将短期兴趣与社交影响级联,得到用户最终的兴趣
h
^
n
=
W
2
[
h
n
;
h
u
(
L
)
]
(7)
\hat{h}_{n}=\mathbf{W}_{2}\left[h_{n} ; h_{u}^{(L)}\right]\tag{7}
h^n=W2[hn;hu(L)](7)
利用该向量对其他物品做点积进行用户兴趣预测
p
(
y
∣
i
T
+
1
,
1
u
,
…
,
i
T
+
1
,
n
u
;
{
S
⃗
T
k
,
k
∈
N
(
u
)
}
)
=
exp
(
h
^
n
⊤
z
y
)
∑
j
=
1
∣
I
∣
exp
(
h
^
n
⊤
z
j
)
(8)
p\left(y \mid i_{T+1,1}^{u}, \ldots, i_{T+1, n}^{u} ;\left\{\vec{S}_{T}^{k}, k \in N(u)\right\}\right)=\frac{\exp \left(\hat{h}_{n}^{\top} z_{y}\right)}{\sum_{j=1}^{|I|} \exp \left(\hat{h}_{n}^{\top} z_{j}\right)}\tag{8}
p(y∣iT+1,1u,…,iT+1,nu;{STk,k∈N(u)})=∑j=1∣I∣exp(h^n⊤zj)exp(h^n⊤zy)(8)
目标函数为
∑
u
∈
U
∑
t
=
2
T
∑
n
=
1
N
u
,
t
−
1
log
p
(
i
t
,
n
+
1
u
∣
i
t
,
1
u
,
…
,
i
t
,
n
u
;
{
S
⃗
t
−
1
k
,
k
∈
N
(
u
)
}
)
\sum_{u \in U} \sum_{t=2}^{T} \sum_{n=1}^{N_{u, t}-1} \log p\left(i_{t, n+1}^{u} \mid i_{t, 1}^{u}, \ldots, i_{t, n}^{u} ;\left\{\vec{S}_{t-1}^{k}, k \in N(u)\right\}\right)
u∈U∑t=2∑Tn=1∑Nu,t−1logp(it,n+1u∣it,1u,…,it,nu;{St−1k,k∈N(u)})
总结
该方法使用RNN计算短期兴趣、简单GNN来进行朋友兴趣的传播,整体方法较为简单。
一点改进意见:该方法考虑了用户短期兴趣、朋友的社交影响但没有考虑用户的长期兴趣,不知道如果在最后级联时加入用户嵌入会不会让效果更好